$(document).ready(function() {
	$("#emailaddress").blur(function() {
		$("#emailaddressemptyerror").css("display", "none");
		$("#emailaddressinvaliderror").css("display", "none");
		// Regex from jQuery validation - email
		emailRegex = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/;
		if ($(this).val() == "") {
			$("#emailaddressemptyerror").css("display", "block");
		}
		else {
			if (!emailRegex.test($("#emailaddress").val())) {
				$("#emailaddressinvaliderror").css("display", "block");
			}
		}
	});
	
	$("#questionsubject").change(function() {
		$("#questionsubjectspecific option").remove();
		var selectedOption = parseInt($(this).val());
		if (selectedOption == 0) {
			// General question selected
			for (option in generalQuestionOptions) {
				if (generalQuestionOptions[option] != "") {
					$("#questionsubjectspecific").append("<option value=\"" + option + "\">" + generalQuestionOptions[option] + "</option>");
				}
			}
		} else if (selectedOption == 1) {
			// Privacy and security selected
			for (option in privacyAndSecurityOptions) {
				if (privacyAndSecurityOptions[option] != "") {
					$("#questionsubjectspecific").append("<option value=\"" + option + "\">" + privacyAndSecurityOptions[option] + "</option>");
				}
			}
		} else if (selectedOption == 2) {
			// Opening an account selected
			for (option in openingAnAccountOptions) {
				if (openingAnAccountOptions[option] != "") {
					$("#questionsubjectspecific").append("<option value=\"" + option + "\">" + openingAnAccountOptions[option] + "</option>");
				}
			}
		}
		$("#questionsubjectspecific").css("width", "auto");
	});
	
	$("#contactusform").submit(function() {
		var formError = false;
		// Validate first name
		$("#firstnameemptyerror").css("display", "none");
		$("#firstnamelengtherror").css("display", "none");
		if ($("#firstname").val() == "") {
			formError = true;
			$("#firstnameemptyerror").css("display", "block");
		}
		else if($("#firstname").val().length > 60) {
			formError = true;
			$("#firstnamelengtherror").css("display", "block");
		}
		// Validate last name	
		$("#lastnameemptyerror").css("display", "none");
		$("#lastnamelengtherror").css("display", "none");
		if ($("#lastname").val() == "") {
			formError = true;
			$("#lastnameemptyerror").css("display", "block");
		}
		else if($("#lastname").val().length > 60) {
			formError = true;
			$("#lastnamelengtherror").css("display", "block");
		}
		// Validate email address
		$("#emailaddressemptyerror").css("display", "none");
		$("#emailaddressinvaliderror").css("display", "none");
		emailRegex = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/;
		if ($("#emailaddress").val() == "") {
			formError = true;
			$("#emailaddressemptyerror").css("display", "block");
		}
		else if (!emailRegex.test($("#emailaddress").val())) {
			formError = true;
			$("#emailaddressinvaliderror").css("display", "block");
		}
		// Validate subject
		var selectedOption = parseInt($("#questionsubject").val());
		switch(selectedOption) {
			case 0:
				// General question selected
				$("#questionsubjecterror").css("display", "none");
				break;
			case 1:
				// Privacy and security selected
				$("#questionsubjecterror").css("display", "none");
				break;
			case 2:
				// Opening an account selected
				$("#questionsubjecterror").css("display", "none");
				break;
			default:
				// No option selected
				formError = true;
				$("#questionsubjecterror").css("display", "block");
				break;
		}
		// Validate message
		$("#messageerror").css("display", "none");
		if ($("#message").val() == "") {
			formError = true;
			$("#messageerror").css("display", "block");
		}
		// Get response from servlet
		if (!formError) {
			// Determine locale from URL
			var current_url = location.href;
			var locale;
			if (current_url.indexOf("/fr/") != -1) {
				locale = "fr";
			} else {
				locale = "en";
			}
			$.post("/ContactUsEmailServlet",
				{
					firstName: $("#firstname").val(), 
					lastName: $("#lastname").val(),
					email: $("#emailaddress").val(),
					message: $("#message").val(),
					questionSubject: $("#questionsubject option:selected").text(),
					questionSubjectSpecific: $("#questionsubjectspecific option:selected").text(),
					locale: locale
				},
				function(data) {
					$("#contactusform").hide();
					if (data == "1") {
						$("#emailsentmessage").show();
					} else {
						$("#emailnotsentmessage").show();
					}
				}
			);
		}
		// End
		return false;
	});
});