// JavaScript Document
window.onload = display_hidden;

vFormName = 'mainform';
vState = 'state';

//FIELD NAME,DISPLAY NAME,TYPE
//TYPE (name,phone,zip,email,text,select)
vRequiredFields = '';
vRequiredFields += 'firstname,First Name,text,';
vRequiredFields += 'lastname,Last Name,text,';
vRequiredFields += 'phone,Daytime Phone,phone,';
vRequiredFields += 'phone2,Evening Phone,phone,';
vRequiredFields += 'email,Email,email,';
vRequiredFields += 'address1,Address,text,';
vRequiredFields += 'city,City,text,';
vRequiredFields += 'state,State,select,';
vRequiredFields += 'zip,Zip,zip,';
vRequiredFields += 'gradyear,Graduation Year,select,';
vRequiredFields += 'campus_key,Campus,select,';
vRequiredFields += 'program_key,Program,select,';

function display_hidden(){
	var d=document.mainform;
	var program_key = d.elements['program_key'].value;
	if ( program_key == 'Aesthetics Laser Certification Preparation Seminar' ) {
		document.getElementById("preqQ").style.display = "block";
		document.getElementById("preqA").style.display = "block";
		vRequiredFields = '';
		vRequiredFields += 'firstname,First Name,text,';
		vRequiredFields += 'lastname,Last Name,text,';
		vRequiredFields += 'phone,Daytime Phone,phone,';
		vRequiredFields += 'phone2,Evening Phone,phone,';
		vRequiredFields += 'email,Email,email,';
		vRequiredFields += 'address1,Address,text,';
		vRequiredFields += 'city,City,text,';
		vRequiredFields += 'state,State,select,';
		vRequiredFields += 'zip,Zip,zip,';
		vRequiredFields += 'gradyear,Graduation Year,select,';
		vRequiredFields += 'campus_key,Campus,select,';
		vRequiredFields += 'program_key,Program,select,';
		vRequiredFields += 'extrafield2,Prerequisites,select';
	} else {
		document.getElementById("preqQ").style.display = "none";
		document.getElementById("preqA").style.display = "none";
		vRequiredFields = '';
		vRequiredFields += 'firstname,First Name,text,';
		vRequiredFields += 'lastname,Last Name,text,';
		vRequiredFields += 'phone,Daytime Phone,phone,';
		vRequiredFields += 'phone2,Evening Phone,phone,';
		vRequiredFields += 'email,Email,email,';
		vRequiredFields += 'address1,Address,text,';
		vRequiredFields += 'city,City,text,';
		vRequiredFields += 'state,State,select,';
		vRequiredFields += 'zip,Zip,zip,';
		vRequiredFields += 'gradyear,Graduation Year,select,';
		vRequiredFields += 'campus_key,Campus,select,';
		vRequiredFields += 'program_key,Program,select';
	 }
}

imageProgress = new Image();
imageProgress.src = "/images/progress.gif";

