var CONST_MIN_PASSWORD_LEN	= 6;
var CONST_MIN_USERNAME_LEN	= 6;

//This variable is used to validate dates all across the system - supports leap year as well
var rDate = /((^(10|12|0?[13578])([/])(3[01]|[12][0-9]|0?[1-9])([/])((1[8-9]\d{2})|([2-9]\d{3}))$)|(^(11|0?[469])([/])(30|[12][0-9]|0?[1-9])([/])((1[8-9]\d{2})|([2-9]\d{3}))$)|(^(0?2)([/])(2[0-8]|1[0-9]|0?[1-9])([/])((1[8-9]\d{2})|([2-9]\d{3}))$)|(^(0?2)([/])(29)([/])([2468][048]00)$)|(^(0?2)([/])(29)([/])([3579][26]00)$)|(^(0?2)([/])(29)([/])([1][89][0][48])$)|(^(0?2)([/])(29)([/])([2-9][0-9][0][48])$)|(^(0?2)([/])(29)([/])([1][89][2468][048])$)|(^(0?2)([/])(29)([/])([2-9][0-9][2468][048])$)|(^(0?2)([/])(29)([/])([1][89][13579][26])$)|(^(0?2)([/])(29)([/])([2-9][0-9][13579][26])$))/i;
			
///////////////////////////////////////////////////////////////////////////////
//
//	function validateDateGTToday(obj)
//
//	Synopsis: Verifies date is greater than today
//
//	Parameters: obj			-> Form input field
//
///////////////////////////////////////////////////////////////////////////////

function validateDateGTToday(obj) {
	
	var td = new Date();	
	var dt = new Date(Date.parse(obj.value));
	
	if(dt > td) return true
	
	else return false;

	}

///////////////////////////////////////////////////////////////////////////////
//
//	function validateDate(obj, fRequired)
//
//	Synopsis: Verifies valid date, and standardizes format
//
//	Parameters: obj			-> Form input field
//				fRequired	-> true if field required, otherwise false
//
///////////////////////////////////////////////////////////////////////////////

function validateDate(obj, fRequired) {
	
	if(!fRequired && obj.value.length == 0) return true;
	
	var re = /^(\d\d?)\W(\d\d?)\W(\d\d\d\d)$/;
	var test = re.test(obj.value);
	
	if(false == test || (parseInt(RegExp.$1) > 12) || (parseInt(RegExp.$2) > 31)) return false;
	
	var dt = new Date(Date.parse(obj.value));
	var curdt = new Date();
	
	if(parseInt(dt.getMonth())+1 != parseInt(RegExp.$1) || parseInt(dt.getDate()) != parseInt(RegExp.$2) || parseInt(dt.getFullYear()) != parseInt(RegExp.$3)) return false;
	
	if(!isNaN(dt)) {

		obj.value = (dt.getMonth()+1) + "/" + dt.getDate() + "/" + dt.getFullYear();
		
		if(dt < curdt) return false 
		
		else return true;

		}
		
	else return false;

	}

///////////////////////////////////////////////////////////////////////////////
//
//	function validateCurrency(obj, fRequired)
//
//	Synopsis: Validates currency and precision to 2 decimal places. Fails on
//			  larger precisions. Also standardizes format.
//
//	Parameters: obj			-> Form input field
//				fRequired	-> true if field required, otherwise false
//
///////////////////////////////////////////////////////////////////////////////

function validateCurrency(obj, fRequired) {
	
	if(!fRequired && obj.value.length == 0)	return true;
	
	//var re = /^(\d)+\.\d\d$/
	var re = /^(\d)/
	
	if(re.test(obj.value)) return true;

	else return false;
	
	}


///////////////////////////////////////////////////////////////////////////////
//
//	function validateZipCode(obj, fRequired)
//
//	Synopsis: Validates zip code is 5 numeric digits long.
//
//	Parameters: obj			-> Form input field
//				fRequired	-> true if field required, otherwise false
//
///////////////////////////////////////////////////////////////////////////////

function validateZipCode(obj, fRequired) {

	if(!fRequired && obj.value.length == 0)	return true;

	var re = /^\d\d\d\d\d(\-\d\d\d\d)?$/;
	
	return re.test(obj.value);

	}

