// JavaScript for Customer Registration Form

$(function() {
		
	//Date fields
	//$('.date-input .sublabel').labelOver('date-part');
	//$('.date-input input').fluidTyping();
	
	
	//// Validate ////
	$("form#RegCustomer").validate({
		rules: {
			'Email': { required: true, email: true },
			'RawPassword': { required: true, minLength: 5, maxLength: 12 },
			'PersonalInfoPtr.First_Name': "required",
			'PersonalInfoPtr.Last_Name': "required",
			//'Day[0].Day': { digits: true, realDate: true },
			//'Month[0].Month': { digits: true, realDate: true },
			//'Year[0].Year': { minLength: 4, digits: true, realDate: true },
			'BillingAddressPtr.Address1': "required",
			'BillingAddressPtr.City': "required",
			'Work_Phone': "digits",
			'Home_Phone': "digits",
			//'Gender': "required",
			'ShippingAddressPtr.Address1': { 
				required: function(element) { 
					return !($("#deliveryDifferent:checked").val()); 
				} 
			},
			'ShippingAddressPtr.City': { 
				required: function(element) { 
					return !($("#deliveryDifferent:checked").val()); 
				} 
			}
		},
		messages: {
			'Email': { required: "Please enter your email address." },
			'RawPassword': {
				required: "Please enter your password.",
				minLength: "Password should be between 5 - 12 characters length.",
				maxLength: "Password should be between 5 - 12 characters length."
			},
			'PersonalInfoPtr.First_Name': "Please enter your first name",
			'PersonalInfoPtr.Last_Name': "Please enter your last name",
			/*'Day[0].Day': {
				digits: "Please enter the Day in the format <b>dd</b> only using digits",
				realDate: " "
			},
			'Month[0].Month': {
				digits: "Please enter the Month in the format <b>mm</b> only using digits",
				realDate: " "
			},
			'Year[0].Year': {
				minLength: "Please enter the Year in the format <b>yyyy</b> only using digits", 
				digits: "Please enter the Year in the format <b>yyyy</b> only using digits"
			},*/
			'BillingAddressPtr.Address1': "Please enter your address",
			'BillingAddressPtr.City': "Please enter your suburb",
			//'Gender': "Please enter your gender",
			'ShippingAddressPtr.Address1': "Please enter delivery address",
			'ShippingAddressPtr.City': "Please enter delivery suburb"
		},
		errorPlacement: function(error, element) {
			if( element.parent().hasClass('after') ) {
				error.appendTo( element.parent().parent("li") );
			} else {
				error.appendTo( element.parent("li") );
			}
		}
	});
	
	$("#MailingState_Name, #MailingCountry_Name").css("width","auto");
	//Hide Country/State Combo
	//For IE users
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ 
        var ieversion=new Number(RegExp.$1) 
	    $("#MailingProvince_Code").parents("li").addClass("screenreader"); 
	    $("#ShippingProvince_Code").parents("li").addClass("screenreader");     
	} else {
        $("#MailingState_Name").parents("li").addClass("screenreader"); 
        $("#MailingCountry_Name").parents("li").addClass("screenreader"); 
        $("#ShippingState_Name").parents("li").addClass("screenreader"); 
        $("#ShippingCountry_Name").parents("li").addClass("screenreader"); 
    }
	
	//Get Selected Country State
	var comboSelectedText = $("#MailingProvince_Code option:selected").text();
	var savedCountry = comboSelectedText.replace(/\s* \- .*/,"");
	var savedState = comboSelectedText.replace(/.*\- /,"");
	var comboSelectedText2 = $("#ShippingProvince_Code option:selected").text();
	var savedCountry2 = comboSelectedText2.replace(/\s* \- .*/,"");
	var savedState2 = comboSelectedText2.replace(/.*\- /,"");
	
	// Generate Mailing Country & State
	var lastCountry;
	$("#MailingState_Name, #MailingCountry_Name").parents("li").css("display","block");
	$("#MailingProvince_Code option").each(function (i) {
		
		var optionText = $(this).text();
		var country = optionText.replace(/ \- .*/,"");
		var state = optionText.replace(/.*\- /,"");
		var countrySelected = "";
		if( country == savedCountry ) countrySelected = " selected='selected'";
		var stateSelected = "";
		if( state == savedState ) stateSelected = " selected='selected'";
		if( country == state ) state = "N/A";
		
		//Generate Country Dropdown
		if( country != lastCountry ) {
			$("#MailingCountry_Name").append("<option"+countrySelected+">"+country+"</option>");
			lastCountry = country;
		}
		
		//Generate State Dropdown
		if( country == savedCountry ) {
			$("#MailingState_Name").append("<option"+stateSelected+">"+state+"</option>");
		}		
	});

	// Generate Shipping Country & State
	var lastCountry2;
	$("#ShippingState_Name, #ShippingCountry_Name").parents("li").css("display","block");
	$("#ShippingProvince_Code option").each(function (i) {
		
		var optionText2 = $(this).text();
		var country2 = optionText2.replace(/ \- .*/,"");
		var state2 = optionText2.replace(/.*\- /,"");
		var countrySelected2 = "";
		if( country2 == savedCountry2 ) countrySelected2 = " selected='selected'";
		var stateSelected2 = "";
		if( state2 == savedState2 ) stateSelected2 = " selected='selected'";
		if( country2 == state2 ) state2 = "N/A";
		
		//Generate Country Dropdown
		if( country2 != lastCountry2 ) {
			$("#ShippingCountry_Name").append("<option"+countrySelected2+">"+country2+"</option>");
			lastCountry2 = country2;
		}
		
		//Generate State Dropdown
		if( country2 == savedCountry2 ) {
			$("#ShippingState_Name").append("<option"+stateSelected2+">"+state2+"</option>");
		}
		
	});
	
	//Change Mailing Country/State Combo when State changes
	$("#MailingState_Name").change(function () {
		var newState = $(this).find("option:selected").text();
		var selectedCountry = $("#MailingCountry_Name option:selected").text();
		if( newState == "N/A" ) {
			$("#MailingProvince_Code option:selected").removeAttr("selected");
			$("#MailingProvince_Code option:contains('"+ selectedCountry +"'):not(:contains(' - '))").attr("selected","selected");
		} else {
			$("#MailingProvince_Code option:selected").removeAttr("selected");
			$("#MailingProvince_Code option:contains('"+ selectedCountry +" - "+ newState +"')").attr("selected","selected");
		}
	});
	
    //Change Shipping Country/State Combo when State changes
	$("#ShippingState_Name").change(function () {
		var newState2 = $(this).find("option:selected").text();
		var selectedCountry2 = $("#ShippingCountry_Name option:selected").text();
		if( newState2 == "N/A" ) {
			$("#ShippingProvince_Code option:selected").removeAttr("selected");
			$("#ShippingProvince_Code option:contains('"+ selectedCountry2 +"'):not(:contains(' - '))").attr("selected","selected");
		} else {
			$("#ShippingProvince_Code option:selected").removeAttr("selected");
			$("#ShippingProvince_Code option:contains('"+ selectedCountry2 +" - "+ newState2 +"')").attr("selected","selected");
		}
	});
	
	//Change Mailing Country/State Combo when Country changes
	$("#MailingCountry_Name").change(function () {
				$("#MailingState_Name").empty();
				var newCountry = $(this).find("option:selected").text();

		    $("#MailingProvince_Code option:contains('"+ newCountry +"')").each(function (i) {
			    var optionText = $(this).text();
			    var state = optionText.replace(/.*\- /,"");
			    var stateSelected = "";
			    if( state == savedState ) stateSelected = " selected='selected'" ;
			    if( newCountry == state ) state = "N/A";				
			        $("#MailingState_Name").append("<option"+stateSelected+">"+state+"</option>");
		    });    	 
		
		//Update Country/State Combo
		if( $("#MailingState_Name option:first").text() == "N/A" ) {
			$("#MailingProvince_Code option:selected").removeAttr("selected");
			$("#MailingProvince_Code option:contains('"+ newCountry +"'):not(:contains(' - '))").attr("selected","selected");
		} else {
			$("#MailingProvince_Code option:selected").removeAttr("selected");
			$("#MailingProvince_Code option:contains('"+ newCountry +" - "+ $("#MailingState_Name option:first").text() +"')").attr("selected","selected");
		}
	});
	
	$("#ShippingCountry_Name").change(function () {
		var newCountry2 = $(this).find("option:selected").text();
		$("#ShippingState_Name").empty();
		$("#ShippingProvince_Code option:contains('"+ newCountry2 +"')").each(function (i) {
			var optionText2 = $(this).text();
			var state2 = optionText2.replace(/.*\- /,"");
			var stateSelected2 = "";
			if( state2 == savedState2 ) stateSelected2 = " selected='selected'";
			if( newCountry2 == state2 ) state2 = "N/A";
			//Generate State Dropdown
			$("#ShippingState_Name").append("<option"+stateSelected2+">"+state2+"</option>");
		});
		
		//Update Country/State Combo
		if( $("#ShippingState_Name option:first").text() == "N/A" ) {
			$("#ShippingProvince_Code option:selected").removeAttr("selected");
			$("#ShippingProvince_Code option:contains('"+ newCountry2 +"'):not(:contains(' - '))").attr("selected","selected");
		} else {
			$("#ShippingProvince_Code option:selected").removeAttr("selected");
			$("#ShippingProvince_Code option:contains('"+ newCountry2 +" - "+ $("#ShippingState_Name option:first").text() +"')").attr("selected","selected");
		}
	});
	
	function checkDelivery( checkbox ) {
		if( checkbox.is(":checked") ) {
			$(".deliveryHide").hide();
		} else {
			$(".deliveryHide").show();
		}
	}
	
	//Hide Delivery Address with checkbox
	$("#deliveryDifferent").click(function () {
		checkDelivery( $(this) );
	});
	
	checkDelivery( $("#deliveryDifferent") );
	

});


