
function validateForm(e) {
  var form = (e) ? e.target : window.event.srcElement;
  var valid = true;
  for (var i=0; i<form.elements.length; i++) {
    var vf = validateField(form.elements[i]);
    if (!vf) {
      valid = false;
      break;
    }
  }
  return valid;
}
function validateField(field) {
  var rules     = field.rules;
  var invalid   = false;
  if (rules && rules.length) {
    for (var i=0; (invalid==false) && (i<rules.length); i++) {
      switch (rules[i].rule) {
        case 'regex':
          if (!field.value.match(rules[i].match)) {
            invalid = true;
          }
          break;
        case 'nregex':
          if (field.value.match(rules[i].match)) {
            invalid = true;
          }
          break;
        case 'max':
          if ((field.value.length > 0) && field.value > rules[i].match) {
            invalid = true;
          }
          break;
        case 'min':
          if ((field.value.length > 0) && field.value < rules[i].match) {
            invalid = true;
          }
          break;
        case 'maxLength':
          if (field.value.length > rules[i].match) {
            invalid = true;
          }
          break;
        case 'minLength':
          if (field.value.length < rules[i].match) {
            invalid = true;
          }
          break;
        case 'selected':
          if (field.options[field.selectedIndex].value == (''||undefined)) {
            invalid = true;
          }
          break;
        default:
          break;
      }
      if (invalid) {
        alert('Please fix your answer to "' + field.id + '" (invalid).');
      }
    }
  }
  return !invalid;
}
function assignFormRules() {
  var formName = document['form1'];
  formName.first_name.rules       = [{rule: 'minLength', match: 2}];
  formName.last_name.rules        = [{rule: 'minLength', match: 2}];
  formName.company.rules          = [{rule: 'minLength', match: 2}];
  formName.zip.rules              = [{rule: 'nregex', match: /\D/},{rule: 'minLength', match: 5}];
  formName.phone.rules            = [{rule: 'regex', match: /^\+?[- 0-9\.\(\)]{10,}$/}];
  formName.email.rules            = [{rule: 'regex', match: /.*@.*\..{2,}/}];
  if (formName['00N30000000ePKv']) {
    formName['00N30000000ePKv'].rules  = [{rule: 'nregex', match: /\D/},{rule: 'minLength', match: 1}];
  }
  formName.onsubmit               = validateForm;
}
window.onload = assignFormRules;

