//---HSS this place to declare Global Conts


var g_ACH_MAX_Number = 17
var g_Routing_MAX_Number = 9

var g_EscrowACH_MAX_Number = 17 
var g_EscrowRouting_MAX_Number = 9

var g_ACH_MIN_Number = 5
var g_Routing_MIN_Number = 9

var g_EscrowACH_MIN_Number = 5 
var g_EscrowRouting_MIN_Number = 9

var g_Separator_Pledge = "~";

var g_CHECK_NAME_MIN = 1
var g_CHECK_NAME_MAX = 50

var g_CHECK_MAX_Number = 17
var g_CHECK_MIN_Number = 1


//---HSS Global Conts END
/*
	LIST OF TOP LEVEL FUNCTIONS USED IN DIFFERENT PAGES
	function Append(errStr, error)
	function checkEmail(PARAM, isRequired)
	function checkPhone(PARAM, isRequired)
	function checkZip(PARAM, isRequired)
	function checkLogIn(PARAM)
	function checkPassword(PARAM)
	function checkName(PARAM, LABEL, isRequired, MIN, MAX)
	function checkQuestion(PARAM, LABEL, isRequired, MIN, MAX)	
	function checkCity(PARAM, isRequired)
	function checkAddress(PARAM, LABEL, isRequired)
	function CheckPaswordMatch(PARAM1, PARAM2)
	function checkNumericOnly(PARAM, LABEL, isRequired, MIN, MAX)  //---MIN=0=MAX will be ignored
	function checkPIN(PARAM, isRequired)
	function isNumeric(PARAM)
	function checkDescription(PARAM, isRequired)
	function checkCCNumber(PARAM, LABEL,CCTYPE)	
	function checkCCTYpe(PARAM, LABEL) {		
	function checkCCExpDate(mVALUE, mNAME, yVALUE, yNAME)
	function ValidateCCNumber(ccType,ccNumber,ccLabel)
	function checkACH_RoutingNumber(PARAM, LABEL, isRequired, MIN, MAX)
	function checkDonation(PARAM, LABEL, isRequired, MIN, MAX)
	function CheckAllZero(inString)
	function checkFloatAmount(PARAM, LABEL, isRequired, MIN, MAX) 
	function checkQuestion(PARAM, LABEL, isRequired, MIN, MAX) 
	function checkAmount(PARAM, LABEL, isRequired, MIN, MAX)
	function checkNumericOnly2(PARAM, LABEL, isRequired, MIN, MAX) 
	function checkAmountLimits(PARAM, MIN, MAX, LABEL)
	function checkDescriptionFeedback(PARAM, isRequired)
	function checkLogInOptional(PARAM, isRequired) -- ADDED BY DISHA ON 14-NOV-2005
	function checkPasswordOptional(PARAM, isRequired, MIN, MAX)-- ADDED BY DISHA ON 14-NOV-2005
*/

	// -- function returns the server current date
	function serverDate(){
		//-- g_Current_Date variable is	declare in the ....utils.asp file
		var sDate = g_Current_Date;
		return sDate; 
	}
	
	//---to appned error messageges
	function Append(errStr, error) {
		if(errStr == "") {
			errStr = error;
		} else if(error != "") {
			errStr = errStr + ", " + error;
		}
		return errStr;
	}

	//---checks given pattern and returns true or false
	function isPattern(PATTERN, PARAM) {
		var regExprn = new RegExp(PATTERN);
		return regExprn.test(PARAM);
	}
	
	//---checks for blanks and returns true or false
	function isBlank(PARAM) {
		if(PARAM == "") return true;
		else return false;
	}

	//---function to check if phone no. consists of 10 digits
	function isStringHasXDigits(inString, X) {
		var iNum, digitCount, posChar;
		var flag;
		digitCount = 0;
		for(iNum=0;iNum<inString.length;iNum++) {
			posChar = inString.substring(iNum, iNum+1)
			if(!isNaN(parseInt(posChar))) {
				digitCount++;
			}
		}
		if(digitCount == X) flag = true;
		else flag = false;
		return flag;
	}

	//---checks for special chars and returns true or false
	function isSpecialChars(PARAM) {
		var SPECIAL_CHARS_LIST = "~$%^\"[]|?<>=+:;";
		return isAnyCharFromCharListInString(PARAM, SPECIAL_CHARS_LIST);
	}
	
	//---checks for special chars and returns true or false
	// added by Shruti on Feb 10 2005, to add more special characters to the list
	//modiied by disha on Feb 7 2006, to add , in special char list
	function isSpecialCharsNew(PARAM) {
		var SPECIAL_CHARS_LIST = "&/!@#*()~$%^\"[]|?<>=+:;\\{}`,";
		return isAnyCharFromCharListInString(PARAM, SPECIAL_CHARS_LIST);
	}
		

	//---checks for chars given in spCharList and and returns true or false
	function isOnlyCharListInString(inString, spCharList) {
		var iPos, unwantedChars = 0;
		for(iPos=0;iPos<inString.length;iPos++) {
			if(isCharNotInString(spCharList, inString.charAt(iPos))) unwantedChars++;
		}
		if(unwantedChars > 0) return false;
		return true;
	}

	//---checks for charToFind and returns true or false
	function isCharNotInString(String1, charToFind) {
		if(String1.indexOf(charToFind) == -1) return true;
		return false;
	}
	
	//---checks for charToFind and returns true or false
	function isCharInString(inString, charToFind) {
		var i;
		for(i=0;i<inString.length;i++) {
			if(inString.charAt(i) == charToFind) return true;
		}
		return false;
	}
	
	//---checks for chars given in spCharList and and returns true or false
	function isAnyCharFromCharListInString(inString, spCharList) {
		var iPos;
		for(iPos=0;iPos<spCharList.length;iPos++) {
			if(isCharInString(inString, spCharList.charAt(iPos))) return true;
		}
		return false;
	}

