
/**
 * Promotion Competition Entry form.
 */
  var g_dataString = "1234";
  var g_submitting = false;
	var contactForm;
	jQuery(document).ready(function() {
		contactForm = jQuery("#contact_form");

	  	jQuery("#formState02").hide();
	    jQuery("#formState03").hide();
        jQuery("#formState04").hide();
	    jQuery("#formNavItem01 span").hide();
	    jQuery("#formNavItem02 span").hide();
	    jQuery("#formNavItem03 span").hide();
		 jQuery(".error").hide();
		
		
		NavButtons_Init();
		
		Step1_Init();
		
		ShowStep(1);
	});
	
	/** 
	 * Set the event handlers for the step buttons
	 */
	function NavButtons_Init() {
		var jqDataID = "stepTo";
		
		contactForm.find("#formState01 #nextBtn").data(jqDataID, 2);
		contactForm.find("#formState02 #backBtn01").data(jqDataID, 1);
		contactForm.find("#formState02 #submitBtn").data(jqDataID, 3);
		
		// Click event for the buttons
		
		contactForm.find(".button").click(function() {
		    jQuery(".error").hide();
			var button = jQuery(this);
			var stepTo = button.data(jqDataID);
            if(!g_submitting){
			    ShowStep(stepTo);
			}
		});
	}
	
	
	/**
	 * Initialize Step 1. 
	 * Hides other steps.
	 */
	function Step1_Init() {
		
	}

	
	/**
	 * Shows a step
	 * Looks for #formState<number>
	 * @param {Int} number: Step number to show
	 */
	function ShowStep(number) {

		var stepID = "#formState0" + number;
		var navStepID = "#formNavItem0" + number + " span";
		
		var divStep = jQuery(stepID);
		var navStep = jQuery(navStepID);
		
		var hideSteps = jQuery(".step.activeStep");
		var hideNavSteps = jQuery(".formNavItem span").not(navStepID);
		
		var proceed = true;
		
		if (number == 2) {
			var packChoice = jQuery('input[@type=radio][@checked]').val();
      if(!packChoice){
        proceed = false;
      }
		}
		
		if (number == 3) {
			//Check valid form
			proceed = ValidateForm();
			
			//Submit & Check response.
			if (proceed) {
				proceed = false;
				SubmitForm(g_dataString);
			}
		}
    
		if (proceed) {
			hideSteps.removeClass("activeStep").fadeOut(500, function(){
				divStep.fadeIn();
			});
			hideNavSteps.fadeOut(500);
			
			divStep.addClass("activeStep");
			navStep.fadeIn();
		}
	}

	
	/**
	 * Validates the form
	 */
	function ValidateForm() {
		var result = true;
		
		jQuery(".error").hide();
		
  var firstName = jQuery("input#firstName").val();
  if (firstName == "") {
    jQuery("label#firstNameError").show();
    jQuery("input#firstName").focus();
    return false;
  }
  var lastName = jQuery("input#lastName").val();
  if (lastName == "") {
    jQuery("label#lastNameError").show();
    jQuery("input#lastName").focus();
    return false;
  }
  
  var postAddress = jQuery("input#postAddress").val();
  if (postAddress == "") {
    jQuery("label#postAddressError").show();
    jQuery("input#postAddress").focus();
    return false;
  }
  
  var suburb = jQuery("input#suburb").val();
  if (suburb == "") {
    jQuery("label#suburbError").show();
    jQuery("input#suburb").focus();
    return false;
  }

  var postCode = jQuery("input#postCode").val();
  if (postCode == "") {
    jQuery("label#postCodeError").show();
    jQuery("input#postCode").focus();
    return false;
  }
  else if (!IsNumeric(postCode) || postCode.length != 4) {
    jQuery("label#postCodeFormatError").show();
    jQuery("input#postCode").focus();
    return false;
  }
  
  
  var dPhone = jQuery("input#dPhone").val().replace(/[\s\-\(\)]/g, "");
  if (dPhone == "") {
    jQuery("label#dPhoneError").show();
    jQuery("input#dPhone").focus();
    return false;
  }
  else if (!IsNumeric(dPhone) || dPhone.length < 9 || dPhone.length > 13) {
    jQuery("label#dPhoneFormatError").show();
    jQuery("input#dPhone").focus();
    return false;
  }
  
  var email = jQuery("input#email").val();
  if (email == "") {
    jQuery("label#emailError").show();
    jQuery("input#email").focus();
    return false;
  }
  else if (!IsValidEmail(email)) {
    jQuery("label#emailFormatError").show();
    jQuery("input#email").focus();
    return false;
  }

  var TnC = document.getElementById("termsAgree").checked;
  if (!TnC) {
    jQuery("label#TnCError").show();
    jQuery("input#termsAgree").focus();
    return false;
  }

  var persilOpt = document.getElementById("chkOmoOpt").checked;
  var uniOpt = document.getElementById("chkUniOpt").checked;
  var packChoice = jQuery("input[@type=radio][@checked]").val();
		
  g_dataString = 'first_name=' + firstName
                 + '&last_name=' + lastName 
                 + '&postal_address=' + postAddress 
                 + '&suburb=' + suburb 
                 + '&post_code=' + postCode 
                 + '&daytime_phone=' + dPhone 
                 + '&email=' + email 
                 + '&packChoice=' + packChoice 
                 + '&persil_optin=' + persilOpt
                 + '&unilever_optin=' + uniOpt;
    
		return result;
	}
  
  
	/** 
	 * Submits the Form
	 */
	function SubmitForm(dataString) {
	g_submitting = true;
	
    var response = jQuery.ajax({
    beforeSend: function (xhr) {xhr.setRequestHeader("Content-Length", g_dataString.length);},
    type: "POST",
    url: "../Persil-Services/tractService.asmx/Persil_MulitChoicePromo_09",
    data: dataString,
    dataType: "xml",
    async: false,
    error: function(res, textStatus, errorThrown) {
			jQuery("label#genericError").show();
    }
  });
  
   var resXmlDoc = response.responseXML.documentElement;
   
    if (jQuery(resXmlDoc).find("serviceResponse").text() == "success") {
			jQuery("#formState02").hide();
			jQuery("#formState03").fadeIn(500);
			jQuery("#formNavItem02 span").hide();
			jQuery("#formNavItem03 span").fadeIn("fast");
			var item = document.getElementById("formState03");
			item.style[1] = "";
        }
		else {
			jQuery("label#genericError").show();
		}
	g_submitting = false;
}
	
function IsNumeric(sText) {
	var ValidChars = "0123456789";
	var IsNumber=true;
	var Char;

	for (i = 0; i < sText.length && IsNumber == true; i++) { 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) {
			IsNumber = false;
		}
	}
	return IsNumber;
}
function IsValidEmail(email) {
	var reg = /^([A-Z0-9_\-\.])+\@([A-Z0-9_\-\.])+\.([A-Z]{2,4})$/i;
	return reg.test(email);
}
