/*
**
** Original Author: Paul Hollands
** Date Created: 15th April 2008
** Purpose: Javascript Functions to validate forms and send them using Ajax
** 			
** Last Modified by: Paul Hollands
** Last Modified date: 15th April 2008
** Reason for Modification: jQuery intregation
**
** Version 2.00
**
*/
displayLoadingMessage = function()
{
	$jq("body").append("<div id='light-box'></div>");
	$jq("body").append("<div id='loading-box'></div>");
	$jq("#loading-box").append("<div id='send-message' class='align-center bold sending-background'>Sending...</div>");
	$jq("#error_div").hide();
}

destroyLoadingMessage = function()
{
	$jq("#light-box").remove();
	$jq("#loading-box").empty().remove();
}
 
standardSubmitResponse = function(responseText) 
{ 
	var response = responseText;
	var responseType = response.substr(0,1);
	var moduleheadingText;
	if(responseType == "1") {
		moduleheadingText = "Form failed to send";
	} else {
		moduleheadingText = "Form sent successfully";
	}
	var modulebodyText = response.substr(2,response.length);
	
	$jq("body").append("<div id='dark-box'></div>");
	$jq("body").append("<div id='result-message'></div>");
	$jq("#result-message").append("<div class='module_heading_one'>"+ moduleheadingText +"</div>");
	$jq("#result-message").append("<div class='module_body_one'>" + modulebodyText + "<div id='ok_button_container' class='align-right'><input type='button' id='ok_button' name='ok_button' value='OK' class='submit_button' /></div></div>");

	$jq("#ok_button").click(function() { $jq("#dark-box").remove(); $jq("#result-message").empty().remove(); } );
}

$jq(document).ready(function() {
	 
    var options = {     
        beforeSubmit: displayLoadingMessage,  			
        success: standardSubmitResponse,  			
		complete: destroyLoadingMessage 
    }; 
	
	$.extend($.validator.messages, {  
	  required: "",  
	  email: "",
	  minlength: "",
	  digits: ""  
	});  
	
	/* Add unobtrusive validation to each form.  To add a new form add the new form id to the list. */
	$jq("#feedback, #help, #amend_account, #query_invoice, #query_payment, #remittance, #contact").validate({
		submitHandler: function(form) {
	   		$jq(form).ajaxSubmit(options);
			$jq("#error_div").hide();
			$jq(form).resetForm();
		},
		invalidHandler: function(form, validator) {
	      var errors = validator.numberOfInvalids();
	      if (errors) {
		  	var message = 'Your information could not be processed. Please correct the highlighted fields:';
	        $jq("#error_div").html(message);
	        $jq("#error_div").show();
	      } else {
	        $jq("#error_div").hide();
	      }
	    },
		onfocusout: false,
		onkeyup: false,
		onclick: false,
		focusInvalid: false,
		rules: {
		    contact_email: {
		      	required: true,
		      	email: true
		    },
			telephone: {
				required: true,
				minlength: 10, 
				digits: true
			}
  		},
		errorElement: "",
		highlight: function(element, errorClass) {
		    $jq(element).addClass("error_textfield");
		    $jq(element.form).find("label[for=" + element.id + "]").addClass("error_label");
		},
		unhighlight: function(element, errorClass) {
		    $jq(element).removeClass("error_textfield");
		    $jq(element.form).find("label[for=" + element.id + "]").removeClass("error_label");
		}
	});
	   
}); 