
    var valid = new Object();
   
    valid.zipCode = /\d{5}/;    // /\d{5}(-\d{4})?/;      // matches zip codes
	valid.Currency = /\$\d{1,3}(,\d{3})*\.\d{2}/;		// matches $17.23 or $14,281,545.45 or ...
	valid.Time = /^([1-9]|1[0-2]):[0-5]\d$/;		// matches 5:04 or 12:34 but not 75:83
    valid.emailAddress = /^(['_a-zA-Z0-9-]+)(\.['_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+)(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,5})$/; //matches email
    valid.phoneNumber = /^\(?\d{3}\)?\s|-\d{3}-\d{4}$/;		//matches email
    valid.phoneNumberNumericOnly = /^\d{10}$/;		//matches email
	valid.phoneNumberInternational = /^\d(\d|-){7,20}/;		// International Phone Number
	valid.ipAddress = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/; // IP Address
    valid.Date = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/;		// Date xx/xx/xxxx
	valid.State = /^(AK|AL|AR|AZ|CA|CO|CT|DC|DE|FL|GA|HI|IA|ID|IL|IN|KS|KY|LA|MA|MD|ME|MI|MN|MO|MS|MT|NB|NC|ND|NH|NJ|NM|NV|NY|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VA|VT|WA|WI|WV|WY)$/i;		// State Abbreviation
	valid.SSN = /\d{9}/; // Social Security Number
	valid.SSN = /\d{4}/; // Social Security Number
	
	function validateNumeric(value,minVal,maxVal,maxDecimal){
		var num;

		if (maxDecimal!=0)
			eval("num = /^\\d{"+minVal.toString().split(".")[0].length.toString()+","+maxVal.toString().split(".")[0].length.toString()+"}.?\\d{0,"+maxDecimal+"}?$/");
		else
			eval("num = /^\\d{"+minVal.toString().split(".")[0].length.toString()+","+maxVal.toString().split(".")[0].length.toString()+"}?$/");
		var result = num.exec(value);
		if(!(result))
			return false;
		else{
			if((_val_IE)&&(result.lastIndex!=value.length))
				return false;
		}
		if(value<minVal||value>maxVal)
			return false;
		return true;
	}
	
	function validateString(value, minLength, maxLength){
		if(value.length<minLength||value.length>maxLength)
			return false;
		return true;
	}
	
	function validateFormat(value, formatName) {
		switch (formatName){
			case "zip":
				var result = valid.zipCode.exec(value);				
				break;
			case "phone":
				var result = valid.phoneNumber.exec(value);
				break;
			case "phonenumeric":
				var result = valid.phoneNumberNumericOnly.exec(value);
				break;
			case "email":
				var result = valid.emailAddress.exec(value);
				break;
			case "ssn":
				var result = valid.SSN.exec(value);
				break;
			case "ssnlast4":
				var result = valid.SSN.exec(value);
				break;
		}
		
		if(!(result))
			return false;
		else{
			if((_val_IE)&&(result.lastIndex!=value.length))
				return false;
		}
		return true;
	} 
	   
   	function Call_Page_ClientValidate(e)
	{
		var oEvent = new Object();
		oEvent.srcElement = e;
		return Page_ClientValidate(oEvent);
	}
	
	//this makes sure validation only runs once  
    var runValidation = true;
    function quantityConfirmation(source, arguments) 
    {
      var textbox = document.getElementById(source.controltovalidate);
      if(arguments.Value > 99 && runValidation)
      {
        arguments.IsValid = confirm("Item quantity of " + arguments.Value + " entered. Please confirm entry.");
      } 
      
      if(arguments.IsValid == false)
      {
        textbox.focus();
        textbox.select();
        window.event.returnValue=false;
      }
      
      runValidation = false;
      return arguments.IsValid;
    }
   
   function handleOnFocus(control) 
   {
     runValidation = true;
   }

   
   
