$(document).ready(function () {

	$("form.mainForm").validate({
		rules: {
			email: {
				required: true,
				email: true
			}
		},
		messages: {
			email: {
				required: "Please enter your email address",
				email: "The email address is not valid"
			}
		},
		success: function (label) {
			var errorArea = $(label).parents(".errorArea:first");
			if (errorArea.hasClass("error"))
				errorArea.removeClass("error");
		},
		errorPlacement: function (error, element) {
			var message = error.html();
			var errorArea = $(element).parents(".errorArea:first");
			if (message) {
				if (!errorArea.hasClass("error"))
					errorArea.addClass("error");
				errorArea[0].errormessage = message;
			}
			else {
				if (errorArea.hasClass("error"))
					errorArea.removeClass("error");
			}
		},
		submitHandler: function (form) {
			sendData();
		}

	});

	// labels in form fields
	$("label").inFieldLabels();

	$(".errorArea").qtip({
		content: ' ',
		show: { delay: 0, event: 'mouseover' },
		hide: 'mouseout',
		position: {
			target: 'mouse'
		},
		style: {
			name: "red"
		},
		api: {
			beforeShow: function (ev) {
				//debugger;
				var target = $(ev.target);
				if (!target.hasClass("errorArea"))
					target = target.parents(".errorArea:first");
				if (!target.hasClass("error")) {
					var errorArea = target.parents(".errorArea:first");
					if (errorArea.length > 0)
						target = errorArea;
				}
				if (target.hasClass("error") && target[0].errormessage) {
					this.updateContent(target[0].errormessage);
					return true;
				}
				return false;
			}
		}
	});

});

function sendData() {
	submitted = true;
	var txtEmail = $("input.emailText");
	if (inputOnChange(txtEmail[0])) {
		var email = txtEmail.val();
		var form = $("form.mainForm");
        $.getJSON(
			form.attr("action") + (form.attr("action").indexOf("?") >= 0 ? "&" : "?") + form.serialize() + "&callback=?",
			successCallback,
			errorCallback
		);
	}
}

function successCallback(result) {
	if (result && result.toLowerCase && result.toLowerCase() == 'ok')
		showSuccessScreen();
	else
		showErrorScreen();
}
function errorCallback(error) {
	showErrorScreen();
}

var submitted = false;

function showSuccessScreen() {
	$('#welcome').hide('explode', { pieces: 18 }, 500, function () {
		$('#thanks').fadeIn();
	});
}

function showErrorScreen() {
	$('#welcome').hide('explode', { pieces: 18 }, 500, function () {
		$('#error').fadeIn();
	});
}


function inputOnChange(sender) {
	if (!submitted)
		return false;
	// Do nothing if client validation is not active
	//if (typeof (Page_Validators) == "undefined") return;
	if (!sender.Validators || !sender.Validators.length)
		return true;
	var isValid = true;
	var errormessage = null;
	for (var i = 0; i < sender.Validators.length; i++) {
		ValidatorValidate(sender.Validators[i]);
		if (!sender.Validators[i].isvalid) {
			isValid = false;
			errormessage = sender.Validators[i].errormessage;
			break;
		}
	}
	var errorArea = $(sender).parents(".errorArea:first");
	if (isValid) {
		if (errorArea.hasClass("error"))
			errorArea.removeClass("error");
		errorArea[0].errormessage = null;
	}
	else {
		if (!errorArea.hasClass("error"))
			errorArea.addClass("error");
		errorArea[0].errormessage = errormessage;
	}
	return isValid;
}