///////////////////////////////////////////////////////////////////////////////
//
//	function validatePhoneNumber(obj, fRequired)
//
//	Synopsis: Validates phone number digits and standardizes format.
//
//	Parameters: obj			-> Form input field
//				fRequired	-> true if field required, otherwise false
//
///////////////////////////////////////////////////////////////////////////////

function validatePhoneNumber(obj, fRequired) {
	
	if(!fRequired && obj.value.length == 0) return true;
	
	var re = /^\D?(\d\d\d)\D?\s?(\d\d\d)\D?(\d\d\d\d)$/;
	
	if(re.test(obj.value)) {
		
		obj.value = "(" + RegExp.$1 + ") " + RegExp.$2 + "-" + RegExp.$3;
		return true;
	
		}
		
	else return false;

	}

///////////////////////////////////////////////////////////////////////////////
//
//	function validateEmail(obj, fRequired)
//
//	Synopsis: Validates email address format.
//
//	Parameters: obj			-> Form input field
//				fRequired	-> true if field required, otherwise false
//
///////////////////////////////////////////////////////////////////////////////

function validateEmail(obj, fRequired) {

	if(!fRequired && obj.value.length == 0) return true;
	
	var re = /\w+@\w+(\.\w+)+$/;
	
	return re.test(obj.value);

	}

///////////////////////////////////////////////////////////////////////////////
//
//	function validatePassword(obj)
//
//	Synopsis: Verifies password minimum length.
//
//	Parameters: obj			-> Form input field
//
///////////////////////////////////////////////////////////////////////////////

function validatePassword(obj) {

	if(obj.value.length < CONST_MIN_PASSWORD_LEN) return false;
	
	return true;

	}

///////////////////////////////////////////////////////////////////////////////
//
//	function validateUserName(obj)
//
//	Synopsis: Verifies password minimum length.
//
//	Parameters: obj			-> Form input field
//
///////////////////////////////////////////////////////////////////////////////

function validatePassword(obj) {

	if(obj.value.length < CONST_MIN_USERNAME_LEN) return false;
	
	return true;

	}

///////////////////////////////////////////////////////////////////////////////
//
//	function validateField(obj)
//
//	Synopsis: Validates that field has a value
//
//	Parameters: obj			-> Form input field
//
///////////////////////////////////////////////////////////////////////////////

function validateField(obj) {

	return (obj.value.length != 0);
	
	}

///////////////////////////////////////////////////////////////////////////////
//
//	function validateNumeric(obj)
//
//	Synopsis: Validates that a field is a number
//
//	Parameters: obj			-> Form input field
//
///////////////////////////////////////////////////////////////////////////////

function validateNumeric(obj) {
	
	var num = parseInt(obj.value, 10);

	if(isNaN(num) || num < 1) return false;
	
	obj.value = num;
	return true;
	
	}

///////////////////////////////////////////////////////////////////////////////
//
//	function validatePercentage(obj)
//
//	Synopsis: Validates that a field is a proper percentage
//
//	Parameters: obj			-> Form input field
//
///////////////////////////////////////////////////////////////////////////////

function validatePercentage(obj) {
	
	var num = parseInt(obj.value, 10);

	if(isNaN(num) || num < 0 || num > 100) return false;
	
	obj.value = num;
	return true;
	
	}

function getISO(myCharIn) {

	var myChar = escape(myCharIn);
	var myChar1 = myChar.substring(1,myChar.length - 1);
	var myChar2 = myChar.substring(2,myChar.length);
	var myCharNum1;
	var myCharNum2;
	var myTempCharNum;


	for(i=0; i<2; i++) {

		if(i == 0) myTempChar = myChar1

		else myTempChar = myChar2;

		if(myTempChar == "A") myTempCharNum = 10

		else {

			if(myTempChar == "B") myTempCharNum = 11

			else {

				if(myTempChar == "C") myTempCharNum = 12

				else {

					if(myTempChar == "D") myTempCharNum = 13

					else {

						if(myTempChar == "E") myTempCharNum = 14

						else {

							if(myTempChar == "F") myTempCharNum = 15

							else myTempCharNum = parseInt(myTempChar);

							}

						}	

					}	

				}	

			}	

		}

	if(i==0) myCharNum1 = 16*myTempCharNum;

	else myCharNum2 = myTempCharNum;

	var myCharNum = myCharNum1 + myCharNum2;

	return myCharNum;

	}