//---Function to check amount
//--Added by Disha on 10/10/2006
//--Modified on 12 Mar 07   :Add Rec_Type as parameter 
	function checkAmountNew(donation,label, bregular, bspecial,Rec_Type)
	{
			//alert(bregular);
			//alert(bspecial);				
		//Rec_Type=1 for Parish and Rec_Type=2 for Charity	::add on 12 Mar 07
		var ErrorMsg;
		ErrorMsg = "" ;
			if (donation > 100000){
				ErrorMsg = label + " should be less than $100000";
			} 	
			//--- HSS below two conditions are added on oct 23, 2002
			//--following condition removed for all donations except regular.
			if (label == 'Amount ')
			{			
				if ( !(donation == 0) && !isBlank(donation) && donation < 10 && Rec_Type==1)
				{
					ErrorMsg = label + " can't be less than $10.";
					//ErrorMsg = "Thank you for the blessings. Monthly Offertory can't be less than $10.";
				}
				else if ( !(donation == 0) && !isBlank(donation)&& donation < 5 && Rec_Type==2)
				{
					ErrorMsg = label + " can't be less than $5.";
					//ErrorMsg = "Thank you for the blessings. Monthly Offertory can't be less than $10.";
				}
			}
			else if(label == 'Special Amount ')
				{
					if ( !(donation == 0) && !isBlank(donation)&& donation < 5){
					ErrorMsg = label + " can't be less than $5.";
					}
				}
			else{
					if(bregular || bspecial)
					{
						if ( !(donation == 0) && !isBlank(donation)&& donation < 1){
							ErrorMsg = label + " can't be less than $1.";
							//ErrorMsg = "Thank you for the blessings. Please use envelopes for gift under $5.";
						}
					}
					else
					{
						if ( !(donation == 0) && !isBlank(donation)&& donation < 5){
							ErrorMsg = label + " can't be less than $5.";
							//ErrorMsg = "Thank you for the blessings. Please use envelopes for gift under $5.";
						}	
					}
			} 	
					
		return ErrorMsg;
	}



//---Function to check for validity of the First Name field.
	function checkLength(PARAM, MIN, MAX, LABEL) {
		var errMessage = "";
		if(MIN == 0 && MAX == 0) return errMessage;
		if(((PARAM.length < MIN || PARAM.length > MAX) && (MIN != MAX))) {
			errMessage = LABEL + " length should be between " + MIN + " and " + MAX + " characters";
		} else if(PARAM.length > MAX) {
			errMessage = LABEL + " should be maximum " + MAX + " characters in length";
		}
		return errMessage;
	} 
//==function for feedback

	function checkLengthFeedback(PARAM, MIN, MAX, LABEL) {
		var errMessage = "";
		if(MIN == 0 && MAX == 0) return errMessage;
		if(((PARAM.length < MIN || PARAM.length > MAX) && (MIN != MAX))) {
			errMessage = LABEL + " should be maximum " + MAX + " characters in length";
		} else if(PARAM.length > MAX) {
			errMessage = LABEL + " should be maximum " + MAX + " characters in length";
		}
		return errMessage;
	} 
	

