	function placeFocus() {
	if (document.forms.length > 0) {
	var field = document.forms[0];
	//alert("field.length: " + field.length);
	for (i = 0; i < field.length; i++) {
		//alert("field.elements[i].type: " + field.elements[i].type);
		if ((field.elements[i].type == "text") || (field.elements[i].type == "textarea") || (field.elements[i].type.toString().charAt(0) == "s") || (field.elements[i].type == "password")) {
		document.forms[0].elements[i].focus();
		break;
	         }
	      }
	   }
	}	

	function validateSubmit() {				
	
		 if (isFieldsFull() && checkDates() && allDifferent()) {					 
	 		document.local.submit();
		 } else {
	     		displayerrors();
	     		return false;
		 }
	}

	var errorsmsg = "";
	var err = false;
				

	function isValidDate(date){
	
		var err2 = false;	
		var errFutYear = false;			
					
		var curdate = new Date()
		var year = curdate.getFullYear()																								
		var nextYear = year + 1				
		
		 if (date.length != 10) {
		 		err=true;
				errorsmsg+="<li>'" + date + "' must be in MM/DD/YYYY format.</li>";
		 }	
		 
		 else{
	
			 // is date 1 in a valid date format
			 b = date.substring(0,2); // month
			 c = date.substring(2,3); // '/'
			 d = date.substring(3,5); // day
			 e = date.substring(5,6); // '/'
			 f = date.substring(6,10); // year
	
									
			 //basic error checking
			 if (b<1 || b > 12) err2 = true;								 
			 if (c != '/') err2 = true;
			 if (d<1 || d > 31) err2 = true;
			 if (e != '/') err2 = true;
			 if (f<0) {
			 	err2 = true;			 
			 	}
			 else if (f > nextYear) {
			 	errFutYear = true;			 
			 	}

		
			 // months with 30 days
			 if (b==4 || b==6 || b==9 || b==11){
		 		if (d==31) err2=true;
			 	}
	
			 // february, leap year
			 if (b==2){
			 		// feb
					var g=parseInt(f/4);
					if (isNaN(g)) {
						 err2=true;
					}
	
				if (d>29){
					err2=true
					}
				
				if (d==29 && ((f/4)!=parseInt(f/4))){
					err2=true;
					}
					
		     }
	
			if (err2==true){
				err=true;
				errorsmsg+="<li>'" + date + "' is not a valid date.</li>";
	  			}		  			
	  			
			if (errFutYear==true){
				err=true;
				errorsmsg+="<li>We are not yet scheduling tests for '" + date + "'.</li>";
	  			}		  				  			
			
			 // a little more advanced error checking
	
			 var p_date = new Date (date);
			 var rightnow = new Date();
			 var millperday = 86400000;
			 
			 // did the user select a Sunday for testing
			 if (p_date.getDay() == 0) {
			 		err=true;
					errorsmsg+="<li>'" + date + "' can not be on a Sunday.</li>";
			 }		 	
			 
			 // is there at least two weeks before the test administration
			 duration_days = parseInt((p_date - rightnow) / millperday);
	
			 if (duration_days < 14) {
			 		err=true;
					errorsmsg+="<li>'" + date + "' must be at least 14 days out from today.</li>"
			 }
		 
		 }			 
	
	}
	


				function checkDates(x) {

		  						 var pref_date1 = document.local.T1.value;
								 var pref_date2 = document.local.T2.value;
								 var pref_date3 = document.local.T3.value;

								 isValidDate(pref_date1);
								 isValidDate(pref_date2);
								 isValidDate(pref_date3);								 								 

								 if (err) {
								 	return false;
								 }
								 else {
								 	return true;
								 }
        }


				function trim(s) {
   							 for(var i=0;i<s.length;) {
      					 				 if(s.charAt(i)==" ") s=s.substring(i+1,s.length);
      									 else break;
	 							}
	 							for(var i=s.length-1;i>=0;i=s.length-1) {
	    									if(s.charAt(i)==" ") s=s.substring(0,i);
		     								else break;
	              				}
    						return s;
        		}

				function showerror(field){
								 errorsmsg+="<li>Please enter "+field+".</li>";
        		}			

				function displayerrors(){
   							 if(errorsmsg!=""){
	   						 				 var header="Please correct the following mistake(s):<ul>"; 
     										 var footer="</ul><br><center>"+"<a href=\"\" onClick=\"javascript:self.close(); \">Revise Form</a></center><br>";
	   										 DispWin=window.open('','NewWin','toolbar=no, status=no,width=300,height=300');
		                     DispWin.document.open();
 		 										 DispWin.document.write(header+errorsmsg+footer);
 		 										 DispWin.document.close();
		 										 errorsmsg="";
	               			}
		        }


				function isFieldsFull(){
   							 var reqfield;
	 							 var truthval=true;

	 							 if(trim(document.local.first_name.value.length) < 1){
	    					 					reqfield="a first name";
													showerror(reqfield);
													truthval=false;
	 							 }

	 							 if(trim(document.local.last_name.value.length) < 1){
	    					 					reqfield="a last name";
													showerror(reqfield);
													truthval=false;
	 							 }

	 							 if(trim(document.local.street_address.value.length) < 1){
	    					 					reqfield="a street address";
													showerror(reqfield);
													truthval=false;
	 							 }

	 							 if(trim(document.local.city.value.length) < 1){
	    					 					reqfield="a city";
													showerror(reqfield);
													truthval=false;
	 							 }

	 							 if(trim(document.local.state_province.value.length) < 1){
	    					 					reqfield="a state/province";
													showerror(reqfield);
													truthval=false;
	 							 }

	 							 if(trim(document.local.postal_code.value.length) < 1){
	    					 					reqfield="a postal code";
													showerror(reqfield);
													truthval=false;
	 							 }

	 							 if(trim(document.local.country.value.length) < 1){
	    					 					reqfield="a country";
													showerror(reqfield);
													truthval=false;
	 							 }

	 							 if(trim(document.local.home_phone.value.length) < 1){
	    					 					reqfield="a home phone";
													showerror(reqfield);
													truthval=false;
	 							 }

	 							 if(trim(document.local.site_id1.value) == -1){
	    					 					reqfield="a location site1";
													showerror(reqfield);
													truthval=false;
	 							 }

	 							 if(trim(document.local.site_id2.value) == -1){
	    					 					reqfield="a location site2";
													showerror(reqfield);
													truthval=false;
	 							 }
	 							 if(trim(document.local.site_id3.value) == -1){
	    					 					reqfield="a location site3";
													showerror(reqfield);
													truthval=false;
	 							 }

	 							 if(trim(document.local.T1.value.length) < 1){
	    					 					reqfield="a date 1 preference";
													showerror(reqfield);
													truthval=false;
	 							 }

	 							 if(trim(document.local.T2.value.length) < 1){
	    					 					reqfield="a date 2 preference";
													showerror(reqfield);
													truthval=false;
	 							 }

	 							 if(trim(document.local.T3.value.length) < 1){
	    					 					reqfield="a date 3 preference";
													showerror(reqfield);
													truthval=false;
	 							 }

                 return truthval;
        		}

				function allDifferent() {
								 var truthval = true;

								 if (document.local.T1.value == document.local.T2.value && document.local.site_id1.value == document.local.site_id2.value && document.local.time1[0].checked && document.local.time2[0].checked) {
								 		truthval = false;
										errorsmsg+="<li>Preferences 1 and 2 must be different.</li>"
								 }

								 if (document.local.T1.value == document.local.T2.value && document.local.site_id1.value == document.local.site_id2.value && document.local.time1[1].checked && document.local.time2[1].checked) {
								 		truthval = false;
										errorsmsg+="<li>Preferences 1 and 2 must be different.</li>"
								 }

								 if (document.local.T1.value == document.local.T3.value && document.local.site_id1.value == document.local.site_id3.value && document.local.time1[0].checked && document.local.time3[0].checked) {
								 		truthval = false;
										errorsmsg+="<li>Preferences 1 and 3 must be different.</li>"
								 }

								 if (document.local.T1.value == document.local.T3.value && document.local.site_id1.value == document.local.site_id3.value && document.local.time1[1].checked && document.local.time3[1].checked) {
								 		truthval = false;
										errorsmsg+="<li>Preferences 1 and 3 must be different.</li>"
								 }

								 if (document.local.T3.value == document.local.T2.value && document.local.site_id3.value == document.local.site_id2.value && document.local.time3[0].checked && document.local.time2[0].checked) {
								 		truthval = false;
										errorsmsg+="<li>Preferences 2 and 3 must be different.</li>"
								 }

								 if (document.local.T3.value == document.local.T2.value && document.local.site_id3.value == document.local.site_id2.value && document.local.time3[1].checked && document.local.time2[1].checked) {
								 		truthval = false;
										errorsmsg+="<li>Preferences 2 and 3 must be different.</li>"
								 }

								 return truthval;
				}

				
