// this one 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   ###
	if ( $("#contact-form").length > 0 ) {
		$("#contact-form").validate({
			submitHandler: function(form) {
				$("#contact-form button").attr("disabled","true").fadeTo("slow", 0.20).addClass("disabled");
				SubmitContactForm( $("#contact-form") );
				return false;
			},
			highlight: function(element, errorClass) {
				$(element).addClass('error');
			}
		});
	}

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

	//###   NEWSLETTER   ###
	$("#newsletter-form").validate({
		submitHandler: function(form) {
			$("#newsletter-form button").attr("disabled","true").fadeTo("slow", 0.20).addClass("disabled");
			SubmitNewsletter();
		}
	});

	//###   LOGIN   ###
	$("#loginForm").validate({
		submitHandler: function(form) {
			$(form).ajaxSubmit({ beforeSubmit: showRequest,	 success: loginResponse });
			return false;
		}
	});

	//###   CONSULTATION FORM   ###
	if ( $("#consultation-form").length > 0 ) {
		$("#consultation-form").validate({
			submitHandler: function(form) {
				$("#consultation-form button").attr("disabled","true").fadeTo("slow", 0.20).addClass("disabled");
				SubmitContactForm( $("#consultation-form") );
				return false;
			},
			highlight: function(element, errorClass) {
				$(element).addClass('error');
			}
		});
	}

	//###   SURVEY FORM   ###
	if ( $("#survey-form").length > 0 ) {
		$("#survey-form").validate({
			submitHandler: function(form) {
				$("#survey-form button[type='submit']").attr("disabled","true").fadeTo("slow", 0.20).addClass("disabled");
				SubmitContactForm( $("#survey-form") );
				$.scrollTo("#content", {
					duration:500,
					offset:{left:0,top:-50}
				});
				return false;
			},
			invalidHandler: function(e, validator) {
				var totalErrors = validator.numberOfInvalids();
				if (totalErrors) {
					var message = totalErrors == 1
						? 'You missed 1 field. It has been highlighted, please move back through the survey to check.'
						: 'You missed ' + totalErrors + ' fields. They have been highlighted, please move back through the survey to check.';
					$("form p.error").remove();
					$("#survey-form button[type='submit']").parent().before('<p class="error">' + message + '</p>');
					var newHeight = $("#survey-form").height() + $("#survey-form p.error").height() + 20;
					$("#survey-form").height( newHeight );
					//$("form p.error").show();
				} else {
					$("form p.error").remove();
				}
			}, 
			highlight: function(element, errorClass) {
				$(element).addClass('error');
			}
		});
	}
});


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

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

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

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