function trim(str) {
	while('' + str.charAt(0) == ' ')
	str = str.substring(1, str.length)

	while('' + str.charAt(str.length-1) == ' ')
	str = str.substring(0, str.length-1)

	return str
}

function oneOrMoreSelected(s) {
	for (var i=0; i < s.length; i++) {
		if (s[i].checked) {
			return true
		}
	}

	return false
}

function totalSelected(s) {
	var total = 0
	for (var i=0; i < s.length; i++) {
		if (s[i].checked) {
			total++
		}
	}

	return total
}

function companyDescriptionLimit(textarea, infodiv) {
	var limit = 1000
	var text = textarea.value;
	var textlength = text.length;
	var info = document.getElementById(infodiv);
	if (textlength > limit) {
		info.innerHTML = 'Profile exceeds 1,000 characters.  Please remove ' + (textlength - limit) + ' characters';
		return false;
	} else {
		info.innerHTML = (limit - textlength) + ' characters left.';
		return true;
	}
}

var page1Conditions = [
	{ field: "frm.agree", 			condition: "fld.checked", 		message: "You MUST agree to the TERMS AND CONDITIONS \nbefore we can continue to the next step." },
	{ field: "frm.companyName", 		condition: "trim(fld.value) != ''", 	message: "Company name is required" },
	{ field: "frm['govRep']",	condition: "oneOrMoreSelected(fld)", 	message: "Please indicate if your company is a government representative." },
	{ field: "frm['companyRep1.firstName']",condition: "trim(fld.value) != ''", 	message: "Company representative is required" },
	{ field: "frm['companyRep1.lastName']",	condition: "trim(fld.value) != ''", 	message: "Company representative is required" },
	{ field: "frm['companyRep1.title']",	condition: "trim(fld.value) != ''", 	message: "Company representative is required" }
]

var page2Conditions = [
	{ field: "frm['contact.address']",	condition: "trim(fld.value) != ''", 	message: "Company address is required" },
	{ field: "frm['contact.city']",		condition: "trim(fld.value) != ''", 	message: "Company city is required" },
	{ field: "frm['contact.zip']",		condition: "trim(fld.value) != ''", 	message: "Company zip is required" },
	{ field: "frm['contact.country']",	condition: "trim(fld.value) != ''", 	message: "Company country is required.  NOTE: If you fill out 'other' please inform us the EU-country of your company's HQ." },
	{ field: "frm['contact.phone']",	condition: "trim(fld.value) != ''", 	message: "Company phone is required" },
	{ field: "frm['contact.fax']",		condition: "trim(fld.value) != ''", 	message: "Company fax is required" },
	{ field: "frm['contact.email']",	condition: "trim(fld.value) != ''", 	message: "Company email is required" },
	{ field: "frm['findout']",		condition: "trim(fld.value) != ''", 	message: "Please indicate how you found out about the seminar" },
	{ field: "frm['attended']",	condition: "oneOrMoreSelected(fld)", 	message: "Please indicate if you have attended the EUPF before." }
]

var page3Conditions = [
   	{ field: "frm['companyDescription']",	condition: "trim(fld.value) != ''", 	message: "Please enter a company description." },
	{ field: "frm['companyDescription']",	condition: "trim(fld.value).length <= 1000", 	message: "Please do not use more than 1,000 characters when filling out your company profile." }
]

var page4Conditions = [
]

var page5Conditions = [
]

var page6Conditions = [
	{ field: "frm['employees']",		condition: "oneOrMoreSelected(fld)", 	message: "Indicate how many employees are in your company." }
]

var page7Conditions = [
	{ field: "frm['ungmRegistered']",		condition: "oneOrMoreSelected(fld)", 	message: "Please indicate if your company is registered at UNGM" },
	{ field: "frm['supplier']",		condition: "oneOrMoreSelected(fld)", 	message: "Please indicate if your company is registered as a supplier with a UN organisation" },
	{ field: "frm['bidSubmitted']",		condition: "oneOrMoreSelected(fld)", 	message: "Please indicate if your company has submitted a bid, quote or proposal to the UN" }
]

var page8Conditions = [
]

var page9Conditions = [
]

var page10Conditions = [
]

var page11Conditions = [
	{ field: "frm['oneOnOne']",		condition: "oneOrMoreSelected(fld)", 	message: "All fields marked with * are required." }
]

var page12Conditions = [
]

