function FormatPhone(fld, desc)
{	
	var str = String(fld.value), num=str, len;
	str = str.replace(/\D/g, "");
	len = str.length;
	if(len >= 8 && str.charAt(0) == '1') str = str.substr(1, --len);
	if(len >= 7)
	{ num = (len>7 ? "(" + str.substr(0, 3) + ")" : "");
		num += str.substr(3, 3) + "-" + str.substr(6,4) + " " + str.substr(10);
		fld.value = num;
		return true;
	}
	else if(num.search(/[^0-9( )\-]/) != -1)
	{ alert(desc + " is an invalid phone number.");
	  return false;
	}
	return true;
}

function FormatNum(fld)
{ 
	fld.value = fld.value.replace(/\D/g, "");
}

function FormatFlt(fld)
{ 
	var arr = fld.value.replace(/[^\d.]/g, "").split(".");
	fld.value = arr[0] + (arr[1]>"" ? "."+arr[1] : "");
}

function ValidateInt(fld, desc)
{ 
	var str = String(fld.value), len=str.length;
	if(len && str.search(/\D/) != -1)
	{ alert(desc + " is not a valid number.");
		fld.focus();
		return false;
	}
	else if(!len) fld.value="0";
	return true;
}

function cmbSelect(fld, val)
{ 
	if(val != "")
	{ var i, num = fld.length;
		for(i=0;i<num;i++)
			if(fld.options[i].value == val)
			{ fld.options[i].selected = true;
				break;
			}
	}
}

function cmbMultiSelect(fld, val)
{ 
	if (val == "") return;
	var a = val.split(",");
	for (var i = 0; i < fld.options.length; i++) {
		var o = fld.options[i];
		var v = o.value;
		for (var j = 0; j < a.length; j++) {
			if (a[j] == v) {
				o.selected = true;
				break;
			}
		}
	}
}

function radCheck(fld, val, multi)
{
	if (!fld) return;
	for (var i = 0; i < fld.length; i++) {
		var r = fld[i];
		if (multi) {
			for (var j = 0; j < val.length; j++) {
				if (r.value != val[j]) continue;
				r.checked = true;
				break;
			}
		} else {
			if (r.value != val) continue;
			r.checked = true;
		}
	}
	if (val == "True") radCheck(fld, 1);
	if (val == "False") radCheck(fld, 0);
}

function cFieldMissing(fld, desc, minlen)
{ 
	if(fld.style.display == "none") return true;
	if(fld.value.length == 0) alert(desc + " is a required field!");
	else if(minlen && fld.value.length < minlen)
		alert(desc + " must be at least " + minlen + " characters.");
	else return true;
	fld.focus();
	return false;
}

function isValidEmail(fld, desc, req)
{ 
	var str = String(fld.value), valid = false;
	if (req) {
		if (!cFieldMissing(fld, desc, 0)) return false;
	} else {
		if (str.length == 0) return true;
	}	
	if (/^([\w\.\-])+\@(([a-z\d\-])+\.)+([a-z\d]{2,4})+$/i.test(str)) {
		valid = true;
	}
	if (!valid) {
		alert(desc + " is an invalid email address.");
		fld.focus();
	}
	return valid;
}

function hasValidChars(fld, desc)
{	
	var badchars = String("'[]\""), pw = String(fld.value);
	var i, len = badchars.length;
	for(i=0;i<len;i++)
		if(pw.indexOf(badchars.substr(i, 1)) != -1)
		{ alert(desc + " contains invalid characters. Passwords cannot contain any of the following characters: '[]\"");
			return false;
		}
	return true;
}

function isValidPW(fld1, fld2, desc, opt)
{ 
	if (!opt && (!fld1.value.length || !fld2.value.length)) alert(desc + " passwords are required fields!");
	else if(fld1.value != fld2.value) alert(desc + " passwords do not match.");
	else if(hasValidChars(fld1, desc)) return true;
	fld1.focus();
	return false;
}

function toInt(txt)
{ 
	var str=String(txt), pos = str.search(/\D/);
	if(pos != -1) str = str.substr(0, pos);
	if(!str.length) return parseInt("");
	pos = str.search(/[^0]/);
	if(pos == -1) return 0;
	return parseInt(str.substring(pos, str.length));
}

function vTrim(s)
{
	return String(s).replace(/^\s+|\s+$/g, "");
}