vBadPhoneArray = Array("0000000","1111111","2222222","3333333","4444444","5555555","6666666","7777777","8888888","9999999","1212121","1231234","1234567");
vLongStatesArray = Array("Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","District Of Columbia","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Carolina","North Dakota","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","Utah","Vermont","Virginia","Washington","West Virginia","Wisconsin","Wyoming");
vStatesCorrArray = Array(3,2,7,5,8,9,10,12,11,13,15,17,19,20,21,18,22,23,24,27,26,25,29,30,33,31,34,37,41,38,39,40,42,35,36,43,44,45,46,49,50,51,52,53,54,57,55,58,60,59,61);
vStatesArray = Array("AA","AE","AK","AL","AP","AR","AS","AZ","CA","CO","CT","DC","DE","FL","FM","GA","GU","HI","IA","ID","IL","IN","KS","KY","LA","MA","MD","ME","MH","MI","MN","MO","MP","MS","MT","NC","ND","NE","NH","NJ","NM","NV","NY","OH","OK","OR","PA","PR","PW","RI","SC","SD","TN","TX","UT","VA","VI","VT","WA","WI","WV","WY");
vZipsArray = Array ("00000","005NY","006PR","007PR","008VI","009PR","010MA","011MA","012MA","013MA","014MA","015MA","016MA","017MA","018MA","019MA","020MA","021MA","022MA","023MA","024MA","025MA","026MA","027MA","028RI","029RI","030NH","031NH","032NH","033NH","034NH","035NH","036NH","037NH","038NH","039ME","040ME","041ME","042ME","043ME","044ME","045ME","046ME","047ME","048ME","049ME","050VT","051VT","052VT","053VT","054VT","055MA","056VT","057VT","058VT","059VT","060CT","061CT","062CT","063CT","063NY","064CT","065CT","066CT","067CT","068CT","069CT","070NJ","071NJ","072NJ","073NJ","074NJ","075NJ","076NJ","077NJ","078NJ","079NJ","080NJ","081NJ","082NJ","083NJ","084NJ","085NJ","086NJ","087NJ","088NJ","089NJ","090AE","091AE","092AE","093AE","094AE","095AE","096AE","097AE","098AE","100NY","101NY","102NY","103NY","104NY","105NY","106NY","107NY","108NY","109NY","110NY","111NY","112NY","113NY","114NY","115NY","116NY","117NY","118NY","119NY","120NY","121NY","122NY","123NY","124NY","125NY","126NY","127NY","128NY","129NY","130NY","131NY","132NY","133NY","134NY","135NY","136NY","137NY","138NY","139NY","140NY","141NY","142NY","143NY","144NY","145NY","146NY","147NY","148NY","149NY","150PA","151PA","152PA","153PA","154PA","155PA","156PA","157PA","158PA","159PA","160PA","161PA","162PA","163PA","164PA","165PA","166PA","167PA","168PA","169PA","170PA","171PA","172PA","173PA","174PA","175PA","176PA","177PA","178PA","179PA","180PA","181PA","182PA","183PA","184PA","185PA","186PA","187PA","188PA","189PA","190PA","191PA","192PA","193PA","194PA","195PA","196PA","197DE","198DE","199DE","200DC","201VA","202DC","203DC","204DC","205DC","206MD","207MD","208MD","209MD","210MD","211MD","212MD","214MD","215MD","216MD","217MD","218MD","219MD","220VA","221VA","222VA","223VA","224VA","225VA","226VA","227VA","228VA","229VA","230VA","231VA","232VA","233VA","234VA","235VA","236VA","237VA","238VA","239VA","240VA","241VA","242VA","243VA","244VA","245VA","246VA","247WV","248WV","249WV","250WV","251WV","252WV","253WV","254WV","255WV","256WV","257WV","258WV","259WV","260WV","261WV","262WV","263WV","264WV","265WV","266WV","267WV","268WV","270NC","271NC","272NC","273NC","274NC","275NC","276NC","277NC","278NC","279NC","280NC","281NC","282NC","283NC","284NC","285NC","286NC","287NC","288NC","289NC","290SC","291SC","292SC","293SC","294SC","295SC","296SC","297SC","298SC","299SC","300GA","301GA","302GA","303GA","304GA","305GA","306GA","307GA","308GA","309GA","310GA","311GA","312GA","313GA","314GA","315GA","316GA","317GA","318GA","319GA","320FL","321FL","322FL","323FL","324FL","325FL","326FL","327FL","328FL","329FL","330FL","331FL","332FL","333FL","334FL","335FL","336FL","337FL","338FL","339FL","340AA","341FL","342FL","344FL","346FL","347FL","349FL","350AL","351AL","352AL","354AL","355AL","356AL","357AL","358AL","359AL","360AL","361AL","362AL","363AL","364AL","365AL","366AL","367AL","368AL","369AL","370TN","371TN","372TN","373TN","374TN","375TN","376TN","377TN","378TN","379TN","380TN","381TN","382TN","383TN","384TN","385TN","386MS","387MS","388MS","389MS","390MS","391MS","392MS","393MS","394MS","395MS","396MS","397MS","398GA","399GA","400KY","401KY","402KY","403KY","404KY","405KY","406KY","407KY","408KY","409KY","410KY","411KY","412KY","413KY","414KY","415KY","416KY","417KY","418KY","419KY","420KY","421KY","422KY","423KY","424KY","425KY","426KY","427KY","430OH","431OH","432OH","433OH","434OH","435OH","436OH","437OH","438OH","439OH","440OH","441OH","442OH","443OH","444OH","445OH","446OH","447OH","448OH","449OH","450OH","451OH","452OH","453OH","454OH","455OH","456OH","457OH","458OH","459OH","460IN","461IN","462IN","463IN","464IN","465IN","466IN","467IN","468IN","469IN","470IN","471IN","472IN","473IN","474IN","475IN","476IN","477IN","478IN","479IN","480MI","481MI","482MI","483MI","484MI","485MI","486MI","487MI","488MI","489MI","490MI","491MI","492MI","493MI","494MI","495MI","496MI","497MI","498MI","499MI","500IA","501IA","502IA","503IA","504IA","505IA","506IA","507IA","508IA","509IA","510IA","511IA","512IA","513IA","514IA","515IA","516IA","520IA","521IA","522IA","523IA","524IA","525IA","526IA","527IA","528IA","530WI","531WI","532WI","534WI","535WI","537WI","538WI","539WI","540WI","541WI","542WI","543WI","544WI","545WI","546WI","547WI","548WI","549WI","550MN","551MN","553MN","554MN","555MN","556MN","557MN","558MN","559MN","560MN","561MN","562MN","563MN","564MN","565MN","566MN","567MN","569DC","570SD","571SD","572SD","573SD","574SD","575SD","576SD","577SD","580ND","581ND","582ND","583ND","584ND","585ND","586ND","587ND","588ND","590MT","591MT","592MT","593MT","594MT","595MT","596MT","597MT","598MT","599MT","600IL","601IL","602IL","603IL","604IL","605IL","606IL","607IL","608IL","609IL","610IL","611IL","612IL","613IL","614IL","615IL","616IL","617IL","618IL","619IL","620IL","622IL","623IL","624IL","625IL","626IL","627IL","628IL","629IL","630MO","631MO","633MO","634MO","635MO","636MO","637MO","638MO","639MO","640MO","641MO","644MO","645MO","646MO","647MO","648MO","649MO","650MO","651MO","652MO","653MO","654MO","655MO","656MO","657MO","658MO","660KS","661KS","662KS","664KS","665KS","666KS","667KS","668KS","669KS","670KS","671KS","672KS","673KS","674KS","675KS","676KS","677KS","678KS","679KS","680NE","681NE","683NE","684NE","685NE","686NE","687NE","688NE","689NE","690NE","691NE","692NE","693NE","700LA","701LA","703LA","704LA","705LA","706LA","707LA","708LA","710LA","711LA","712LA","713LA","714LA","716AR","717AR","718AR","719AR","720AR","721AR","722AR","723AR","724AR","725AR","726AR","727AR","728AR","729AR","730OK","731OK","733TX","734OK","735OK","736OK","737OK","738OK","739OK","740OK","741OK","743OK","744OK","745OK","746OK","747OK","748OK","749OK","750TX","751TX","752TX","753TX","754TX","755TX","756TX","757TX","758TX","759TX","760TX","761TX","762TX","763TX","764TX","765TX","766TX","767TX","768TX","769TX","770TX","772TX","773TX","774TX","775TX","776TX","777TX","778TX","779TX","780TX","781TX","782TX","783TX","784TX","785TX","786TX","787TX","788TX","789TX","790TX","791TX","792TX","793TX","794TX","795TX","796TX","797TX","798TX","799TX","800CO","801CO","802CO","803CO","804CO","805CO","806CO","807CO","808CO","809CO","810CO","811CO","812CO","813CO","814CO","815CO","816CO","820WY","821WY","822WY","823WY","824WY","825WY","826WY","827WY","828WY","829WY","830WY","831WY","832ID","833ID","834ID","834WY","835ID","836ID","837ID","838ID","840UT","841UT","842UT","843UT","844UT","845UT","846UT","847UT","850AZ","852AZ","853AZ","855AZ","856AZ","857AZ","859AZ","860AZ","863AZ","864AZ","865AZ","870NM","871NM","873NM","874NM","875NM","877NM","878NM","879NM","880NM","881NM","882NM","883NM","884NM","885TX","889NV","890NV","891NV","893NV","894NV","895NV","897NV","898NV","900CA","901CA","902CA","903CA","904CA","905CA","906CA","907CA","908CA","910CA","911CA","912CA","913CA","914CA","915CA","916CA","917CA","918CA","919CA","920CA","921CA","922CA","923CA","924CA","925CA","926CA","927CA","928CA","930CA","931CA","932CA","933CA","934CA","935CA","936CA","937CA","938CA","939CA","940CA","941CA","942CA","943CA","944CA","945CA","946CA","947CA","948CA","949CA","950CA","951CA","952CA","953CA","954CA","955CA","956CA","957CA","958CA","959CA","960CA","961CA","962AP","963AP","964AP","965AP","966AP","967AS","967HI","968HI","969FM","969GU","969MH","969MP","969PW","970OR","971OR","972OR","973OR","974OR","975OR","976OR","977OR","978OR","979OR","980WA","981WA","982WA","983WA","984WA","985WA","986WA","988WA","989WA","990WA","991WA","992WA","993WA","994WA","995AK","996AK","997AK","998AK","99999","999AK");
vAreacodesArray = Array("201","202","203","204","205","206","207","208","209","210","212","213","214","215","216","217","218","219","224","225","228","229","231","234","239","240","248","250","251","252","253","254","256","260","262","267","269","270","276","281","289","301","302","303","304","305","306","307","308","309","310","312","313","314","315","316","317","318","319","320","321","323","325","330","331","334","336","337","339","340","347","351","352","360","361","386","401","402","403","404","405","406","407","408","409","410","412","413","414","415","416","417","418","419","423","424","425","430","432","434","435","440","443","450","469","478","479","480","484","501","502","503","504","505","506","507","508","509","510","512","513","514","515","516","517","518","519","520","530","540","541","551","559","561","562","563","567","570","571","573","574","575","580","585","586","601","602","603","604","605","606","607","608","609","610","612","613","614","615","616","617","618","619","620","623","626","630","631","636","641","646","647","650","651","660","661","662","671","678","682","684","701","702","703","704","705","706","707","708","709","712","713","714","715","716","717","718","719","720","724","727","731","732","734","740","754","757","760","763","765","769","770","772","773","774","775","778","779","780","781","785","786","787","800","801","802","803","804","805","806","807","808","810","812","813","814","815","816","817","818","819","828","830","831","832","843","845","847","848","850","856","857","858","859","860","862","863","864","865","866","867","870","877","878","888","901","902","903","904","905","906","907","908","909","910","912","913","914","915","916","917","918","919","920","925","928","931","936","937","939","940","941","947","949","951","952","954","956","970","971","972","973","978","979","980","985","989","999");

