	var pswdModified = false;
	var pswdConfirmed = false;
	function pswdFocus() {
		pswdModified = true;
	}

	function presentAscii(id) {
		//alert("present id=" + id);
		if (!document.getElementById(id)) return false;
		var item = document.getElementById(id).value;
		if ((item == "") || (item == null) || item == "null") return false;
		else {
			var origlen = escape(item).length;
			item = delNonAscii(item);
			var newlen = 0;
			if( item == null || item == "" )
				item = "";
			else
				newlen = escape(item).length;
			if( origlen != newlen ) {
				document.getElementById(id).value = item;
			}
			if( item == null || item == "")
				return false;
			else {
				item = trim(item);
				if( item == null || item == "" )
					return false;
				//alert(id + " value=" + item);
				return true;
			}
		}
	}

	function validateForm(pagename){
		//if (pswdModified && !pswdConfirmed) return false;
		//if( present('NewForm') ) { 
		//	// does not work bcs always present
		//	if(document.getElementById("NewForm").value = "Clear Form") {
		//	return true;
		//}
		//}
		if( document.getElementById("SubmitForm") )
			document.getElementById("SubmitForm").disabled = true;
		if( document.getElementById("Continue") )
			document.getElementById("Continue").disabled = true;
		var errString = "";
		var suggestString = "";
		var errA = "<tr><td align=\"left\">";
		var sep = "<\/td><\/tr>";
		//alert("pagename=" + pagename);
		if(pagename == null)
			pagename = "page1";
		var pagePath = window.location.pathname;
		//alert("pagePath = " + pagePath);
		
		//if (!present('honorific')) suggestString += "While not required, prefix (honorific) is strongly suggested.\n";
		if( pagename == "page1" ) {
			if (!ifChecked('subscribeEBulletin')) {
				//alert("subscribeEBulletin not checked pagename=" + pagename);
				if (!checkListGroupElementSelection('city_attend') && !present('origWhichFair') ) {
					//alert("no city chosen");
					errString += errA +  "- In which city will you attend The MBA Tour event?" + sep;//city_attend
				}
			}
			if (!present('email')) errString += errA +  "- EMail address" + sep;
			else if (!validEmail('email')) errString += errA +  "- Email address is incorrectly formatted." + sep;
			if (document.getElementById('emailChanged') && !emailChanged && present('useNonValidatedEmail') && !ifChecked('useNonValidatedEmail') ) errString += errA +  "- You must change your email address or check the box to accept it." + sep;
			if (!presentAscii('familyName')) errString += errA +  "- Family name" + sep;
			if (!presentAscii('givenName')) errString += errA +  "- Given name" + sep;
			if (!presentAscii('address1')) errString += errA +  "- Street address" + sep;//Street Address
			if (!presentAscii('city')) errString += errA +  "- City" + sep;//City
			presentAscii('state');
			if (!checkListSelection('country')) errString += errA +  "- Country of Residence" + sep;//Country
			if (!presentAscii('zip')) errString += errA +  "- Postal Code" + sep;//Postal Code
			if (!presentAscii('phone')) errString += errA +  "- Phone number" + sep;
			//else if (!validPhone('phone')) errString += errA +  "- Phone number is not correctly formatted for any known phone number style." + sep;
			if (!checkRadioChecked('gender_female') && !checkRadioChecked('gender_male')) errString += errA +  "- Gender" + sep;//Gender
			if (!checkListSelection('citizenship')) errString += errA +  "- Citizenship" + sep;//Citizenship
			if (!checkListSelection('nativeLanguage')) errString += errA +  "- Your native language" + sep;
			if (!presentAscii('univ')) errString += errA +  "- University Attended" + sep;
			if (!presentAscii('highestDegree')) errString += errA +  "- Highest University Degree obtained" + sep;
			if (!presentAscii('studyArea')) errString += errA +  "- Area of university study" + sep;
			presentAscii('highestDegreeOther');
			presentAscii('studyAreaOther');
			if (!checkListSelection('yearGrad')) errString += errA +  "- Year of University Graduation" + sep;//Year of graduation
			if (!checkListSelection('beginYear')) errString += errA +  "- When do you plan to start MBA&#9;" + sep;//Year plan to start
			if (checkRadioChecked("gmat_yn_0")) {
				if (!checkListSelection("gmat_date_mm") || !checkListSelection("gmat_date_yyyy")) errString += errA +  "- GMAT test date" + sep;
			} else if (!checkRadioChecked("gmat_yn_1")) errString += errA +  "- Have you taken GMAT?" + sep;
			/*
			if (!checkRadioChecked("geopref1_1") &&
				!checkRadioChecked("geopref2_1") &&
				!checkRadioChecked("geopref3_1") &&
				!checkRadioChecked("geopref4_1") &&
				!checkRadioChecked("geopref5_1") &&
				!checkRadioChecked("geopref6_1") &&
				!ifChecked("undecided") &&
				!ifChecked("nopreference") ) errString += errA +  "- Geographic preference for MBA" + sep;
			*/
			if( !checkFromList("geopref",17) &&
				!ifChecked("undecided") &&
				!ifChecked("nopreference") ) errString += errA +  "- Geographic preference for MBA: first choice" + sep;
			if( valueByName('geoPref1') != '' && ( valueByName('geoPref2') != ''  || valueByName('geoPref3') != '' ) ) {
				//alert("Found geoPref1 and geoPref2 or geoPref3");
				var pref1 = valueByName('geoPref1');
				var pref2 = valueByName('geoPref2');
				var pref3 = valueByName('geoPref3');
				//alert("pref1=" + pref1 + " pref2=" + pref2 + "pref3=" + pref3);
				if( pref1 == pref2 ||
					( pref3 != '' &&  pref1 == pref3 ) ||
					( pref2 != '' && pref3 != '' && pref2 == pref3 ) ) {
					//alert("Duplicate geoPref1,2,3");
					errString += errA + "- Geographic preference choices 1, 2, 3 must be different.  Only 1 is required." + sep;
				}
					
			}

			if (present('gmatScore') && notNumber(document.getElementById('gmatScore').value) ) {
				errString += errA +  "- GMAT Score is not a valid number" + sep;
			}
			else if( present('gmatScore') && ( document.getElementById('gmatScore').value < 20 || document.getElementById('gmatScore').value > 800 ) ) {
				errString += errA +  "- GMAT Score is not a valid number" + sep;
			}
			if (present('gpa') && ( notNumber(document.getElementById('gpa').value) ||
				!goodDecimal(document.getElementById('gpa').value) )
				) {
				errString += errA +  "- GPA is not a valid number" + sep;
			}
			else if( present('gpa') && ( document.getElementById('gpa').value < 1.0 || document.getElementById('gpa').value > 5.0 ) ) {
				errString += errA +  "- GPA is not a valid number" + sep;
			}
			if (present('gpaIntl') && notNumber(document.getElementById('gpaIntl').value) ) {
				errString += errA +  "- International GPA is not a valid number" + sep;
			}
			if (present('gpaIntl') && !checkListSelection('gpaCountry') ) {
				errString += errA +  "- International GPA country is required for International GPA" + sep;
			}
			if (present('toeflScore') && notNumber(document.getElementById('toeflScore').value) ) {
				errString += errA +  "- TOEFL Score is not a valid number" + sep;
			}
			else if( present('toeflScore') && ( document.getElementById('toeflScore').value < 10 || document.getElementById('toeflScore').value > 700 ) ) {
				errString += errA +  "- TOEFL Score is not a valid number" + sep;
			}


			presentAscii('goalsOther');
			presentAscii('mbaProgramsOther');
			presentAscii('mbaInterestsOther');
			presentAscii('whichSchools0');
			presentAscii('whichSchools1');
			presentAscii('whichSchools2');
			presentAscii('whichSchools3');
			presentAscii('whichSchools4');
			presentAscii('currentTitle');
			presentAscii('workAreaOther');
			presentAscii('resEmployer');
			presentAscii('resJobLocation');
			//presentAscii('news_site_name');
			//presentAscii('news_site_name2');
			//presentAscii('newspaper');
			//presentAscii('newspaper2');
			//presentAscii('magazine');
			//presentAscii('magazine2');
		}
		else if( pagename == "page2" ) {
			if (!ifChecked("how_learn_internet") &&
				!ifChecked("how_learn_univ_website") &&
				!ifChecked("how_learn_newspaper") &&
				!ifChecked("how_learn_center") &&
				!ifChecked("how_learn_advisor") &&
				!ifChecked("how_learn_friend") &&
				!ifChecked("how_learn_facebook") &&
				!ifChecked("how_learn_radio") &&
				!ifChecked("how_learn_other") ) errString += errA +  "- How did you learn about The MBA Tour?" + sep;
			presentAscii('how_learn_univ_website_name');
			presentAscii('how_learn_other_website_name');
			presentAscii('how_learn_email_other_name');
			presentAscii('how_learn_newspaper_name');
			presentAscii('how_learn_center_name');
			presentAscii('how_learn_advisor_name');
			presentAscii('howLearnOther');

			if (!checkListSelection('studyPlans')) errString += errA +  "- What program type are you interested in? - first choice" + sep;
			if (!checkListSelection('mbaInterests0Id')) errString += errA +  "- What is your primary professional area of interest? - first choice" + sep;
			if (!checkListSelection('industryInterests0Id')) errString += errA +  "- What is your primary industry area of interest? - first choice" + sep;
			if (!checkListSelection('personalInterests0Id')) errString += errA +  "- What is your primary personal or learning interest? - first choice" + sep;

			//if( pagePath.indexOf("StudentRegNew.jsp") > -1 ) {
			var yrwork = -1;
			if (!present('resYearsRelevant') && !ifChecked('res_no_work_exp') ) errString += errA +  "- Years Work Experience" + sep;
			else if (present('resYearsRelevant') ) {
				yrwork = document.getElementById('resYearsRelevant').value;
				if( yrwork <= 0 ) errString += errA +  "- Years Work Experience" + sep;
				else if (present('resYearsRelevant') && notNumber(document.getElementById('resYearsRelevant').value) ) {
						errString += errA +  "- Years Work Experience is not a valid number" + sep;
				}
			}
			if (present('resYearsRelevant') && yrwork > 4 ) {
				//alert('yrwork = ' + yrwork + ' gradYear = ' + gradYear);
				if( gradYear > 0 ) {
					var diffYear = thisYear - gradYear;
					//alert('diffYear = ' + diffYear + ' age = ' + age);
					if( (diffYear-4) > yrwork || yrwork > (diffYear+4) ) {
						if( age != null && age != "" && age != "null" && age > 0 ) {
							if( yrwork > (age - 18) ) {
								errString += errA +  "- Years Work Experience does not match your age.  Please enter post graduation years worked." + sep;
							}
						} else {
							errString += errA +  "- Years Work Experience does not match your university graduation year.  Enter birth date if age is relevant to years worked." + sep;
						}
					}
				}
			}
			if( yrwork > 0 ) {
				//if( ifChecked('res_no_work_exp') ) {
					document.getElementById('res_no_work_exp').checked = false;
			}
			if( !ifChecked('res_no_work_exp') ) {
				if (!checkListSelection('workArea')) errString += errA +  "- Area which best describes your work" + sep;
				if (!present('resEmployer')) errString += errA +  "- Current or most recent Employer" + sep;
				if (!checkListSelection('resEmpIndustry')) errString += errA +  "- Employer Industry" + sep;
			}
			if (!checkRadioChecked("desiredWorkRegion_1") &&
				!checkRadioChecked("desiredWorkRegion_2") &&
				!checkRadioChecked("desiredWorkRegion_3") &&
				!checkRadioChecked("desiredWorkRegion_4") &&
				!checkRadioChecked("desiredWorkRegion_5") &&
				!checkRadioChecked("desiredWorkRegion_6") &&
				!checkRadioChecked("desiredWorkRegion_7") &&
				!checkRadioChecked("desiredWorkRegion_8") &&
				!checkRadioChecked("desiredWorkRegion_9") 
				) errString += errA +  "- Desired Work Region" + sep;
			//}
			 
		}
		if (errString != "") {
			var msgString = "<TABLE id=\"ErrorListTable\" cellSpacing=\"0\" cellPadding=\"0\" ";
			msgString += "width=\"95%\" align=\"center\" border=\"0\" ><tr>";
			msgString += "<td align=\"left\"><font color=\"red\"><b>Your submission could not be completed.<\/b><\/font>";
			msgString += "<br><font color=\"red\"><b>Please enter the following missing fields and submit again.<\/b><\/font><\/td><\/tr>";
			if (errString) msgString += errString;
			msgString += "<\/table>";
			//alert(errString + suggestString);
			document.getElementById("validationErrorMessages").innerHTML = msgString;
			scroll(0,0);
			if( document.getElementById("SubmitForm") )
				document.getElementById("SubmitForm").disabled = false;  //re-enable to allow correction
			if( document.getElementById("Continue") )
				document.getElementById("Continue").disabled = false;
			return false;
		} else if (suggestString != "") {
			var ok = confirm (suggestString);
			document.getElementById("validationErrorMessages").innerHTML = "";
			if( document.getElementById("SubmitForm") )
				document.getElementById("SubmitForm").disabled = false;  //re-enable to allow correction
			if( document.getElementById("Continue") )
				document.getElementById("Continue").disabled = false;
			scroll(0,0);
			return false;//ok;  
		} else 
		{
			// now set all the concatenated values
			if( document.getElementById("SubmitForm") )
				document.getElementById("SubmitForm").disabled = false;  //re-enable to allow correction
			if( document.getElementById("Continue") )
				document.getElementById("Continue").disabled = false;
			document.getElementById("validationErrorMessages").innerHTML = "";
			scroll(0,0);
			
			return true;  // restore the true to allow submit
			//alert ("all validated - returning false to stop submission");
			//return false;
		}
	}


	function checkFromList(elPrefix, numEls) {
		var retVal = false;
		if( elPrefix == null || elPrefix == "" || numEls < 1 )
			return retVal;
		else {
			for(var i = 1; i <= numEls; i++ ){
				var elId = elPrefix + i + "_1";
				if( checkRadioChecked(elId) ) {
					retVal = true;
				}
			}
		}
		return retVal;
		
	}