function isValidEmail(email){				
	if (email!="" && !/^[\w_-]+(\.[\w_-]+)*@[\w_-]+(\.[\w_-]+)*\.\w{2,4}$/.test(email)) {
		alert("'" + email + "' is not a valid e-mail address. Please correct and resubmit.")
		return false;
	}
	else{
		return true;
	}
}

	function showElements(theForm) {   
		str = "Form Elements of form " + theForm.name + ": \n "   
		for (i = 0; i < theForm.length; i++)       
			str += theForm.elements[i].name + " " + theForm.elements[i].value + "\n"   			
		alert(str)
		}

//this is only set up to work when date is formatted in mm/dd/yyyy form
function dateIsAfterToday(date){

	//check the first date selected to be sure that it's not before today					
	var todaysDate = new Date; 										

	//
	var thedate = date;
	var theformat = "mm/dd/yyyy";					

	//alert("thedate: "	+ thedate);									

	// Fetch the date separator from the user's input
	var sSepDate = thedate.charAt(thedate.search(/\D/));
	// Fetch the date separator from the format
	var sSepFormat=theformat.charAt(theformat.search(/[^MDY]/i));

	// Fetch the three pieces of the date from the user's input and the format
	var aValueMDY=thedate.split(sSepDate,3);
	var aFormatMDY=theformat.split(sSepFormat,3);

	// Assign day, month, year based on format
	var iMonth,iDay,iYear;
	iMonth = aValueMDY[0];
	iDay   = aValueMDY[1];
	iYear  = aValueMDY[2];

	//create a Date object
	var dateToCompare = new Date(iYear,iMonth-1,iDay);

	//alert("dateToCompare: "	+ dateToCompare);				
					
	if(dateToCompare < todaysDate){
		return false;
	}
		
	return true;
}


