// JavaScript Document<script language="JavaScript" type="text/JavaScript"><!--function MM_preloadImages() { //v3.0  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}}function MM_swapImgRestore() { //v3.0  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;}function MM_findObj(n, d) { //v4.01  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);  if(!x && d.getElementById) x=d.getElementById(n); return x;}function MM_swapImage() { //v3.0  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}}function checkWholeForm(theForm) {    var why = "";    why += isEmptyFirstName(theForm.firstName.value);    why += isEmptyLastName(theForm.lastName.value);    //why += isEmptyParentName(theForm.parents_names.value);    why += checkEmail(theForm.email.value);    why += checkPhone(theForm.phone.value);    why += checkPrograms(theForm.program_abroad_india.checked,                         theForm.program_summer_india.checked,						 theForm.program_summer_ecuador.checked,                         theForm.program_gap_study.checked,						 theForm.program_gap_vol.checked,                         theForm.program_teacher_india.checked,						 theForm.program_teacher_ecuador.checked,                         theForm.program_custom.checked);    why += isEmptyAddress(theForm.address.value);    why += isEmptyCity(theForm.city.value);    why += isEmptyState(theForm.state.value);    why += isEmptyZip(theForm.zip.value);    why += isEmptyCountry(theForm.country.value);		//why += checkState(theForm.State.selectedIndex, theForm.country.selectedIndex );		//alert ("state:"+ theForm.State.selectedIndex + "\n" + "country: " + theForm.Country.selectedIndex);		    //why += checkZip(theForm.zipcode.value, theForm.country.selectedIndex);        //why += checkDonation(theForm.donation.value);        if (why != "") {       alert(why);       return false;    }return true;} function checkPrograms(program_abroad_india,                       program_summer_india,					   program_summer_ecuador,                       program_gap_study,					   program_gap_vol,                       program_teacher_india,					   program_teacher_ecuador,                       program_custom) {  var error = "";                       if ( !(program_abroad_india || program_summer_india || program_summer_ecuador || program_gap_study || program_gap_vol || program_teacher_india || program_teacher_ecuador || program_custom)) {       error = "Please select at least one program area.\n";  }  return error;}function isEmptyCity(strng) {var error = "";  if (strng.length == 0) {     error = "Your city has not been entered.\n"  }return error;	  }function isEmptyState(strng) {var error = "";  if (strng.length == 0) {     error = "Your state has not been entered.\n"  }return error;	  }function isEmptyZip(strng) {var error = "";  if (strng.length == 0) {     error = "Your zip has not been entered.\n"  }return error;	  }function isEmptyCountry(strng) {var error = "";  if (strng.length == 0) {     error = "Your country has not been entered.\n"  }return error;	  }function checkState(choice, countryId ) {    var error = "";    if  ( choice == 52)  {//  this is the number for the blank record       error = "You didn't choose a  state/province.\n";    }      if ( ( choice < 52 ) && (countryId ==1) ) {// if country is canada and states are us, problem       error = "The state/province chosen doesn't match the country.\n";    }      if ( ( choice > 52 ) && (countryId == 0)  ) {  // If country is USA and sates are really provinces, problem           error = "The state/province chosen doesn't match the country.\n";    }         //alert("choice: " +choice +"\n" +" countryID: " + countryId);return error;}// phone number - strip out delimiters and check for 10 digitsfunction checkPhone (strng) {var error = "";if (strng == "") {   error = "You didn't enter a phone number.\n";   return error;}var stripped = strng.replace(/[+xX\(\)\.\-\ ]/g, ''); //strip out acceptable non-numeric characters//alert (stripped);    if (!(stripped.length >= 10  )) {	error = "The phone number is the wrong length. \n  (Make sure you included an area code.)\n";    }       if (!(stripped.length <= 17  )) {	error = "The phone number is the wrong length. \n";    }       for (i =0; i<stripped.length; i++) {    	if ('0123456789'.indexOf(stripped.charAt(i)) < 0) { //hey I know it is weird, but it works...  without making x an ok character, extensions bomb.    		error= "The phone number contains illegal characters.\n";    	}    }	return error;}function isEmptyFirstName(strng) {var error = "";  if (strng.length == 0) {     error = "Your first name has not been entered.\n"  }return error;	  }function isEmptyLastName(strng) {var error = "";  if (strng.length == 0) {     error = "Your last name has not been entered.\n"  }return error;	  }function isEmptyParentName(strng) {var error = "";  if (strng.length == 0) {     error = "The parent name has not been entered.\n"  }return error;	  }function isEmptyAddress(strng) {var error = "";  if (strng.length == 0) {     error = "The billing address has not been filled in.\n"  }return error;	  }function isEmptyCity(strng) {var error = "";  if (strng.length == 0) {     error = "The billing city has not been filled in.\n"  }return error;	  }function isEmptyAddress(strng) {var error = "";  if (strng.length == 0) {     error = "Please enter your  address.\n"  }return error;	  }function isEmptyCity(strng) {var error = "";  if (strng.length == 0) {     error = "The  city has not been filled in.\n"  }return error;	  }// Zip - strip out delimiters and check for 5 digits//also check for canadian postal codesfunction checkZip (strng,countryId) {	var error = "";	if (strng == "" && (countryId ==0 ||  countryId ==1 )) { // if country is canada or US and there is no postal code report error    error = "You didn't enter a  zipcode or postal code.\n";    return error;	}		if (countryId ==0 ) { // one of the 50 states or guam or PR		//var stripped = strng.replace(/[\(\)\.\-\ ]/g, ''); //strip out acceptable non-numeric characters  	  			for (i =0; i<strng.length; i++) {			if ('0123456789'.indexOf(strng.charAt(i)) < 0) { 				error= "The zipcode contains illegal characters.\n";				break;			}		}  	 	  if (!(strng.length == 5)) {		  error = "The  zipcode is the wrong length.\n"; 	  } 	}	if (countryId ==1 ){ //must be canada		error = ("Please re-enter your  postal code.\n");				strng = strng.replace(/[\-\ ]/g, '');					strlen = strng.length; 				if (strlen != 6) {return error;}		strng=strng.toUpperCase();        // in case of lowercase characters		// Check for legal characters in string - note index starts at zero		if ('ABCDEFGHJKLMNPQRSTUVWXYZ'.indexOf(strng.charAt(0)) < 0) {return error;}		if ('0123456789'.indexOf(strng.charAt(1)) < 0) {return error;}		if ('ABCDEFGHJKLMNPQRSTUVWXYZ'.indexOf(strng.charAt(2)) < 0) {return error;}		if ('0123456789'.indexOf(strng.charAt(3)) < 0) {return error;}		if ('ABCDEFGHJKLMNPQRSTUVWXYZ'.indexOf(strng.charAt(4)) < 0) {return error;}		if ('0123456789'.indexOf(strng.charAt(5)) < 0) {return error;}				error="";	}		return error;}function checkEmail (emailStr) {var error="";/* The following variable tells the rest of the function whether or notto verify that the address ends in a two-letter country or well-knownTLD.  1 means check it, 0 means don't. */var checkTLD=1;/* The following is the list of known TLDs that an e-mail address must end with. */var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;/* The following pattern is used to check if the entered e-mail addressfits the user@domain format.  It also is used to separate the usernamefrom the domain. */var emailPat=/^(.+)@(.+)$/;/* The following string represents the pattern for matching all specialcharacters.  We don't want to allow special characters in the address. These characters include ( ) < > @ , ; : \ " . [ ] */var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";/* The following string represents the range of characters allowed in a username or domainname.  It really states which chars aren't allowed.*/var validChars="\[^\\s" + specialChars + "\]";/* The following pattern applies if the "user" is a quoted string (inwhich case, there are no rules about which characters are allowedand which aren't; anything goes).  E.g. "jiminy cricket"@disney.comis a legal e-mail address. */var quotedUser="(\"[^\"]*\")";/* The following pattern applies for domains that are IP addresses,rather than symbolic names.  E.g. joe@[123.124.233.4] is a legale-mail address. NOTE: The square brackets are required. */var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;/* The following string represents an atom (basically a series of non-special characters.) */var atom=validChars + '+';/* The following string represents one word in the typical username.For example, in john.doe@somewhere.com, john and doe are words.Basically, a word is either an atom or quoted string. */var word="(" + atom + "|" + quotedUser + ")";// The following pattern describes the structure of the uservar userPat=new RegExp("^" + word + "(\\." + word + ")*$");/* The following pattern describes the structure of a normal symbolicdomain, as opposed to ipDomainPat, shown above. */var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");/* Finally, let's start trying to figure out if the supplied address is valid. *//* Begin with the coarse pattern to simply break up user@domain intodifferent pieces that are easy to analyze. */var matchArray=emailStr.match(emailPat);if (matchArray==null) {/* Too many/few @'s or something; basically, this address doesn'teven fit the general mould of a valid e-mail address. */error ="Your email address seems incorrect.\n";return error;}var user=matchArray[1];var domain=matchArray[2];// Start by checking that only basic ASCII characters are in the strings (0-127).for (i=0; i<user.length; i++) {if (user.charCodeAt(i)>127) {error ="Your email's username contains invalid characters.\n";return error;   }}for (i=0; i<domain.length; i++) {if (domain.charCodeAt(i)>127) {error ="Your email's domain name contains invalid characters.\n";return error;   }}// See if "user" is valid if (user.match(userPat)==null) {// user is not validerror ="Your email's username doesn't seem to be valid.\n";return error;}/* if the e-mail address is at an IP address (as opposed to a symbolichost name) make sure the IP address is valid. */var IPArray=domain.match(ipDomainPat);if (IPArray!=null) {// this is an IP addressfor (var i=1;i<=4;i++) {if (IPArray[i]>255) {error ="Your email's destination IP address is invalid.\n";return error;   }}return error;}// Domain is symbolic name.  Check if it's valid. var atomPat=new RegExp("^" + atom + "$");var domArr=domain.split(".");var len=domArr.length;for (i=0;i<len;i++) {if (domArr[i].search(atomPat)==-1) {error ="Your email's domain name does not seem to be valid.\n";return error;   }}/* domain name seems valid, but now make sure that it ends in aknown top-level domain (like com, edu, gov) or a two-letter word,representing country (uk, nl), and that there's a hostname preceding the domain or country. */if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) {error ="Your email must end in a well-known domain or two letter " + "country.\n";return error;}// Make sure there's a host name preceding the domain.if (len<2) {error ="Your email is missing a hostname!\n";return error;}// If we've gotten this far, everything's valid!return error;}function popUp(URL){window.open(URL,'',"toolbars=0,scrollbars=0,location=0,status=0,menubars=0,resizeable=0,left=100,top=100,width=500,height=620");}var map = 'map.html';//-->