function ValidateApplication(form)
{	
	var chosen = false;
	var firstName = form.firstName.value;			var middleName = form.middleName.value;			var lastName = form.lastName.value;
	var strAddr1 = form.strAddr1.value;			var strAddr2 = form.strAddr2.value;
	var city = form.city.value;
	var zipFive = form.zipFive.value;			var zipFour = form.zipFour.value;
	var phoneDayAreaCode = form.phoneDayAreaCode.value;	var phoneDayExchange = form.phoneDayExchange.value;	var phoneDayRest = form.phoneDayRest.value;
	var phoneEveAreaCode = form.phoneEveAreaCode.value;	var phoneEveExchange = form.phoneEveExchange.value;	var phoneEveRest = form.phoneEveRest.value;
	var email = form.email.value;
	var salFrom = form.txtSalFrom.value;			var salTo = form.txtSalTo.value;
	var eduSchoolName1 = form.eduSchoolName1.value;		var eduSchoolName2 = form.eduSchoolName2.value;		var eduSchoolName3 = form.eduSchoolName3.value;
	var eduStartDt1 = form.eduStartDt1.value;		var eduStartDt2 = form.eduStartDt2.value;		var eduStartDt3 = form.eduStartDt3.value;
	var eduEndDt1 = form.eduEndDt1.value;			var eduEndDt2 = form.eduEndDt2.value;			var eduEndDt3 = form.eduEndDt3.value;
	var eduMajor1 = form.eduMajor1.value;			var eduMajor2 = form.eduMajor2.value;			var eduMajor3 = form.eduMajor3.value;
	var eduGraduate1 = form.eduGraduate1.value;		var eduGraduate2 = form.eduGraduate2.value;		var eduGraduate3 = form.eduGraduate3.value;
	var empEmployerName1 = form.empEmployerName1.value;	var empEmployerName2 = form.empEmployerName2.value;	var empEmployerName3 = form.empEmployerName3.value;
	var empStartDt1 = form.empStartDt1.value;		var empStartDt2 = form.empStartDt2.value;		var empStartDt3 = form.empStartDt3.value;
	var empEndDt1 = form.empEndDt1.value;			var empEndDt2 = form.empEndDt2.value;			var empEndDt3 = form.empEndDt3.value;
	var empSupervisorName1 = form.empSupervisorName1.value;	var empSupervisorName2 = form.empSupervisorName2.value;	var empSupervisorName3 = form.empSupervisorName3.value;
	var empPhone1 = form.empPhone1.value;			var empPhone2 = form.empPhone2.value;			var empPhone3 = form.empPhone3.value;
	var empContact1 = form.empContact1.value;		var empContact2 = form.empContact2.value;		var empContact3 = form.empContact3.value;
	var intSalFrom=parseInt(form.txtSalFrom.value);
	var intSalTo=parseInt(form.txtSalTo.value);

//********** beginning of validation of required fields **********

//	ensure that required text fields have been valued...

	switch (true)
	{
		case (firstName==""):
			alert("First name is required")
			form.firstName.focus()
			return false;
			break;
	
		case (lastName==""):
			alert("Last name is required")
			form.lastName.focus()
			return false;
			break;
	
		case (strAddr1==""):
			alert("Line 1 of street address is required")
			form.strAddr1.focus()
			return false;
			break;
	
		case (city==""):
			alert("City is required")
			form.city.focus()
			return false;
			break;
	
		case (zipFive==""):
			alert("First part of zip code is required")
			form.zipFive.focus()
			return false;
			break;
	
		case (email==""):
			alert("Email address is required")
			form.email.focus()
			return false;
			break;

		case ((phoneEveAreaCode=="") || (phoneEveExchange=="") || (phoneEveRest=="")):
			alert("Full evening phone number is required")
			form.phoneEveAreaCode.focus()
			return false;
			break;
	}

//	ensure that a state (or,"none") has been chosen...
	if (form.selState.selectedIndex==0)
	{
		alert("Selection of a state is required")
		form.selState.focus()
		return false;
	}

//	ensure that a sex code has been chosen...
	for (var i=0; i<form.radSex.length; i++)
	{
		if (form.radSex[i].checked)
		{
			chosen=true
			break;
		}
	}
	if (chosen==false)
	{
		alert("Selection of a sex code is required")
		form.radSex[0].focus()
		return false;
	}

//	ensure that at least one position title has been chosen...
	chosen = false;
	for (var i=0; i<form.chkPosTitle.length; i++)
	{
		if (form.chkPosTitle[i].checked)
		{
			chosen=true
			break;
		}
	}
	if (chosen==false)
	{
		alert("Selection of a position title is required")
		form.chkPosTitle[0].focus()
		return false;
	}

//	ensure that the 'drug test' question has been answered...
	chosen = false;
	for (var i=0; i<form.radDrug.length; i++)
	{
		if (form.radDrug[i].checked)
		{
			chosen=true
			break;
		}
	}
	if (chosen==false)
	{
		alert("Answer to drug test question is required")
		form.radDrug[0].focus()
		return false;
	}

//	ensure that the 'crime' question has been answered...
	chosen = false;
	for (var i=0; i<form.radCrime.length; i++)
	{
		if (form.radCrime[i].checked)
		{
			chosen=true
			break;
		}
	}
	if (chosen==false)
	{
		alert("Answer to crime question is required")
		form.radCrime[0].focus()
		return false;
	}

//********** end of check for required fields **********


//********** begin data integrity checking and logistical validation of fields **********

// ensure that all necessary 'daytime phone' fields are populated and numerically valid...
	if ((phoneDayAreaCode > "") || (phoneDayExchange > "") || (phoneDayRest > ""))
	{
		if ((phoneDayAreaCode=="") || (phoneDayExchange=="") || (phoneDayRest==""))
		{
			alert("Incomplete 'Daytime phone' information");
			form.phoneDayAreaCode.focus();
			return false;
		}
		if ((phoneDayAreaCode.length < 3) || (isNaN(phoneDayAreaCode)))
		{
			alert("Area Code must be three numbers");
			form.phoneDayAreaCode.focus();
			form.phoneDayAreaCode.select();
			return false; 
		}
		if ((phoneDayExchange.length < 3) || (isNaN(phoneDayExchange)))
		{
			alert("Phone exchange must be three numbers");
			form.phoneDayExchange.focus();
			form.phoneDayExchange.select();
			return false; 
		}
		if ((phoneDayRest.length < 4) || (isNaN(phoneDayRest)))
		{
			alert("Phone field must be four numbers");
			form.phoneDayRest.focus();
			form.phoneDayRest.select();
			return false; 
		}
	}

// ensure that all 'evening phone' fields are numerically valid...
	if ((phoneEveAreaCode > "") || (phoneEveExchange > "") || (phoneEveRest > ""))
	{
		if ((phoneEveAreaCode.length < 3) || (isNaN(phoneEveAreaCode)))
		{
			alert("Area Code must be three numbers");
			form.phoneEveAreaCode.focus();
			form.phoneEveAreaCode.select();
			return false; 
		}
		if ((phoneEveExchange.length < 3) || (isNaN(phoneEveExchange)))
		{
			alert("Phone exchange must be three numbers");
			form.phoneEveExchange.focus();
			form.phoneEveExchange.select();
			return false; 
		}
		if ((phoneEveRest.length < 4) || (isNaN(phoneEveRest)))
		{
			alert("Phone field must be four numbers");
			form.phoneEveRest.focus();
			form.phoneEveRest.select();
			return false; 
		}
	}

// ensure that all necessary 'birthdate' fields are populated and the date, itself, is valid...
	if ((form.selBirDtMonth.selectedIndex != 0) || (form.selBirDtDay.selectedIndex != 0) || (form.selBirDtYear.selectedIndex != 0))
	{
		if ((form.selBirDtMonth.selectedIndex == 0) || (form.selBirDtDay.selectedIndex == 0) || (form.selBirDtYear.selectedIndex == 0))
		{
			alert("Incomplete 'Birth date' information");
			form.selBirDtMonth.focus();
			return false;
		}
		else
		{
			valDate=(form.selBirDtMonth.value+form.selBirDtDay.value+form.selBirDtYear.value);
			if (!DateValidation(1, valDate))  //first parm is the date format indicator; here '1' means mmddyyyy
			{
				form.selBirDtDay.focus();
				return false;
			}
		}
	}


// ensure that all necessary 'salary' fields are populated and ranges are numerically valid...
	if ((salFrom > "") && (isNaN(salFrom)))
	{
		alert("Field must be all numbers")
		form.txtSalFrom.focus()
		form.txtSalFrom.select()
		return false;
	}
	if ((salTo > "") && (isNaN(salTo)))
	{
		alert("Field must be all numbers")
		form.txtSalTo.focus()
		form.txtSalTo.select()
		return false;
	}

	switch (true)
	{
		case (salFrom > "" && salTo == ""):
			alert("Missing 'Salary To' value")
			form.txtSalTo.focus()
			return false;
			break;

		case (salTo > "" && salFrom == ""):
			alert("Missing 'Salary From' value")
			form.txtSalFrom.focus()
			return false;
			break;

		case ((salFrom > "" && salTo > "")) &&
			((intSalTo < intSalFrom) || (salFrom < 1) || (salTo < 1)) :
			alert("Invalid salary range")
			form.txtSalTo.focus()
			return false;
			break;
	}

// ensure that all necessary 'Employment' fields are populated...
	if ((empEmployerName1 > "") || (empStartDt1 > "") || (empEndDt1 > "") || (empSupervisorName1 > "") || (empPhone1 > "") || (empContact1 > ""))
	{
		if ((!empEmployerName1 > "") || (!empStartDt1 > "") || (!empSupervisorName1 > "") || (!empContact1 > ""))
		{
			alert("Incomplete Employer data on line one.\n\n'Employer Name', 'Start Date', 'Supervisor Name', and 'Contact permission'\nmust all be populated");
			form.empEmployerName1.focus();
			return false;
		}
		if (!((empContact1 == "y") || (empContact1 == "n")))
		{
			alert("Value must be 'y' or 'n'")
			form.empContact1.focus();
			return false;
		}
	}

	if ((empEmployerName2 > "") || (empStartDt2 > "") || (empEndDt2 > "") || (empSupervisorName2 > "") || (empPhone2 > "") || (empContact2 > ""))
	{
		if ((!empEmployerName2 > "") || (!empStartDt2 > "") || (!empSupervisorName2 > "") || (!empContact2 > ""))
		{
			alert("Incomplete Employer data on line two.\n\n'Employer Name', 'Start Date', 'Supervisor Name', and 'Contact permission'\nmust all be populated");
			form.empEmployerName2.focus();
			return false;
		}
		if (!((empContact2 == "y") || (empContact2 == "n")))
		{
			alert("Value must be 'y' or 'n'")
			form.empContact2.focus();
			return false;
		}
	}

	if ((empEmployerName3 > "") || (empStartDt3 > "") || (empEndDt3 > "") || (empSupervisorName3 > "") || (empPhone3 > "") || (empContact3 > ""))
	{
		if ((!empEmployerName3 > "") || (!empStartDt3 > "") || (!empSupervisorName3 > "") || (!empContact3 > ""))
		{
			alert("Incomplete Employer data on line three.\n\n'Employer Name', 'Start Date', 'Supervisor Name', and 'Contact permission'\nmust all be populated");
			form.empEmployerName3.focus();
			return false;
		}
		if (!((empContact3 == "y") || (empContact3 == "n")))
		{
			alert("Value must be 'y' or 'n'")
			form.empContact3.focus();
			return false;
		}
	}

// ensure that all necessary 'Education' fields are populated...
	if ((eduSchoolName1 > "") || (eduStartDt1 > "") || (eduEndDt1 > "") || (eduMajor1 > "") || (eduGraduate1 > ""))
	{
		if ((!eduSchoolName1 > "") || (!eduStartDt1 > "") || (!eduMajor1 > "") || (!eduGraduate1 > ""))
		{
			alert("Incomplete Education data on line one.\n\n'School Name', 'Start Date', 'Degree/Major', and 'Graduate' question\nmust all be populated");
			form.eduSchoolName1.focus();
			return false;
		}
		if (!((eduGraduate1 == "y") || (eduGraduate1 == "n")))
		{
			alert("Value must be 'y' or 'n'")
			form.eduGraduate1.focus();
			return false;
		}
	}

	if ((eduSchoolName2 > "") || (eduStartDt2 > "") || (eduEndDt2 > "") || (eduMajor2 > "") || (eduGraduate2 > ""))
	{
		if ((!eduSchoolName2 > "") || (!eduStartDt2 > "") || (!eduMajor2 > "") || (!eduGraduate2 > ""))
		{
			alert("Incomplete Education data on line two.\n\n'School Name', 'Start Date', 'Degree/Major', and 'Graduate' question\nmust all be populated");
			form.eduSchoolName2.focus();
			return false;
		}
		if (!((eduGraduate2 == "y") || (eduGraduate2 == "n")))
		{
			alert("Value must be 'y' or 'n'")
			form.eduGraduate2.focus();
			return false;
		}
	}

	if ((eduSchoolName3 > "") || (eduStartDt3 > "") || (eduEndDt3 > "") || (eduMajor3 > "") || (eduGraduate3 > ""))
	{
		if ((!eduSchoolName3 > "") || (!eduStartDt3 > "") || (!eduMajor3 > "") || (!eduGraduate3 > ""))
		{
			alert("Incomplete Education data on line three.\n\n'School Name', 'Start Date', 'Degree/Major', and 'Graduate' question\nmust all be populated");
			form.eduSchoolName3.focus();
			return false;
		}
		if (!((eduGraduate3 == "y") || (eduGraduate3 == "n")))
		{
			alert("Value must be 'y' or 'n'")
			form.eduGraduate3.focus();
			return false;
		}
	}

}
