//###   Add custom method - this requires the value to be the same as the first parameter   ###
$.validator.methods.notequal = function(value, element, param) {
	return value != param;
};

$(document).ready(function() {

	//###   CONTACT US FORM   ###
	$("#contact-form").validate({
		submitHandler: function(form) {
			//###   Disable the Submit button   ###
			$("#contact-form button").fadeTo("slow", 0.20).attr("disabled","disabled");

			SubmitContactUs();
			return false;
//form.submit();
		}
	}); //###   End of Contact Us Form code

	//###   SEARCHING   ###
	$("#sitesearch").validate();

	//###   NEWSLETTER   ###
	$("#newsletter-form").validate({
		submitHandler: function(form) {
			//###   Disable the Submit button   ###
			$("#newsletter-form button").fadeTo("slow", 0.20).attr("disabled","disabled");

			SubmitNewsletter();
			return false;
		}
	});

	//###   LOGIN   ###
	$("#login-form").validate({
		submitHandler: function(form) {
			//###   Disable the Submit button   ###
			$("#login-form button").fadeTo("slow", 0.20).attr("disabled","disabled");

			SubmitLogin();
			return false;
		}
	});

	//###   REGISTRATION   ###
	$("#register-form").validate({
		submitHandler: function(form) {
			//###   Disable the Submit button   ###
			$("#register-form button").fadeTo("slow", 0.20).attr("disabled","disabled");

			//###   Due to a bug in Chrome (maybe others) whereby if a suggestion is selected (from a dropdown built into browser), the change event doesn't fire - so copy fields again here to be sure   ###
			$("#register-form #reg-password-confirm").val( $("#register-form #reg-password").val() );
			$("#register-form #reg-email").val( $("#register-form #reg-username").val() );

			SubmitRegistration();
			return false;
		}
	});

	//###   RESET PASSWORD   ###
	$("#forgot-password-form").validate({
		submitHandler: function(form) {
			//###   Disable the Submit button   ###
			$("#forgot-password-form button").fadeTo("slow", 0.20).attr("disabled","disabled");

			SubmitPasswordReset();
			return false;
		}
	});

	//###   QUICK-CHECKOUT   ###
	$("#quick-checkout-form").validate({
		submitHandler: function(form) {
			//###   Disable the Submit button   ###
			$("#quick-checkout-form button").fadeTo("slow", 0.20).attr("disabled","disabled");

			SubmitQuickCheckout();
			return false;
		}
	});

	//###   USER DETAILS   ###
	$("#user-details-form").validate({
		submitHandler: function(form) {
			//###   Disable the Submit button   ###
			$("#user-details-form button").fadeTo("slow", 0.20).attr("disabled","disabled");
			if(!form.submit()){document.getEleemntById('form-submit').click();}
		}
	});

	//###   USER DETAILS - Delivery Address Toggle   ###
	if ( $("#user-details-form #delivery-same-address").attr("checked") ) {
		$("#user-details-form #delivery-address1").attr("disabled","disabled");
		$("#user-details-form #delivery-town").attr("disabled","disabled");
		$("#user-details-form #delivery-county").attr("disabled","disabled");
		$("#user-details-form #delivery-postcode").attr("disabled","disabled");
		$("#user-details-form #delivery-country").attr("disabled","disabled");
	}
	$("#user-details-form #delivery-same-address").click(function() {
		if ( $("#user-details-form #delivery-same-address").attr("checked") ) {
			$("#user-details-form #delivery-address1").attr("disabled","disabled");
			$("#user-details-form #delivery-town").attr("disabled","disabled");
			$("#user-details-form #delivery-county").attr("disabled","disabled");
			$("#user-details-form #delivery-postcode").attr("disabled","disabled");
			$("#user-details-form #delivery-country").attr("disabled","disabled");

		} else {
			$("#user-details-form #delivery-address1").removeAttr("disabled");
			$("#user-details-form #delivery-town").removeAttr("disabled");
			$("#user-details-form #delivery-county").removeAttr("disabled");
			$("#user-details-form #delivery-postcode").removeAttr("disabled");
			$("#user-details-form #delivery-country").removeAttr("disabled");
		}
	});

}); //###   End of DOM Ready   ###


//###   CONTACT FORM SUBMISSION  ###
function SubmitContactUs() {
	//###   Send form via AJAX   ###
	$.ajax({
		type: "POST",
		data: $("#contact-form").serialize() + "&action=" + $("#contact-form").attr("action"),
		dataType: "html",
		success: function (html) {
			//alert(html.substr(600));

			if ( html.search(/error/i) >= 0 ) {
				if (html.search(/captcha/i) >= 0) {
					$("#contact-form #captcha").addClass('error').after('<label class="error" for="captcha" generated="true">' + $("#contact-form #captcha").attr('title') + '</label>');
				}
				$("#contact-form button").fadeTo("slow", 1).removeAttr("disabled");

			} else {
				$("#contact-form").hide();
				$("#content .form-success").slideDown("slow");

				if ( $("#newsletter-signup").is(":checked") == true) {SubmitNewsletter("contact-form");}
				ClearForm("#contact-form");
			}
		},
		error: function (XMLHttpRequest, textStatus, errorThrown) {
			//alert(textStatus + errorThrown);
			$("#contact-form button").fadeTo("slow", 1).removeAttr("disabled");
		}
	});
} //###   End of SubmitContactUs function   ###


