//###   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").attr("disabled","true").fadeTo("slow", 0.20).addClass("disabled");

			SubmitContactForm();
			return false;
		}
	});

	//###   SEARCHING   ###
	$("#searchForm").validate({
		rules: {
			keywords: {
				required: true,
				minlength: 3,
				maxlength: 30
			}
		}
	});

	//###   COMMENT FORM   ###
	$("#comment_form").validate();

	//###   ADD TO BASKET FORM   ###
	$("#add-to-basket-form").validate();

	//###   BOOKING FORM   ###
	$("#booking-form").validate({
		submitHandler: function(form) {
			//###   Disable the Submit button   ###
			$("#booking-form .button").attr("disabled","true").fadeTo("slow", 0.20).addClass("disabled");

			SubmitBookingForm();
			return false;
		}
	});

	//###   NEWSLETTER   ###
	$("#newsletter-form").validate({
		submitHandler: function(form) {
			//###   Disable the Submit button   ###
			$("#newsletter-form input[type=submit]").attr("disabled","true").fadeTo("slow", 0.20).addClass("disabled");

			SubmitNewsletterForm();
			return false;
		}
	});

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

			SubmitLogin();
			return false;
		}
	});


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

			SubmitLogout();
			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","true").addClass("disabled");

			SubmitPasswordReset();
			return false;
		}
	});

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

			SubmitRegistration();
			return false;
		}
	});
}); //###   End of DOM Ready   ###

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

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

			} else {
				$("#contact-form").hide().prev("h2").hide();
				$(".main .form-success").slideDown("slow");
				if ( $("#newsletter-signup").is(":checked") == true) {
					//###   Create Appropriate Fields for Newsletter Submission   ###
					$NameField = $("#contact-form #fullname");
					$NameField.clone().insertAfter($NameField).attr("name", "cm-name");
					$EmailField = $("#contact-form #email");
					$EmailField.clone().insertAfter($EmailField).attr("name", "cm-kjklkk-kjklkk");

					SubmitNewsletterForm("contact-form");
				}
				//ClearForm("#contact-form");
			}
		},
		error: function (XMLHttpRequest, textStatus, errorThrown) {
			//alert(textStatus + errorThrown);
			$("#contact-form .button").fadeTo("slow", 1).removeAttr("disabled").removeClass("disabled");

		}
	});
}

//###   BOOKING SUBMITTED   ###
function SubmitBookingForm() {
	//###   Send form via AJAX   ###
	$.ajax({
		type: "POST",
		data: $("#booking-form").serialize() + "&action=" + $("#booking-form").attr("action"),
		dataType: "html",
		success: function (html) {
			//alert(html);
			if ( html.search(/error/i) >= 0 ) {
				if (html.search(/captcha/i) >= 0) {
					$("#captcha").addClass('error').after('<label class="error" for="captcha" generated="true">' + $("#captcha").attr('title') + '</label>')
				}
				$("#booking-form button").fadeTo("slow", 1).removeAttr("disabled").removeClass("disabled");

			} else {
				$("#booking-form").hide().prev("p").hide();
				$(".main .form-success").slideDown("slow");
				if ( $("#newsletter-signup").is(":checked") == true) {
					//###   Create Appropriate Fields for Newsletter Submission   ###
					$NameField = $("#booking-form #firstname");
					$NameField.clone().insertAfter($NameField).attr("name", "cm-name").val($NameField.val()+" "+$("#booking-form #surname").val());
					$EmailField = $("#booking-form #email");
					$EmailField.clone().insertAfter($EmailField).attr("name", "cm-kjklkk-kjklkk");

					SubmitNewsletterForm("booking-form");
				}
				//ClearForm("#booking-form");
			}
		},
		error: function (XMLHttpRequest, textStatus, errorThrown) {
			//alert(textStatus + errorThrown);
			$("#booking-form .button").fadeTo("slow", 1).removeAttr("disabled").removeClass("disabled");

		}
	});
}