function ValidatePhoneFax(fldArea, fldExch, fldNum, desc, req)
{
	var str = String(fldArea.value) + String(fldExch.value) + String(fldNum.value);
	//alert(str);
	var re = /^\(?[2-9]\d{2}[\)\.-]?\s?\d{3}[\s\.-]?\d{4}$/;
	if (!re.test(str))
	{
		if (req)
		{
			alert("Valid " + desc + " required!" );
			return false;
		}
		else
		{
			if(vTrim(str) != "")
			{
				alert(desc + " is invalid!");
				return false;
			}
			else
			{
				return true;
			}
		}		
	}
	return true;
}

function UpdateMiscField(form)
{
	/*
		sZip				US Zip codes (upto 5)
		sPropType			SD, SA, LL, RI (Multiple selection)
		iPriceLo			100000 - 4000000
		iPriceHi			100000 - 4000000
		iBedrooms			1/2/3/4/5
		iBathrooms			1/2/3/4/5
		iSizeLo				1000 - 6000
		iSizeHi				1000 - 6000
		iYearLo				4 digit year (YYYY)
		iYearHi				4 digit year (YYYY)
		iViewOcean			checked (True/False)
		iViewBay			checked (True/False)
		iViewGolfCourse		checked (True/False)
		iViewMountain		checked (True/False)
		iStr1				checked (True/False)
		iStr2				checked (True/False)
		iStr3				checked (True/False)
		iParkCarport		checked (True/False)
		iParkGarage			checked (True/False)
		iParkRV				checked (True/False)
		iPoolPriv			checked (True/False)
		iPoolComm			checked (True/False)
		iPoolSpa			checked (True/False)
		iAirCon				checked (True/False)
		iFireplace			checked (True/False)
		iAutoFreq			d/w/m/n (Daily/Weekly/Monthly/Never)
		iEmailPreference	html/text
		iReferName			text

	*/	
	
	sValues = "";
	
	sValues += getMultiSelectValues(form.sZip);
	sValues += getMultiSelectValues(form.sPropType);	
	sValues += getInputValue(form.iPriceLo);
	sValues += getInputValue(form.iPriceHi);
	sValues += getInputValue(form.iBedrooms);
	sValues += getInputValue(form.iBathrooms);
	sValues += getInputValue(form.iSizeLo);
	sValues += getInputValue(form.iSizeHi);
	sValues += getInputValue(form.iYearLo);
	sValues += getInputValue(form.iYearHi);
	sValues += getInputValue(form.iViewOcean);
	sValues += getInputValue(form.iViewBay);
	sValues += getInputValue(form.iViewGolfCourse);	
	sValues += getInputValue(form.iViewMountain);
	sValues += getInputValue(form.iStr1);
	sValues += getInputValue(form.iStr2);
	sValues += getInputValue(form.iStr3);
	sValues += getInputValue(form.iParkCarport);
	sValues += getInputValue(form.iParkGarage);
	sValues += getInputValue(form.iParkRV);
	sValues += getInputValue(form.iPoolPriv);
	sValues += getInputValue(form.iPoolComm);
	sValues += getInputValue(form.iPoolSpa);
	sValues += getInputValue(form.iAirCon);	
	sValues += getInputValue(form.iFireplace);	
	sValues += getRadioButtonSelectedValue(form.iAutoFreq);
	sValues += getRadioButtonSelectedValue(form.iEmailPreference);
	sValues += getInputValue(form.iReferName);	
	
	if (form.misc != null)
	{
		form.misc.value = sValues;
		//alert (form.misc.value);
	}
    
    
    
}

function getInputValue(field)
{
	if (field == null) return "";
	var val = "";
	if (field.type == "checkbox")	
	{
		val = field.checked;
	}
	else
	{
		val = field.value
	}
	return field.name + "=" + val + "\n";
}

function getMultiSelectValues(field)
{
	if (field == null) return "";
	var opts = field.options, len = opts.length;
	var valLst= "";
	for (var i = 0; i < len; i++) 
	{	if (opts[i].selected) 
			valLst += ((valLst.length > 0) ? "," : "") + opts[i].value;
	}
	return field.name + "=" + valLst + "\n";	
}

function getRadioButtonSelectedValue(field)
{
	if (field == null) return "";
	
	for (var i = 0; i < field.length; i++)
    {
        if (field[i].checked) return field[i].name + "=" + field[i].value + "\n";        
    }
    return "";
}

