/* 
 * jquery.validar.ows.js
 *
 * @author Ricardo Silva
 *
 * funcoes:
 * <form id="form"> <input type="text" name="user" label="Usuario" req="cpf"> </form>
 * $("#form").validar({end:function(){}});
 *
 * @return boolean
 * $("#input").validarEmail();
 *
 * @return boolean
 * $("#input").validarCPF();
 */
(function($){
    $.extend($.fn,{
        validar : function(opts){
            var json = opts;
            this.submit(function(){
                var canSubmit = true;

                $(this).find("[req=true], [req=text], [req=email], [req=cpf], [req=equals]").each(function(){
                    if($(this).is(":visible")){


                        var label = $(this).attr("label");

                        if($(this).val().length < 1 && canSubmit){
                            canSubmit = false;
                            alert(((label.split(" ").length > 1)? label : "Por favor, preencha o campo "+label.replace("_", " ").replace("_", " ")+"."));
                            $(this).slowFocus();
                        }else if(canSubmit){
                            switch ($(this).attr("req")) {
                                case "email":
                                    if(!$(this).validarEmail()){
                                        canSubmit = false;
                                        alert(((label.split(" ").length > 1)? label : "Por favor, preencha corretamente o campo "+label.replace("_", " ").replace("_", " ")+"."));
                                        $(this).slowFocus();
                                    }
                                    break;
                                case "cpf":
                                    if(!$(this).validarCPF()){
                                        canSubmit = false;
                                        alert(((label.split(" ").length > 1)? label : "Por favor, preencha corretamente o campo "+label.replace("_", " ").replace("_", " ")+"."));
                                        $(this).slowFocus();
                                    }
                                    break;
                                case "equals":
                                    if($(this).val()!=$($(this).attr("equals")).val()){
                                        canSubmit = false;
                                        alert(((label.split(" ").length > 1)? label : "Por favor, preencha corretamente o campo "+label.replace("_", " ").replace("_", " ")+"."));
                                        $(this).slowFocus();
                                    }
                                    break;
                                default:
                                    break;
                            }
                        }
                    }
                });
                    
                
                if(canSubmit){
                    try{
                        canSubmit = json.end();
                    }catch(er){}
                }
                return canSubmit;
            });
        },
        slowFocus : function(){
            setTimeout(function(ej){
                ej.focus();
            }, 1, $(this));
        },
        validarCPF : function (){
            var arg = $(this).val();
            var pri = arg.substring(0,3);
            var seg = arg.substring(4,7);
            var ter = arg.substring(8,11);
            var qua = arg.substring(12,14);
            var i;
            var numero=(pri+seg+ter+qua);
            var s = numero;
            var c = s.substr(0,9);
            var dv = s.substr(9,2);
            var d1 = 0;
            for (i = 0; i < 9; i++)
                d1 += c.charAt(i)*(10-i);
            var result;
            if (d1 == 0) result = "falso";
            d1 = 11 - (d1 % 11);
            if (d1 > 9) d1 = 0;
            if (dv.charAt(0) != d1) result = "falso";
            d1 *= 2;
            for (i = 0; i < 9; i++) d1 += c.charAt(i)*(11-i);
            d1 = 11 - (d1 % 11);
            if (d1 > 9) d1 = 0;
            if (dv.charAt(1) != d1) result = "falso";
            return !(result == "falso");
        },
        validarEmail : function(){
            var apos = $(this).val().indexOf("@");
            return !(apos < 1 || $(this).val().lastIndexOf(".")-apos < 2);
        }
    })
})(jQuery);


/*
(function($){
    $.extend($.fn,{
        opacity: function(opacity){
            this.css({
                'opacity': opacity, //declaração web standards
                '-khtml-opacity': opacity, // browsers baseados na engine Webkit/ KDE project
                '-moz-opacity': opacity, // declaração para versões antigas do mozilla/firefox
                'filter': 'alpha(opacity='+opacity*100+')' // Internet Explorer < 8( super standards )
            });
        }
    })
})(jQuery);
 */