﻿function validaCPF(cpf) {
    erro = new String;
    if (cpf.length < 11) 
        erro += "Sao necessarios 11 digitos para verificacao do CPF! \n\n";
    var nonNumbers = /\D/;
    if (nonNumbers.test(cpf)) erro += "A verificacao de CPF suporta apenas numeros! \n\n";
    if (cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999") {
        erro += "Numero de CPF invalido!"
    }
    var a = [];
    var b = new Number;
    var c = 11;
    for (i = 0; i < 11; i++) {
        a[i] = cpf.charAt(i);
        if (i < 9) b += (a[i] * --c);
    }
    if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11 - x }
    b = 0;
    c = 11;
    for (y = 0; y < 10; y++) b += (a[y] * c--);
    if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11 - x; }
    if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10])) {
        erro += "Digito verificador com problema!";
    }
    return erro;
}

function validaCNPJ(cnpj) {

    var i = 0;
    var l = 0;
    var strNum = "";
    var strMul = "6543298765432";
    var character = "";
    var iValido = 1;
    var iSoma = 0;
    var strNum_base = "";
    var iLenNum_base = 0;
    var iLenMul = 0;
    var iSoma = 0;
    var strNum_base = 0;
    var iLenNum_base = 0;

    if (cnpj == "")
        return ("Preencha o campo CNPJ.");

    l = cnpj.length;
    for (i = 0; i < l; i++) {
        caracter = cnpj.substring(i, i + 1)
        if ((caracter >= '0') && (caracter <= '9'))
            strNum = strNum + caracter;
    };

    if (strNum.length != 14)
        return ("CNPJ deve conter 14 caracteres.");

    strNum_base = strNum.substring(0, 12);
    iLenNum_base = strNum_base.length - 1;
    iLenMul = strMul.length - 1;
    for (i = 0; i < 12; i++)
        iSoma = iSoma +
                        parseInt(strNum_base.substring((iLenNum_base - i), (iLenNum_base - i) + 1), 10) *
                        parseInt(strMul.substring((iLenMul - i), (iLenMul - i) + 1), 10);

    iSoma = 11 - (iSoma - Math.floor(iSoma / 11) * 11);
    if (iSoma == 11 || iSoma == 10)
        iSoma = 0;

    strNum_base = strNum_base + iSoma;
    iSoma = 0;
    iLenNum_base = strNum_base.length - 1
    for (i = 0; i < 13; i++)
        iSoma = iSoma +
                        parseInt(strNum_base.substring((iLenNum_base - i), (iLenNum_base - i) + 1), 10) *
                        parseInt(strMul.substring((iLenMul - i), (iLenMul - i) + 1), 10)

    iSoma = 11 - (iSoma - Math.floor(iSoma / 11) * 11);
    if (iSoma == 11 || iSoma == 10)
        iSoma = 0;
    strNum_base = strNum_base + iSoma;
    if (strNum != strNum_base)
        return ("CNPJ inválido.");

    return ("");

}

function csvCNPJ(source, arguments) {
    var valor = new String;
    valor = arguments.Value.toString();
    valor = valor.replace(".", "");
    valor = valor.replace(".", "");
    valor = valor.replace("-", "");
    valor = valor.replace("/", "");
    if (validaCNPJ(valor).length > 0) {
        arguments.IsValid = false;
        return false;
    }
    else {
        arguments.IsValid = true;
        return true;
    }
}

function csvCPF(source, arguments) {
    var valor = new String;
    valor = arguments.Value.toString();
    valor = valor.replace(".", "");
    valor = valor.replace(".", "");
    valor = valor.replace("-", "");
    if (validaCPF(valor).length > 0) {
        arguments.IsValid = false;
        return false;
    }
    else {
        arguments.IsValid = true;
        return true;
    }
}


