jQuery.fn.validate = function() {
    var form=$(this);
    $(this).submit(function(){
        form.attr("valid", 1);
        $("input.email", form).each(function(){
            var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/;
            if (filter.test($(this).val())){
                $(this).removeClass("error");
            }else{
                $(this).addClass("error");
                form.attr("valid", 0);
            }
        });
		
        $("input.required", form).each(function(){
            if ($(this).val() && $(this).val()!=$(this).attr('val')){
                $(this).removeClass("error");
            }else{
                $(this).addClass("error");
                form.attr("valid", 0);
            }
        });
        
        $("input.required[name='phone']", form).each(function() {
            var filter = /^(\D*?\d\D*?\d\D*?\d\D*?\d\D*?\d\D*?\d\D*?\d\D*?\d\D*?\d\D*?.*?)$/;
//            var filter = /^([0-9_\.\-\+\,\ \(\)\[\]]){10,32}$/;

            if (filter.test($.trim($(this).val()))){
                $(this).removeClass("error");
            }else{
                $(this).addClass("error");
                form.attr("valid", 0);
            }
        });
		
        $("textarea.required", form).each(function(){
            if ($(this).val()){
                $(this).removeClass("error");
            }else{
                $(this).addClass("error");
                form.attr("valid", 0);
            }
        });

        $("select.required[name!='city']", form).each(function(){

            if(!$(this).get(0).selectedIndex) {

                $(this).addClass("error");
                form.attr("valid", 0);
            }
            else {

                $(this).removeClass("error");
            }
        });

        $("select.required[name='city']", form).each(function() {

            if(!$(this).get(0).selectedIndex) {

                if(!$(this).parent().find("input[name='city2']").val()) {

                    $(this).addClass("error");
                    form.attr("valid", 0);
                }
                else {

                    $(this).removeClass("error");
                }
            }
            else {

                $(this).removeClass("error");
            }
        });

        if ($("input.captcha", form).length){
            $("input.captcha", form).each(function(){
                var input=$(this);
                $.ajaxSetup({
                    async:false
                });
                $.post('/ajax/check-captcha', {
                    'captcha': input.val()
                }, function(json){
                    var newDate = new Date;
                    var uniq = newDate.getTime();
                    
                    if (json.result==true) {
                        input.removeClass("error");
                    } else {
                        input.addClass("error");
                        form.attr("valid", 0);
                        input.parent().parent().find('img').attr('src', '/captcha/index.php?'+uniq);                        
                    }
                    if(form.attr("valid")==0) {
                        if (json.message)
                            $.jGrowl(json.message)
                        return false;
                    }
                    input.focus();
                    
                }, 'json')            
            });
        } 
        if(form.attr("valid")==0) {
            $.jGrowl('Неправильно заполненная форма.')
            return false;
        }
        
        
    });
};


