//====================================// Form validation//====================================function isValidInquiryForm(form) {	var msg = '';	msg += requiredField(form.prospectName.value, 'Name');		if (! isValidEmailAddress(form.prospectEmail.value)) {		msg += "\n'Email' address is invalid.";	} else {		if (form.prospectEmail.value != form.confirmEmail.value) {			msg += "\nEmail and Confirm Email must be the same.";		}	}		//msg += checkMaxLength(form.message.value,'Message', 255);	return finishValidation(msg);}function isValidLostPasswordForm(form) {	var msg = '';	if (! isValidEmailAddress(form.email.value)) {		msg += "\n'Email' address is invalid.";	}	return finishValidation(msg);}function isValidPhotoEditForm(form)  {	var msg = '';	if (form.hasPhoto.value == 'no') { 		msg += requiredFile(form.photoFile.value, 'Photo File');	}	if (msg == '') {		form.btnSubmit.disabled = true;		form.btnCancel.disabled = true;		fDiv = document.getElementById('photoForm');		fDiv.style.dislpay = 'none';		waitDiv = document.getElementById('pleaseWait');		waitDiv.style.display = 'block';	}	return finishValidation(msg);}function isValidListingForm(form) {	var msg = '';	var bedCnt = 0;	msg += requiredField(form.countryCode.value,'Country');	msg += requiredSelectOption(form.propertyType,'Property Type');		msg += nonZeroSelectOption(form.sleepsCount,'Sleeps');		//msg += nonZeroSelectOption(form.bedroomCount,'Bedrooms');		if (nonZeroSelectOption(form.kingBedCount,'Bedrooms') == '') {		bedCnt++;	}	if (nonZeroSelectOption(form.queenBedCount,'Bedrooms') == '') {		bedCnt++;	}	if (nonZeroSelectOption(form.doubleBedCount,'Bedrooms') == '') {		bedCnt++;	}	if (nonZeroSelectOption(form.twinBedCount,'Bedrooms') == '') {		bedCnt++;	}	if (nonZeroSelectOption(form.sofaBedCount,'Bedrooms') == '') {		bedCnt++;	}	if (nonZeroSelectOption(form.bunkBedCount,'Bedrooms') == '') {		bedCnt++;	}	if (bedCnt == 0) {		msg += '\nPlease specify the number of each type of bed in the house.';	}	msg += requiredField(form.headline.value,'Headline');	msg += requiredField(form.description.value,'Detailed Description');	msg += requiredField(form.streetAddress.value,'Street Address');	msg += requiredField(form.city.value,'City');	stateMsg1 = requiredSelectOption(form.stateID,'State / Province');	stateMsg2 = requiredField(form.otherState.value,'Other');	if (stateMsg1 != '' && stateMsg2 != '') {		msg += "\nSelect 'State/Province' from the list or enter a value in the 'Other' field.";	}	msg += requiredField(form.zip.value,'Zip/Postal Code');	if (form.countryCode.value != 840 && trim(form.zip.value) == '') {		msg += "\n\nIf your property  has no 'Zip/Postal Code', PLEASE ENTER: N/A.\n";	}	if (trim(form.publicEmail.value) == '' && trim(form.publicPhoneDay.value) == '' && trim(form.publicPhoneNight.value) == '') {		msg += "\nPlease enter a phone number or email address.";	} else if (trim(form.publicEmail.value) != '') {		if (false == isValidEmailAddress(form.publicEmail.value)) {			msg += "\n'E-mail address' is invalid.";		}	}	return finishValidation(msg);}function isValidAccountEditForm(form) {	var msg = '';	msg += requiredField(form.firstName.value, 'First Name');	msg += requiredField(form.lastName.value, 'Last Name');	msg += requiredField(form.streetAddress.value, 'Mailing Address');	msg += requiredField(form.city.value, 'City');		stateMsg1 = requiredSelectOption(form.stateID,'State / Province');	stateMsg2 = requiredField(form.otherState.value,'Other');	if (stateMsg1 != '' && stateMsg2 != '') {		msg += "\nSelect 'State/Province' from the list or enter a value in the 'Other' field.";	}	msg += requiredField(form.zip.value, 'Zip/Postal Code');		msg += requiredSelectOption(form.countryCode,'Country');		return finishValidation(msg);}function isValidSignUpForm(form) {	var msg = '';		if (! isValidEmailAddress(form.email.value)) {		msg += "\n'E-mail address' is invalid.";	} else {		msg += requiredField(form.confirmEmail.value, 'Confirm Email');	}	msg += requiredField(form.pass.value, 'Password');	msg += requiredField(form.confirmPass.value, 'Confirm Password');	msg += requiredField(form.firstName.value, 'First Name');	msg += requiredField(form.lastName.value, 'Last Name');	msg += requiredField(form.streetAddress.value, 'Mailing Address');	msg += requiredField(form.city.value, 'City');		stateMsg1 = requiredSelectOption(form.stateID,'State / Province');	stateMsg2 = requiredField(form.otherState.value,'Other');	if (stateMsg1 != '' && stateMsg2 != '') {		msg += "\nSelect 'State/Province' from the list or enter a value in the 'Other' field.";	}	msg += requiredField(form.zip.value, 'Zip/Postal Code');		msg += requiredSelectOption(form.countryCode,'Country');				if (msg == '') {		if (form.email.value != form.confirmEmail.value) {			msg += "\nEmail and Confirm Email must be the same.";		}		if (form.pass.value != form.confirmPass.value) {			msg += "\nPassword and Confirm Password must be the same.";		}	}		return finishValidation(msg);}//=============================================// finishValidation() ://=============================================function finishValidation(msg) {	if (msg != '') {		alert(msg);	}		return (msg == '');}//=============================================// isEmptyField() ://=============================================function isEmptyField(fld) {	return (trim(fld).length == 0);}//==============================================================// isValidateDate(targetDate) : returns true if date is in YYYY-MM-DD format, otherwise returns false.// IN: targetDate - the date to validate.//==============================================================function isValidateDate(targetDate) {	// Date must be 10 characters.	if (targetDate.length != 10) {		return false;	}		// Check for a valid year.	year = Number(targetDate.substr(0,4));	today = new Date();	currentYear = today.getFullYear();	if ( (year  <  (currentYear - 1)) || (year > (currentYear  + 2)) ) {		return false;	}		// Check for a valid month.	month = Number(targetDate.substr(5,2));	if (month < 1 || month > 12) {		return false;	}		// Check for a valid day.	day = Number(targetDate.substr(8,2));	if (day < 1 || day > 31) {		return false;	}	if (month == 2 && day > 29) {		return false;	}		return true;}	//=============================================// isValidEmailAddress//=============================================function isValidEmailAddress(email) {	// can't be empty	if (isEmptyField(email)) return false;		// can't contain any invalid character	invalidChars = " /:,;";	for (i=0;  i < invalidChars.length; i++) {		badChar = invalidChars.charAt(i);		if (email.indexOf(badChar,0) > -1) return false;	}		//  there must be one "@" character	atPos = email.indexOf("@",1);	if (atPos == -1) return false;		// there must be at last one "." after the "@"	dotPos = email.indexOf(".", atPos);	if (dotPos == -1) return false;		// there must be at least two characters after the "."	if (dotPos + 3 > email.length) return false;		return true;}//=============================================// requiredFile//=============================================function requiredFile(fld, label) {	msg = '';	if (fld.length == 0) {		msg = "\nPlease select a " + label + ".";	}	return msg;}//=============================================// checkMaxLength//=============================================function checkMaxLength(fld, label, maxLen) {	var msg = '';	var fld = trim(fld);	var extraChars = fld.length - maxLen;	if (extraChars > 0) {		msg = "\n'" + label + "' has too much text.  Please delete at least " + extraChars + " characters.";	}	return msg;}//=============================================// requiredField//=============================================function requiredField(fld, label) {	msg = '';	fld = trim(fld);	if (fld.length == 0) {		msg = "\n'" + label + "' is required.";	}	return msg;}//=============================================// requiredSelectOption//=============================================function requiredSelectOption(fld, label) {	msg = '';	idx = fld.selectedIndex;	fldText = trim(fld.options[idx].text);	if (fldText.length == 0) {		msg = "\n'" + label + "' is required.";	}	return msg;}//=============================================// Assumes that selected index value of 0 is a blank item.//=============================================function nonZeroSelectOption(sel, label) {	msg = '';	if (sel.selectedIndex == 0) {		msg = "\n'" + label + "' is required.";	}	return msg;}	