//---Function to check for length from checkDescription length function
	function checkLengthDescription(PARAM, MIN, MAX, LABEL) {
		var errMessage = "";
		if(MIN == 0 && MAX == 0) return errMessage;
		if(((PARAM.length < MIN || PARAM.length > MAX) && (MIN != MAX))) {
			errMessage =  LABEL + " should be maximum " + MAX + " characters in length";
		} else if(PARAM.length > MAX) {
			errMessage = LABEL + " should be maximum " + MAX + " characters in length";
		}
		return errMessage;
	} 





	//---function to check for valid Email and returns either blank or error message
	function checkEmail(PARAM, isRequired) {
		//---REG_PATTERN_EMAIL = "^([A-Za-z0-9_-]+\\.)*[A-Za-z0-9_-]+[^\\.]@([A-Za-z0-9_-]+\\.)*[A-Za-z0-9_-]+$"
		
		//REG_PATTERN_EMAIL = "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$"
		
		//---Above line is commented by Hemendra Singh on March 26, 2003 and added altered pattern
		//		below, this is done to alow two @ in the email
	
		REG_PATTERN_EMAIL = "^([a-zA-Z0-9_\\-\\.@]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$"
		
		var errMessage = "", isBLANK;
		isBLANK = isBlank(PARAM);
		if(isBLANK && isRequired) {
			errMessage = "Email is blank";
		} else if(PARAM.length < 5 && !isBLANK) {
			errMessage = "Email must at be atleast of 5 characters";
		} else if(!isPattern(REG_PATTERN_EMAIL, PARAM) && !isBLANK) {
			errMessage = "Email is not valid";
		} else if(!isBLANK) {
			errMessage = checkLength(PARAM, 5, 100, "Email");
		}
		return errMessage;
	}

	//---validation for phone no, returns blank or err message
	function checkPhone(PARAM, isRequired) {
		var errMessage = "", isBLANK;
		isBLANK = isBlank(PARAM);
		var PHONE_CHAR_LIST = "0123456789 -()";
		if (isBLANK && isRequired) {
			errMessage = "Phone is blank";
		} else if(!isOnlyCharListInString(PARAM, PHONE_CHAR_LIST) && !isBLANK) {
			errMessage = "Phone is not valid";
		} else if(!isBLANK) {
			if(!isStringHasXDigits(PARAM, 10)) {
				errMessage = "Phone number must contain 10 digits";
			}
		}
		return errMessage;
	}
	
	
	//---validation for phone no, returns blank or err message
	function checkFax(PARAM, isRequired) {
		var errMessage = "", isBLANK;
		isBLANK = isBlank(PARAM);
		var PHONE_CHAR_LIST = "0123456789 -()";
		if (isBLANK && isRequired) {
			errMessage = "Fax is blank";
		} else if(!isOnlyCharListInString(PARAM, PHONE_CHAR_LIST) && !isBLANK) {
			errMessage = "Fax is not valid";
		} else if(!isBLANK) {
			if(!isStringHasXDigits(PARAM, 10)) {
				errMessage = "Fax number must contain 10 digits";
			}
		}
		return errMessage;
	}
	
	//---validation for zip, returns blank or err message
	function checkZip(PARAM, isRequired) {
		var errMessage = "", isBLANK;
		var ZIP_CHAR_LIST = "0123456789";		
		isBLANK = isBlank(PARAM);
		if(isBLANK && isRequired) {
			errMessage = "Zip is blank";
		} else if(!isOnlyCharListInString(PARAM, ZIP_CHAR_LIST) && !isBLANK) {
			errMessage = "Zip is not valid";
		} else if(!isBLANK) {
			if(!(PARAM.length == 5 || PARAM.length == 9)) {
				errMessage = "Zip must be of 5 digits or 9 digits";
			}
		}
		return errMessage;
	} 

	//---- FUNCTION TO VALIDATE LOGINID
	function checkLogIn(PARAM) {
		var LOG_CHARS_LIST = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_@.";
   	    if(isBlank(PARAM)) {return "Login Id is blank";}
   	    
   	    //---if(isAnyCharFromCharListInString(PARAM, LOG_CHARS_LIST)) {return "Login Id has invalid characters.  "; }
   	    if (!(isOnlyCharListInString(PARAM, LOG_CHARS_LIST))) {return "Login Id has invalid characters.  "; }
   	    
		if(checkLength(PARAM, 4, 40, "Login Id") != "") {
			return "Login Id field should be between 4 and 40 characters";
		}
		return "";
    } 
	//---- FUNCTION TO VALIDATE OPTIONAL LOGIN ID
	//---- ADDED BY DISHA ON 14-NOV-2005 
	function checkLogInOptional(PARAM, isRequired) {
		var errMessage = "", isBLANK;
		isBLANK = isBlank(PARAM);
		var LOG_CHARS_LIST = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_@.";
		
		if (isBLANK && isRequired) {
			errMessage = "Login Id is blank";
		} else if(!(isOnlyCharListInString(PARAM, LOG_CHARS_LIST)) && !isBLANK) {
			errMessage = "Login Id has invalid characters.  ";
		} else if(!isBLANK) {
			if(checkLength(PARAM, 4, 40, "Login Id") != "") {
				errMessage = "Login Id field should be between 4 and 40 characters";
			}
		}
		return errMessage;
		
		
    } 
    
    //---- FUNCTION TO VALIDATE OPTIONAL PASSWORD
	//---- ADDED BY DISHA ON 14-NOV-2005 
	//---- FUNCTION TO VALIDATE PASSWORD
	function checkPasswordOptional(PARAM, isRequired, MIN, MAX) {
		var errMessage = "", isBLANK;
		isBLANK = isBlank(PARAM);
		var PASSWORD_CHARS_LIST = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
   	  	
		if (isBLANK && isRequired) {
			errMessage = "Password is blank";
		} else if(!(isOnlyCharListInString(PARAM, PASSWORD_CHARS_LIST)) && !isBLANK) {
			errMessage = "Password  has invalid characters.  ";
		} else if(!isBLANK) {
			if(checkLength(PARAM, MIN, MAX, "Password") != "") {
				errMessage = "Password field should be between " + MIN + " and " + MAX + " characters";
			}
		}
		return errMessage;
    }   
    
	function checkPassword(PARAM, MIN, MAX) {
		var PASSWORD_CHARS_LIST = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
   	    
   	    if(isBlank(PARAM)) return "Password is blank ";
   	    
   	    //---if(isAnyCharFromCharListInString(PARAM, PASSWORD_CHARS_LIST)) {return "Password has invalid characters.  "; }
   	    if (!(isOnlyCharListInString(PARAM, PASSWORD_CHARS_LIST))) {return "Password  has invalid characters.  "; }
		
		if(checkLength(PARAM, MIN, MAX, "Password") != "") {
			return "Password field should be between " + MIN + " and " + MAX + " characters";
		}
		return "";
    } 

	//----Function to check for validity of the Recipient Name field.
	function checkName(PARAM, LABEL, isRequired, MIN, MAX) { 
		var errMessage = "", isBLANK;
		isBLANK = isBlank(PARAM);

		if(isBLANK && isRequired) {
			errMessage = LABEL + " is blank";
		} else if(PARAM == 'Last Name' || PARAM == 'First Name') {
			errMessage = 'Please enter value for ' + LABEL
		} else if(isSpecialChars(PARAM) && !isBLANK) {
			errMessage = LABEL + " is not valid";
		} else if(!isBLANK) {
			errMessage = checkLength(PARAM, MIN, MAX, LABEL);
		} 
		return errMessage;
	} 


	//----Function to check for validity of the Recipient Name field.
	//--- Added by Shruti Feb 10, 2005, to to incorporate isSpecialCharsNew - a new function to restrict more special characters
	function checkValidName(PARAM, LABEL, isRequired, MIN, MAX) { 
		var errMessage = "", isBLANK;
		isBLANK = isBlank(PARAM);

		if(isBLANK && isRequired) {
			errMessage = LABEL + " is blank";
		} else if(PARAM == 'Last Name' || PARAM == 'First Name' || PARAM == '* Your Name') {
			errMessage = 'Please enter value for ' + LABEL
		} else if(isSpecialCharsNew(PARAM) && !isBLANK) {
			errMessage = LABEL + " is not valid";
		} else if(!isBLANK) {
			errMessage = checkLength(PARAM, MIN, MAX, LABEL);
		} 
		return errMessage;
	} 
	//----Function to check for validity of the Recipient Name field which have some LabelText in the Field itself.
	function checkName2(PARAM, LABELNAME, isRequired, MIN, MAX,LABELTEXT) { 
		var errMessage = "", isBLANK;
		isBLANK = isBlank(PARAM);

		if(isBLANK && isRequired) {
			errMessage = LABELNAME + " is blank";
		} else if(PARAM == LABELTEXT ) {
			errMessage = 'Please enter value for ' + LABELNAME
		} else if(isSpecialChars(PARAM) && !isBLANK) {
			errMessage = LABELNAME + " is not valid";
		} else if(!isBLANK) {
			errMessage = checkLength(PARAM, MIN, MAX, LABELNAME);
		} 
		return errMessage;
	} 

	//----Function to check for validity of the Question field.
	function checkQuestion(PARAM, LABEL, isRequired, MIN, MAX) { 
		var errMessage = "", isBLANK;
		isBLANK = isBlank(PARAM);
		if(isBLANK && isRequired) {
			errMessage = LABEL + " is blank";
		} else if(!isBLANK) {
			errMessage = checkLength(PARAM, MIN, MAX, LABEL);
		}
		return errMessage;
	} 	
	//---validation for City, returns blank or err message
	function checkCity(PARAM, isRequired) {
		var errMessage = "", isBLANK;
		var CITY_CHARS_LIST = "~!@$%^&*[]|\"?<>:;/\=+#";
		isBLANK = isBlank(PARAM);
		if(isBLANK && isRequired) {
			errMessage = "City is blank";
		} else if(PARAM == 'City' || PARAM == 'Church City' ) {
			errMessage = 'City is not entered' 
		} else if(isAnyCharFromCharListInString(PARAM, CITY_CHARS_LIST) && !isBLANK) {
			errMessage = "City is not valid"
		} else if(!isBLANK) {
			errMessage = checkLength(PARAM, 50, 50, "City");
		}
		return errMessage;
	}

	//---validation for Address, returns true or false
	function isAddress(PARAM) {
		var ADDRESS_CHARS_LIST = "~!%^[]\"|\?<>=+";
		return !isAnyCharFromCharListInString(PARAM, ADDRESS_CHARS_LIST);
	} 

	//---validation for City, returns blank or err message
	function checkAddress(PARAM, LABEL, isRequired) {
		var errMessage = "", isBLANK;
		isBLANK = isBlank(PARAM);
		if(isBLANK && isRequired) {
			errMessage = LABEL + " is blank";
		} else if(PARAM == 'Street Address' ) {
			errMessage = 'Please enter value for ' + LABEL
		} else if(!isAddress(PARAM) && !isBLANK) {
			errMessage = LABEL + " is not valid"
		} else if(!isBLANK) {
			errMessage = checkLength(PARAM, 200, 200, LABEL);
		}
		return errMessage;
	}

	//---CHECK FOR RE-ENTER PASSWORD 
	function CheckPaswordMatch(PARAM1, PARAM2) {
		if(PARAM1 != PARAM2) {
			return "Password doesn't match with the Re-entered password";
	    }
	    return "";
	}

	//---validation for state/country, returns blank or err message
	function checkNumericOnly(PARAM, LABEL, isRequired, MIN, MAX) {
		var errMessage = "", isBLANK;
		var NUMERIC_CHAR_LIST = "0123456789";		
		isBLANK = isBlank(PARAM);
		if(isBLANK && isRequired) {
			if (LABEL == "Diocese") {
				errMessage = "Please select a Diocese";
			} else {	
				errMessage = LABEL + " is blank";
			}
		} else if(!isOnlyCharListInString(PARAM, NUMERIC_CHAR_LIST) && !isBLANK) {
			errMessage = LABEL + " is not valid";
		} else if(MIN != 0 && MAX != 0) {
			errMessage = checkLength(PARAM, MIN, MAX, LABEL);
		}
		return errMessage;
	} 

	//---validation for PIN #, returns blank or err message
	function checkPIN(PARAM, isRequired) {
		var errMessage = "", isBLANK;
		var NUMERIC_CHAR_LIST = "0123456789";		
		isBLANK = isBlank(PARAM);
		if(isBLANK && isRequired) {
			errMessage = "PIN is blank";
		} else if(!isOnlyCharListInString(PARAM, NUMERIC_CHAR_LIST) && !isBLANK) {
			errMessage = "PIN is not valid";
		} else if(PARAM.length != 4) {
			errMessage = "PIN must be of 4 digit";
		}
		return errMessage;
	} 
	
	//---validation for state/country, returns blank or err message
	function isNumeric(PARAM) {
		var NUMERIC_CHAR_LIST = "0123456789";		
		if(!isOnlyCharListInString(PARAM, NUMERIC_CHAR_LIST)) {
			return false;
		}
		return true;
	} 
	
	//--Validation For Feedback
		function checkDescriptionFeedback(PARAM, isRequired) {
		var errMessage = "", isBLANK;
		var DESC_CHARS_LIST = "~^<>";
		isBLANK = isBlank(PARAM);
		if(isBLANK && isRequired) {
			errMessage = "Description is blank";
		} else if(isAnyCharFromCharListInString(PARAM, DESC_CHARS_LIST) && !isBLANK) {
			errMessage = "Description is not valid"
		} else if(!isBLANK) {
			errMessage = checkLengthFeedback(PARAM, 0, 2000, "Description");
		}
		return errMessage;
	}


	//--Validation For Description Length
		function checkDescriptionLength(PARAM, isRequired,intMin,intMax) {
		var errMessage = "", isBLANK;
		var DESC_CHARS_LIST = "~^<>";
		isBLANK = isBlank(PARAM);
		if(isBLANK && isRequired) {
			errMessage = "Description is blank";
		} 
		else if(isAnyCharFromCharListInString(PARAM, DESC_CHARS_LIST) && !isBLANK) {
			errMessage = "Description is not valid"
		}
		 else if(!isBLANK) {
			errMessage = checkLengthDescription(PARAM, intMin,intMax, "Description");
		}
		return errMessage;
	}	


	//---validation for City, returns blank or err message
	function checkDescription(PARAM, isRequired) {
		var errMessage = "", isBLANK;
		var DESC_CHARS_LIST = "~^<>";
		isBLANK = isBlank(PARAM);
		if(isBLANK && isRequired) {
			errMessage = "Description is blank";
		} else if(isAnyCharFromCharListInString(PARAM, DESC_CHARS_LIST) && !isBLANK) {
			errMessage = "Description is not valid"
		} else if(!isBLANK) {
			errMessage = checkLength(PARAM, 250, 250, "Description");
		}
		return errMessage;
	}
	
	//---validation for entity additional information Name where user can enter any thing
	function checkEntityAddInfo(PARAM,  LABEL, isRequired) {
		var errMessage = "", isBLANK;
		var DESC_CHARS_LIST = "~^<>";
		isBLANK = isBlank(PARAM);
		if(isBLANK && isRequired) {
			errMessage =  LABEL + " is blank";
		} else if(isAnyCharFromCharListInString(PARAM, DESC_CHARS_LIST) && !isBLANK) {
			errMessage = LABEL + " is not valid"
		} else if(!isBLANK) {
			errMessage = checkLength(PARAM, 500, 500, LABEL);
		}
		return errMessage;
	}

	
	//---Check for negative values i.e. only numbers are allowed.
	//function checkCCNumber(PARAM, LABEL) {	//Changed on August 14,2002 HSS
	function checkCCNumber(PARAM, LABEL,CCTYPE) {	
		var errMessage = "", isBLANK;
		isBLANK = isBlank(PARAM);
		var NUMERIC_CHAR_LIST = "0123456789";
		if(isBLANK) {
			errMessage = LABEL + " is blank";
		} else if(!isOnlyCharListInString(PARAM, NUMERIC_CHAR_LIST)) {
			errMessage = LABEL + " is not valid";
		} else {
			//errMessage = checkLength(PARAM, 13, 16, LABEL);
			errMessage = ValidateCCNumber(CCTYPE,PARAM, LABEL)
		}
		return errMessage;
	}
	
	//---Check for negative values i.e. only numbers are allowed.
	function checkCCType(PARAM, LABEL) {	
		var errMessage = "", isBLANK;
		isBLANK = isBlank(PARAM);
		var CCTYPE_CHAR_LIST = "avmdpAVMDP";
		if(isBLANK) {
			errMessage = LABEL + " is blank";
		} else if(!isOnlyCharListInString(PARAM, CCTYPE_CHAR_LIST)) {
			errMessage = LABEL + " is not valid";
		} else {
			errMessage = checkLength(PARAM, 1, 1, LABEL);
		}
		return errMessage;
	}
	
	//---Check for negative values i.e. only numbers are allowed.
	function checkCCExpDate(mVALUE, mNAME, yVALUE, yNAME) {	
		var errMessage = "", isBLANK;
		var NUMERIC_CHAR_LIST = "0123456789";
		isBLANK = isBlank(mVALUE);
		var thisDate = new Date(serverDate());
		var thisYear = thisDate.getFullYear().toString();
		var thisMonth = thisDate.getMonth();
				
		if(isBLANK) {
			errMessage = Append(errMessage, "'" + mNAME + "' is blank.");
		} else if(!isOnlyCharListInString(mVALUE, NUMERIC_CHAR_LIST)) {
			errMessage = Append(errMessage, "'" + mNAME + "' is not valid. It must be a positive integer.");
		} else if (mVALUE > 12) {
			errMessage = Append(errMessage, "'" + mNAME + "' must be less or equal to 12.");
		}
		
		isBLANK = isBlank(yVALUE);
		if(isBLANK) {
			errMessage = Append(errMessage, "'" + yNAME + "' is blank.");
		} else if(!isOnlyCharListInString(yVALUE, NUMERIC_CHAR_LIST)) {
			errMessage = Append(errMessage, "'" + yNAME + "' is not valid. It must be a positive integer.");
		}
		if(isBlank(errMessage)) {
			//---check if date is greater than current date		
			mVALUE = parseInt(mVALUE, 10);
			yVALUE = parseInt(yVALUE, 10);
			if(yVALUE < 10) yVALUE = thisYear.substring(0, thisYear.length-1) + yVALUE;
			else yVALUE = thisYear.substring(0, thisYear.length-2) + yVALUE;
			if(yVALUE < thisYear) {
				errMessage = Append(errMessage, "'" + yNAME + "' must be greater or equal to current year.");
			} else if(yVALUE == thisYear && mVALUE < thisMonth+1) {
				errMessage = Append(errMessage, "'" + mNAME + "' must be greater or equal to current month.");
			//--- HSS Below two conditions are put on Oct 3,2002 to check if
			//--- month or year has zero value
			
			
			} else if(parseInt(mVALUE) == 0 ) {
				errMessage = Append(errMessage, "'" + mNAME + "' cannot be Zero.");
			
			} else if(parseInt(yVALUE) == 0) {
				errMessage = Append(errMessage, "'" + yNAME + "' cannot be Zero.");
			}
		//--- HSS Oct 3, 2002 END		
		}	
		return errMessage;
	}

	//--------STATE/COUNTRY MANIPULATION FUNCTIONS HERE----------//
	
	//---State variable to store collections of states assigned through ASP
	var State = new Collection();
		
	//---Collection to store Country and State List
	function Collection() {
		this.length = 0;
		this.add = add;
		return this;
	}

	//---function to add object in collection
	function add(object) {
		this.length++;
		this[this.length] = object;
	}
		
	//---function to add object in collection		
	function Info(id, name, country) {
		this.id = id;
		this.name = name;
		this.country = country;
		return this;
	}
	
	//----function to search the states for a  particular country
	function SetStates(COUNTRYID, FORMNAME, ELEMENTNAME) {
		ClearStates(FORMNAME, ELEMENTNAME);
		AddStates(COUNTRYID,FORMNAME, ELEMENTNAME);
	}
	
	//----function to clear all the previous states when a new country is selected.
	function ClearStates(formName, elementName) {
		var i;
		var objST;
		objST = eval("document." + formName + "." + elementName);
		for(i = objST.length - 1; i >= 0 ; i--) {
			objST.options.remove(i);
		}
	}
	
	//----insert a new option element
	function InsertOptionElem(formName, elementName, optionName, optionValue) {
		//---SET THE VALUES IN THE OTHER LISTBOX
		var newElem = document.createElement("OPTION");
		newElem.text = optionName;
		newElem.value = optionValue;
		eval("document." + formName + "." + elementName).options.add(newElem);
	}
		
	//----Add States to Combo Box
	function AddStates(CountryID,FORMNAME, ELEMENTNAME) {
		var iCount;
		for(iCount = 1; iCount <= State.length; iCount++) {
			if(CountryID == State[iCount].country) {
				InsertOptionElem(FORMNAME,ELEMENTNAME,State[iCount].name, State[iCount].id);
			}
			
		}
	}			

	//----function to search the states for a  particular country in Recipient Search page when the selection of country is chsnged 
	function SetStatesSearch(COUNTRYID, FORMNAME, ELEMENTNAME) {
		ClearStates(FORMNAME, ELEMENTNAME);
		AddStatesSearch(COUNTRYID,FORMNAME, ELEMENTNAME);
	}
		
	//----Add States to Combo Box in search recipient page
	function AddStatesSearch(CountryID,FORMNAME, ELEMENTNAME) {
		var iCount;
		InsertOptionElem(FORMNAME, ELEMENTNAME, "----ALL----", 0);
		for(iCount = 1; iCount <= State.length; iCount++) {
			if(CountryID == State[iCount].country) {
				InsertOptionElem(FORMNAME,ELEMENTNAME,State[iCount].name, State[iCount].id);
			}
			if(CountryID == 0) {
				InsertOptionElem(FORMNAME,ELEMENTNAME,State[iCount].name, State[iCount].id);
			}
		}
	}
	
	
	//--- HSS August 14,2002	