//###   NEWSLETTER SUBMISSION   ###
function SubmitNewsletter(formID) {

	if (formID == "contact-form") {
		//$('contact-form').submit(function() { return false; });
		$("#news-name").val( $("#fullname").val() );
		$("#news-email").val( $("#email").val() );
	}

	//###   Serialize form values to be submitted with POST
	if ( $("#newsletter-form").length > 0 ) {
		var str = $("#newsletter-form").serialize();

		//###   Grab form action
		var formAction = $("#newsletter-form").attr("action");
			
		//###   Add form action to end of serialized data
		var final = str + "&action=" + formAction;

		//###   Submit the form via ajax
		$.ajax({
			url: "/themes/site_themes/ncc/js/newsletter-proxy.php",
			type: "POST",
			data: final,
			success: function(html) {
				//alert(html);
				$("#newsletter-form").hide();
				$("#newsletter p").hide();
				$("#newsletter .form-success").slideDown("slow");

				//###   Set Session Variable   ###
				$.ajax({
					url: "/AjaxHandler/newsletter"
				});
				//ClearForm("#newsletter-form");
			}
		});
	}
} //###   End of SubmitNewsletter function   ###


//###   LOGIN FORM SUBMISSION  ###
function SubmitLogin() {
	//###   Send form via AJAX   ###
	$.ajax({
		type: "POST",
		data: $("#login-form").serialize() + "&action=" + $("#login-form").attr("action"),
		dataType: "html",
		success: function (html) {
			//###   Successfully received an html page from the server   ###
			if ( html.search(/error/i) >= 0 ) {
				if (html.search(/username you submitted was not found/i) >= 0) {
					$("#login-username").addClass('error');
					$("#login-username").after('<label class="error" for="login-username" generated="true">Username doesn\'t exist<br />Recheck or register an account</label>');

				} else if (responseText.search(/password/i) >= 0) {
					$("#login-password").addClass('error');
					$("#login-password").after('<label class="error" for="login-username" generated="true">You have entered an incorrect password</label>');

				} else if (responseText.search(/already logged in/i) >= 0) {
					$("#loginButn").after('<label class="error" for="login-username" generated="true">User already logged in!</label>');

				} else if (responseText.search(/account has not been activated yet/i) >= 0) {
					$("#loginButn").after('<label class="error" for="login-username" generated="true">Account has not been activated yet<br />Check your email and activate</label>');

				} else {
				}

				$("#login-form button").fadeTo("slow", 1).removeAttr("disabled");

			} else {
				//###   Successfully Logged in   ###
				$("#login-form").hide();
				$("#login-panel .form-success").slideDown("slow");
				setTimeout( '$("a.close-panel").trigger("click")', 4000);

				//###   Show/hide user nav links   ###
				$("#user-nav #login-toggle").addClass('hidden');
				$("#user-nav #register-toggle").addClass('hidden');
				$("#user-nav #logout-link").removeClass('hidden');
				$("#user-nav #account-link").removeClass('hidden');

				ClearForm("#login-form");
				if (window.location.href == "https://www.netcurtaincorner.co.uk/checkout/login") {
					setTimeout( 'window.location.href = "/checkout/information"', 4500);
				}
			}
		},
		error: function (XMLHttpRequest, textStatus, errorThrown) {
			//###   Error occurred, could be server, CMS or 404   ###
			//alert(textStatus + errorThrown);
			$("#login-form button").fadeTo("slow", 1).removeAttr("disabled");
		}
	});
} //###   End of SubmitLogin function   ###


//###   REGISTER FORM SUBMISSION   ###
function SubmitRegistration() {
	//###   Send form via AJAX   ###
	$.ajax({
		type: "POST",
		data: $("#register-form").serialize() + "&action=" + $("#register-form").attr("action"),
		dataType: "html",
		success: function (html) {
			//alert(html.substr(350));
			//###   Successfully received an html page from the server   ###
			if ( html.search(/error/i) >= 0 ) {
				if (html.search(/email you chose is not available/i) >= 0) {
					$("#reg-username").addClass('error').after('<label class="error" for="reg-username" generated="true">An account with this email already exists</label>');
					$("#reg-email").addClass('error');
				} else if (html.search(/name you chose is not available/i) >= 0) {
					$("#reg-username").addClass('error').after('<label class="error" for="reg-username" generated="true">An account with this email already exists</label>');
					$("#reg-email").addClass('error');

				} else if (html.search(/captcha/i) >= 0) {
					$("#captcha").addClass('error').after('<label class="error" for="captcha" generated="true">' + $("#captcha").attr('title') + '</label>')
				}

				$("#register-form button").fadeTo("slow", 1).removeAttr("disabled");

			} else {
				//###   Successfully Registered   ###

				$("#register-form").hide();
				$("#register-panel .form-success").slideDown("slow");
				setTimeout( '$("a.close-panel").trigger("click")', 4000);

				//###   Show/hide user nav links   ###
				$("#user-nav #login-toggle").addClass('hidden');
				$("#user-nav #register-toggle").addClass('hidden');
				$("#user-nav #logout-link").removeClass('hidden');
				$("#user-nav #account-link").removeClass('hidden');

				ClearForm("#register-form");
				if (window.location.href == "https://www.netcurtaincorner.co.uk/checkout/login") {
					setTimeout( 'window.location.href = "/checkout/information"', 4500);
				}
			}
		},
		error: function (XMLHttpRequest, textStatus, errorThrown) {
			//###   Error occurred, could be server, CMS or 404   ###
			alert(textStatus + errorThrown);
			$("#register-form button").fadeTo("slow", 1).removeAttr("disabled");
		}
	});
} //###   End of SubmitRegistration function   ###


//###   Clear any form   ###
function ClearForm(FormID) {
	//###   Reset Form   ###
	$(":input", FormID).each(function() {
		var type = this.type;
		var tag = this.tagName.toLowerCase();
		if (type == 'text' || type == 'password' || tag == 'textarea') {
			this.value = "";
		}
	});
} //###   End of ClearForm function   ###