<!-- Web Site:  http://dynamicdrive.com -->

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->

<!-- Begin
function disableForm(theform) {
if (document.all || document.getElementById) {
for (i = 0; i < theform.length; i++) {
var tempobj = theform.elements[i];
if (tempobj.type.toLowerCase() == "submit" || tempobj.type.toLowerCase() == "reset")
tempobj.disabled = true;
}
setTimeout('alert("Your form has been submitted.  Notice how the submit and reset buttons were disabled upon submission.")', 2000);
return true;
}
else {
//alert("The form has been submitted.  But, since you're not using IE 4+ or NS 6, the submit button was not disabled on form submission.");
return false;
   }
}
//  End -->

function autotab(original,destination)
{
    if (original.getAttribute && original.value.length == original.getAttribute("maxlength"))
	    destination.focus()
}
	

var newwindow = '';

function showExamResults(x) {
    url = "/tds_v5/asp/exam_results.asp?exam_results_id="+x
	if (!newwindow.closed && newwindow.location) {
		newwindow.location.href = url;
	}
	else {
		newwindow=window.open(url,'remotewinResults','width=600, height=600,toolbar=0,scrollbars=1,resizable=1,screenX=0,screenY=0');
		if (!newwindow.opener) newwindow.opener = self;
	}
	if (window.focus) {newwindow.focus()}
	return false;
}

