
// Validate the form fields when the form is submitted.

function validateForm() {
  var err = false;
  var msg = "";
  with (document.forms[0]) {
    // Ensure a name was given and that it's valid
    if (name.value == "") {
      msg += "Please enter your name.\n";
      err = true;
    }
    else {
      var namePattern = /^[a-z]+\.?,? +[a-z]+\.?(,? +[a-z]+\.?)?(,? +[a-z]+\.?)?(,? +[a-z]+\.?)? *$/i;
      if (!namePattern.test(name.value)) {
        msg += "Please enter both your first and last names.\n";
        err = true;
      }
    }
    // If a copy of the email was requested, make sure an email address was given
    if (copy.checked && email.value == "") {
      msg += "Please enter your email address.\n";
      err = true;
    }
    // If an email address was given, make sure it's valid
    if (email.value != "") {
      var emailPattern = /^[\w_\-]+(\.[\w_\-]+)*@[a-z0-9\-]+(\.[a-z0-9\-]+)*\.([a-z]{2,4}|museum|travel)$/i;
      if (!emailPattern.test(email.value)) {
        msg += "Your email address has an error.\n";
        err = true;
      }
    }
    // Ensure a message type was chosen
    if (type.value == "") {
      msg += "Please choose a message type.\n";
      err = true;
    }
    // Make sure no subject was entered
    if (subject.value != "") {
      msg += "Your subject has an error.\n";
      err = true;
    }
    // Ensure a message was entered
    if (message.value == "") {
      msg += "Please enter your message or question.\n";
      err = true;
    }
    // If an attachment was given, make sure its type is ok; can't check the size in JavaScript
    if (file1.value != '') {
      var fileType = '';
      var pos = file1.value.lastIndexOf('.');
      if (pos > 0 && (pos + 1 < file1.value.length)) {
        fileType = file1.value.substring(pos+1).toLowerCase();
      }
      // Have the type, now check if it is valid
      var okTypes = new Array('txt', 'pdf', 'jpg', 'jpeg');
      var valid = false;
      for (i=0; i<okTypes.length; i++) {
        if (fileType == okTypes[i]) valid = true;
      }
      if (!valid) {
        msg += "An attachment must be a ";
        for (i=0; i<okTypes.length; i++) {
          (i < okTypes.length - 1) ? msg += okTypes[i] + ", " : msg += 'or ' + okTypes[i] + " file.\n";
        }
        err = true;
      }
    }
  }
  // If there was an error, display the message(s) and return false; otherwise return true
  if (err) {
    window.alert (msg);
    return false;
  }
  else return true;
}

window.onload = function () {
  if (document.forms.length > 0) document.forms[0].onsubmit = validateForm; 
}