//###   NEWSLETTER SUBMISSION   ###
function SubmitNewsletterForm(formID) {
	if (formID == undefined || formID == "newsletter-form") {
		//###   Serialize form values to be submitted with POST   ###
		//var str = $("#newsletter-form").serialize();
		var str = $("#newsletter-form [name*=cm-]").serialize();
		//###   Grab form action   ###
		var formAction = $("#newsletter-form").attr("action");
	} else {
		//###   Serialize form values to be submitted with POST   ###
		if ( $("#"+formID+" #fullname").length ) {
			var str = "cm-name="+encodeURIComponent( $("#"+formID+" #fullname").val() );
		} else {
			var str = "cm-name="+encodeURIComponent( $("#"+formID+" #firstname").val()+" "+$("#"+formID+" #surname").val() );
		}
		str = str + "&cm-kjklkk-kjklkk="+encodeURIComponent($("#"+formID+" #email").val());

/*			$NameField = $("#register-form #fullname");
					$NameField.clone().insertAfter($NameField).attr("name", "cm-name");
					$EmailField = $("#register-form #email");
					$EmailField.clone().insertAfter($EmailField).attr("name", "cm-kjklkk-kjklkk"); */
//		var str = $("#"+formID+" [name*=cm-]").serialize();
		//###   Set form action   ###
		var formAction = "http://boost.twobelowzero.com/t/r/s/kjklkk/";
	}
			
	//###   Add form action to end of serialized data
	var final = str + "&action=" + formAction;

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

			//###   Set Session Variable   ###
			$.ajax({
				url: "/ajax/newsletter"
			});
		},
		error: function (XMLHttpRequest, textStatus, errorThrown) {
			//alert(textStatus + errorThrown);
			$("#newsletter-form input[type=submit]").removeAttr("disabled").fadeTo("slow", 1).removeClass("disabled");
		}
	});
} //###   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) {
			//alert(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">Email address doesn\'t exist<br />Re-check or register an account</label>');

				} else if (html.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 (html.search(/already logged in/i) >= 0) {
					$("#login-button").after('<label class="error" for="login-username" generated="true">User already logged in!</label>');

				} else if (html.search(/account has not been activated yet/i) >= 0) {
					$("#login-button").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").removeClass("disabled");

			} else {
				//###   Successfully Logged in   ###
				$("#login-form").hide().prev("p,h2").hide();
				$("#login-form").next(".form-success").slideDown("slow");
				UpdateAccountLinks();

				ClearForm("#login-form");
			}
		},
		error: function (XMLHttpRequest, textStatus, errorThrown) {
			//###   Error occurred, could be server, CMS or 404   ###
			//alert(textStatus + errorThrown);
			$("#login-form .button").fadeTo("slow", 1).removeAttr("disabled").removeClass("disabled");
		}
	});
} //###   End of SubmitLogin function   ###


//###   LOGOUT FORM SUBMISSION   ###
function SubmitLogout() {
	//###   Send form via AJAX   ###
	$.ajax({
		type: "POST",
		data: $("#logout-form").serialize() + "&action=" + $("#logout-form").attr("action"),
		dataType: "html",
		success: function (html) {
			//###   Successfully received an html page from the server   ###
			$("#logout-form").hide().prev("p,h2").hide();
			$("#logout-form").next(".form-success").slideDown("slow");
			UpdateAccountLinks();
		},
		error: function (XMLHttpRequest, textStatus, errorThrown) {
			//###   Error occurred, could be server, CMS or 404   ###
			$("#logout-form .button").fadeTo("slow", 1).removeAttr("disabled").removeClass("disabled");
		}
	});
} //###   End of SubmitLogout function   ###


//###   RESET PASSWORD FORM SUBMISSION   ###
function SubmitPasswordReset() {
	//###   Send form via AJAX   ###
	$.ajax({
		type: "POST",
		data: $("#forgot-password-form").serialize() + "&action=" + $("#forgot-password-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(/not found/i) >= 0) {
					$("#pwd-reset-email").addClass('error');
					$("#pwd-reset-email").after('<label class="error" for="login-username" generated="true">Email address doesn\'t exist<br />Re-check or register an account</label>');

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

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

				} else {
				}

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

			} else {
				//###   Successfully sent reset request   ###
				//"Instructions for resetting your password have just been emailed to you."
				$("#forgot-password-form").hide();
				$("#password_reminder .form-success").slideDown("slow");

				ClearForm("#forgot-password-form");
			}
		},
		error: function (XMLHttpRequest, textStatus, errorThrown) {
			//###   Error occurred, could be server, CMS or 404   ###
			//alert(textStatus + errorThrown);
			$("#forgot-password-form .button").fadeTo("slow", 1).removeAttr("disabled").removeClass("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);
			//###   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(/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").removeClass("disabled");

			} else {
				//###   Successfully Registered   ###
				$("#register-form").hide().prev("h2, p").hide();
				$("#register-form").next(".form-success").slideDown("slow");

				if ( $("#register-form #newsletter-signup").is(":checked") == true) {
					//###   Create Appropriate Fields for Newsletter Submission   ###
/*					$NameField = $("#register-form #fullname");
					$NameField.clone().insertAfter($NameField).attr("name", "cm-name");
					$EmailField = $("#register-form #email");
					$EmailField.clone().insertAfter($EmailField).attr("name", "cm-kjklkk-kjklkk"); */

					SubmitNewsletterForm("register-form");
				}
				UpdateAccountLinks();
				//ClearForm("#register-form");
			}
		},
		error: function (XMLHttpRequest, textStatus, errorThrown) {
			//###   Error occurred, could be server, CMS or 404   ###
			//alert(textStatus + errorThrown);
			$("#register-form button").fadeTo("slow", 1).removeAttr("disabled").removeClass("disabled");
		}
	});
} //###   End of SubmitRegistration function   ###


//###   Clear any form - pass form element   ###
function ClearForm(FormID) {
	//###   Reset Contact 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   ###

function UpdateAccountLinks() {
		//###   Send form via AJAX   ###
		$.ajax({
			url: "/ajax/account-links",
			type: "POST",
			dataType: "html",
			success: function (html) {
				//alert(html);
				$("#account-links").replaceWith(html);
			}
		});
}

