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;
}
