// JavaScript Document

  var contactForm = {
   
      isValidEmail: function(emailAddress) {
         var filter = /^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;

         // search email text for regular exp matches
         if (!filter.test(emailAddress)) {
            return false;
         } 
         return true; 
      },

      validateInput: function(form, requiredFields) {
  
         var blankReqFields = new Array();

         for (var i=0; i<requiredFields.length; i++) { // check for blank fields
            var fieldName = requiredFields[i];
            if (form.elements[fieldName].value==="") {
              var label = form.elements[fieldName].parentNode;
              var blankReqField = label.innerText;
              // using .replace as an rtrim() to eliminate line breaks
              blankReqFields[blankReqFields.length] = '{ ' + blankReqField.replace(/\s+$/,"") + ' }';
            }
         }

         if (blankReqFields.length > 0) {
            var blankReqFieldsList = blankReqFields.join('\n');
            alert("The following required fields are not filled in:\n" + blankReqFieldsList + '\nPlease fill in all required fields and click "Send Email". Thanks!');
            return false;
         }
  
         if (!this.isValidEmail(form.elements['email'].value)) {
            alert("Sorry, the email address provided is not in a valid format. Please try again, or contact the web master. Thanks.");
            return false;
         }
         else {
            return true;
         }
      },
   
      init: function() {
         // clear message box on first focus
         $('#message').focus(function() {
            if(this.value == this.defaultValue) {
               this.value = '';
            }
         } );

         // link for validation to submit event
         $('#contact_form').submit(function() {
               var requiredFields = new Array('name','email','message');
               if(!contactForm.validateInput(this, requiredFields)) {
                  return false; // prevent form submission
               }
            }
         );
         
      }
   }
   
contactForm.init();