//--- This function takes credit card type(first character of card type ie.v for VISA)
//--- and Credit card number, validates it against valid card type like VISA number must
//--- start with digit 4 etc. and also validates it against mod 10 algorithm.
function ValidateCCNumber(ccType,ccNumber,ccLabel)
	{
		var strCCNumber           // Credit card number after removing all spaces and dashes.
        var strSglChar           // an individual character
        var nSum			    // Sum of all calculations
        var sglDigit           // A digit found within a credit card number
        var nCounter		  // Loop Counter
        var nTotal			 // Sum of calculations For a specific Set
        var nMultiplyBy
        var errMessage 
        ///////////////////////////////
    
        strCCNumber = ""
        nSum = 0
        errMessage = ""
    
        // Remova non-numeric characters
        for (nCounter=0; nCounter < (ccNumber.length);nCounter++)
            {
				strSglChar = ccNumber.substring(nCounter,nCounter + 1)
				// If character is a numeric one append it to the CC number
				if (!isNaN(strSglChar))
					{
						strCCNumber = strCCNumber + strSglChar
					}
			}

		if (strCCNumber.length <= 0)
			{
				errMessage = "This " + ccLabel + "number doesn't contain valid numeric digits"
				return errMessage;
			}
		// Check CCNumber validity for its length ideally it should not be
        // less then 13 digit and not more then 16 digits
        if (strCCNumber.length < 13 )
			{
				errMessage = ccLabel + " Length must be between 13 and 16"
				return errMessage;
			}
        if (strCCNumber.length > 16 )
			{
				errMessage = ccLabel + " Length must be between 13 and 16"
				return errMessage;
			}
        
        // The credit card number must start with:
        //   4 For Visa Cards
        //   37 For American Express Cards
        //   5 For MasterCards
        var startChars;
        
        switch(ccType)
			{
          //   VISA
            case "V" :
          //       if first digit Not 4, Exit function
				startChars = parseInt(strCCNumber.substring(0,1), 10);
				
                if (startChars != 4)
					{
						errMessage = ccLabel + " is not a valid VISA card number"
						return errMessage;
					}
					break;
	 //   PopVISA
            case "P" :
          //       if first digit Not 4, Exit function
				startChars = parseInt(strCCNumber.substring(0,1), 10);
				
                if (startChars != 4)
					{
						errMessage = ccLabel + " is not a valid PopVISA card number"
						return errMessage;
					}
					break;
	
					
          //   American Express
            case "A" :
          //       if first 2 digits Not 37, or 34 Exit function
				startChars = parseInt(strCCNumber.substring(0, 2), 10);

                if (startChars != 37 && startChars != 34) {
						errMessage = ccLabel + " is not a valid American Express card number"
						return errMessage;
				}
				break;
				
          //   Mastercard
            case "M" :
          //       if first digit Not 5, Exit function
				startChars = parseInt(strCCNumber.substring(0, 1), 10);
				
                if (startChars != 5)
					{
						errMessage = ccLabel + " is not a valid Master card number"
						return errMessage;
					}
					break;
            case "D" :
          //       if first digit Not 6, Exit function
				startChars = parseInt(strCCNumber.substring(0,1), 10);
                
                if (startChars != 6)
					{
						errMessage = ccLabel + " is not a valid Discover card number"
						return errMessage;
					}
					break;
            
            default:
				errMessage = ccLabel + " type is not accepted by us."
				return errMessage;
           }
        	if (ccType != "D") {
		
		//alert(ccType)
		//---make it 16 digits by concating zero at beginning
		while (strCCNumber.length != 16) {
			strCCNumber = '0' + strCCNumber;
		}
		
		        
		// if the credit card number is less Then 16 digits add zeros
		// To the beginning to make it 16 digits.
		
		for(nCounter=0;nCounter < strCCNumber.length;nCounter++)
			{
				if(strCCNumber.length>16)
					{
						strCCNumber = "0" + strCCNumber
					}
			}		
        for(nCounter=1;nCounter < (strCCNumber.length+1);nCounter++)
			{
			//      Parse a digit from a specified position In the number
			     sglDigit = strCCNumber.substring(nCounter-1,nCounter)

			//     check the position of the digit and decide to multiply it
			//      by 1 or 2
			     nMultiplyBy = 1 + (nCounter%2)
			     nTotal = parseInt(sglDigit) * nMultiplyBy
			//      (Single digits roll over To remain single. We manually have
			//     to Do this.)
			//      if the Sum is 10 or more, subtract 9
				 if (nTotal > 9 )
					{
						nTotal = parseInt(nTotal) - 9
					 }
			
			//      Add the sum To the total of all sums
			     nSum = nSum + nTotal
			} // end of chk discover
			}
		
        if ((parseInt(nSum % 10)) == 0)
			{
				errMessage = ""
			}
        else
			{
				errMessage = "Invalid " + ccLabel 
			}
	return errMessage;


	}



