/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


// Valida Identidades

function ValidaChaveNFE(chave){
    
    var digito_in = chave.substr(43,1);
    var digito_out = calculaDigitoVerificadorChaveAcesso(chave);
    
    if (digito_in == digito_out) { 
        return true; 
    }else {        
        return false;
    }
    
}

function calculaDigitoVerificadorChaveAcesso(chave){
    
    var pesos = new Array(4,3,2, 9,8,7,6,5,4,3,2, 9,8,7,6,5,4,3,2, 9,8,7,6,5,4,3,2, 9,8,7,6,5,4,3,2, 9,8,7,6,5,4,3,2);
        
    var somatoria = 0;
    for (i = 0; i < 43; i++) {
        somatoria = somatoria + ( pesos[i] * parseInt(chave.charAt(i)) );
    }
    var digito = (11 - (somatoria % 11));
        
    if (somatoria % 11 == 0 || somatoria % 11 == 1) {
        digito = 0;
    }
    
    return digito + "";                     
    
}

function validaId(id, obrigatorio){
    
    var identify = document.getElementById(id).value;
    var retorno = false;
    if (identify != ""){
        
        if (identify.length == 11){
            retorno = valida_cpf(identify);
        }else if (identify.length == 14){
            retorno = valida_cnpj(identify);
        }
        
    } 
    if (identify == "" && obrigatorio == false){
        retorno = true;     
    }            
   
    
    return retorno;
    
    
}

function valida_cpf(cpf){
    var numeros, digitos, soma, i, resultado, digitos_iguais;
    digitos_iguais = 1;
    if (cpf.length < 11)
        return false;
    for (i = 0; i < cpf.length - 1; i++)
    {
        if (cpf.charAt(i) != cpf.charAt(i + 1))
        {
            digitos_iguais = 0;
            break;
        }
    }
    if (!digitos_iguais)
    {
        numeros = cpf.substring(0,9);
        digitos = cpf.substring(9);
        soma = 0;
        for (i = 10; i > 1; i--)
            soma += numeros.charAt(10 - i) * i;
        resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
        if (resultado != digitos.charAt(0))
            return false;
        numeros = cpf.substring(0,10);
        soma = 0;
        for (i = 11; i > 1; i--)
            soma += numeros.charAt(11 - i) * i;
        resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
        if (resultado != digitos.charAt(1))
            return false;
        return true;
    }
    else
        return false;
}

function valida_cnpj(cnpj){
    var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;
    digitos_iguais = 1;
    if (cnpj.length < 14 && cnpj.length < 15)
        return false;
    for (i = 0; i < cnpj.length - 1; i++)
    {
        if (cnpj.charAt(i) != cnpj.charAt(i + 1))
        {
            digitos_iguais = 0;
            break;
        }
    }
    if (!digitos_iguais)
    {
    	tamanho = cnpj.length - 2
        numeros = cnpj.substring(0,tamanho);
        digitos = cnpj.substring(tamanho);
        soma = 0;
        pos = tamanho - 7;
        for (i = tamanho; i >= 1; i--)
        {
            soma += numeros.charAt(tamanho - i) * pos--;
            if (pos < 2)
            	pos = 9;
        }
        resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
        if (resultado != digitos.charAt(0))
            return false;
        tamanho = tamanho + 1;
        numeros = cnpj.substring(0,tamanho);
        soma = 0;
        pos = tamanho - 7;
        for (i = tamanho; i >= 1; i--)
        {
            soma += numeros.charAt(tamanho - i) * pos--;
            if (pos < 2)
            	pos = 9;
        }
        resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
        if (resultado != digitos.charAt(1))
            return false;
        return true;
    }
    else
        return false;
}
