
/*
  ********************************************
  *                                          *
  *          IMPORTANT!!!!!!!!!!!!!!!        *
  *                                          *
  ********************************************

If you add/remove/modify ANY fields on this form, make sure you test ALL
values for the subject line dropdown - This validator can mark hidden fields
as required and prevent the form from submitting

*/
var hasClicked = false;
var validator;
jQuery.validator.addMethod("customDate", function(val, el) {
	return val == '' ||
		/^[0-3][0-9]\/[0-1][0-9]\/[1-2][0-9][0-9][0-9]/.test(val);
}, "(Please add a valid date)");
$(document).ready(function(){
	validator = $("#contactUs").validate({
		errorPlacement: function(error, el) {
			error.appendTo( el.parents("div").children("span") );
		},
		rules: {
			firstName: {
				required: true
			},
			lastName: {
				required:true
			},
			email: { //--------------TP  
				required: {
					depends: function(el) {
						return ( $("#subject")[0].value != 'Policy Document Request' || $('#contactMethod').val()=='Email' );
					}
				}
			},
			"phone.local": { //--------------TP  
				required: {
					depends: function(el) {
						return ($("#subject")[0].value != 'General enquiries' && $("#subject")[0].value != 'Change of address' && $("#subject")[0].value != 'Policy Document Request' );
					}
				}
			},
			"birthDate.datetime" : {
				customDate: true
			},
			oldAddressLine1: {
				required: {
					depends: function(el) {
						return ($("#subject").get(0).value == 'Change of address');
					}
				}
			},
			oldCity: {
				required: {
					depends: function(el) {
						return ($("#subject").get(0).value == 'Change of address');
					}
				}
			},
			oldPostcode: {
				required: {
					depends: function(el) {
						return ($("#subject").get(0).value == 'Change of address');
					}
				}
			},
			newAddressLine1: {
				required: {
					depends: function(el) {
						return ($("#subject").get(0).value == 'Change of address');
					}
				}
			},
			newCity: {
				required: {
					depends: function(el) {
						return ($("#subject").get(0).value == 'Change of address');
					}
				}
			},
			newPostcode: {
				required: {
					depends: function(el) {
						return ($("#subject").get(0).value == 'Change of address');
					}
				}
			},
			"moveDate.datetime": {
				customDate: true
			},
			policyNumber: {
				required: {
					depends: function(el) {
						return ( ($("#subject").get(0).value != "General enquiries") && ($("#subject").get(0).value != "Claim enquiries") );
					}
				}
			},
			claimNumber: {
				required: {
					depends: function(el) {
						return($("#subject").get(0).value == "Claim enquiries");
					}
				}
			},
			"cancellationDate.datetime": {
				customDate: true,
				required: {
					depends: function(el) {
						return($("#subject").get(0).value == "Cancellation of insurance");
					}
				}
			},
			message: {
				required: {
					depends: function(el) {
						return $("#subject").get(0).value != 'Change of address';
					}
				}
			},
			policyOtherDetails: { //--------------TP  
				required: {
					depends: function(el) {
						return $("#policyOther").is(':checked');
					}
				}
			},
			postalAddress: {  //--------------TP  
				required: {
					depends: function(el) {
						return ( $("#subject")[0].value == 'Policy Document Request' && $('#contactMethod').val()=='Post' );
					}
				}
			},
			contctMethod: {
				required: false
			}
		},
		messages: {
			subject: {
				required: "(Please choose a subject)"
			},
			firstName: {
				required: "(Please add your first name)"
			},
			lastName: {
				required: "(Please add your last name)"
			},
			email: {
				required: "(Please add your email address)",
				email: "(Your email address must be in the format of name@domain.com)"
			},
			"phone.local": {
				required: "(Please add a phone number)"
			},
			"birthDate.datetime": {
				customDate: "(Please add a valid date)"
			},
			oldAddressLine1: {
				required: "(Please add your old address)"
			},
			oldCity: {
				required: "(Please add your old town/city)"
			},
			oldPostcode: {
				required: "(Please add your old postcode)"
			},
			newAddressLine1: {
				required: "(Please add your new address)"
			},
			newCity: {
				required: "(Please add your new town/city)"
			},
			newPostcode: {
				required: "(Please add your new post code)"
			},
			policyNumber: {
				required: "(Please add your policy number)"
			},
			claimNumber: {
				required: "(Please add your claim number)"
			},
			"cancellationDate.datetime": {
				required: "(Please add your cancellation date)"
			},
			message: {
				required: "(Please add a message)"
			}
		},
		errorContainer: "#messageBox"
	});
	$("#subject").change(subjectChanged);
	subjectChanged();
	$(".date input").focus(function(e) {
		$(this).addClass("active");
	}).blur(function(e) {
		if($(this)[0].value == '') {
			$(this).removeClass("active");
		}
	});
	$("#policyCar").change(function(e) {
		$(this).get(0).checked ? $("#rWhereVeh").show() : $("#rWhereVeh").hide();
	});
	$("#aaInsuranceCustomer").change(function(e) {
		$(this).get(0).checked ? $("#rPolicyNum").show() : $("#rPolicyNum").hide();
	});
});

