    // Validator Object
    var valid = new Object();

    // REGEX Elements

        // matches zip codes
        valid.zipCode = /\d{5}(-\d{4})?/;

        // matches $17.23 or $14,281,545.45 or ...
        valid.Currency = /\$\d{1,3}(,\d{3})*\.\d{2}/;
        
        // matches $17.23 or $14,281,545.45 or ...
        valid.Decimal = /\d{1,2}(,\d{1})*\.?\d{1}/;

        // matches 5:04 or 12:34 but not 75:83
        valid.Time = /^([1-9]|1[0-2]):[0-5]\d$/;
        
        valid.Number = /^\d+$/; ///^([0-9])/;
        
        valid.IsraeliPhoneNumber = /^([0-9][0-9][0-9][0-9][0-9][0-9][0-9])$/;
        
        //matches email
        valid.emailAddress = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;

        // matches phone ###-###-####
        valid.phoneNumber = /^\(?\d{3}\)?\s|-\d{3}-\d{4}$/;

        // International Phone Number
        valid.phoneNumberInternational = /^\d(\d|-){7,20}/;

        // IP Address
        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])$/;

        // Date xx/xx/xxxx
        valid.Date = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/;

        // State Abbreviation
        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;

        // Social Security Number
        valid.SSN = /^\d{3}\-\d{2}\-\d{4}$/;
        
    function validateField(field, messageID) 
    {
		element = document.getElementById(field);
		with(element) 
		{ 

			var v = element.validator; 

			if(!v) return; 

			var thePat = valid[v];
			if(element.value.length <= 0)
			{
				return true;
			} 

			element.value = Trim(element.value);

			var gotIt = thePat.exec(element.value); 

			if(! gotIt)
			{
				ShowMessage(messageID);
				element.select();
				element.value="";
				element.focus(); 
				return false;
			}
			
		}
        return true;
    }

	function validateNumbers(field, messageID)
	{
		element = document.getElementById(field);
		if(isNaN(element.value))
		{
			ShowMessage(messageID);
			element.select();
			element.value="";
			element.focus(); 
		}
	}
	
	function validatePassword(field, messageID)
	{
		element = document.getElementById(field);
		if(element.value == null ||  element.value.length < 8)
		{
			ShowMessage(messageID);
			element.select();
			element.focus();
		}
	}
	
	function validateRetypePassword(passwordRetype, password, messageID)
	{
		var items = document.getElementsByName(password);
		var origPassword = items.item(0);
		element = document.getElementById(passwordRetype);
		if(element.value == null ||  element.value.length < 8 || element.value != origPassword.value)
		{
			ShowMessage(messageID);
			element.select();
			element.focus();
		}
	}
	
	function ValidateFilterNumbersOnlyLength(object)
	{
		if(FilterNumbersOnly() == false)
		{
			return;
		}
		
		var element = document.getElementById(object);
		if(element.value != null &&  element.value.length > 8)
		{
			event.returnValue=false;
		}
	}
	
	function ValidateFilterNumbersWithLength(object, length)
	{
		if(FilterNumbersOnly() == false)
		{
			return;
		}
		
		var element = document.getElementById(object);
		if(element.value != null &&  element.value.length >= length)
		{
			event.returnValue=false;
		}
	}
	
	function FilterNumbersOnly()
	{
		var keyCode =event.keyCode;
		if ( !(keyCode >=48 && keyCode <= 57) && !(keyCode >=96 && keyCode <=105)  && (keyCode!=8) && (keyCode!=9))
		{
			event.returnValue=false;	
		}
	}
			
	function FilterNumbersWithFloatingPoint()
	{
		var keyCode =event.keyCode;
		if ( !(keyCode >=48 && keyCode <= 57) && !(keyCode >=96 && keyCode <=105)  
			&& (keyCode!=8) && (keyCode!=9) && (keyCode != 190))
		{
			event.returnValue=false;	
		}
	}

    function validateForm(theForm) {

        var elArr = theForm.elements; 

        for(var i = 0; i < elArr.length; i++) {

           with(elArr[i]) { 

              var v = elArr[i].validator; 

              if(!v) continue; 

              var thePat = valid[v]; 

              var gotIt = thePat.exec(value); 

              if(! gotIt){
                 alert(name + ": failure to match " + v + " to " + value);                  
                 elArr[i].select();
                 elArr[i].focus(); 
                 return false;
              }
           }
        }

        return true;

    }
    
function CheckHTML(element, text, messageID)
{ 
	var re; 
	re = /(<)([^>]*)(>)/ig;
	if (re.test(text)) 
	{
			ShowMessage(messageID);
			element.value="";
			element.select();
			element.focus(); 
	}
} 



function Trim(TRIM_VALUE)
{
	if(TRIM_VALUE.length < 1)
	{
		return"";
	}
	TRIM_VALUE = RTrim(TRIM_VALUE);
	TRIM_VALUE = LTrim(TRIM_VALUE);
	return TRIM_VALUE;
}

function RTrim(VALUE)
{
	var w_space = String.fromCharCode(32);
	var v_length = VALUE.length;
	var strTemp = "";
	if(v_length < 0)
	{
		return"";
	}

	var iTemp = v_length -1;

	while(iTemp > -1)
	{
		if(VALUE.charAt(iTemp) == w_space)
		{
		}
		else
		{
			strTemp = VALUE.substring(0,iTemp +1);
			break;
		}
		iTemp = iTemp-1;
	} //End While
	return strTemp;
} //End Function

function LTrim(VALUE)
{
	var w_space = String.fromCharCode(32);
	if(v_length < 1){
	return"";
	}
	var v_length = VALUE.length;
	var strTemp = "";

	var iTemp = 0;

	while(iTemp < v_length){
	if(VALUE.charAt(iTemp) == w_space){
	}
	else{
	strTemp = VALUE.substring(iTemp,v_length);
	break;
	}
	iTemp = iTemp + 1;
	} //End While
	return strTemp;
} //End Function