// JavaScript Document
	function validate() {
		//var emailFilter=/^.+@.+\..{2,3}$/;
		var zipCheck = /^\d{5}$|^\d{5}-\d{4}$/;
		var numCheck = /^\d{1,}$/;
		var threeDigitCheck = /^\d{3}$/;
		//var floatCheck = /^\d{1,}\.\d{2}$/;
		var yearCheck = /^\d{4}$/;
		var emailFilter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;

		//require name
		if (document.forms.homeValueForm.name.value == "") {
			alert("Please enter your name.");
			document.forms.homeValueForm.name.focus();
			return false;
		}
		
		//require address
		if (document.forms.homeValueForm.streetAddress.value == "") {
			alert("Please enter your address.");
			document.forms.homeValueForm.streetAddress.focus();
			return false;
		}
		
		//require city
		if (document.forms.homeValueForm.city.value == "") {
			alert("Please enter your city.");
			document.forms.homeValueForm.city.focus();
			return false;
		}

		//require zip code
		if (document.forms.homeValueForm.zip.value == "") {
			alert("Please enter your zip code.");
			document.forms.homeValueForm.zip.focus();
			return false;
		}
		
		// check zip code
		if (!checkZIPCode(document.forms.homeValueForm.zip)) {
			return false;
		}
		
		//require phone number
		if (document.forms.homeValueForm.phone.value == "") {
			alert("Please enter your phone number.");
			document.forms.homeValueForm.phone.focus();
			return false;
		}
		
		// check phone number
		if (!checkUSPhone(document.forms.homeValueForm.phone)) {
			return false;
		}

		//require email
		if (document.forms.homeValueForm.eMail.value == "") {
			alert("Please enter your e-mail address.");
			document.forms.homeValueForm.eMail.focus();
			return false;
		}

		//test email value
		if (!emailFilter.test(document.forms.homeValueForm.eMail.value)) {
			alert("Your e-mail address does not appear to be valid.\nPlease try again.");
			document.forms.homeValueForm.eMail.focus();
			return false;
		}
		
		//require title information
		if (document.forms.homeValueForm.whoseName.value == "") {
			alert("Please tell us whose name the property is titled in.");
			document.forms.homeValueForm.whoseName.focus();
			return false;
		}
		
		//require vacancy
		if (document.forms.homeValueForm.living.selectedIndex == 0) {
			alert("Please tell us if the home is vacant or not.");
			document.forms.homeValueForm.living.focus();
			return false;
		}
		
		if (document.forms.homeValueForm.buyProperty.value == "") {
			alert("Please tell us when you bought the property.");
			document.forms.homeValueForm.buyProperty.focus();
			return false;
		}
		
		//require bedrooms
		if (document.forms.homeValueForm.bedRooms.selectedIndex == 0) {
			alert("Please tell us the number of bedrooms.");
			document.forms.homeValueForm.bedRooms.focus();
			return false;
		}
		
		//require bathrooms
		if (document.forms.homeValueForm.bathRooms.selectedIndex == 0) {
			alert("Please tell us the number of bathrooms.");
			document.forms.homeValueForm.bathRooms.focus();
			return false;
		}
		
		//require lot size
		if (document.forms.homeValueForm.lotSize.value == "") {
			alert("Please tell the lot size.");
			document.forms.homeValueForm.lotSize.focus();
			return false;
		}
		
		//require pool
		if (!document.forms.homeValueForm.pool[0].checked && !document.forms.homeValueForm.pool[1].checked) {
			alert("Please tell us if you have a pool.");
			document.forms.homeValueForm.pool[0].focus();
			return false;
		}
		
		//require garage
		if (document.forms.homeValueForm.garage.selectedIndex == 0) {
			alert("Please tell us the size of the garage.");
			document.forms.homeValueForm.garage.focus();
			return false;
		}
		
		//require square footage
		if (document.forms.homeValueForm.squareFootage.value == "") {
			alert("Please tell the square footage of the home.");
			document.forms.homeValueForm.squareFootage.focus();
			return false;
		}
		
		if (!numCheck.test(document.forms.homeValueForm.squareFootage.value)) {
			alert("The square footage does not appear to be a number.\nPlease try again.");
			document.forms.homeValueForm.squareFootage.focus();
			return false;
		}
		
		// check year built
		if (document.forms.homeValueForm.yearBuilt.value == "") {
			alert("Please tell us the year the home was built.");
			document.forms.homeValueForm.yearBuilt.focus();
			return false;
		}
		
		//check year
		if (!yearCheck.test(document.forms.homeValueForm.yearBuilt.value)) {
			alert("The year built does not appear to be valid.\nPlease try again.");
			document.forms.homeValueForm.yearBuilt.focus();
			return false;
		}
		
		//require improvements
		if (document.forms.homeValueForm.improvements.value == "") {
			alert("Please tell us about any improvements to the home, if any.");
			document.forms.homeValueForm.improvements.focus();
			return false;
		}
		
		//require appraisal
		if (!document.forms.homeValueForm.appraised[0].checked && !document.forms.homeValueForm.appraised[1].checked) {
			alert("Please tell us if the home has been appraised in the last five years.");
			document.forms.homeValueForm.appraised[0].focus();
			return false;
		}
		
		//require home worth
		if (document.forms.homeValueForm.homeWorth.value == "") {
			alert("Please tell what you think the value of the home is.");
			document.forms.homeValueForm.homeWorth.focus();
			return false;
		}
		
		if (!numCheck.test(document.forms.homeValueForm.homeWorth.value)) {
			alert("Please enter an amount with numbers only, no commas.\nThanks you, please try again.");
			document.forms.homeValueForm.homeWorth.focus();
			return false;
		}
		
		//require special features
		if (document.forms.homeValueForm.specialFeatures.value == "") {
			alert("Please tell us about any special features of the home, if any.");
			document.forms.homeValueForm.specialFeatures.focus();
			return false;
		}
		
		//require viewing
		if (!document.forms.homeValueForm.viewInside[0].checked && !document.forms.homeValueForm.viewInside[1].checked) {
			alert("Please tell us if you would like us to view the inside of the home.");
			document.forms.homeValueForm.viewInside[0].focus();
			return false;
		}
		
		// everything's OK
		return true;
	}
