
jz.Validacao={parse:function(validacao){if(!validacao||typeof validacao.valida=='undefined')
validacao=new jz.Validacao.validaForm();return validacao;},validaForm:function(){return new function(){var that=this;this.msgErro='';this.camposErro=new Array();_addMsg=function(msg){that.msgErro+='-'+msg+'\n';}
this.valida=function(el,t,o,fn){try{var isCond=typeof el=='boolean';if(isCond){fn=o;o=t;}
if(typeof o=='string'){o={msgErro:o};}
var bool;if(isCond){bool=el;}else{var ronly=Util.jQueryObj(el).attr('ronly');if(ronly){throw'Campo Read Only';}else{bool=jz.Validacao.form(el,t);switch(t){case'vazio':case'ehNull':case'espaco':bool=!bool;break;}}}}catch(e){bool=true;}
if(false==bool){this.camposErro[this.camposErro.length]=el;if(o&&o.msgErro){_addMsg(o.msgErro);}}else if(typeof fn=='function'){fn(this);}
return this;}
this.ehValido=function(){return this.camposErro.length==0;}}},form:function(el,t){var valor=Util.jQueryObj(el).val();if(typeof valor=='undefined'){throw'Element undefined';}
eval("var f = jz.Validacao."+t+"(valor)");return f;},data:function(data){var expReg=/^((0[1-9]|[12]\d)\/(0[1-9]|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[13578]|1[02]))\/(19|2[0-2])?\d{2}$/;var aRet=true;if((data)&&(data.match(expReg))&&(data!='')){var dia=data.substring(0,2);var mes=data.substring(3,5);var ano=data.substring(6,10);if((mes==4||mes==6||mes==9||mes==11)&&dia>30)
aRet=false;else
if((ano%4)!=0&&mes==2&&dia>28)
aRet=false;else
if((ano%4)==0&&mes==2&&dia>29)
aRet=false;}else
aRet=false;return aRet;},dataNascimento:function(data){if(!jz.Validacao.data(data)){return false;}
var anoMaximo=Date.parse(jz.Today.toDateString());anoMaximo.addYears(-18);return anoMaximo.compareTo(Date.parse(data))==1;},periodo:function(menor,maior){return Util.data.explodeVisual(menor).compareTo(Util.data.explodeVisual(maior))<1;},ehNull:function(n){return n==null;},vazio:function(s){return jz.Validacao.espaco(s)||jz.Validacao.ehNull(s);},espaco:function(s){return/^\s+$/.test(s)||s.length==0;},numero:function(d){if(!jz.Validacao.vazio(d)){return/^[0-9]+$/.test(d);}
return false;},email:function(s){return/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(s);},cpf:function(numcpf){var numcpf=numcpf.soNumeros();if(numcpf.length!=11){return false;}
for(var i=0;i<12;i++){if(numcpf==new Array(12).join(i)){return false;}}
var x=0,soma=0,dig1=0,dig2=0,texto="",numcpf1="",len=numcpf.length,y;x=len-1;for(var i=0;i<=len-3;i++){y=numcpf.substring(i,i+1);soma=soma+(y*x);x=x-1;texto=texto+y;}
dig1=11-(soma%11);if(dig1==10)dig1=0;if(dig1==11)dig1=0;numcpf1=numcpf.substring(0,len-2)+dig1;x=11;soma=0;for(var i=0;i<=len-2;i++){soma=soma+(numcpf1.substring(i,i+1)*x);x=x-1;}
dig2=11-(soma%11);if(dig2==10)dig2=0;if(dig2==11)dig2=0;if((dig1+""+dig2)==numcpf.substring(len,len-2)){return true;}
return false;},cnpj:function(valor){var CNPJ=valor;var invalido=false;var x;if(document.layers&&parseInt(navigator.appVersion)==4){x=CNPJ.substring(0,2);x+=CNPJ.substring(3,6);x+=CNPJ.substring(7,10);x+=CNPJ.substring(11,15);x+=CNPJ.substring(16,18);CNPJ=x;}else{CNPJ=CNPJ.replace(".","");CNPJ=CNPJ.replace(".","");CNPJ=CNPJ.replace("-","");CNPJ=CNPJ.replace("/","");}
var nonNumbers=/\D/;if(nonNumbers.test(CNPJ))invalido=true;var a=[];var b=new Number;var c=[6,5,4,3,2,9,8,7,6,5,4,3,2];for(i=0;i<12;i++){a[i]=CNPJ.charAt(i);b+=a[i]*c[i+1];}
if((x=b%11)<2){a[12]=0}else{a[12]=11-x}
b=0;for(y=0;y<13;y++){b+=(a[y]*c[y]);}
if((x=b%11)<2){a[13]=0;}else{a[13]=11-x;}
if((CNPJ.charAt(12)!=a[12])||(CNPJ.charAt(13)!=a[13])){invalido=true;}
if(invalido){return false;}
return true;},fone:function(valor){return jz.Validacao.__validaValorMascarado(valor,jz.IniData.formatacao.fone,new RegExp('[0-9]+'));},numeroCartao:function(valor){return/^[0-9]{15,16}$/.test(valor.toString());},codigoSegurancaCartao:function(valor){return/^[0-9]{3,4}$/.test(valor.toString());},dataValidadeCartao:function(data){var data=data;var modelo=jz.IniData.formatacao.dataValidadeCartao.normalize;modelo=modelo.toLowerCase();var arrFormat=null;var valido=false;$.each(['/','.','-'],function(){if((arrFormat=new RegExp('^m{1,2}\\'.concat(this).concat('(yy){1,2}$')).exec(modelo)!=null)){arrDate=data.split(this);var dataValidade=Date.parse((arrDate[0]).concat('.').concat('01.').concat(arrDate[1])).addMonths(1);valido=jz.Today.compareTo(dataValidade)<0;return;}else if((arrFormat=new RegExp('^(yy){1,2}\\'.concat(this).concat('m{1,2}$')).exec(modelo)!=null)){arrDate=data.split(this);var dataValidade=Date.today().set({day:1,month:arrDate[1],year:arrDate[0]}).addMonths(1);valido=jz.Today.compareTo(dataValidade)<0;return;}});return valido;},url:function(url){return/^(https?):\/\/+(www\.)?[a-z0-9\-\.]{3,}\.[a-z]{3}(\.[a-z]{2,})*$/.test(url);},__validaValorMascarado:function(valor,modelo,regExp){if(typeof modelo=='undefined'){return true;}
if(modelo.length!=valor.length){return false;}
modelo=str_replace('9','&',modelo);var toSub=modelo.indexOf('&')==-1?'#':'&';for(var i=0;i<modelo.length;i++){if((modelo[i]==toSub&&!regExp.test(valor[i]))&&(modelo[i]!=valor[i])){return false;}}
return true;}}