NUM_DIGITOS_CPF=11;NUM_DIGITOS_CNPJ=14;NUM_DGT_CNPJ_BASE=8;String.prototype.lpad=function(pSize,pCharPad)
{var str=this;var dif=pSize-str.length;var ch=String(pCharPad).charAt(0);for(;dif>0;dif--)str=ch+str;return(str);}
String.prototype.trim=function()
{return this.replace(/^\s*/,"").replace(/\s*$/,"");}
function unformatNumber(pNum)
{return String(pNum).replace(/\D/g,"").replace(/^0+/,"");}
function formatCpfCnpj(pCpfCnpj,pUseSepar,pIsCnpj)
{if(pIsCnpj==null)pIsCnpj=false;if(pUseSepar==null)pUseSepar=true;var maxDigitos=pIsCnpj?NUM_DIGITOS_CNPJ:NUM_DIGITOS_CPF;var numero=unformatNumber(pCpfCnpj);numero=numero.lpad(maxDigitos,'0');if(!pUseSepar)return numero;if(pIsCnpj)
{reCnpj=/(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})$/;numero=numero.replace(reCnpj,"$1.$2.$3/$4-$5");}
else
{reCpf=/(\d{3})(\d{3})(\d{3})(\d{2})$/;numero=numero.replace(reCpf,"$1.$2.$3-$4");}
return numero;}
function dvCpfCnpj(pEfetivo,pIsCnpj)
{if(pIsCnpj==null)pIsCnpj=false;var i,j,k,soma,dv;var cicloPeso=pIsCnpj?NUM_DGT_CNPJ_BASE:NUM_DIGITOS_CPF;var maxDigitos=pIsCnpj?NUM_DIGITOS_CNPJ:NUM_DIGITOS_CPF;var calculado=formatCpfCnpj(pEfetivo+"00",false,pIsCnpj);calculado=calculado.substring(0,maxDigitos-2);var result="";for(j=1;j<=2;j++)
{k=2;soma=0;for(i=calculado.length-1;i>=0;i--)
{soma+=(calculado.charAt(i)-'0')*k;k=(k-1)%cicloPeso+2;}
dv=11-soma%11;if(dv>9)dv=0;calculado+=dv;result+=dv}
return result;}
function is_cpf(pCpf)
{var numero=formatCpfCnpj(pCpf,false,false);if(numero.length>NUM_DIGITOS_CPF)return false;var base=numero.substring(0,numero.length-2);var digitos=dvCpfCnpj(base,false);var algUnico,i;if(numero!=""+base+digitos)return false;algUnico=true;for(i=1;algUnico&&i<NUM_DIGITOS_CPF;i++)
{algUnico=(numero.charAt(i-1)==numero.charAt(i));}
return(!algUnico);}
function is_cnpj(pCnpj)
{var numero=formatCpfCnpj(pCnpj,false,true);if(numero.length>NUM_DIGITOS_CNPJ)return false;var base=numero.substring(0,NUM_DGT_CNPJ_BASE);var ordem=numero.substring(NUM_DGT_CNPJ_BASE,12);var digitos=dvCpfCnpj(base+ordem,true);var algUnico;if(numero!=""+base+ordem+digitos)return false;algUnico=numero.charAt(0)!='0';for(i=1;algUnico&&i<NUM_DGT_CNPJ_BASE;i++)
{algUnico=(numero.charAt(i-1)==numero.charAt(i));}
if(algUnico)return false;if(ordem=="0000")return false;return(base=="00000000"||parseInt(ordem,10)<=300||base.substring(0,3)!="000");}
function is_cpfCnpj(pCpfCnpj)
{var numero=pCpfCnpj.replace(/\D/g,"");if(numero.length>NUM_DIGITOS_CPF)
return is_cnpj(pCpfCnpj)
else
return is_cpf(pCpfCnpj);}
