/**
 * @author Y.Zolotov
 */




jQuery(function($)
{
				
zValidate.init();

});

var zValidate = 
{
	 /* Validation patterns */
	 email : /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i,
	 nickname : /[A-z0-9]{3,30}/,
	 
	 EMAIL_ERROR 	: "не правильно введен email адрес",
	 PASSWORD_ERROR : "не менее 6 символов",
	 REPASSWORD_ERROR : "пароли не совпадают",
	 EMPTY_ERROR : "поле не должно быть пустым",
	 AGE_ERROR : "вам должно быть больше 13 лет",
	 NICK_ERROR : "должен быть не короче 3х символов, и состоять из цифр и букв латинского алфавита.",
	 init : function ()
	 {
	 	
		$(".mustValidate").focus(zValidate.onFocus);
		$(".mustValidate").blur(zValidate.onBlur)
		//$(".mustValidate").keydown(zValidate.onBlur);
	 },
	 
	 changeStatus : function(e , status , msg)
	 {
	 		if ( status )
			{
				$(e).addClass("statusOk");
				$(e).removeClass("statusFailed");
				
				if ($(e).parent().parent().hasClass("formrow"))
				{
					$(e).parent().parent().removeClass("statusFailedForRow");
					$(e).parent().parent().find(".forMsg").html("");
				
				}else
				{
					$(e).parent().parent().parent().removeClass("statusFailedForRow");
					$(e).parent().parent().parent().find(".forMsg").html("");
				}
			
				
			}else
			{
				
				$(e).addClass("statusFailed");
				if ($(e).parent().parent().hasClass("formrow"))
				{
					$(e).parent().parent().addClass("statusFailedForRow");
					$(e).parent().parent().find(".forMsg").html(msg);
				}else
				{
					$(e).parent().parent().parent().addClass("statusFailedForRow");
					$(e).parent().parent().parent().find(".forMsg").html(msg);
				}
				
				$(e).removeClass("statusOk");
			}
	 },
	 
	 
	 onFocus : function()
	 {
	 	//alert("SD");
		//zValidate.checkForValid();
	 },
	 onBlur : function(e)
	 {
	 	
		if ($(e.target).val().length > 0 )
		{
			 	if ($(e.target).hasClass("zEmail") )
			 	{
					
					zValidate.changeStatus(e.target, zValidate.email.test($(e.target).val()) , zValidate.EMAIL_ERROR);
				
				}
				
				if ($(e.target).hasClass("zPassword") )
				{
					zValidate.changeStatus(e.target, $(e.target).val().length > 5 , zValidate.PASSWORD_ERROR );
					
				}
				
				if ($(e.target).hasClass("zRePassword") )
				{
					zValidate.changeStatus(e.target , $(e.target).val() == $(".zPassword").val() , zValidate.REPASSWORD_ERROR );
					
				}
				
				if ( $(e.target).hasClass("zNickname") )
				{
					zValidate.changeStatus( e.target , zValidate.nickname.test($(e.target).val()) , zValidate.NICK_ERROR );
					
				}
				
				if ( $(e.target).hasClass("zNotEmpty") )
				{
					
					zValidate.changeStatus( e.target , $(e.target).val().length > 0 , zValidate.EMPTY_ERROR );
					
				}
				
				
		}
		

		//alert( zValidate.nickname.test($(e.target).val()));
	 },
	 
	 checkForValid : function(form)
	 {
	 	
		
		$("#"+form+" .mustValidate").each(
		
		 function(key ,  value )
		 {
		 	
		 	if ($(value).val().length < 1 )
			{
				
				zValidate.changeStatus( value , false , zValidate.EMPTY_ERROR );
			}else{
				zValidate.changeStatus( value , true , "");
			}
			
			if ($(value).val().length > 0 )
		{
			 	if ($(value).hasClass("zEmail") )
			 	{
					
					zValidate.changeStatus(value, zValidate.email.test($(value).val()) , zValidate.EMAIL_ERROR);
				
				}
				
				if ($(value).hasClass("zPassword") )
				{
					zValidate.changeStatus(value, $(value).val().length > 5 , zValidate.PASSWORD_ERROR );
					
				}
				
				if ($(value).hasClass("zRePassword") )
				{
					zValidate.changeStatus(value , $(value).val() == $(".zPassword").val() , zValidate.REPASSWORD_ERROR );
					
				}
				
				if ( $(value).hasClass("zNickname") )
				{
					zValidate.changeStatus( value , zValidate.nickname.test($(value).val()) , zValidate.NICK_ERROR );
					
				}
				
				if ( $(value).hasClass("zNotEmpty") )
				{
					
					zValidate.changeStatus( value , $(value).val().length > 0 , zValidate.EMPTY_ERROR );
					
				}
				
		}
			
			
		 }
		 
		 
		
		);
		
		if ( $(".statusFailed").length > 0 )
		{
			return false;
		}else
		{
			return true;
		}
		
	 }
	
}