function goodDecimal(val) {
    return /^\d+\.\d+$/.test(val);
}

	function handleCpwPromptValue(value) { 
		promptResponse = value;
		if (value != document.getElementById('pwd').value)
		{
			alert("The passwords are not the same, please try again.");
			document.getElementById('pwd').focus();
			document.getElementById('pwd').value = "";
			return false;
		} else pswdConfirmed = true;
		return true;

	} 
	function confirmPw() {
		if ( !document.getElementById('pwd') ) return false;
		if ((document.getElementById('pwd').value == null ) || (document.getElementById('pwd').value == '' )) return true;
	}
	
// Line Splitter Function
// copyright Stephen Chapman, 19th April 2006
// you may copy this code but please keep the copyright notice as well
//
// example use:
// var myText40 = splitLine(myText,40);
// var myHTML = myText40.replace(/\n/g,'<br \/>'); 

function splitLine(st,n) {
	var b = ''; 
	var s = st;
	while (s.length > n) {
		var c = s.substring(0,n);
		var d = c.lastIndexOf(' ');
		var e =c.lastIndexOf('\n');
		if (e != -1) d = e; 
		if (d == -1) d = n; 
		b += c.substring(0,d) + '\n';
		s = s.substring(d+1);
	}
	return b+s;
}

// count number selected and give error if too many
function selectListCheckNum(e, elmnt, fieldName, maxSelected) {
	if( e == null || elmnt == null || fieldName == null || maxSelected == null )
		return true;
	// initialize the counter
	var counter = 0;
	// Loop through the select box to see how many are selected;
	var objects = document.getElementById(fieldName);
	var lastselectedoption=lastSelected(e, objects);/*lastSelected must run always*/
	if( objects != "" ) {
		for(var i = 0; i < objects.options.length; i++ ){
			// If an element is selected, increment the counter
			if (objects.options[i].selected == true){
				counter++;
			}
			if (counter <= maxSelected) continue;
			// unselect last selected option
			//var e = elmnt;
			if(typeof lastselectedoption=="number"){
				objects.options[lastselectedoption].selected=false;
			}
			//elmnt.selected = false;
			alert("Please only select " + maxSelected + " values.");
			break;
		}
	}
}

