// ***** Public funcions to use in form validation routines *****
function checkRequiredText(fld) {
	return validation(fld, isBlank(fld.value), "Please fill :0: field.", false);
}

function checkEmail(fld) {
	var optional = (arguments.length >= 2 ? arguments[1] == true : false);
	return validation(fld, !isValidEmail(fld.value), "Please fill :0: field with valid email address.", optional);
}

function checkZip(fld) {
	var optional = (arguments.length >= 2 ? arguments[1] == true : false);
	return validation(fld, !isValidZipcode(fld.value), "Please fill :0: field with valid US Zip code.", optional);
}

function checkNumber(fld) {
	var optional = (arguments.length >= 2 ? arguments[1] == true : false);
	return validation(fld, !isInteger(fld.value), "Please fill :0: field with number value.", optional);
}

function checkRadioSelected(flds) {
	var errCond = true;
	for (var i=0; i < flds.length; ++i) 
		if(flds[i].checked) errCond = false;
	return validation(flds[0], errCond, "Please select :0:.", false)
}

function checkMoney(fld) {
	var optional = (arguments.length >= 2 ? arguments[1] == true : false);
	var val = Trim(String(fld.value));
	if (val.substr(0,1) == "$") val = val.substr(1);
	return validation(fld, !isNumeric(val.replace(/[,\.]/g,'')), "Please fill :0: field with money value.", optional);
}

function validation(fld, errCond, errMsg, optional) {
	if (optional && isBlank(fld.value)) return true;
	if (errCond) {
		alert(errMsg.replace(/:0:/, "\"" + fld.name + "\""));
		fld.focus();
		return false;
	}
	return true;
}

// ***** Private functions *****
//-------------------------------------------------------------------
// Trim functions
//   Returns string with whitespace trimmed
//-------------------------------------------------------------------
function LTrim(str){
	for(var i=0;str.charAt(i)==" ";i++);
	return str.substring(i,str.length);
	}
function RTrim(str){
	for(var i=str.length-1;str.charAt(i)==" ";i--);
	return str.substring(0,i+1);
	}
function Trim(str){return LTrim(RTrim(str));}
//-------------------------------------------------------------------
// isNull(value)
//   Returns true if value is null
//-------------------------------------------------------------------
function isNull(val){return(val==null);}

//-------------------------------------------------------------------
// isBlank(value)
//   Returns true if value only contains spaces
//-------------------------------------------------------------------
function isBlank(val){
	if(val==null){return true;}
	for(var i=0;i<val.length;i++) {
		if ((val.charAt(i)!=' ')&&(val.charAt(i)!="\t")&&(val.charAt(i)!="\n")&&(val.charAt(i)!="\r")){return false;}
		}
	return true;
	}

//-------------------------------------------------------------------
// isInteger(value)
//   Returns true if value contains all digits
//-------------------------------------------------------------------
function isInteger(val){
	if (isBlank(val)) return false;
	for(var i=0;i<val.length;i++){
		if(!isDigit(val.charAt(i))){return false;}
	}
	return true;
}

//-------------------------------------------------------------------
// isNumeric(value)
//   Returns true if value contains a positive float value
//-------------------------------------------------------------------
function isNumeric(val){return(parseFloat(val,10)==val);}

//-------------------------------------------------------------------
// isDigit(value)
//   Returns true if value is a 1-character digit
//-------------------------------------------------------------------
function isDigit(num) {
	if (num.length>1){return false;}
	var string="1234567890";
	if (string.indexOf(num)!=-1){return true;}
	return false;
}

//-------------------------------------------------------------------
// isValidEmail(address)
//   Returns true if value is valid email address
//-------------------------------------------------------------------
function isValidEmail(address) {
	//if (isValidEmail(address) == false) return false;
	var domain = address.substring(address.indexOf('@') + 1);
	if (domain.indexOf('.') == -1) return false;
	if (domain.indexOf('.') == 0 || domain.indexOf('.') == domain.length - 1) return false;
	return true;
}

//-------------------------------------------------------------------
// isValidZipcode(zipcode)
//   Returns true if value is valid US Zip code
//-------------------------------------------------------------------
function isValidZipcode(zipcode) {
	zipcode = Trim(zipcode);
	if (!(zipcode.length == 5 || zipcode.length == 9 || zipcode.length == 10)) return false;
	if ((zipcode.length == 5 || zipcode.length == 9) && !isNumeric(zipcode)) return false;
	if (zipcode.length == 10 && zipcode.search && zipcode.search(/^\d{5}-\d{4}$/) == -1) return false;
	return true;
}


// ***** Additional non validating funcions *****
function GetQueryString() {
	var arrQS = new Array();
	var QS = window.document.location.search;
	if (QS.charAt(0) == '?') {
		QS = QS.slice(1);
		var arrTMP = QS.split('&');
		var Name, Value;
		for (var i = 0; i < arrTMP.length; ++i ) {
			strTMP = arrTMP[i];
			pos = strTMP.indexOf('=');
			if ( pos != 0 )	{
				Name = strTMP.substr(0, pos);
				Name = unescape(Name.replace(/\+/g, ' '));
				Value = strTMP.substr(pos + 1, strTMP.length);
				Value = unescape(Value.replace(/\+/g, ' '));	
				arrQS[Name] = Value;
			}
		}
	}
	return arrQS;
}

function convertMoneyToNumeric(val) {
	return val.replace(/,/g,'');
}