function checkForm() {
	if (document.frmHome.FirstName.value=='') {
		alert('Entre su Nombre por favor.');
		document.frmHome.FirstName.focus();
		return false;
	}
	else if (document.frmHome.LastName.value=='') {
		alert('Entre su Apellido por favor.');
		document.frmHome.LastName.focus();
		return false;
	}
	else if (document.frmHome.HomePhone.value=='') {
		alert('Entre su Telefono particular por favor.');
		document.frmHome.HomePhone.focus();
		return false;
	}
	else if (!isValidPhone(document.frmHome.HomePhone.value)) {
		alert('Entre su Telefono particular por favor.');
		document.frmHome.HomePhone.focus();
		return false;
	}
	else if (document.frmHome.WorkPhone.value!='' && !isValidPhone(document.frmHome.WorkPhone.value)) {
		alert('Entre su Telefono Trabajo por favor.');
		document.frmHome.WorkPhone.focus();
		return false;
	}
	else if (document.frmHome.EMailAddress.value=='') {
		alert('Entre su correo electronico por favor.');
		document.frmHome.EMailAddress.focus();
		return false;
	}
	else if (document.frmHome.Address.value=='') {
		alert('Entre su direccion por favor.');
		document.frmHome.Address.focus();
		return false;
	}
	else if (document.frmHome.City.value=='') {
		alert('Entre su ciudad por favor.');
		document.frmHome.City.focus();
		return false;
	}
	else if (document.frmHome.State.value=='') {
		alert('Entre su Estado o Provincia por favor.');
		document.frmHome.State.focus();
		return false;
	}
	else if (!isValidStateAbbr(document.frmHome.State.value)) {
		alert('"' + document.frmHome.State.value + '" no es un Estado valido.');
		document.frmHome.State.focus();
		return false;
	}
	else if (document.frmHome.County.value=='' && document.frmHome.State.value.toUpperCase().match(/^AL$|^AK$|^AZ$|^AR$|^CA$|^CO$|^CT$|^DC$|^DE$|^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$/)) {
		alert('Entre su Condado por favor.');
		document.frmHome.County.focus();
		return false;
	}
	else if (document.frmHome.ZipCode.value=='') {
		alert('Entre su Codigo Postal por favor.');
		document.frmHome.ZipCode.focus();
		return false;
	}
	else if (!isValidZIP(document.frmHome.ZipCode.value)) {
		alert('Please enter a ZIP or Postal Code.');
		document.frmHome.ZipCode.focus();
		return false;
	}
	else if (document.frmHome.EstimatedHomeValue.value.indexOf('-') > -1) {
		alert('Entre un valor por favor.');
		document.frmHome.EstimatedHomeValue.focus();
		return false;
	}
	else if (scrubNumber(document.frmHome.EstimatedHomeValue.value)=='' || scrubNumber(document.frmHome.EstimatedHomeValue.value) < 10000 || scrubNumber(document.frmHome.EstimatedHomeValue.value) > 20000000) {
		alert('Entre un valor entre $10,000 and $20,000,000.');
		document.frmHome.EstimatedHomeValue.value = scrubNumber(document.frmHome.EstimatedHomeValue.value);
		document.frmHome.EstimatedHomeValue.focus();
		return false;
	}
	else if (document.frmHome.SquareFootage.value=='') {
		alert('Entre las medidas aproximadas por favor.');
		document.frmHome.SquareFootage.focus();
		return false;
	}
	else if (document.frmHome.NumberOfBedrooms.value=='') {
		alert('Entre su numero de habitaciones por favor.');
		document.frmHome.NumberOfBedrooms.focus();
		return false;
	}
	else if (document.frmHome.NumberOfBathrooms.value=='') {
		alert('Entre su numero de banos por favor.');
		document.frmHome.NumberOfBathrooms.focus();
		return false;
	}
	else
		document.frmHome.EstimatedHomeValue.value = scrubNumber(document.frmHome.EstimatedHomeValue.value);
}

function isValidPhone(sPhoneNumber) {
	sPhoneNumber = sPhoneNumber.replace(/[\(\)-\.\s]/g, '') // Remove all these characters: ( ) . - <space>
	if (sPhoneNumber.length!=10)
		return false
	else if (sPhoneNumber.match(/^\d+$/)) // See if the remainder is all numbers
		return true
	else
		return false
}

function isValidZIP(sZIP) {
	sStateAbbrev = document.frmHome.State.value.toUpperCase()
	if (sStateAbbrev.match(/^BC$|^AB$|^MB$|^NB$|^NF$|^NT$|^NS$|^ON$|^PE$|^QC$|^SK$|^YK$|^NU$$/)) 
		return true
	else if (sZIP.length!=5)
		return false
	else if (sZIP.match(/^\d+$/)) // See if it's numeric
		return true
	else
		return false
}

function isValidStateAbbr(sStateAbbr) {
	sStateAbbr = sStateAbbr.toUpperCase()
	if (sStateAbbr.length!=2)
		return false
	else if (sStateAbbr.match(/^AL$|^AK$|^AZ$|^AR$|^CA$|^CO$|^CT$|^DC$|^DE$|^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$|^BC$|^AB$|^MB$|^NB$|^NF$|^NT$|^NS$|^ON$|^PE$|^QC$|^SK$|^YK$|^NU$/)) // See if it's in the list
		return true
	else
		return false
}

function scrubNumber(sNumber) {
	sNumber = sNumber.replace(/[.,]..$/, '');   // Remove any cents from the end (matches '.00' '.01' etc.)
	sNumber = sNumber.replace(/[Kk]/g, '000'); // Replaces all K's with 000
	sNumber = sNumber.replace(/[^0-9]/g, '');  // Removes any remaining non-numeric characters
	return sNumber;
}