// lastSelected: Find last selected option in a select multiple list
function lastSelected(e/*pass as: event*/, menuObject){
	/*returns true or number of last selected index if a selection (NOT unselection) has been performed by the user*/
	if(typeof menuObject=="string"){
		menuObject=document.getElementById(menuObject);
	}
	if(!menuObject){
		return false;
	}
	if(!window['_currSelections']){/*all browsers*/
		window['_currSelections']=[];
		if(menuObject.selectedIndex>=0/*preselected present*/){
			var i=0;
			for(; i<menuObject.options.length; i++){
				if(menuObject.options[i].selected && typeof _currSelections[i]=="undefined"){
					_currSelections.push(i);
				}
			}
		}
		return true;
	}
	e=e||event;
	e=(e.target)?e.target:(e.srcElement)?e.srcElement:null;
	if(e && e.nodeName.toUpperCase()=="OPTION"){/*only browsers that detect event source as OPTION*/
		if(e.selected){/*event performed a selection*/
			_currSelections.push(e.index);
			return e.index;/*return index number*/
		}
		else{/*event unselected*/
			for(var c=0; c<_currSelections.length; c++){
				if(_currSelections[c]==e.index){
					_currSelections.splice(c,1);
					return true;
				}
			}
		}
		return true;
	}
	else{/*only browsers that detect event source as SELECT*/
		var temp=[];
		for(var i=0; i<menuObject.options.length; i++){
			if(menuObject.options[i].selected){
				temp.push(i);
			}
		}
		if(temp.length<_currSelections.length){/*event unselected*/
			_currSelections=temp;
		}
		else if(temp.length>_currSelections.length){/*event performed a selection; find which one:*/
			outer:
			for(var c=0; c<_currSelections.length; c++){
				var isIn=false;
				for(var t=0; t<temp.length; t++){
					if(_currSelections[c]==temp[t]){isIn=t; break;};
				}
				if(typeof isIn=="number"){
					temp.splice(t,1);
				}
			}
			_currSelections.push(temp[0]);
			return temp[0];
		}
		return true;
	}
	return false;
	/* keep this comment to reuse freely:
	http://www.fullposter.com/?1 */
}

