/*    DS: I've moved openWin() into init.js, since it doesn't seem to have anything to    do with form validation. It's a good idea to keep your code organized.   */function validate(frm, requiredFields){	requiredFields = requiredFields || [		{name:"Email", errMsg:"Please enter a valid email address.", validFunc:notBlank},		{name:"Reference_Code", errMsg:"Please let us know how you heard about this program.", validFunc:doRefcodeValidation},		{name:"Last_Name", errMsg:"Please enter your last name (surname).", validFunc:notBlank},		{name:"First_Name", errMsg:"Please enter your first name (given name).", validFunc:notBlank},		{name:"Address1",errMsg:"Please enter an address.", validFunc:notBlank},		{name:"Organization", errMsg:"Please enter an organization", validFunc:notBlank},		{name:"City", errMsg:"Please enter a city.", validFunc:notBlank},		{name:"Country", errMsg:"Please select a country.", validFunc:checkSelect},		{name:"State", errMsg:"Please select a state or province.", validFunc:doStateValidation},		{name:"Course_Fee", errMsg:"Please select a program fee option.", validFunc:doPaymentMethod},		{name:"Payment_Method", errMsg:"Please select a method of payment.", validFunc:hasOneChecked},				// fields for scholarshp choice form		{name:"policies", errMsg:"Please check the checkbox indicating you have read and accept our policies.", validFunc:isChecked},				{name:"scholarship", errMsg:"Please indicate whether or not you are applying for a scholarship.", validFunc:hasOneChecked}	];		var err = "";		for(var i in requiredFields) {		var field = requiredFields[i],			elem = frm[field.name];		if(elem && !field.validFunc(elem)) err += " - "+field.errMsg+"\n";	}		if(err){		err = "The following errors have occurred:\n" + err;		alert(err);		return false;	}		return true;}function notBlank (elem) {	var str = elem.value;	return str.match(/\S+/);}function doEmailValidation (elem){	return isValidEmail(elem.value);}function isValidEmail (str) {str = trim(str); // strip leading and trailing whitespace before attempting regex matchreturn str.match(/^.+@([a-z0-9_-]+\.)+[a-z]{2,4}$/i);}function trim(str) {   str += "";   str = str.replace(/^\s+/, "");   str = str.replace(/\s+$/, "");   return str;}function checkSelect(elem){	return (elem.selectedIndex != 0);}function doStateValidation (elem){	var frm = elem.form,		countrySelect = frm["Country"],		country = countrySelect.options[countrySelect.selectedIndex].text;	if(country == "United States" || country == "Canada") {		return checkSelect(elem);	}	else return true;}function doRefcodeValidation(elem){	if(notBlank(elem) || hasOneChecked(elem.form["Other_Reference_Code"]))	return true;	else return false;}function submitconfirm() {	var response=confirm("Are you sure you want to submit your form now?");	return response;}function doPaymentMethod(multibutton) {	 if(multibutton.length) return hasOneChecked(multibutton);	 else return multibutton.checked; }function hasOneChecked(elemArray){	for (var i=0; i < elemArray.length; ++i){		if(isChecked(elemArray[i])) return true;	}	return false;}function getCheckedValue (elemArray) {	for (var i=0; i < elemArray.length; ++i){		if(isChecked(elemArray[i])) return elemArray[i].value;	}	return "";}function isChecked(elem){   return elem.checked;}function doRedirect(radioGroup) {	window.location.href = getCheckedValue(radioGroup);	return false;} 