//
// Javascript routines to assist with search functionality
//

function validateQuickAnalyze(frm)
{
	var validationErrors = "";
	
	for (i=0; i<frm.elements.length; i++)
	{
		var elem = frm.elements[i];
		var elemName = elem.alt;
		if (!elemName) elemName = elem.name;
		var elemClasses = elem.className;
		if (elemClasses.indexOf("amount") >= 0 && !validateAmount(elem)) {
			validationErrors += "Please enter a valid amount for " + elemName + "\n";
		}
		if (elemClasses.indexOf("required") >= 0 && !validateRequired(elem)) {
			validationErrors += "Please provide a value for required field " + elemName + "\n";
		}
	}
	
	if (!validateAmount(frm.bedrooms)) {
		validationErrors += "Please enter a valid number of bedrooms\n";
	}

	if (validationErrors == "") {
		return true;
	} else {
		alert("Please correct the following:\n\n" + validationErrors);
		return false;
	}
}

function validateSearch(frm)
{
	var validationErrors = "";
	
	for (i=0; i<frm.elements.length; i++)
	{
		var elem = frm.elements[i];
		var elemName = elem.alt;
		if (!elemName) elemName = elem.name;
		var elemClasses = elem.className;
		if (elemClasses.indexOf("amount") >= 0 && !validateAmount(elem)) {
			validationErrors += "Please enter a valid amount for " + elemName + "\n";
		}
		if (elemClasses.indexOf("required") >= 0 && !validateRequired(elem)) {
			validationErrors += "Please provide a value for required field " + elemName + "\n";
		}
	}

	// Check that min < max for all concerned
	validationErrors += checkMinMax(frm.price_low, frm.price_high, "price");
	validationErrors += checkMinMax(frm.sqft_low, frm.sqft_high, "$ / sq ft");
	validationErrors += checkMinMax(frm.price_sqft_low, frm.price_sqft_high, "sq ft");
	
	if (!validateAmount(frm.bedrooms)) {
		validationErrors += "Please enter a valid number of bedrooms\n";
	}

	if (validationErrors == "") {
		return true;
	} else {
		alert("Please correct the following:\n\n" + validationErrors);
		return false;
	}
}

function validateAmount(elem)
{
	if (elem) {
		// Remove white space
		elem.value = elem.value.replace(/\s/g,"");
		// Remove commas, +, -
		elem.value = elem.value.replace(/[,\-+]/g,"");
		// Check if only numbers are left
		return(elem.value.search(/\D/) == -1);
	} else {
		return true;
	}
}

function validateRequired(elem)
{
	if (elem) {
		// Remove leading white space
		elem.value = elem.value.replace(new RegExp(/^\s+/),"");
		// Remove trailing white space
		elem.value = elem.value.replace(new RegExp(/\s+$/),"");
		// Return whether there's anything left
		return (elem.value.length > 0);
	} else {
		return false;
	}
}

//
// Check if min > max, if so return an error message; if not return ""
//
function checkMinMax(min, max, name)
{
	if (min != null && min.value != "" && max != null && max.value != "" && (min.value - 0) > (max.value - 0)) {
		return "Minimum " + name + " may not be greater than maximum " + name + "\n";
	} else {
		return "";
	}
}
