//###   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() {

	/* Product alert fluff and AJAX */

	$("#product-alert").validate({
		submitHandler: function(form) {
			$('.ajax-loader').show();
			$(form).ajaxSubmit({
				success: function(data) {
					if(data['success'] == true) {
						$(".product-alert-container").fadeOut(300).html('Thank you. We will notify you when this product becomes available.').delay(100).fadeIn(300);
					} else {
						$('.ajax-loader').hide();
						$(".product-alert-container").append('<p class="error">'+data['message']+'</p>');
					}
				}
			});
		}
	});

	//###   CONTACT US FORM   ###
	$("#contact_form").validate({
/*		submitHandler: function(form) {
			//###   Disable the Submit button   ###
			$("#contact_form .submit").attr("disabled","true").fadeTo("slow", 0.20).addClass("disabled");
			//SubmitContactForm();
			return false;
		} */
	});


//###   NEWSLETTER SIGN UP   ###
	$("#newsletter-form").validate({
		submitHandler: function(form) {
			//###   Disable the Submit button   ###
			$("#newsletter-form .submit").fadeTo("slow", 0.20).attr("disabled","true").addClass("disabled");
			SubmitNewsletterForm();
			return false;
		}
	});

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

	$('#login-form').validate({
/*		submitHandler: function(form) {
			//###   Disable the Submit button   ###
			$("#login-form .submit").fadeTo("slow", 0.20).attr("disabled","true").addClass("disabled");
			SubmitLogin();
			return false;
		} */
	});

		//###   REGISTRATION   ###
	$("#register-form").validate({
/*		submitHandler: function(form) {
			//###   Disable the Submit button   ###
			$("#register-form .submit").fadeTo("slow", 0.20).attr("disabled","true").addClass("disabled");
			SubmitRegistration();//  Also deals with submitting newsletter details
			return false;
		} */
	});


	//###   BILLING ADDRESS AND DELIVERY ADDRESS    ###
	$("form#address").not(".checkout-address").validate();
	
	$("form.checkout-address").validate({
		submitHandler: function(form) {
			_gaq.push(['_linkByPost', this]);
			return true;
		}
	});

	//###   Billing and Delivery Addresses - Same address toggle   ###
	if ( $("form#address").length ) {

		//###   Interaction - show or hide group   ###
		$("form#address #delivery-same-address").bind(($.browser.msie ? "click" : "change"), function () {
			if ( $(this).attr("checked") ) {
				$("form#address #delivery-address").find("input, select").attr("disabled","disabled");
				$("form#address #delivery-address").slideUp("slow"); //fadeOut("normal");
			} else {
				$("form#address #delivery-address").find("input, select").removeAttr("disabled");
				$("form#address #delivery-address").slideDown("slow"); //fadeIn("normal");
			}
		});

		//###   Billing and Delivery Addresses & country vs county/state/province   ###
		SetAreaFields( $("form#address #billing-country") );
//		if ( $("form#address #delivery-same-address").attr("checked") != true ) {
			SetAreaFields( $("form#address #delivery-country") );
//		}
		//###   Interaction   ###
		$("form#address #billing-country, form#address #delivery-country").change(function () {
			SetAreaFields( $(this) );
		});
		if ( $("form#address #delivery-same-address").attr("checked") ) {
			$("form#address #delivery-address").slideUp("slow");
			$("form#address #delivery-address").find("input,select").attr("disabled","disabled");
		}
	}


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


//###   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(/<title>Error<\/title>/i) >= 0 ) {  
				if (html.search(/username you submitted was not found/i) >= 0) {
					$("#login-username").addClass('error');
					$("#login-username").after('<label class="error" for="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="password" generated="true">You have entered an incorrect password</label>');

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

				} else if (html.search(/account has not been activated yet/i) >= 0) {
					$("#login-form .submit").after('<label class="error" for="submit" generated="true">Account has not been activated yet</label>');

				} else {
				}

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

			} else {
				//###   Successfully Logged in   ###
				window.location = "http://dev.therunningoutlet.co.uk";
		
			}
		},
		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   ###

//###   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(/<title>error<\/title>/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 .submit").fadeTo("slow", 1).removeAttr("disabled").removeClass("disabled");

			} else {
				//###   Successfully Registered   ###
				window.location = "http://dev.therunningoutlet.co.uk";
			}
		},
		error: function (XMLHttpRequest, textStatus, errorThrown) {
			//###   Error occurred, could be server, CMS or 404   ###
			//alert(textStatus + errorThrown);
			$("#register-form .submit").fadeTo("slow", 1).removeAttr("disabled").removeClass("disabled");
		}
	});
} //###   End of SubmitRegistration function   ###