function textareaCheck(str) {

	var i;
	var bRetVal = false;
		
	for(i=0; i<str.length; i++) {
			
		var myISO = getISO(str.charAt(i));
			
		if(!(isNaN(myISO))) if(!(((myISO > 31) && (myISO < 127)) || ((myISO > 159) && (myISO < 256)) || (myISO == 9) || (myISO == 10) || (myISO == 13) || (myISO == 145) || (myISO == 146))) bRetVal = true;

		}
		
	return bRetVal;
		
	}

function capFirst(Obj) {
		
	var i;
	var space=false;
	var bRetVal = false;
	var temp=Obj.value;
		
	if (temp == "") bRetVal = true

	else {
			
		while(temp.charAt(0) == " ") temp = temp.substring(1,temp.length);
			
		if (temp == "") bRetVal = true;

		else {

			for(i=0; i<temp.length; i++) {

				if((temp.charAt(i) == "a") || (temp.charAt(i) == "b") || (temp.charAt(i) == "c") || (temp.charAt(i) == "d") || (temp.charAt(i) == "e") || (temp.charAt(i) == "f") || (temp.charAt(i) == "g") || (temp.charAt(i) == "h") || (temp.charAt(i) == "i") || (temp.charAt(i) == "j") || (temp.charAt(i) == "k") || (temp.charAt(i) == "l") || (temp.charAt(i) == "m") || (temp.charAt(i) == "n") || (temp.charAt(i) == "o") || (temp.charAt(i) == "p") || (temp.charAt(i) == "q") || (temp.charAt(i) == "r") || (temp.charAt(i) == "s") || (temp.charAt(i) == "t") || (temp.charAt(i) == "u") || (temp.charAt(i) == "v") || (temp.charAt(i) == "w") || (temp.charAt(i) == "x") || (temp.charAt(i) == "y") || (temp.charAt(i) == "z")) temp = temp.substring(0,i) + temp.substring(i,i+1).toUpperCase() + temp.substring(i+1,temp.length);

				else {
					
					if(temp.charAt(i) == " ") {
					
						if(space) {
					
							while(temp.charAt(i) == " ") temp = temp.substring(0,i) + temp.substring(i+1,temp.length);

							i=i-1;
							space = false;

							}

						else space = true;
			
						}
			
					}
			
				while((!(space)) && (temp.charAt(i) != " ") && (i<temp.length)) i=i + 1;
	
				}
	
			Obj.value = temp;
			}
		}
	
	return bRetVal;
	
	}
	
function zipCheck(str) {// return value of true means it is not a valid string

	var i;
	var bRetVal = false;
	
	if (str.length > 10 || str.length < 5) bRetVal = true;

	return bRetVal;

	}

function emailCheck(str) {// return value of true means it is not a valid email address
		
	var bRetVal = false;
	var myNoAtChar = true;
	var myNoPeriod = true;
	var sEmail = '' + str;
		
	if (sEmail.indexOf('@') != -1) myNoAtChar = false;
		
	if (sEmail.indexOf('.') != -1) myNoPeriod = false; 

	if((myNoAtChar)||(myNoPeriod)) bRetVal = true;

	return bRetVal;

	}

function phoneFormat(Obj) {
		
	var i;
	var bRetVal = false;
	var str = Obj.value;
		
	for(i=0; i<str.length; i++) {
		
		if(!((str.charAt(i) == "0") || (str.charAt(i) == "1") || (str.charAt(i) == "2") || (str.charAt(i) == "3") || (str.charAt(i) == "4") || (str.charAt(i) == "5") || (str.charAt(i) == "6") || (str.charAt(i) == "7") || (str.charAt(i) == "8") || (str.charAt(i) == "9") ) ) {
		
			str = str.substring(0,i) + str.substring(i+1,str.length);
			i = i - 1;
		
			}
		
		}

	if (str.length == 10) Obj.value = "(" + str.substring(0,3) + ") " + str.substring(3,6) + "-" + str.substring(6,str.length);
		
	return bRetVal;
		
	}

function openHelpWin(t, h, w) {

	var wTop = (screen.availHeight / 2) - (h / 2);
	var wLeft = (screen.availWidth / 2) - (w / 2);
	var wURL = '/help/help.asp?ht=' + t;
	var wName = 'Help'
	var wOpts = 'fullscreen=no,channelmode=no,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=' + w + ',height=' + h + ',top=' + wTop + ',left=' + wLeft;

	window.open(wURL, wName, wOpts);

	}