var page13Conditions = [
	{ field: "frm['questionnaire.knowledgeLevel']",		condition: "oneOrMoreSelected(fld)", 	message: "All fields marked with * are required." },
	{ field: "frm['questionnaire.forGeneralOverview']",	condition: "oneOrMoreSelected(fld)", 	message: "All fields marked with * are required." },
	{ field: "frm['questionnaire.forThemeInformation']",	condition: "oneOrMoreSelected(fld)", 	message: "All fields marked with * are required." },
	{ field: "frm['questionnaire.forMeetStaff']",		condition: "oneOrMoreSelected(fld)", 	message: "All fields marked with * are required." },
	{ field: "frm['questionnaire.forNetworkCompanies']",	condition: "oneOrMoreSelected(fld)", 	message: "All fields marked with * are required." }
]

var page14Conditions = [
	//{ field: "frm['questionnaire.generalPresentations']",	condition: "oneOrMoreSelected(fld)", 	message: "All fields marked with * are required." },
	//{ field: "frm['questionnaire.thematicWorkshops']",	condition: "oneOrMoreSelected(fld)", 	message: "All fields marked with * are required." },
	//{ field: "frm['questionnaire.oneOnOneMeetings']",	condition: "oneOrMoreSelected(fld)", 	message: "All fields marked with * are required." },
	//{ field: "frm['questionnaire.receptionAndLunch']",	condition: "oneOrMoreSelected(fld)", 	message: "All fields marked with * are required." }
]

function validatePage1(frm) {
	return validate(frm, page1Conditions)
}

function validatePage2(frm) {
	if (!validate(frm, page2Conditions)) {
		return false
	}

	// validate email is of correct format
	var emailregex = /^[\w\_\-\.]+@[\w\_\-\.]+\.\w+$/
	if (frm['contact.email'].value.match(emailregex) == null) {
		frm['contact.email'].focus()
		alert('Your email address "' + frm['contact.email'].value + '" is not in a valid format.')

		return false
	}

	var account = frm['contact.email'].value.split(/@/)[0]
	if (
		account == 'info' ||
		account == 'marketing' ||
		account == 'jobs' ||
		account == 'webmaster' ||
		account == 'webmaster' ||
		account == 'inquiry' ||
		account == 'enquiry' ||
		account == 'sales' ||
		account == 'support' ||
		account == 'bounce'
	) {
		frm['contact.email'].focus()
		alert("Please provide your personal email address and not a generic email "
			+ " account to allow us to send a link to you personally for process "
			+ " of your credit card.")

		return false
	}

	return true
}

function validatePage3(frm) {
	return validate(frm, page3Conditions)
}

function validatePage4(frm) {
	return validate(frm, page4Conditions)
}

function validatePage5(frm) {
	return validate(frm, page5Conditions)
}

function validatePage6(frm) {
	return validate(frm, page6Conditions)
}

function validatePage7(frm) {
	return validate(frm, page7Conditions)
}

function validatePage8(frm) {
	return validate(frm, page8Conditions)
}

function validatePage9(frm) {
	return validate(frm, page9Conditions)
}

function validatePage10(frm) {
	var totalWorkshops = totalSelected(frm.general) + totalSelected(frm.themed)
	if (totalWorkshops == 0) {
		alert("Please select at least one workshop")
		return false
	} else {
		return true
	}
}

function validatePage11(frm) {
	return validate(frm, page11Conditions)
}

function validatePage12(frm) {
	return validate(frm, page12Conditions)
}

function validatePage13(frm) {
	return validate(frm, page13Conditions)
}

function validatePage14(frm) {
	return validate(frm, page14Conditions)
}

function validatePage15(frm) {
	return validate(frm, page15Conditions)
}

function validate(frm, conditions) {
	var result = false

	for (var i in conditions) {
		var cond = conditions[i]
		var fld = eval(cond.field)
		if (!eval(cond.condition)) {
			if (fld.focus) fld.focus()
			alert(cond.message)

			return false
		}
	}

	// all field parameters passed
	return true
}


function toggleReadonly(sel, index, elementId) {
	var inpt = document.getElementById(elementId)
	if (sel.checked || (sel.selectedIndex && sel.selectedIndex == index)) {
		inpt.readOnly = false
		inpt.style.display = "inline"
	} else {
		inpt.value = ""
		inpt.readOnly = true
		inpt.style.display = "none"
	}
}