//---function to trim input string, removes leading and trailing spaces
	function Trim(param) 
	{
//--TEST		
		var len = param.length, iNum = 0;
		var strReturn = "";
		var charVal = "";
		
		//--remove leading spaces
		while (iNum < len) {
			charVal = param.charAt(iNum)
			if(charVal != " ") {
				strReturn = param.substring(iNum, len);
				break;
			}
			//---decrese counter
			iNum++;
		}
		
		param = strReturn; strReturn = ""; 
		len = param.length; iNum = len - 1;
		//--remove trailing spaces
		while (iNum >= 0) {
			charVal = param.charAt(iNum)
			if(charVal != " ") {
				strReturn = param.substring(0, iNum + 1);
				break;
			}
			
			iNum--;
		}
		
		return strReturn;
		
	}


//---validation for check number, returns blank or err message Added by Pankaj Chanana 21-Oct-2003
	function check_CHECKNumber(PARAM, LABEL, isRequired, MIN, MAX) {
		var errMessage = "", isBLANK;
		var ALPHA_NUMERIC_CHAR_LIST = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";		
		isBLANK = isBlank(PARAM);
		if(isBLANK && isRequired)  {
			if (LABEL == "Diocese") {
				errMessage = "Please select a Diocese";
			} else {	
				errMessage = LABEL + " is blank";
			}
		} else if(!isOnlyCharListInString(PARAM, ALPHA_NUMERIC_CHAR_LIST) && !isBLANK) {
			errMessage = LABEL + " is not valid";
		}else if(CheckAllZero(PARAM)){
				errMessage = LABEL + "  can not be Zero."
		} else if(MIN != 0 && MAX != 0) {
			errMessage = check_ACH_RoutingLength(PARAM, MIN, MAX, LABEL);
		}
		return errMessage;
	} 
	

