MailingList = function() {
  var errors = [];
  var requiredFields = [{id: 'em_wfs_formfield_1374292', errorMsg: "You must enter your email address"},
                        {id: 'em_wfs_formfield_1374294', errorMsg: "You must enter your first name"},
                        {id: 'em_wfs_formfield_1374375', errorMsg: "You must select your state"}];
                        
  function validateInput(field) {
    var type = $j(field).attr("type");
    switch (type) {
      case "text": {
        if (field.value.trim() == "") return false;
        if ($j(field).is(".email"))
          return validateEmail(field.value.trim());
        else
          return true;
      }
      default: return false;
    }
  }
  
  function validateEmail(address)
  {
    var re = new RegExp("^([\\#\\$\\&'\\*\\+\\-\\/\\=\\?\\^\\_\\`\\{\\}\\|\\~a-zA-Z0-9-]+(\\.[\\#\\$\\&'\\*\\+\\-\\/\\=\\?\\^\\_\\`\\{\\}\\|\\~a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)+)?$");
    return re.test(address);  
  }

  function validateTextArea(field) {
    return (field.value != "");
  }
  
  function validateSelect(field) {
    return (field.value != "");
  }
  
  function validateField(field, errors) {
    if (field)
    {
      switch (field.tagName.toLowerCase()) {
        case "input": { if (!validateInput(field)) addError(field); break; }
        case "select": { if (!validateSelect(field)) addError(field); break; }
        case "textarea": { if (!validateTextArea(field)) addError(field); break; }
        default: addError(field);
      }
    }
    else
      return false;
  }
  
  function displayErrors(errors)
  {
    var errorString = "";
    for (var i in errors)
      errorString += "<div>" + errors[i] + "</div>";
    $j(".error").html(errorString).fadeIn("slow");
  }
  
  function addError(field) {
    for (var i in requiredFields)
      if (requiredFields[i].id == field.id)
      {
        errors.push(requiredFields[i].errorMsg);
        break;
      }
  }
  
  this.Validate = function(form) {
    errors = [];
    
    $j(".required", form).each(function() { validateField(this) });
    
    if (errors.length > 0) {
      displayErrors(errors);
      return false;
    }
    else
      return true;
  }
}


var mailingList = new MailingList();