//###   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 .submit").fadeTo("slow", 1).removeAttr("disabled").removeClass("disabled");

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

				if ( $("#contact_form #newsletter-signup").is(":checked") == true) {
					//###   Newsletter Submission   ###
					SubmitNewsletterForm("contact-form");
				}
			}
		},
		error: function (XMLHttpRequest, textStatus, errorThrown) {
			//alert(textStatus + errorThrown);
			$("#contact_form .submit").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+" #name").length ) {
			var str = "cm-name="+encodeURIComponent( $("#"+formID+" #name").val() );
		} else {
			var str = "cm-name="+encodeURIComponent( $("#"+formID+" #firstname").val()+" "+$("#"+formID+" #surname").val() );
		}
		str = str + "&cm-myuhyj-myuhyj="+encodeURIComponent($("#"+formID+" #email").val());

		//###   Set form action   ###
		var formAction = "http://control.shineemail.com/t/r/s/myuhyj/";
	}
			
	//###   Add form action to end of serialized data
	var final = str + "&action=" + formAction;

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

			//###   Set Session Variable   ###
			/*$.ajax({
				url: "/ajax/newsletter"
			});*/
		},
		error: function (XMLHttpRequest, textStatus, errorThrown) {
			//alert(textStatus + errorThrown);
			$("#newsletter-form .submit").removeAttr("disabled").fadeTo("slow", 1).removeClass("disabled");
		}
	});
} //###   End of SubmitNewsletter 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 .submit").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 .submit").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 .submit").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();
				$(".form-success").slideDown("slow");


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

$(document).ready(function(){
	//###############   Form focus & default text   ###############
	$("form input.required:not([type=password]), form textarea.required").each(function(i) {
		$ParentForm = $(this).parents("form");
		if ($ParentForm.attr("id") == "newsletter-form")
			DefaultValue = "required";
		else if ($(this).attr("cm-name") == "cm-name")
			DefaultValue = "required";
		else
			DefaultValue = "required";
		$(this).attr("notequal", DefaultValue);

		if ($(this).val() == "") {$(this).val(DefaultValue).addClass("empty");}

		$(this).focus(function () {
			if ($(this).parents("#sitesearch").length)
				DefaultValue = "Search";
			else if ($(this).attr("name") == "cm-name")
				DefaultValue = "required";
			else if ($(this).attr("email") == "cm-mdrok-mdrok")
				DefaultValue = "required";
			else
				DefaultValue = "required";
			if ($(this).val() == DefaultValue) {$(this).val("").removeClass("empty");}
		}).blur(function () {
			if ($(this).val() == "") {
				if ($(this).parents("#sitesearch").length)
					DefaultValue = "Search";
				else if ($(this).attr("name") == "cm-name")
					DefaultValue = "required";
				else if ($(this).attr("email") == "cm-myuhyj-myuhyj")
					DefaultValue = "required";
				else
					DefaultValue = "required";

				$(this).val(DefaultValue).addClass("empty");
			}
		});
	});
});


function SetAreaFields($CountryField) {
	$AddressGroup = $CountryField.parent().parent();

	if ($CountryField.find("option:selected").val() != "") {
		$AddressGroup.find("input,select").removeAttr("disabled").parent().fadeIn("slow");

		if ($CountryField.val() == "United Kingdom" || $CountryField.val() == "UK" || $CountryField.val() == "GB") {
			$AddressGroup.find("*[id$='county']").removeAttr("disabled").parent().fadeIn("slow");
			$AddressGroup.find("*[id$='state']").attr("disabled","disabled").parent().hide();
			$AddressGroup.find("*[id$='province']").attr("disabled","disabled").parent().hide();

			$AddressGroup.find("select[id$='state']").children(":first").attr("selected", "selected");
			$AddressGroup.find("input[id$='province']").val("");
//			$AddressGroup.find("input[id$='postcode']").prev().html("Postcode");
		} else if ($CountryField.val() == "United States" || $CountryField.val() == "US") {
			$AddressGroup.find("*[id$='county']").attr("disabled","disabled").parent().hide();
			$AddressGroup.find("*[id$='state']").removeAttr("disabled").parent().fadeIn("slow");
			$AddressGroup.find("*[id$='province']").attr("disabled","disabled").parent().hide();

			$AddressGroup.find("select[id$='county']").children(":first").attr("selected", "selected");
			$AddressGroup.find("input[id$='province']").val("");
//			$AddressGroup.find("input[id$='postcode']").prev().html("Zip");
		} else {
			$AddressGroup.find("*[id$='county']").attr("disabled","disabled").parent().hide();
			$AddressGroup.find("*[id$='state']").attr("disabled","disabled").parent().hide();
			$AddressGroup.find("*[id$='province']").removeAttr("disabled").parent().fadeIn("slow");

			$AddressGroup.find("select[id$='county']").children(":first").attr("selected", "selected");
			$AddressGroup.find("select[id$='state']").children(":first").attr("selected", "selected");
//			$AddressGroup.find("input[id$='postcode']").prev().html("Areacode/zip");
		}

	} else {
		//###   Defaults   ###
		$AddressGroup.find("input, select").attr("disabled","disabled").parent().hide(); //.fadeTo("slow", 0.20);
		$AddressGroup.find("*[id$='country']").removeAttr("disabled").parent().show(); //.fadeTo("fast", 1).prev().fadeTo("fast", 1);
		//$AddressGroup.find("*[id$='county']").show().prev().show();
		//$AddressGroup.find("input[id$='postcode']").prev().html("Postcode");
		//$AddressGroup.find("*[id$='state']").hide().prev().hide();
		//$AddressGroup.find("*[id$='province']").hide().val("").prev().hide();
	}

} //###   End of SetAreaFields Function   ###