//---validation for Account/Routing, returns blank or err message
	function checkACH_RoutingNumber(PARAM, LABEL, isRequired, MIN, MAX) {
		var errMessage = "", isBLANK;
		var NUMERIC_CHAR_LIST = "0123456789";		
		isBLANK = isBlank(PARAM);
		if(isBLANK && isRequired) {
			if (LABEL == "Diocese") {
				errMessage = "Please select a Diocese";
			} else {	
				errMessage = LABEL + " is blank";
			}
		} else if(!isOnlyCharListInString(PARAM, NUMERIC_CHAR_LIST) && !isBLANK) {
			errMessage = LABEL + " is not valid";
		}else if(CheckAllZero(PARAM)){
				errMessage = LABEL + "  can not be Zero."
		} else if(MIN != 0 && MAX != 0) {
			errMessage = check_ACH_RoutingLength(PARAM, MIN, MAX, LABEL);
		}
		return errMessage;
	} 


	//--- Function to check for range of given Account/Routing Number
	function check_ACH_RoutingLength(PARAM, MIN, MAX, LABEL) {
		var errMessage = "";
		
		//--- Comented as this function is called only where these two values are not Zero
		//if(MIN == 0 && MAX == 0) return errMessage;
		
		if(((PARAM.length < MIN || PARAM.length > MAX) && (MIN != MAX))) {
			errMessage = LABEL + " length should be between " + MIN + " and " + MAX + " characters";
			
		} else if(PARAM.length > MAX) {
			errMessage = LABEL + " should be maxmimum " + MAX + " characters in length";
		
		} else if(PARAM.length < MIN) {
			errMessage = LABEL + " should be minimum " + MIN + " characters in length";
		
		}
		return errMessage;
	} 


