/** 
 * Retorna TRUE se o CNPJ for válido .
 */
function CCNPJ_isCNPJValido(strCNPJ) {
    strCNPJ = C_EliminaMascaraCPFCNPJ(strCNPJ);
    if (strCNPJ == "") {
        return true;
    } else if (String(strCNPJ).length != 14) {
        return false;
    }
    strDV = strCNPJ.substr(12, 2);
    intDigito = 0;
    strControle = "";
    strMultiplicador = "543298765432";
    strCNPJ = strCNPJ.substr(0, 12);
    for (j=1; j<=2; j++) {
        intSoma = 0;
        for (i=0; i<=11; i++) {
            intSoma += (parseInt(strCNPJ.substr(i, 1), 10) * parseInt(strMultiplicador.substr(i, 1), 10));
        }
        if (j == 2) {
            intSoma += (2 * intDigito);
        }
        intDigito = (intSoma * 10) % 11;
        if (intDigito == 10) {
            intDigito = 0;
        }
        strControle += intDigito.toString();
        strMultiplicador = "654329876543";
    }

    if (strControle != strDV) {
        return false;
    }

    charOld = strCNPJ.charAt(0);
    todosNumsIguais = false;
    for (i=1;i<String(strCNPJ).length;i++) {
        todosNumsIguais = (charOld == strCNPJ.charAt(i));
        if (!todosNumsIguais) {
            return true; 
        } else {
            charOld = strCNPJ.charAt(i);
        }
    }
    return false;
}

/**
 * Verifica se o valor do campo é válido
 */
function CCNPJ_VerificaValor(ctrl) {
    //Se não for válido, limpa o campo e mostra uma mensagem
    if (!CCNPJ_isCNPJValido(ctrl.value)) {
        alert ("O CNPJ digitado não é válido. Valor digitado: " + ctrl.value + ".");
        ctrl.focus();
        return false;
    }
    return true;
}
    
/** 
 * Tratamento de digitação no componente.
 */
function CCNPJ_KPS(ctrl, event) {
    ctrl.setAttribute("formato","00.000.000/0000-00");
    CM_KPS(ctrl, event);
}

/**
 * Trata a digitação no campo.
 */
function CCNPJ_KDN(ctrl, event) {
    ctrl.setAttribute("formato","00.000.000/0000-00");
    CM_KDN(ctrl, event)
}

/** Trata a saída do campo para não permitir que o campo fique com valores inválidos **/
function CCNPJ_BLR(ctrl) {
    CCNPJ_VerificaValor(ctrl);
}