function subjectChanged() {
	var elem = $("#subject")[0];
	var val = elem.value;
	switch (val){
		case "General enquiries":
		case "Quote enquiries":
			$("#fsPolicies").hide();
			$("#rWhereVeh").hide();
			$("#rDOB").hide();
			$("#fsOld").hide();
			$("#fsNew").hide();
			$("#rMoveDate").hide();
			$("#rIsCustomer").show();
			$("#rCancelDate").hide();
			$("#rClaimNum").hide()
			$("#fsInsurance").hide();
			$("#rPostalAddress").show();  //--------------TP  
			$("#rContactMethod").hide(); //--------------TP  
			$("#rEmail").show(); //--------------TP  
			$("#aaInsuranceCustomer").get(0).checked ? $("#rPolicyNum").show() : $("#rPolicyNum").hide();
			break;
		case "Claim enquiries":
			$("#fsPolicies").hide();
			$("#rWhereVeh").hide();
			$("#rDOB").hide();
			$("#fsOld").hide();
			$("#fsNew").hide();
			$("#rMoveDate").hide();
			$("#rIsCustomer").hide();
			$("#rClaimNum").show()
			$("#rPolicyNum").hide();
			$("#fsInsurance").hide();
			$("#rCancelDate").hide();
			$("#rPostalAddress").hide(); //--------------TP  
			$("#rContactMethod").hide(); //--------------TP  
			$("#rEmail").show(); //--------------TP  
			break;
		case "Change of address":
			$("#fsPolicies").show();
			$("#policyCar").get(0).checked ? $("#rWhereVeh").show() : $("#rWhereVeh").hide();
			$("#rDOB").show();
			$("#fsOld").show();
			$("#fsNew").show();
			$("#rMoveDate").show();
			$("#rIsCustomer").hide();
			$("#rClaimNum").hide()
			$("#rPolicyNum").show();
			$("#fsInsurance").hide();
			$("#rCancelDate").hide();
			$("#fsPolicies #policyHeader1").show();//--------------TP  
			$("#fsPolicies #policyHeader2").hide();//--------------TP  
			$("#rPostalAddress").hide(); //--------------TP  
			$("#rContactMethod").hide(); //--------------TP  
			$("#rEmail").show(); //--------------TP  
			break;
		case "Confirmation of insurance":
			$("#fsPolicies").hide();
			$("#rWhereVeh").hide();
			$("#rDOB").hide();
			$("#fsOld").hide();
			$("#fsNew").hide();
			$("#rMoveDate").hide();
			$("#rIsCustomer").hide();
			$("#rClaimNum").hide()
			$("#rPolicyNum").show();
			$("#fsInsurance").show();
			$("#infoCancel").hide();
			$("#infoConfirm").show();
			$("#rCancelDate").hide();
			$("#lbPolicyNumber").html("Policy Number");
			$("#rPostalAddress").show(); //--------------TP  
			$("#rContactMethod").hide(); //--------------TP  
			$("#rEmail").show(); //--------------TP  
			break;
		case "Cancellation of insurance":
			$("#fsPolicies").hide();
			$("#rWhereVeh").hide();
			$("#rDOB").hide();
			$("#fsOld").hide();
			$("#fsNew").hide();
			$("#rMoveDate").hide();
			$("#rIsCustomer").hide();
			$("#rClaimNum").hide()
			$("#rPolicyNum").show();
			$("#fsInsurance").show();
			$("#infoCancel").show();
			$("#infoConfirm").hide();
			$("#rCancelDate").show();
			$("#rPostalAddress").show();
			$("#lbPolicyNumber").html("Policy Number");
			$("#rContactMethod").hide(); //--------------TP  
			$("#rEmail").show(); //--------------TP  
			break;
		case "Policy Document Request":
			$("#fsPolicies").show();
			$("#policyCar").get(0).checked ? $("#rWhereVeh").show() : $("#rWhereVeh").hide();
			$("#rDOB").hide();
			$("#fsOld").hide();
			$("#fsNew").hide();
			$("#rMoveDate").hide();
			$("#rIsCustomer").hide();
			$("#rClaimNum").hide()
			$("#rPolicyNum").show();
			$("#fsInsurance").hide();
			$("#rCancelDate").hide();
			$("#rPostalAddress").hide();
			$("#fsPolicies #policyHeader1").hide();//--------------TP  
			$("#fsPolicies #policyHeader2").show();//--------------TP  
			$("#rContactMethod").show(); //--------------TP  
			$("#rEmail").hide(); //--------------TP  
			break;
		default:
			$("#fsPolicies").hide();
			$("#rWhereVeh").hide();
			$("#rDOB").hide();
			$("#fsOld").hide();
			$("#fsNew").hide();
			$("#rMoveDate").hide();
			$("#rIsCustomer").hide();
			$("#rClaimNum").hide()
			$("#rPolicyNum").show();
			$("#fsInsurance").hide();
			$("#rCancelDate").hide();
			$("#rPostalAddress").hide();
			$("#lbPolicyNumber").html("Policy Number");
			$("#rContactMethod").hide(); //--------------TP  
			$("#rEmail").show(); //--------------TP  
			break;
	}
	if($("#messageBox").get(0).style.display == "block") $("#contactUs").valid();

/*--------------TP Begin -------------*/

	$('#policyOther').click(function(){
         if ($(this).is(':checked')){
         	$('#rPolicyOtherDetails').show();
         }	
         else
         {
         	$('#rPolicyOtherDetails').hide();
         }
    });
 
	$('#contactMethod').change(function(){
			$('#rEmail')[($(this).val()=='Email')?'show':'hide']();
			$('#rPostalAddress')[($(this).val()=='Email')?'hide':'show']();
	});
/*--------------TP End -------------*/  


}