//--- HSS validation for Donation value ,returns error message 
//--- if any error or all Zero
	
	function checkDonation(PARAM, LABEL, isRequired, MIN, MAX) {
			var errMessage = "";
		errMessage = checkNumericOnly(PARAM, LABEL, isRequired, MIN, MAX)
		
		if(errMessage="" && parseInt(RemoveLeadingZero(PARAM))<=0)
			{
				errMessage = "Amount is Zero."
			}
		
		return errMessage;
	}
	
	
	//--- HSS Function below takes a numeric string and removes all
	//--- leading Zeors and returns the altered string back 
	
	function RemoveLeadingZero(param) {
		var i, len=param.length;
		var char1;
		for(i=0; i<len;i++) {
			char1 = param.substring(i, i+1);
			if(char1 != '0') { 
				return param.substring(i, len);
			}
		}
		 return param;
	}
	

//--- HSS validation for any numeric value ,returns true message 
//--- if all chars are Zero false otherwise. Oct 3,2002
	
function CheckAllZero(inString)
	{
		var i;	
		var boolAllZero;
		boolAllZero = true;
		inString = Trim(inString); 
		for(i=0;i<inString.length;i++)
			{
				if(inString.charAt(i)=="0")
					{}
				else
					{
						boolAllZero = false;
						break;
					}
			}
	
	return boolAllZero;
		
	}

//---validation for state/country, returns blank or err message
	function checkAlphaNumeric(PARAM, LABEL, isRequired) {
		var errMessage = "", isBLANK;
		
		var NUMERIC_CHAR_LIST = "0123456789abcdefghijklmnopqrstuvwxyz";		
		isBLANK = isBlank(PARAM);
		if(isBLANK && isRequired) {
			if (LABEL == "Diocese") {
				errMessage = "Please select a Diocese";
			} else {	
				errMessage = LABEL + " is blank";
			}
		} else if(!isOnlyCharListInString(PARAM.toLowerCase(), NUMERIC_CHAR_LIST) && !isBLANK) {
			errMessage = LABEL + " is not valid";
		} 
		return errMessage;
	} 
//---validation for FundID
	function checkFundID(PARAM, LABEL, isRequired, len){
		var errorMsg ;
		errorMsg = checkAlphaNumeric(PARAM, LABEL, isRequired);
		if(errorMsg == ""){
			if(PARAM.length != len){
				errorMsg = "The length of FundID should be " + len;
			}
		}
		return errorMsg;
	}



//--- HSS April 24, 2003
//---validation for float values/ amounts , returns blank or err message
//--- At this moment the function restricts the upper value as 999999.00
//--- (a six digit only).

	function checkFloatAmount(PARAM, LABEL, isRequired, boolAllowZero) 
	{
		var errMessage = "", isBLANK;
		var NUMERIC_CHAR_LIST = "0123456789.";		
		isBLANK = isBlank(PARAM);
		if(isBLANK && isRequired)
		{
			errMessage = LABEL + " is blank";
		} 
		else if((!isOnlyCharListInString(PARAM, NUMERIC_CHAR_LIST)) && (!isBLANK))
		{
			errMessage = LABEL + " is not valid";		
		}
		else if((CheckAllZero(PARAM) || parseFloat(PARAM) == 0) && (!boolAllowZero))
		{
			errMessage = LABEL + " should be greater than zero";
		}
		//else if(!isFloat(PARAM) && !isBLANK)
		else if(!isBLANK)
		{
			//errMessage = LABEL + " is not valid";
			errMessage = isFloat(PARAM, LABEL);
		} 
		
		return errMessage;
	} 


