$(document).ready(init);

function init() {
	$(".button.submit").click(function(){
		$("#"+$(this).attr("rel")).submit();
		return false;
	});
	
	$(".message a").toggle(function(){
		var parent = $(this).parent().parent();
		$(".description", parent).hide();
		$(".full", parent).fadeIn();
	}, function() {
		var parent = $(this).parent().parent();
		$(".full", parent).hide();
		$(".description", parent).fadeIn();
	});
	
	$("form.ajax").submit(function(){
		form = $(this);
		
		if ( !checkForm(form) ) return false;
		
		$.ajax({
			type: form.attr("method"),
			dataType: "json",
			url: form.attr("action"),
			data: form.serialize(),
			beforeSend: function() {
				
			},
			success: function(data){				
				switch (data.result) {
					case 'done':
						window[form.attr("done:function")](data, form);
						break;
					case 'error':
						$.each(data.errors, function (key, item) {
							if ( item == 'not-equal' ) {							
								$("label[for='"+key+"']", form).append('<span class="error-message">несоответсвует</span>');
							}
							if ( item == 'in-use' ) {
								$("label[for='"+key+"']", form).append('<span class="error-message">уже используется</span>');
							}
							if ( item == 'incorrect' ) {
								$("label[for='"+key+"']", form).append('<span class="error-message">ошибка</span>');
							}
						});
						setTimeout(function() { $('label .error-message', form).remove(); }, 5000);
						break;
				}
			},
			error: function() {
			}
		});

		return false;
	});
	
}

function message_done(data, form) {
	form.hide();
	$("#message-done").show();
}

function checkForm ( form ) {
	var res = true;
	$("input, textarea", form).each(
		function () {
			if ( $(this).hasClass("required") && $(this).val() == '' ) {
				res = false;
				$("label[for='"+$(this).attr("id")+"']").addClass("required-error");
			}
			else if ( $(this).hasClass("email") ) {
				var emailTest = '^[_\\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z_-]+\\.)+[a-z]{2,4}$';
				var regex = new RegExp(emailTest);
				if ( $(this).val() != '' && !regex.test( $(this).val()) ) {
					res = false;
					$("label[for='"+$(this).attr("id")+"']").addClass("email-error");
				}
			}
		}
	);
	setTimeout(function() { $('label', form).removeClass("required-error").removeClass("email-error"); }, 5000);
	return res;
}