function showCandidateDetails(x) {
	url = "/tds_v5/asp/edit_candidate.asp?candidate_id="+x;
	if (!newwindow.closed && newwindow.location) {
		newwindow.location.href = url;
	}
	else {
		newwindow=window.open(url,'remotewinCandidate','width=800, height=600, toolbar=0, scrollbars=1,resizable=1,screenX=0,screenY=0');
		if (!newwindow.opener) newwindow.opener = self;
	}
	if (window.focus) {newwindow.focus()}
	return false;
}				

function showSiteDetails(x) {
	url = '/tds_v5/asp/odr_site_details_report.asp?site_id=' + x;
	if (!newwindow.closed && newwindow.location) {
		newwindow.location.href = url;
	}
	else {
		newwindow=window.open(url,'remotewinSiteDetails','width=600, height=600,toolbar=0,scrollbars=1,resizable=1,screenX=0,screenY=0');
		if (!newwindow.opener) newwindow.opener = self;
	}
	if (window.focus) {newwindow.focus()}
	return false;
}

/*
function showPartnerSite(x) {
	url = '/tds_v5/asp/odr_ondemand_sites.asp?site_id=' + x;
	if (!newwindow.closed && newwindow.location) {
		newwindow.location.href = url;
	}
	else {
		newwindow=window.open(url,'remotewinPartner','width=800, height=600,toolbar=0,scrollbars=1,resizable=1,screenX=0,screenY=0');
		if (!newwindow.opener) newwindow.opener = self;
	}
	if (window.focus) {newwindow.focus()}
	return false;
}

function showNonPartnerSite(x) {
	url = '/tds_v5/asp/odr_sites2.asp?site_id=' + x;
	if (!newwindow.closed && newwindow.location) {
		newwindow.location.href = url;
	}
	else {
		newwindow=window.open(url,'remotewinNonPartner','width=900, height=600,toolbar=0,scrollbars=1,resizable=1,screenX=0,screenY=0');
		if (!newwindow.opener) newwindow.opener = self;
	}
	if (window.focus) {newwindow.focus()}
	return false;
}
*/

function showSiteInfo(x) {
	url = '/tds_v5/asp/site_info.asp?site_id=' + x;
	if (!newwindow.closed && newwindow.location) {
		newwindow.location.href = url;
	}
	else {
		newwindow=window.open(url,'remotewinSiteInfo','width=900, height=600,toolbar=0,scrollbars=1,resizable=1,screenX=0,screenY=0');
		if (!newwindow.opener) newwindow.opener = self;
	}
	if (window.focus) {newwindow.focus()}
	return false;
}

function showSched(x) {
	url = '/tds_v5/asp/odr_site_sched_report.asp?site_id=' + x;
	if (!newwindow.closed && newwindow.location) {
		newwindow.location.href = url;
	}
	else {
		newwindow=window.open(url,'remotewinSched','width=600, height=600,toolbar=0,scrollbars=1,resizable=1,screenX=0,screenY=0');
		if (!newwindow.opener) newwindow.opener = self;
	}
	if (window.focus) {newwindow.focus()}
	return false;
}

function showProctorDetails(x) {
	url = '/tds_v5/asp/odr_proctors2.asp?proctor_id='+x;
	if (!newwindow.closed && newwindow.location) {
		newwindow.location.href = url;
	}
	else {
		newwindow=window.open(url,'remotewinProctors','width=800, height=600,toolbar=0,scrollbars=1,resizable=1,screenX=0,screenY=0');
		if (!newwindow.opener) newwindow.opener = self;
	}
	if (window.focus) {newwindow.focus()}
	return false;
}

function showOLT(x) {
	url = '/nwrc/asp/nwrc_olt_exam_details.asp?exam_results_id='+x;
	if (!newwindow.closed && newwindow.location) {
		newwindow.location.href = url;
	}
	else {
		newwindow=window.open(url,'remotewinOLT','width=800, height=600,toolbar=0,scrollbars=1,resizable=1,screenX=0,screenY=0');
		if (!newwindow.opener) newwindow.opener = self;
	}
	if (window.focus) {newwindow.focus()}
	return false;
}

