function fillForm() {
	with (document.form1) {
		Name.value = "Mark Davison";
		Telephone.value = "(888)555-1234";
		BestTime.value = "3:00 pm Saturday";
		Email.value = "davison@ccs4vms.com";
		Address.value = "1138 Johnson Drive #3312";
		City.value = "Buffalo Grove";
		State.value = "IL";
		Zip.value = "60089";
	}
}

function setFocus(){
	document.form1.Name.focus();
}

function validate() 
{
	with (document.form1) {
		Name.value = Trim(Name.value);
		Telephone.value = Trim(Telephone.value);
		BestTime.value = Trim(BestTime.value);
		Email.value = Trim(Email.value);
		Address.value = Trim(Address.value);
		City.value = Trim(City.value);
		State.value = Trim(State.value.toUpperCase());
		Zip.value = Trim(Zip.value);

		if (Name.value.length == 0) {
			alert ("Please enter your name");	
			Name.focus();
			return false;
		}
		else if (
			Email.value      == "" &&
			Address.value    == "" &&
			City.value       == "" &&
			State.value      == "" &&
			Zip.value        == "" &&
			Telephone.value  == "" ) {
			alert("Please specify a way for us to contact you");	
			Telephone.focus();
			return false;
		}
		else if ((
				Address.value != "" ||
				City.value    != "" ||
				State.value   != "" ||
				Zip.value     != "" 
			) && (
				Address.value == "" ||
				City.value    == "" ||
				State.value   == "" ||
				Zip.value     == ""
			)) {
			alert("Please provide a complete address");	
			Address.focus();
			return false;
		}
		else if (Telephone.value.match(/[^-()0-9]/)) {
			alert("Please use only digits, -, and () in your telephone number");
			Telephone.focus();
			return false;
		}
		else if (isValidEmail(Email.value) == false) {
			alert("Please correct your email address");
			Email.focus();
			return false;
		}
		else if (isValidState(State.value) == false) {
			alert("Please correct your state code");			
			State.focus();
			return false;
		}
		else if (isValidZipCode(Zip.value) == false) {
			alert("Please correct your zip code");			
			Zip.focus();
			return false;
		}
		return true;
	}
}

function isValidEmail(value) {
	if (!value.length) {
		return true;
	}
	var re = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return (re.test(value));
}

function isValidState(value) {
	if (!value.length) {
		return true;
	}
	var re = /AL|AK|AZ|AR|CA|CO|CT|DE|DC|FL|GA|HI|ID|IL|IN|IA|KS|KY|LA|ME|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VT|VA|WA|WV|WI|WY/;
	return (re.test(value));
}

function Trim(s) {
	return((s.replace(/^\s+/,'')).replace(/\s+$/,''));
}

function isValidZipCode(value) {
	if (!value.length) {
		return true;
	}
	var re = /^\d{5}([\-]\d{4})?$/;
	return (re.test(value));
}

window.onload=setFocus;