var formSubmitted = false;

function Validator(){

	thisform = document.forms[vFormName];

	Email = '';
	if(typeof(vState) == "undefined" || vState == '')
	{
		State = '';
	}
	else
	{
		State = thisform.elements[vState].value;
	}

	if(State == '' && State.length > 2){
		State = thisform.elements[vState][thisform.elements[vState].selectedIndex].text;
	}
	pos = BinarySearch(vLongStatesArray,State);
	if(pos != -1){
		State = vStatesArray[vStatesCorrArray[pos]];
	}
	/*** General Validations ***/
	valid1 = 1;
	firstInvalid = '';
	str1 = "\n\nThe following are required fields:\n";
	/*** Special Validations ***/
	valid2 = 1;
	str2 = "\n\nThe following are special validations:\n";

	RequiredFieldsArray = vRequiredFields.split(',');
	for(i = 0;i < RequiredFieldsArray.length;i+=3){
		fieldname = RequiredFieldsArray[i];
		displayname = RequiredFieldsArray[i + 1];
		fieldtype = RequiredFieldsArray[i + 2];

		switch(fieldtype){
					
		/*** NAME ***/
		  case 'name':
		  	thisform.elements[fieldname].value = trim(thisform.elements[fieldname].value);
			if(thisform.elements[fieldname].value.length < 2){
				valid1 = 0;
				str1 += "\n* " + displayname;
				thisform.elements[fieldname].className = 'field-error';
				if(firstInvalid == ''){
					firstInvalid = fieldname;
				}
			}else{
				thisform.elements[fieldname].className = 'field';
			}
			break;

		/*** PHONE NOT REQUIRED***/
		  case 'phoneNR':
			rExp = /[^0-9]+/gi;
			thisform.elements[fieldname].value = thisform.elements[fieldname].value.replace(rExp,"");
			rExp = /^[0-1]+/;
			thisform.elements[fieldname].value = thisform.elements[fieldname].value.replace(rExp,"");
		  	thisform.elements[fieldname].value = trim(thisform.elements[fieldname].value);
			
			if(thisform.elements[fieldname].value.length == 0){
				//if empty, do not validate
				thisform.elements[fieldname].className = 'field';
			} else {
				if(thisform.elements[fieldname].value.length < 10){
					valid2 = 0;
					localPass = 0;
					str2 += "\n* " + displayname + " is too short.";
					thisform.elements[fieldname].className = 'field-error';
					if(firstInvalid == ''){
						firstInvalid = fieldname;
					}
				}
				if(thisform.elements[fieldname].value.length > 10){
					valid2 = 0;
					localPass = 0;
					str2 += "\n* " + displayname + " is too long.";
					thisform.elements[fieldname].className = 'field-error';
					if(firstInvalid == ''){
						firstInvalid = fieldname;
					}
				}			

				Phone1 = thisform.elements[fieldname].value.substr(0,3);
				Phone2 = thisform.elements[fieldname].value.substr(3,3);
				Phone3 = thisform.elements[fieldname].value.substr(6,4);

				if ( BinarySearch(vBadPhoneArray,Phone2 + Phone3) > -1 )
				{
					valid2 = 0;
					localPass = 0;
					str2 += "\n* " + displayname + " number is incorrect.";
					thisform.elements[fieldname].className = 'field-error';
					if(firstInvalid == ''){
						firstInvalid = fieldname;
					}
				}

				if(BinarySearch(vStatesArray,State) > -1){
					if(BinarySearch(vAreacodesArray,Phone1) == -1){
						valid2 = 0;
						localPass = 0;
						str2 += "\n* " + displayname + " must have correct area code.";
						thisform.elements[fieldname].className = 'field-error';
						if(firstInvalid == ''){
							firstInvalid = fieldname;
						}
					}

					for(j = 5;j < 6;j++){
						if(Phone2 == ('' + j + j + j)){
							valid2 = 0;
							localPass = 0;
							str2 += "\n* " + displayname + " number is incorrect.";
							thisform.elements[fieldname].className = 'field-error';
							if(firstInvalid == ''){
								firstInvalid = fieldname;
							}
						}
					}
				}
				if(localPass){
					thisform.elements[fieldname].className = 'field';
				}
			}			
			break;

		/*** PHONE ***/
		  case 'phone':
		  	thisform.elements[fieldname].value = trim(thisform.elements[fieldname].value);
		  	localPass = 1;
			rExp = /[^0-9]+/gi;
			thisform.elements[fieldname].value = thisform.elements[fieldname].value.replace(rExp,"");
			rExp = /^[0-1]+/;
			thisform.elements[fieldname].value = thisform.elements[fieldname].value.replace(rExp,"");

			if(thisform.elements[fieldname].value.length < 10){
				valid2 = 0;
			  	localPass = 0;
				str2 += "\n* " + displayname + " is too short.";
				thisform.elements[fieldname].className = 'field-error';
				if(firstInvalid == ''){
					firstInvalid = fieldname;
				}
			}
			if(thisform.elements[fieldname].value.length > 10){
				valid2 = 0;
			  	localPass = 0;
				str2 += "\n* " + displayname + " is too long.";
				thisform.elements[fieldname].className = 'field-error';
				if(firstInvalid == ''){
					firstInvalid = fieldname;
				}
			}			

			Phone1 = thisform.elements[fieldname].value.substr(0,3);
			Phone2 = thisform.elements[fieldname].value.substr(3,3);
			Phone3 = thisform.elements[fieldname].value.substr(6,4);

			if ( BinarySearch(vBadPhoneArray,Phone2 + Phone3) > -1 )
			{
				valid2 = 0;
				localPass = 0;
				str2 += "\n* " + displayname + " number is incorrect.";
				thisform.elements[fieldname].className = 'field-error';
				if(firstInvalid == ''){
					firstInvalid = fieldname;
				}
			}

			if(BinarySearch(vStatesArray,State) > -1){
				if(BinarySearch(vAreacodesArray,Phone1) == -1){
					valid2 = 0;
				  	localPass = 0;
					str2 += "\n* " + displayname + " must have correct area code.";
					thisform.elements[fieldname].className = 'field-error';
					if(firstInvalid == ''){
						firstInvalid = fieldname;
					}
				}

				for(j = 5;j < 6;j++){
					if(Phone2 == ('' + j + j + j)){
						valid2 = 0;
					  	localPass = 0;
						str2 += "\n* " + displayname + " number is incorrect.";
						thisform.elements[fieldname].className = 'field-error';
						if(firstInvalid == ''){
							firstInvalid = fieldname;
						}
					}
				}
			}
			if(localPass){
				thisform.elements[fieldname].className = 'field';
			}
			break;

		/*** AREA CODE ***/
		  case 'areacode':
		  	thisform.elements[fieldname].value = trim(thisform.elements[fieldname].value);
		  	localPass = 1;
			rExp = /[^0-9]+/gi;
			thisform.elements[fieldname].value = thisform.elements[fieldname].value.replace(rExp,"");
			rExp = /^[0-1]+/;
			thisform.elements[fieldname].value = thisform.elements[fieldname].value.replace(rExp,"");
			
			if(thisform.elements[fieldname].value.length < 3){
				valid2 = 0;
			  	localPass = 0;
				str2 += "\n* " + displayname + " is too short.";
				thisform.elements[fieldname].className = 'field-error';
				if(firstInvalid == ''){
					firstInvalid = fieldname;
				}
			}

			if(thisform.elements[fieldname].value.length > 3){
				valid2 = 0;
			  	localPass = 0;
				str2 += "\n* " + displayname + " is too long.";
				thisform.elements[fieldname].className = 'field-error';
				if(firstInvalid == ''){
					firstInvalid = fieldname;
				}
			}

			Phone1 = thisform.elements[fieldname].value;

			if(BinarySearch(vStatesArray,State) > -1){
				if(BinarySearch(vAreacodesArray,Phone1) == -1){
					valid2 = 0;
				  	localPass = 0;
					str2 += "\n* " + displayname + " must have correct area code.";
					thisform.elements[fieldname].className = 'field-error';
					if(firstInvalid == ''){
						firstInvalid = fieldname;
					}
				}
			}
			if(localPass){
				thisform.elements[fieldname].className = 'field';
			}
			break;
			
		/*** AREA CODE NOT REQUIRED***/
		  case 'areacodeNR':
		  	thisform.elements[fieldname].value = trim(thisform.elements[fieldname].value);
		  	localPass = 1;
			rExp = /[^0-9]+/gi;
			thisform.elements[fieldname].value = thisform.elements[fieldname].value.replace(rExp,"");
			rExp = /^[0-1]+/;
			thisform.elements[fieldname].value = thisform.elements[fieldname].value.replace(rExp,"");
			
			if(thisform.elements[fieldname].value.length == 0){
				thisform.elements[fieldname].className = 'field';
			} else {
				if(thisform.elements[fieldname].value.length < 3){
					valid2 = 0;
					localPass = 0;
					str2 += "\n* " + displayname + " is too short.";
					thisform.elements[fieldname].className = 'field-error';
					if(firstInvalid == ''){
						firstInvalid = fieldname;
					}
				}

			if(thisform.elements[fieldname].value.length > 3){
				valid2 = 0;
			  	localPass = 0;
				str2 += "\n* " + displayname + " is too long.";
				thisform.elements[fieldname].className = 'field-error';
				if(firstInvalid == ''){
					firstInvalid = fieldname;
				}
			}


				Phone1 = thisform.elements[fieldname].value;

				if(BinarySearch(vStatesArray,State) > -1){
					if(BinarySearch(vAreacodesArray,Phone1) == -1){
						valid2 = 0;
						localPass = 0;
						str2 += "\n* " + displayname + " must have correct area code.";
						thisform.elements[fieldname].className = 'field-error';
						if(firstInvalid == ''){
							firstInvalid = fieldname;
						}
					}
				}
				if(localPass){
					thisform.elements[fieldname].className = 'field';
				}
			}
			break;

		/*** PHONE 7 digits (no area code) ***/
		  case 'phone7':
		  	thisform.elements[fieldname].value = trim(thisform.elements[fieldname].value);
		  	localPass = 1;
			rExp = /[^0-9]+/gi;
			thisform.elements[fieldname].value = thisform.elements[fieldname].value.replace(rExp,"");
			rExp = /^[0-1]+/;
			thisform.elements[fieldname].value = thisform.elements[fieldname].value.replace(rExp,"");
			if(thisform.elements[fieldname].value.length < 7){
				valid2 = 0;
			  	localPass = 0;
				str2 += "\n* " + displayname + " is too short.";
				thisform.elements[fieldname].className = 'field-error';
				if(firstInvalid == ''){
					firstInvalid = fieldname;
				}
			}
			if(thisform.elements[fieldname].value.length > 7){
				valid2 = 0;
			  	localPass = 0;
				str2 += "\n* " + displayname + " is too long.";
				thisform.elements[fieldname].className = 'field-error';
				if(firstInvalid == ''){
					firstInvalid = fieldname;
				}
			}

			Phone2 = thisform.elements[fieldname].value.substr(0,3);
			Phone3 = thisform.elements[fieldname].value.substr(3,4);

			if ( BinarySearch(vBadPhoneArray,Phone2 + Phone3) > -1 )
			{
				valid2 = 0;
				localPass = 0;
				str2 += "\n* " + displayname + " number is incorrect.";
				thisform.elements[fieldname].className = 'field-error';
				if(firstInvalid == ''){
					firstInvalid = fieldname;
				}
			}

			for(j = 5;j < 6;j++){
				if(Phone2 == ('' + j + j + j)){
					valid2 = 0;
					localPass = 0;
					str2 += "\n* " + displayname + " number is incorrect.";
					thisform.elements[fieldname].className = 'field-error';
					if(firstInvalid == ''){
						firstInvalid = fieldname;
					}
				}
			}
			if(localPass){
				thisform.elements[fieldname].className = 'field';
			}
			break;
			
		/*** PHONE 7 digits NOT REQUIRED(no area code) ***/
		  case 'phone7NR':
		  	thisform.elements[fieldname].value = trim(thisform.elements[fieldname].value);
		  	localPass = 1;
			rExp = /[^0-9]+/gi;
			thisform.elements[fieldname].value = thisform.elements[fieldname].value.replace(rExp,"");
			rExp = /^[0-1]+/;
			thisform.elements[fieldname].value = thisform.elements[fieldname].value.replace(rExp,"");
			if(thisform.elements[fieldname].value.length == 0){
				thisform.elements[fieldname].className = 'field';
			} else {
				if(thisform.elements[fieldname].value.length < 7){
					valid2 = 0;
					localPass = 0;
					str2 += "\n* " + displayname + " is too short.";
					thisform.elements[fieldname].className = 'field-error';
					if(firstInvalid == ''){
						firstInvalid = fieldname;
					}
				}
				if(thisform.elements[fieldname].value.length > 7){
					valid2 = 0;
					localPass = 0;
					str2 += "\n* " + displayname + " is too long.";
					thisform.elements[fieldname].className = 'field-error';
					if(firstInvalid == ''){
						firstInvalid = fieldname;
					}
				}
				if(thisform.elements[fieldname].value.length == 7){
					thisform.elements[fieldname].className = 'field';
				}
			}
			break;
			
		/*** International Phone ***/
		case 'phoneINT':
			rExp = /[^0-9]+/gi;
			thisform.elements[fieldname].value = thisform.elements[fieldname].value.replace(rExp,"");
			rExp = /^[0-1]+/;
			thisform.elements[fieldname].value = thisform.elements[fieldname].value.replace(rExp,"");
			if(thisform.elements[fieldname].value.length < 3){
				valid2 = 0;
			  	localPass = 0;
				str2 += "\n* " + displayname + " is too short.";
				thisform.elements[fieldname].className = 'field-error';
				if(firstInvalid == ''){
					firstInvalid = fieldname;
				}
			} else {
				thisform.elements[fieldname].className = 'field';
			}
			break;
			
		/*** International Phone (not required) ***/
		case 'phoneINTNR':
			rExp = /[^0-9]+/gi;
			thisform.elements[fieldname].value = thisform.elements[fieldname].value.replace(rExp,"");
			rExp = /^[0-1]+/;
			thisform.elements[fieldname].value = thisform.elements[fieldname].value.replace(rExp,"");
			if(thisform.elements[fieldname].value.length == 0){
				thisform.elements[fieldname].className = 'field';
			} else {
				if(thisform.elements[fieldname].value.length < 3){
					valid2 = 0;
					localPass = 0;
					str2 += "\n* " + displayname + " is too short.";
					thisform.elements[fieldname].className = 'field-error';
					if(firstInvalid == ''){
						firstInvalid = fieldname;
					}
				} else {
					thisform.elements[fieldname].className = 'field';
				}
			}
			break;
			
		/*** ZIP ***/
		  case 'zip':
			rExp = /[^A-Za-z0-9]+/gi;
			thisform.elements[fieldname].value = thisform.elements[fieldname].value.replace(rExp,"");
		  	thisform.elements[fieldname].value = trim(thisform.elements[fieldname].value);
		  	localPass = 1;
			if(thisform.elements[fieldname].value.length < 5){
				valid2 = 0;
			  	localPass = 0;
				str2 += "\n* Not a valid zip.";
				thisform.elements[fieldname].className = 'field-error';
				if(firstInvalid == ''){
					firstInvalid = fieldname;
				}
			}

			Zip = thisform.elements[fieldname].value.substr(0,3);
			if(BinarySearch(vStatesArray,State) > -1){
				if(BinarySearch(vZipsArray,Zip+State) == -1){
					valid2 = 0;
				  	localPass = 0;
					str2 += "\n* State-zip combo is not valid.";
					thisform.elements[fieldname].className = 'field-error';
					if(firstInvalid == ''){
						firstInvalid = fieldname;
					}
				}
			}
			if(localPass){
				thisform.elements[fieldname].className = 'field';
			}
			break;

		/*** EMAIL ***/
		  case 'email':
		  	thisform.elements[fieldname].value = trim(thisform.elements[fieldname].value);
			reg = /^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/; // valid
			if(!reg.test(thisform.elements[fieldname].value)){
				valid2 = 0;
				str2 += "\n* Email is not valid.";
				thisform.elements[fieldname].className = 'field-error';
				if(firstInvalid == ''){
					firstInvalid = fieldname;
				}
			}else{
				thisform.elements[fieldname].className = 'field';
			}
			Email = thisform.elements[fieldname].value;
			break;

		/*** EMAIL CONFIRM ***/
		  case 'emailconfirm':
		  	thisform.elements[fieldname].value = trim(thisform.elements[fieldname].value);
			if(thisform.elements[fieldname].value != Email){
				valid2 = 0;
				str2 += "\n* Emails do not match.";
				thisform.elements[fieldname].className = 'field-error';
				if(firstInvalid == ''){
					firstInvalid = fieldname;
				}
			}else{
				thisform.elements[fieldname].className = 'field';
			}
			Email = thisform.elements[fieldname].value;
			break;

		/*** TEXT ***/
		  case 'text':
		  	thisform.elements[fieldname].value = trim(thisform.elements[fieldname].value);
			if(thisform.elements[fieldname].value == ''){
				valid1 = 0;
				str1 += "\n* " + displayname;
				thisform.elements[fieldname].className = 'field-error';
				if(firstInvalid == ''){
					firstInvalid = fieldname;
				}
			}else{
				thisform.elements[fieldname].className = 'field';
			}
			break;

		/*** SELECT ***/
		  case 'select':
			if( fieldname == 'extrafield2' && document.getElementById('extrafield2').value == '' )
			{
				str1 += "\n* " + displayname;
				document.getElementById('extrafield2').className = 'field-error';
			}
			else
			{
				document.getElementById('extrafield2').className = 'field';
			}
			if(thisform.elements[fieldname].length == 0)
			{
				valid1 = 0;
				str1 += "\n* " + displayname;
				thisform.elements[fieldname].className = 'field-error';
				if(firstInvalid == ''){
					firstInvalid = fieldname;
				}
			}
			else if(thisform.elements[fieldname].selectedIndex == 0){
				valid1 = 0;
				str1 += "\n* " + displayname;
				thisform.elements[fieldname].className = 'field-error';
				if(firstInvalid == ''){
					firstInvalid = fieldname;
				}
			}
			else{
				thisform.elements[fieldname].className = 'field';
			}
			break;

		/*** RADIO ***/
		  case 'radio':
		  	checked = 0;
		  	for(j = 0;j < thisform.elements[fieldname].length;j++){
		  		if(thisform.elements[fieldname][j].checked){
		  			checked = 1;
		  		}
		  	}

			if(!checked){
				valid1 = 0;
				str1 += "\n* " + displayname;
			  	for(j = 0;j < thisform.elements[fieldname].length;j++){
					thisform.elements[fieldname][j].className = 'field-error';
					if(firstInvalid == ''){
						firstInvalid = '';
					}
				}
			}else{
			  	for(j = 0;j < thisform.elements[fieldname].length;j++){
					thisform.elements[fieldname][j].className = 'field';
				}
			}
			break;

		/*** CHECKBOX ***/
		  case 'checkbox':
			if(!thisform.elements[fieldname].checked){
				valid1 = 0;
				str1 += "\n* " + displayname;
				thisform.elements[fieldname].className = 'field-error';
				if(firstInvalid == ''){
					firstInvalid = fieldname;
				}
			}else{
				thisform.elements[fieldname].className = 'field';
			}
			break;

		/*** CHECKBOXMULTI ***/
		  case 'checkboxmulti':
			fieldArray = fieldname.split('|');
			checked = false;
			for(j = 0;j < fieldArray.length;j++){
				checked |= thisform.elements[fieldArray[j]].checked;
			}
			if(!checked){
				valid1 = 0;
				str1 += "\n* " + displayname;
				if(firstInvalid == ''){
					firstInvalid = fieldArray[0];
				}
			}
			break;

		}
	}

	if(typeof(vDependentFields) != "undefined"){
		for(i = 0;i < vDependentFields.length;i+=3){
			selectedItems = vDependentFields[i].split(',');
			selectedBool = false;
			requiredItems = vDependentFields[i + 1].split(',');
			requiredBool = false;
			for(j = 1;j < selectedItems.length;j++){
				if(thisform.elements[selectedItems[0]].value == selectedItems[j]){
					selectedBool = true;
				}
			}
			for(j = 1;j < requiredItems.length;j++){
				if(thisform.elements[requiredItems[0]].value == requiredItems[j]){
					requiredBool = true;
				}else if(thisform.elements[requiredItems[0]].value != "" && requiredItems[j] == "ANYTHING"){
					requiredBool = true;
				}
			}
			if(selectedBool && !requiredBool){
				valid2 = 0;
				str2 += "\n* " + vDependentFields[i + 2];
				if(firstInvalid == ''){
					firstInvalid = requiredItems[0];
				}
			}
		}
	}

	str = "VALIDATION ERROR";
	if(!valid1){
		str += str1;
	}
	if(!valid2){
		str += str2;
	}
	if(!valid1 || !valid2){
		alert(str);
		if(firstInvalid != ''){
			if( thisform.elements[firstInvalid].type != 'hidden' )
			{
				thisform.elements[firstInvalid].focus();
			}
		}
		return false;
	}else{
		if(!validateCampus()){
			return false;
		}
		if(!formSubmitted){
			inProgress();
			formSubmitted = true;
			return true;
		}else{
			window.status = 'Form Submitting...';
			return false;
		}
	}
	return false;
}
function inProgress() {
	var groupList = document.getElementsByTagName('input');

	for(i = 0; i < groupList.length; i++){
		if(groupList[i].type == 'image' || groupList[i].type == 'submit')
		{
			groupList[i].src = imageProgress.src;
		}
	}
}

