var idListRegExp = /^\d{1,8}(\,\d{1,8})*$/;
var allowAllRegExp = /^.*$/;
var allowAlphaNumeric = /^[a-zA-Z0-9]*$/;
var dateRegExp = /^((((0[13578])|(1[02]))[\/](([0-2][0-9])|(3[01])))|(((0[469])|(11))[\/](([0-2][0-9])|(30)))|(02[\/][0-2][0-9]))[\/]\d{4}$/;
var decimalRegExp = /^-?((\d{1,6}(\.\d{1,3})?)|\.\d{1,3})$/;
var decimalRegExp2 = /^-?(((\d+(\.\d{1,5})?)|((\d*\.)?\d{1,5})))$/;
var emailRegExp = /((^|(([a-zA-Z0-9_\-]+(\.[a-zA-Z0-9_\-]+)?@([a-zA-Z0-9_\-]+\.)+([a-zA-Z]{2,6}))+\s?(,|;)\s?))[a-zA-Z0-9_\-]+(\.[a-zA-Z0-9_\-]+)?@([a-zA-Z0-9_\-]+\.)+([a-zA-Z]{2,6}))+$/;
var emailListRegExp = /((^|(([a-zA-Z0-9_\-]+(\.[a-zA-Z0-9_\-]+)?@([a-zA-Z0-9_\-]+\.)+([a-zA-Z]{2,6}))+\s?(,|;)\s?))[a-zA-Z0-9_\-]+(\.[a-zA-Z0-9_\-]+)?@([a-zA-Z0-9_\-]+\.)+([a-zA-Z]{2,6}))+$/;
var hexColorRegExp = /^\#[a-fA-F0-9]{6}$/;
var integerRegExp = /(^[0]$)|(^-?[1-9](\d{1,8})?$)/;
var integerRegExpNotNeg = /^\d+$/;
var leaveNumbersRegExp = /\D/g;
var numbersRegExp = /^\d+$/;
// var phoneRegExp = /^((\([1-9]{1}\d{2}\))|([1-9]{1}\d{2})){1}[\s|\-]?\d{3}[\s|\-]?\d{4}$/;
var phoneRegExp = /^[1-9]{1}\d{6}$/;
var areaCodeRegExp = /^[1-9]{1}\d{2}$/;
var rmvEmAdnEnDashes = /\u2012|\u2013|\u2014|\u2015/g;
var rmvEllipsis = /\u2026|\u2025/g;
var rmvSglQuotes = /\u0027|\u2018|\u2019/g;
var rmvDblQuotes = /\u201C|\u201D|\u0022/g;
var rmvSglQuotesOld = /\'|\‘|\’/g;
var rmvDblCurlyQuotesOld = /\“|\”/g;
var rmvPrePstSpcs = /^(\s*)([\W\w]*)(\b\s*$)/;
var rmvAllSpacesRegExp = /\s/;
var rmvSpacesRegExp = /^(\s*)$/;
var smallIntRegExp = /(^[0]$)|(^-?[1-9]{1}(\d{1,3})?$)|(^-?[1-2]{1}\d{4}$)|(^-?[3]{1}[0-1]{1}\d{3}$)|(^-?[3]{1}[2]{1}[0-6]{1}\d{2}$)|(^-?[3]{1}[2]{1}[7]{1}[0-5]{1}\d{1}$)|(^-?[3]{1}[2]{1}[7]{1}[6]{1}[0-7]{1}$)/;
var timeRegExp = /^((0|1){1}\d{1}\:{1}(0|1|2|3|4|5){1}\d{1})|(2{1}(0|1|2|3){1}\:{1}(0|1|2|3|4|5){1}\d{1})$/;
var tinyIntRegExp = /(^[0]$)|(^[1-9]{1}(\d{1})?$)|(^[1]{1}(\d{1,2})?$)|(^[2]{1}[0-4]{1}\d{1}$)|(^[2]{1}[5]{1}[0-5]{1}$)/;
var urlRegExp = /^(ht|f)tp(s?)\:\/\/[a-zA-Z0-9\-\._]+(\.[a-zA-Z0-9\-\._]+){2,}(\/?)([a-zA-Z0-9\-\.\=\?\,\@\'\/\\\+&%\$#_]*)?$/;
var findHTMLRegExp =  /<\/?(html|head|body|form|table|tr|td|script|javascript|input|select)/i;
var findAllHTMLTags = /<\/?(a|abbr|acronym|address|applet|area|b|base|basefont|bdo|big|blockquote|body|br|button|caption|center|cite|code|col|colgroup|dd|del|dir|div|dfn|dl|dt|em|fieldset|font|form|frame|frameset|h[1-6]|head|hr|html|i|iframe|img|input|ins|isindex|kbd|label|legend|li|link|map|menu|meta|noframes|noscript|object|ol|optgroup|option|p|param|pre|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|ul|var|xmp){1}(\s(\"[^\"]*\"*|[^>])*)*>/i;
var ipRegExp = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;
var fileRegExp = /^[\w][\w.-]{1,100}$/i;
function trim(origStr) {
	noNbspStr = convertNbspsToSps(origStr);
	fnlStr = noNbspStr.replace(rmvPrePstSpcs, '$2');
	return fnlStr;
}

function convertNbspsToSps(origStr) {
	noNbspStr = '';
	for (i=0; i<origStr.length; i ++) {
		if (origStr.charCodeAt(i) == '160') {
 			noNbspStr=noNbspStr + ' ';
		} else {
			noNbspStr=noNbspStr + origStr.charAt(i);
		}
	}
	return noNbspStr;
}

function trimExtraSpaces(origStr) {
	trimedStr = trim(origStr);
	cleanStr = '';
	prevChar = trimedStr.charAt(0);
	for (i=0; i<trimedStr.length; i ++) {
		if (!(trimedStr.charAt(i) == ' ' && prevChar == ' ')) {
			cleanStr = cleanStr + trimedStr.charAt(i);
			prevChar = trimedStr.charAt(i);
		}
	}
	return cleanStr;
} 

function phoneFormat(str) {
	if((trimNNChars(str.value)).length == 10) {
		sTemp = "(" + sTemp.substring(0, 3) + ") " + sTemp.substring(3, 6) + "-" + sTemp.substring(6, 10);str.value = sTemp ;
		return true;
	}
	return false;
}

function validateDate(inputStr) {
	var delim1 = inputStr.indexOf("/");
	var delim2 = inputStr.lastIndexOf("/");
	var mm = parseInt(inputStr.substring(0,delim1),10);
	var dd = parseInt(inputStr.substring(delim1 + 1,delim2),10);
	var yyyy = parseInt(inputStr.substring(delim2 + 1, inputStr.length),10);
	if (mm == 2) {
 		if (yyyy % 4 > 0 && dd > 28) {
			return false;
		} else if (dd > 29) {
			return false;
		}
	}
	if (yyyy < 1900) {
		return false;
	}
	return true;
} 

function trimAll(strValue){return strValue.replace(rmvSpacesRegExp, '');}

function rplcEmAndEnDash(strValue){return strValue.replace(rmvEmAdnEnDashes, '-');}

function rplcDblQuotes(strValue){return strValue.replace(rmvDblQuotes, '&quot;');}

function rplcSnglQuotesOld(strValue){return strValue.replace(rmvSglQuotes, '`');}

function rplcDblQuotesOld(strValue){return strValue.replace(rmvDblQuotes, '"');}

function trimNNChars(strValue){return strValue.replace(leaveNumbersRegExp, '');}

function rplcEllipsis(strValue){return strValue.replace(rmvEllipsis, '...');}

function replaceSpecialChars(str){
	//str.value = rplcSnglQuotes(str.value);
	str.value = rplcDblQuotes(str.value);
	str.value = rplcEmAndEnDash(str.value);
	str.value = trimExtraSpaces(str.value);
	str.value = rplcEllipsis(str.value);
}

function validate(str, regx, req) {
	if((trimAll(str.value)).length == 0) {
		str.value='';
		if (req == '1') {
			return false;
		}
		return true;
	}
	
	if (regx == 'phoneRegExp' || regx == 'areaCodeRegExp'){
		str.value = str.value.replace(rmvAllSpacesRegExp, '');
		str.value = str.value.replace(/-/g, '');
	}
	result = eval(regx).test(str.value);
	replaceSpecialChars(str);
	if (regx == 'dateRegExp' && req == '0' && str.value == 'mm/dd/yyyy') {
		return true;
	} else if (regx == 'dateRegExp' && result) {
		return validateDate(str.value);
	}
	return result;
} 

function validateTxtLen(str, maxLen, req) {
	if ((trimAll(str.value)).length == 0) {
		if (req == '1') {
			return false;
		}
		str.value='';
		return true;
	}
	if (str.value.length > maxLen) {
		return false;
	}
	replaceSpecialChars(str);
	return true;
} 

function oneIsChecked(object) {
	if (object.length) {
		for (i=0; i<object.length; i ++) {
			if (object[i].checked) {
				return true;
			}
		}
	} else {
		if (object.checked) {
			return true;
		}
	}
	return false;
}

function oneIsSelected(object) {
	if (object.selectedIndex != '-1') {
		return true;
	}
	return false;
}

function checkFileExt(str, regx, req) {
	if((trimAll(str.value)).length == 0) {
		if (req == '1') {
			return false;
		}
		str.value='';
		return true;
	}
	if (str.value.lastIndexOf('.')) {
		lastDot = str.value.lastIndexOf('.') + 1;
		fileExt = str.value.substring(lastDot, str.value.length);
		return eval(regx).test(fileExt.toLowerCase());
	}
	return false;
}

function checkFile(str, regx, req) {
	if((trimAll(str.value)).length == 0) {
		if (req == '1') {
			return false;
		}
		str.value='';
		return true;
	}
	if (str.value.lastIndexOf('\\')) {
		lastSlash = str.value.lastIndexOf('\\') + 1;
		fileName = str.value.substring(lastSlash, str.value.length);
		return eval(regx).test(fileName);
	}
	return false;
}

function compareDates(date1, date2, regx) {
	var result = '0';
	if(validate(date1, 'dateRegExp', '1') && validate(date2, 'dateRegExp', '1')) {
		var delim11 = date1.value.indexOf("/");
		var delim12 = date1.value.lastIndexOf("/");
		var delim21 = date2.value.indexOf("/");
		var delim22 = date2.value.lastIndexOf("/");
		var mm1 = parseInt(date1.value.substring(0,delim11),10);
		var dd1 = parseInt(date1.value.substring(delim11 + 1,delim12),10);
		var yyyy1 = parseInt(date1.value.substring(delim12 + 1, date1.value.length),10);
		var mm2 = parseInt(date2.value.substring(0,delim21),10);
		var dd2 = parseInt(date2.value.substring(delim21 + 1,delim22),10);
		var yyyy2 = parseInt(date2.value.substring(delim22 + 1, date2.value.length),10);
		if (yyyy2 < yyyy1) {
			result = '1';
		} else if (yyyy2 > yyyy1) {
			result = '2';
		} else if (mm2 < mm1) {
			result = '1';
		} else if (mm2 > mm1) {
			result = '2';
		} else if (dd2 < dd1) {
			result = '1';
		} else if (dd2 > dd1) {
			result = '2';
		}
	} else {
		result = '3';
	}
	return eval(regx).test(result);
} 

function dspError(msg, fld) {
	alert(msg);
	if (fld.type) {
		fld.focus();
		if (fld.type == 'text') {
			fld.select();
		}
	}
	return false;
}

function rplcSnglQuotes(frmName){
	if(frmName.elements && frmName.elements.length){
		for (currFF = 0; currFF < frmName.elements.length; currFF++) {
			if ((frmName.elements[currFF].type == "text" || frmName.elements[currFF].type == "textarea") && !frmName.elements[currFF].disabled && frmName.elements[currFF].style.visibility != "hidden" && frmName.elements[currFF].style.display != "none" && frmName.elements[currFF].value != "") {
				strValue = frmName.elements[currFF].value;
				strValue = strValue.replace(rmvSglQuotes, '`');
				strValue = strValue.replace(rmvDblQuotes, '`');
				frmName.elements[currFF].value = strValue;
			}
		}
	}
}
function phoneFocus(areaFld, phoneFld){
	areaFldLen = areaFld.value.length;
	if(areaFldLen == 3){
		phoneFld.focus();
	}
}
