// Autor: Juliana Borges Ribeiro
// Data: 01/05/2000
// Formata CPF
// Recebe um objeto com conteúdo do CPF sem traço ou barra 
// e Valida o conteúdo do CPF, essa funçao é chamada da funcao fFormataCPF

function fVerificaCNPJ (Numero_CNPJ)
{

  var Parcela;
  var Quociente;
  var Resto;
  var Soma;
  var Fator;
  var I;
  var C1;
  var C2;
  var dv1;
  var dv2;

  //Verificação dos dois digitos finais em relação ao número completo

//Flag para contornar a rechamado do evento OnBlur no NetScape
 if (Numero_CNPJ.FlagErroNE)
 {
  Numero_CNPJ.FlagErroNE = false
  return
 }

 if (Numero_CNPJ.length == 14) 
 {
 
    C1 = parseInt(Numero_CNPJ.substring(12, 13)); //13º caracter = primeiro dígito verificador
    C2 = parseInt(Numero_CNPJ.substring(13, 14)); //14º caracter = segundo dígito verificador

    //Verificação do primeiro dígito (C1)

    Soma = 0;
    Parcela = 0;
    Fator = 0;

    for(I=1; I<=12; I++)
    {
      if(I < 9)
      {
        Fator = I + 1;
      }
      else
      {
        Fator = I - 7;
      }

      Parcela = Fator * parseInt(Numero_CNPJ.substring(12 - I, 12 - I + 1));
      Soma = Soma + Parcela;

    } //fechando o "for".

    dv1 = (Soma % 11);
    dv1 = 11 - dv1;
 
    if(dv1 > 9)
    {
      dv1 = 0;
    }
 
    if(C1 != dv1)
    {
      alert ("Número do CNPJ inválido.");
      return false;
    }

    //Verificação do segundo dígito (C2)

    Soma = 0;
    Parcela = 0;
    Fator = 0;

    for(I=1; I<=13; I++)
    {
      if(I < 9)
      {
        Fator = I + 1;
      }
      else
      {
        Fator = I - 7;
      }

      Parcela = Fator * parseInt(Numero_CNPJ.substring(13 - I, 13 - I + 1));
      Soma = Soma + Parcela;
    }

    dv2 = (Soma % 11);
    dv2 = 11 - dv2;
 
    if(dv2 > 9)
    {
      dv2 = 0;
    }
 
    if(C2 != dv2)
    {
      alert ("Número do CNPJ inválido.");
      return false;
    }

    return true;
  }  
 return true;
}



// Autor: Juliana Borges Ribeiro
// Data: 01/05/2000
// Formata CPF
// Recebe um objeto do tipo "Text" com conteúdo do CPF num formato 
// qualquer e converte para o formato padrao. 
// Deve ser usada no evento "OnBlur" do objeto Text. 


function fFormataCPF(objText)
{  
  var strRet
  var strCPF
  var strCPFFormatado
  
  //Flag para contornar a rechamado do evento OnBlur no NetScape
	if (objText.FlagErroNE)
	{
	objText.FlagErroNE = false
	return
	}
	
	strCPF = objText.value
	npos = fJSRetornaPosCaracter(strCPF,"/")
  
  if (strCPF.length > 0 )
  {
    while( npos > 0 )
    {
      strCPF  = strCPF.substr(0,npos) + strCPF.substr(npos+1,strCPF.length ) 
      npos = fJSRetornaPosCaracter(strCPF,"/")
  
    }
    npos = fJSRetornaPosCaracter(strCPF,".")
    while( npos > 0 )
    {
      strCPF  = strCPF.substr(0,npos) + strCPF.substr(npos+1,strCPF.length ) 
      npos = fJSRetornaPosCaracter(strCPF,".")
    }
    npos = fJSRetornaPosCaracter(strCPF,"-")
    while( npos > 0 )
    {
      strCPF  = strCPF.substr(0,npos) + strCPF.substr(npos+1,strCPF.length ) 
      npos = fJSRetornaPosCaracter(strCPF,"-")
    }
    
    strCPFFormatado =  strCPF
    
    if (!fJSIsNumber(strCPF))
    {
        alert("CPF inválido")
        objText.focus();
        return false;
  
    }
    else
    {
  
      if ( strCPF.length == 11 )
      {
          strRet = strCPF.substr(0,9) + "-" + strCPF.substr(9,strCPF.length)
      }  
      else
      {
        alert("CPF inválido")
        objText.focus();
        return false;
      }
      if ( fVerificaCPF(strCPFFormatado))
      {
        objText.value = strRet
      }
      else
      {
        objText.focus();
        return false;
      }
        
    }
  }
}

// Autor: Juliana Borges Ribeiro
// Data: 01/05/2000
// Formata CPF
// Recebe um objeto com conteúdo do CPF sem traço ou barra 
// e Valida o conteúdo do CPF, essa funçao é chamada da funcao fFormataCPF

function fVerificaCPF (numcpf)
{
 var npos;
 x = 0;
 soma = 0;
 dig1 = 0;
 dig2 = 0;
 texto = "";
 numcpf1="";
 
 //Flag para contornar a rechamado do evento OnBlur no NetScape
 if (numcpf.FlagErroNE)
 {
  numcpf.FlagErroNE = false
  return
 }
	
 if (numcpf.length == 11) 
 {  
    npos = fJSRetornaPosCaracter(numcpf,"-")
    while( npos > 0 )
    {
      numcpf  = numcpf.substr(0,npos) + numcpf.substr(npos+1,numcpf.length ) 
      npos = fJSRetornaPosCaracter(numcpf,"-")
    }
    
 
    len = numcpf.length; 

    x = len -1;
    // var numcpf = "12345678909";

    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;
    //alert ("Digito Verificador : " + dig1 + "" + dig2);
    if ((dig1 + "" + dig2) == numcpf.substring(len,len-2)) 
    {
     return true;
     
    }
    
    alert ("Número do CPF inválido.");
    
    return false;
  }
  
}
