    // Validator Object
    var valid = new Object();

    // REGEX Elements

        // matches zip codes
        //valid.zipCode = /\d{5}(-\d{4})?/;
        valid.zipCode = new Object();
        valid.zipCode.validator = /\d{5}(-\d{4})?/
        valid.zipCode.cleaner = /[()\[\] . ]*/g

        // matches $17.23 or $14,281,545.45 or ...
        valid.Currency = /\$\d{1,3}(,\d{3})*\.\d{2}/;

        // matches 5:04 or 12:34 but not 75:83
        valid.Time = /^([1-9]|1[0-2]):[0-5]\d$/;

        // matches 5:04 or 12:34 but not 75:83
        valid.Name = new Object();
        valid.Name.validator = /([a-zA-Z0-9]+)/;

        // matches any non-empty text
        valid.Text = new Object();
        valid.Text.validator = /([a-zA-Z0-9]+)/;

        //matches email
        valid.emailAddress = new Object();
        valid.emailAddress.validator = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;

        // matches phone ###-###-####
        //valid.phoneNumber = /^\(?\d{3}\)?\s|-\d{3}-\d{4}$/;

        // matches phone ##########
        valid.phoneNumber = new Object();
        valid.phoneNumber.validator = /([0-9]{10,})/
        valid.phoneNumber.cleaner = /[()\[\] -. ]*/g

        // matches CC 16 digits
        valid.ccVMD = new Object();
        valid.ccVMD.validator = /([0-9]{16,16})/
        valid.ccVMD.cleaner = /[()\[\] -. ]*/g

        // 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 validateForm(theForm, theDoc)
{
  var elArr = theForm.elements;
  for(var i = 0; i < elArr.length; i++)
  {
    with(elArr[i])
    {
      var r = validateField(elArr[i]);
      if(r==false)
        return r;
    }//with
  }//for
    return true;
}//validateForm
function validateField(fld)
{
      var v = fld.getAttribute('validator');
      if(!v || !valid[v].validator) {return true;}
      if(!v) {return true;}
      var thePat = valid[v].validator;
      var theClean = valid[v].cleaner;
      var value = fld.value;
      if(theClean)
        value = value.replace(theClean,"");
      var gotIt = thePat.test(value);
      if(! gotIt)
      {
        //alert(name + ": failure to match " + v + " to " + value);
        //alert("Please provide correct value for '"+theDoc.getElementById('HEADER_'+fld.id).innerHTML+"'");
        alert("Please fill in all the required fields. ");
        try{
        fld.select();
        fld.focus();
        }catch(e){}
        return false;
      }
      /*
      var ml = fld.getAttribute('minlen');
      if(ml && eval(ml)>0 && value.length < eval(ml))
      */
      return true;
}//validateField