//--- HSS April 24, 2003

function isFloat(PARAM, LABEL)
{ 
	var boolIsFloat
	var errMsg = "";
	//Set This Variable//
	//This represents the MAX number of 
	//decimal places that will be allowed...
	theNum = PARAM

	var numDec = 2;

	//boolIsFloat = false;

	//Don't Change These Variables//
	var theLen = theNum.length; 
	var dotPos = theNum.indexOf("."); 
	var thePos = theLen - (dotPos+1);


	//Conditionals//
	var isNum = (isNaN(theNum)) ? false:true; 
	var isDot = (dotPos != -1) ? true:false; 
	var isAt = (thePos <= numDec && thePos != 0) ? true:false; 
	var isOne = (theNum.indexOf(".",dotPos+1) == -1) ? true:false; 


	//Run The Checks//
	if(isNum)
	{
		if (parseFloat(theNum) > parseFloat(999999.00))
		{
			errMsg = LABEL + " should be between 1 and 6 digits";

			//alert(theNum + "is not a suitable number");
			//boolIsFloat = false;
		}		
		else if((isNum) && (isDot) && (isAt) && (isOne)) 
		{ 
			//alert(theNum + " is a suitable number.a"); 
			//boolIsFloat = true;

		} 

		else if((isNum) && (!isDot))
		{
			//alert(theNum + " is a suitable number.b"); 
			//boolIsFloat = true;
		}

		else
		{ 
			errMsg = LABEL + " is not valid";
			//alert(theNum + "  is not a suitable number.INNER"); 
			//boolIsFloat = false;
		} 
	}	
	else
	{
		errMsg = LABEL + " is not valid";
	//	alert(theNum + "  is not a suitable number. OUTER"); 
	//	boolIsFloat = false;
	}

return errMsg; 
} 


// This Set of lines is for Client's OS And Browser Type Version
// Added By Amit Sharma
// ********************************Start***********************************
		var detect = navigator.userAgent.toLowerCase();		
		var OS,browser,version,total,thestring,place;
			
		if (checkIt('konqueror')){
			browser = "Konqueror";
			OS = "Linux";
		}
		else if (checkIt('safari')) browser = "Safari";
		else if (checkIt('omniweb')) browser = "OmniWeb"
		else if (checkIt('opera')) browser = "Opera";
		else if (checkIt('webtv')) browser = "WebTV";
		else if (checkIt('icab')) browser = "iCab";
		else if (checkIt('msie')) browser = "Internet Explorer";
		else if (!checkIt('compatible')){
			browser = "Netscape Navigator"
			version = detect.charAt(8);
		}
		else browser = "An unknown browser";

		if (!version) version = detect.charAt(place + thestring.length);

		if (!OS){
			if (checkIt('linux')) OS = "Linux";
			else if (checkIt('x11')) OS = "Unix";
			else if (checkIt('mac')) OS = "Mac";
			else if (checkIt('win')) OS = "Windows";
			else OS = "An unknown operating system";
		}		
		
		// THis funtion is a Supporting function for getClient brower,Os and Version
		function checkIt(string){
			place = detect.indexOf(string) + 1;
			thestring = string;
			return place;
		}// function
		
		
		// THis function will tell us the Client's OS
		function getClientOS(){
			return OS; 
		}// Function

		// THis function will tell us the Client's Browser that is name
		function getClientBrowserType(){						
			return browser;		
		}// Function
		
		// THis function will tell us the Client's Browser Version
		function getClientBrowserVersion(){					
			return version;		
		}// function		
		

//---checking for blank value in payment mode combo box
	function checkPaymentMode(PARAM,LABEL) {
		
		var errMessage = "", isBLANK;
		
		isBLANK = isBlank(PARAM);

		if(isBLANK ) {
			errMessage = "Select " + LABEL ;
		
		}
		return errMessage;
	}	
//---below 3 functiond added by Richa --validation for Donation value ,returns error message 
//--- if any error or all Zero ,use checkNumericOnly2
	
	function checkAmount(PARAM, LABEL, isRequired, MIN, MAX) {
			var errMessage = "";
		errMessage = checkNumericOnly2(PARAM, LABEL, isRequired, MIN, MAX)
		
		if(errMessage == '' && parseInt(RemoveLeadingZero(PARAM))<=0)
			{
				errMessage = "Amount is Zero."
			}
		
		return errMessage;
	}

//---validation for , returns blank or err message
	function checkNumericOnly2(PARAM, LABEL, isRequired, MIN, MAX) {
		var errMessage = "", isBLANK;
		var NUMERIC_CHAR_LIST = "0123456789";		
		isBLANK = isBlank(PARAM);
		if(isBLANK && isRequired) {
			if (LABEL == "Diocese") {
				errMessage = "Please select a Diocese";
			} else {	
				errMessage = LABEL + " is blank";
			}
		} else if(!isOnlyCharListInString(PARAM, NUMERIC_CHAR_LIST) && !isBLANK) {
			errMessage = LABEL + " is not valid";
		} else if(MIN != 0 && MAX != 0) {
			errMessage = checkAmountLimits(PARAM, MIN, MAX, LABEL);
		}
		return errMessage;
	} 

//---Function to check that the Amount value is between MIN and MAX values.
	function checkAmountLimits(PARAM, MIN, MAX, LABEL) {
		var errMessage = "";
		if(MIN == 0 && MAX == 0) return errMessage;
		if(((PARAM < MIN ) && (MIN != MAX))) {
			errMessage = LABEL + " can't be less than " + MIN ;
		} else if(PARAM > MAX) {
			errMessage = LABEL + " can't be more than " + MAX ;
		}
		return errMessage;
	} 	

		


// ********************************End***********************************