function showADARequestedEntry(sequencer) {
	url = '/tds_v5/ada/asp/requested_ada_info.asp?sequencer='+sequencer;
	if (!newwindow.closed && newwindow.location) {
		newwindow.location.href = url;
	}
	else {
		newwindow=window.open(url,'remotewinRequestedADA','width=300, height=600,toolbar=0,scrollbars=1,resizable=1,screenX=0,screenY=0');
		if (!newwindow.opener) newwindow.opener = self;
	}
	if (window.focus) {newwindow.focus()}
	return false;
}


function showTransaction(x,y) {
	url = "/transaction/edit_transaction.asp?tranx="+x+"&candidate_id="+y;
	if (!newwindow.closed && newwindow.location) {
		newwindow.location.href = url;
	}
	else {
		newwindow=window.open(url,'remotewinTransaction','width=700, height=600,toolbar=0,scrollbars=1,resizable=1,screenX=0,screenY=0');
		if (!newwindow.opener) newwindow.opener = self;
	}
	if (window.focus) {newwindow.focus()}
	return false;
}			

function showUsedVouchers(x) {
	url = '/transaction/NWRC_used_vouchers_search_results.asp?voucher_id='+x;
	if (!newwindow.closed && newwindow.location) {
		newwindow.location.href = url;
	}
	else {
		newwindow=window.open(url,'remotewinUsedVouchers','width=600, height=600,toolbar=0,scrollbars=1,resizable=1,screenX=0,screenY=0');
		if (!newwindow.opener) newwindow.opener = self;
	}
	if (window.focus) {newwindow.focus()}
	return false;
}	

function showPurchasedVouchers(x) {
	url = '/transaction/NWRC_purchased_vouchers_search_results.asp?voucher_id='+x;
	if (!newwindow.closed && newwindow.location) {
		newwindow.location.href = url;
	}
	else {
		newwindow=window.open(url,'remotewinPurchasedVouchers','width=600, height=600,toolbar=0,scrollbars=1,resizable=1,screenX=0,screenY=0');
		if (!newwindow.opener) newwindow.opener = self;
	}
	if (window.focus) {newwindow.focus()}
	return false;
}	


function setMaxTextAreaLength() {
	var x = document.getElementsByTagName('textarea');
	var counter = document.createElement('div');
	counter.className = 'counter';
	for (var i=0;i<x.length;i++) {
		if (x[i].getAttribute('maxlength')) {
			var counterClone = counter.cloneNode(true);
			counterClone.relatedElement = x[i];
			counterClone.innerHTML = '<span>0</span>/'+x[i].getAttribute('maxlength')+' characters used/character max';
			x[i].parentNode.insertBefore(counterClone,x[i].nextSibling);
			x[i].relatedElement = counterClone.getElementsByTagName('span')[0];

			x[i].onkeyup = x[i].onchange = checkMaxTextAreaLength;
			x[i].onkeyup();
		}
	}
}

function checkMaxTextAreaLength() {
	var maxLength = this.getAttribute('maxlength');
	var currentLength = this.value.length;
	if (currentLength > maxLength){
		this.relatedElement.className = 'toomuch';
		}
	else
		this.relatedElement.className = '';
	this.relatedElement.firstChild.nodeValue = currentLength;
	// not innerHTML
}

function showSiteDirectionsPreview(x) {
	url = '/tds_v5/asp/site_directions_preview.asp?site_id=' + x;
	if (!newwindow.closed && newwindow.location) {
		newwindow.location.href = url;
	}
	else {
		newwindow=window.open(url,'remotewinSiteDirectionsPreview','width=600, height=600,toolbar=0,scrollbars=1,resizable=1,screenX=0,screenY=0');
		if (!newwindow.opener) newwindow.opener = self;
	}
	if (window.focus) {newwindow.focus()}
	return false;
}
