/**
 *
 * @package SprintCMSv2_docnet.co.uk
 * @author Jim Tunstall <jtunstall@doc-net.com>
 * @copyright Copyright &copy; 2009, Doctor Net Limited
 *
 * Newsletter Signpup Validation and Submission
 * 
 */
$(document).ready(function() {
   /**
    * @var String Successful completion redirect page
    */   
   var SUCCESS_PAGE_URL = '/newsletter-signup/sent';

   /** 
    * Handle Contact Form send event
    */
   $("#newsletter_signup_form_submit").click(function() {  
      if(!is_form_valid()) {
         // Stop here (element validation errors are already visible)
         
         // Set form error message
         $('#newsletter_signup_form_message').html('Your form was not sent.  Please address the issues highlighted below and try again.');
         $('#newsletter_signup_form fieldset').css('border-color', 'red');
         
         return false;
      }
          
      // Submit the form using AJAX
      AjaxHandler.reset();
      AjaxHandler.process_form($('#newsletter_signup_form'));
      AjaxHandler.dispatch(function(obj_response) {
         window.location = SUCCESS_PAGE_URL;         
      });
   });
   
   /**
    * Validate the form.
    *
    * Highlight errors with elements that are incorrect   
    * 
    * @returns True on Success, False otherwise
    */
   is_form_valid = function() {
      // clear any previous errors
      hide_errors();
      var bol_error_free = true; 
      
      // Validate Name
      if (($("#newsletter_signup_form_name").val()) == "") {
         show_element_error_message('#newsletter_signup_form_name_error', 'Please enter your Name');
         bol_error_free = false;
      }
      
      // Validate email      
      var str_email_regex = /^([a-zA-Z0-9_\-])+(\.([a-zA-Z0-9_\-])+)*@((\[(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5]))\]))|((([a-zA-Z0-9])+(([\-])+([a-zA-Z0-9])+)*\.)+([a-zA-Z])+(([\-])+([a-zA-Z0-9])+)*))$/;
      var str_email_address = $("#newsletter_signup_form_email").val();
      if (("" == str_email_address) || (!str_email_address.match(str_email_regex))) {
         show_element_error_message('#newsletter_signup_form_email_error', 'Please enter a valid Email Address');
         bol_error_free = false;
      }  
      
      return bol_error_free;
   }
   
   /**
    * Reset form to initial state
    */
   hide_errors = function() {
      $('.error').hide();
      $('#newsletter_signup_form fieldset').css('border-color', '#ccc');
      $('#newsletter_signup_form_message').html('');   
   }
   
   /**
    * Show an error message for an element
    */
   show_element_error_message = function(str_element_id, str_message) {
      $(str_element_id).html(str_message);         
      $(str_element_id).css('display', 'block');
   }
});