(function(b){b.fn.validate=function(c,f,e){var d=b(this);d.closest("form").submit(function(i){var h=b(this);var g=d.filter(function(){return b(this).closest("form").get(0)==h.get(0)});h.find("input:submit").attr("disabled","true");h.find("*").trigger("validate");if(g.hasClass("erro")){i.preventDefault();h.find("input:submit").removeAttr("disabled")}});return this.each(function(){var i=b(this);if(c!=""){i.mask(c)}var j;if(i.next().hasClass("erro")){j=i.next()}else{j=b("<span/>").insertAfter(i).addClass("erro")}var h=j.html();var g=function(k){if(!e(i.val())){i.addClass("erro");j.hide().html(f).fadeIn()}else{j.hide().html(h);i.removeClass("erro")}};i.blur(g);i.bind("validate",g)})};b.fn.cpf=function(){b(this).validate("999.999.999-99","CPF inválido",function(g){if((g=g.replace(/[^\d]/g,"").split("")).length!=11){return false}if(new RegExp("^"+g[0]+"{11}$").test(g.join(""))){return false}for(var e=10,f=0,d=0;e>=2;f+=g[d++]*e--){}if(g[9]!=(((f%=11)<2)?0:11-f)){return false}for(var e=11,f=0,d=0;e>=2;f+=g[d++]*e--){}if(g[10]!=(((f%=11)<2)?0:11-f)){return false}return true});return this};b.fn.cnpj=function(){b(this).validate("99.999.999/9999-99","CNPJ inválido",function(g){var d=[6,5,4,3,2,9,8,7,6,5,4,3,2];if((g=g.replace(/[^\d]/g,"").split("")).length!=14){return false}for(var e=0,f=0;e<12;f+=g[e]*d[++e]){}if(g[12]!=(((f%=11)<2)?0:11-f)){return false}for(var e=0,f=0;e<=12;f+=g[e]*d[e++]){}if(g[13]!=(((f%=11)<2)?0:11-f)){return false}return true});return this};b.fn.required=function(){b(this).validate("","Campo obrigatório",function(d){return b.trim(d)!=""});return this};b.fn.telefone=function(){b(this).validate("(99) 9999-9999","",function(d){return true});return this};b.fn.cep=function(){b(this).validate("99999-999","",function(d){return true});return this};b.fn.email=function(){b(this).validate("","E-mail inválido",function(c){return/^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/.test(c)});return this};function a(c){var c=c||document.body;b(".cpf",c).cpf();b(".cnpj",c).cnpj();b(".telefone",c).telefone();b(".email",c).email();b(".cep",c).cep();b(".required",c).required()}Caelum.ready(function(){a()});Caelum.afterTransition(a)})(jQuery);