function BinarySearch(ArrayToSearch, SearchFor){
    first = 0;
    last = ArrayToSearch.length - 1;
    mid = Math.floor((first + last) / 2);
    while((first <= last) && (ArrayToSearch[mid] != SearchFor.toUpperCase())){
		if(SearchFor.toUpperCase() < ArrayToSearch[mid]){
			last = mid - 1;
		}else if(SearchFor.toLowerCase() > ArrayToSearch[mid]){
			first = mid + 1;
		}
		mid = Math.floor((first + last)/2);
    }
    if(ArrayToSearch[mid] == SearchFor.toUpperCase()){
    	return mid;
    }else{
		return -1;
    }
}
function PageQuery(q) {
	if(q.length > 1) this.q = q.substring(1, q.length);
	else this.q = null;
	this.keyValuePairs = new Array();
	if(q) {
		for(var i=0; i < this.q.split("&").length; i++) {
			this.keyValuePairs[i] = this.q.split("&")[i];
		}
	}
	this.getKeyValuePairs = function() { return this.keyValuePairs; }
	this.getValue = function(s) {
		for(var j=0; j < this.keyValuePairs.length; j++) {
			if(this.keyValuePairs[j].split("=")[0] == s)
				return this.keyValuePairs[j].split("=")[1];
		}
		return false;
	}
	this.getParameters = function() {
		var a = new Array(this.getLength());
		for(var j=0; j < this.keyValuePairs.length; j++) {
			a[j] = this.keyValuePairs[j].split("=")[0];
		}
		return a;
	}
	this.getLength = function() { return this.keyValuePairs.length; }
}
function queryString(key){
	var page = new PageQuery(window.location.search);
	return unescape(page.getValue(key));
}
function displayItem(key){
	if(queryString(key)=='false'){
		return '';
	}else{
		return queryString(key);
	}
}
function trim(str){
   return str.replace(/^\s*|\s*$/g,"");
}
var ajaxObject = false;
var ajaxFunc = false;
function ajaxRequest(url, parameters, callback)
{
	ajaxFunc = callback;
	ajaxObject = false;
	if (window.XMLHttpRequest)
	{
		ajaxObject = new XMLHttpRequest();
		if (ajaxObject.overrideMimeType)
		{
			ajaxObject.overrideMimeType('text/xml');
		}
	}
	else if (window.ActiveXObject)
	{
		try
		{
			ajaxObject = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				ajaxObject = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e)
			{}
		}
	}
	if (!ajaxObject)
	{
		alert('Cannot create XMLHTTP instance');
		return false;
	}
	ajaxObject.onreadystatechange = ajaxCallback;
	ajaxObject.open('GET', url + '?' + parameters, true);
	ajaxObject.send(null);
}

function ajaxCallback()
{
	if (ajaxObject.readyState == 4)
	{
		if (ajaxObject.status == 200)
		{
			ajaxFunc(ajaxObject.responseText);
		}
	}
}

