$(document).ready(function($) {
	validateFormAuth();
	validateRegisterForm();
	validateFormContact();
});

function validateFormAuth()
{
	if (!$('#form-login').length) return false;
	$('#form-login').validate({
    	focusInvalid: true,
		focusCleanup: false,
    	rules: {
    		login: "required",
			pass: "required"
		},
		messages: {
			pass: "This field is required",
			login: "This field is required"
		},
		submitHandler: function() {
			$('#errorAuth').html('');
			var optionsSubmit = {
				dataType: "json",
				success: function(data) {
					if (data) {
						if (data.type == "error") {
							$('#errorAuth').html(data.context);
						}
						if (data.type == "ok") {
							window.location.reload();
						}
					}
				}
			};
			$('#form-login').ajaxSubmit(optionsSubmit);
		}
	});
}

function validateRegisterForm()
{
	if (!$('#registerForm').length) return false;
	$('#registerForm').validate({
    	focusInvalid: true,
		focusCleanup: false,
    	rules: {
			reg_username: {
				required: true,
				remote: "/register/checkUsername/"
			},
    		reg_email: {
				required: true,
				email: true,
				remote: "/register/checkMail/"
			},
			reg_pass: "required",
			reg_repass: {
				required: true,
				equalTo: "#reg_pass"
			},
			captcha: "required"
		},
		messages: {
    		reg_username: {
				required: "This field is required",
				remote: "The username is already taken by another member"
			},
    		reg_email: {
				required: "This field is required",
				email: "This email incorect",
				remote: "This email address is in use"
			},
			reg_pass: "This field is required",
			reg_repass: {
				required: "This field is required",
				equalTo: "The passwords you entered don't match"
			},
			captcha: "This field is required"
		},
		submitHandler: function() {
			var optionsSubmit = {
				dataType: "json",
				success: function(data) {
					if (data) {
						if (data.type == "error") {
							showErrorMessage(data.context);
							upCaptcha();
						}
						if (data.type == "ok") {
							showGoodMessage(data.context);
							$('#registerForm').hide();
						}
					}
				}
			};
			$('#registerForm').ajaxSubmit(optionsSubmit);
		}
	});
}

function validateFormContact()
{
	if (!$('#emailForm').length) return false;
	$('#emailForm').validate({
    	focusInvalid: true,
		focusCleanup: false,
    	rules: {
    		contact_email: {
				required: true,
				email: true
			},
			contact_text: "required",
			captcha: "required"
		},
		messages: {
			contact_email: {
				required: "This field is required",
				email: "This email incorect"
			},
			contact_text: "This field is required",
			captcha: "This field is required"
		},
		submitHandler: function() {
			var optionsSubmit = {
				dataType: "json",
				success: function(data) {
					if (data) {
						if (data.type == "error") {
							upCaptcha();
							showErrorMessage(data.context);
						}
						if (data.type == "ok") {
							showGoodMessage(data.context);
							$('#emailForm').hide();
						}
					}
				}
			};
			$('#emailForm').ajaxSubmit(optionsSubmit);
		}
	});
}

function upCaptcha() {
	$("#captcha_img").attr('src','/register/captcha/'+Math.round(Math.random()*1000000));
	$("#captcha").val('');
}

function showGoodMessage(text) {
	if ($('#goodBlock').length) $('#goodBlock').html(text).show();
	if ($('#errorBlock').length) $('#errorBlock').hide();
}

function showErrorMessage(text) {
	if ($('#errorBlock').length) $('#errorBlock').html(text).show();
	if ($('#goodBlock').length) $('#goodBlock').hide();
}
