/*  DUK Forms js
 
 Author:   Mat J (matt@designuk.com)
  Job No:   duk077
  File:   forms.css
  Description: Basic forms lib - DUK site
 Dependencies: jQuery-1.2.6.min.js
  ----------------------------------------------------------------- */
 
$(document).ready(function() {
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 // Basic form interaction: focus etc
 $('form input:not(.exempt), form textarea:not(.exempt)')
  .bind('focus', function() {
   $(this).css({ border : '1px solid #fff' });          
  })
  .bind('blur', function() {
   $(this).css({ border : '1px solid #bbb' });    
  });
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 // Sort-of-generic form checker :)
 $('form').submit(function() {
  // set basic error and format error messgaing here:
  var failErrorMsg = "Please note the following fields are required:";
  var formatErrorMsg = " - please also check that your email address is valid.";
  // overall passed var
  var passed = true;
  // email regexp pattern
  var pattern = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; // http://www.dustindiaz.com/update-your-email-regexp/
  // for each element with a class of required:
  $('.required').each(function(i) {
   var errorFlag = false;
   var emailErrorFlag = false;
   if ($(this).val() == '') {
    errorFlag = true;
    passed = false;
   } else if ($(this).hasClass('email')) {
    if (pattern.test($(this).val()) == false) {
     errorFlag = true;
     emailErrorFlag = true;
     passed = false;
    }
   }
   // if this is an error field, attach appropriate classes etc
   if (errorFlag == true) {
    $(this).addClass('error');
    $(this).prev().addClass('error');
    // add the element's label string to the error message:
    var tempStr = $(this).prev().text();
    tempStr = tempStr.slice(0, -2);
    failErrorMsg += "<br />" + tempStr;
    if (emailErrorFlag == true) {
     failErrorMsg += formatErrorMsg;
    }
   } else {
    $(this).removeClass('error');
    $(this).prev().removeClass('error');
   }
  });
  // display an error message if necessary
  if (passed == false) {
   $('#error_msg').remove();
   $(this).append('<p id="error_msg" class="error">' + failErrorMsg + '</p>');
  }
  // finally return overall passed variable
  return passed;
 });
});