function DoHover(element)
  { element.className += ' hover';
  }

function DoActive(element)
  { element.className += ' active';
  }

function RestoreHover(element)
  { element.className = element.className.replace(/\bhover\b/,'');
  }

function RestoreActive(element)
  { element.className = element.className.replace(/\bactive\b/,'');
  }

// This code was written by Tyler Akins and has been placed in the
// public domain.  It would be nice if you left this header intact.
// Base64 code from Tyler Akins -- http://rumkin.com

var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

function encode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   do {
      chr1 = input.charCodeAt(i++);
      chr2 = input.charCodeAt(i++);
      chr3 = input.charCodeAt(i++);

      enc1 = chr1 >> 2;
      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
      enc4 = chr3 & 63;

      if (isNaN(chr2)) {
         enc3 = enc4 = 64;
      } else if (isNaN(chr3)) {
         enc4 = 64;
      }

      output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + 
         keyStr.charAt(enc3) + keyStr.charAt(enc4);
   } while (i < input.length);
   
   return output;
}

function decode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

   do {
      enc1 = keyStr.indexOf(input.charAt(i++));
      enc2 = keyStr.indexOf(input.charAt(i++));
      enc3 = keyStr.indexOf(input.charAt(i++));
      enc4 = keyStr.indexOf(input.charAt(i++));

      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;

      output = output + String.fromCharCode(chr1);

      if (enc3 != 64) {
         output = output + String.fromCharCode(chr2);
      }
      if (enc4 != 64) {
         output = output + String.fromCharCode(chr3);
      }
   } while (i < input.length);

   return output;
}

