﻿function filterValue(Valor) {
    var s = "";
    var cp = "";
    var invalidos = "AÁÀÃÂÄBCÇDEÉÈÊËFGHIÍÌÎÏJKLMNOÓÒÕÔÖPQRSTUÚÙÛÜVWXYZaáàãâäbcçdeéèêëfghiíìîïjklmnoóòõôöpqrstuúùûüvwxyz`´^~¨'\"@#$%¨&*()-_+={}[]<>:;?,./|";

    vr = Valor;
    tam = vr.length;
    for (i = 0; i < tam; i++) {
        if (invalidos.indexOf(vr.substring(i, i + 1)) == -1) {
            s = s + vr.substring(i, i + 1);
        }
    }

    return s
}

function IsEmail(Email) {
    var blnInvalidos = false;
    var cp = "";
    var invalidos = "ÁÀÃÂÄÇÉÈÊËÍÌÎÏÓÒÕÔÖÚÙÛÜáàãâäçéèêëíìîïóòõôöúùûü`´^~¨'\"#$%¨&*()-_+={}[]<>:;?!,/|";
    var obrigatorios = "@."

    tam = Email.length;

    for (i = 0; i < tam; i++) {
        if (invalidos.indexOf(Email.substring(i, i + 1)) != -1) {
            blnInvalidos = true;
        }
    }

    if (blnInvalidos)
        return false;

    if (Email.indexOf("@") == -1)
        return false;

    if (Email.indexOf(".") == -1)
        return false;

    return true;
}

function IsCPF(CPF) {
    var varCPF = "";
    var indSoma, varSoma, varDigito1, varvarDigito2;

    varCPF = filterValue(CPF);

    if (varCPF.length != 11)
        return (false);

    /* Evitar que o 00000000000 passe pelo teste */
    if (varCPF == "00000000000" || varCPF == "11111111111" || varCPF == "22222222222" || varCPF == "33333333333" || varCPF == "44444444444" || varCPF == "55555555555"
        || varCPF == "66666666666" || varCPF == "77777777777" || varCPF == "88888888888" || varCPF == "99999999999")
        return (false);

    /* Verificar o primeiro digito */
    varSoma = 0;

    for (indSoma = 0; indSoma <= 8; indSoma++) { varSoma = varSoma + (parseInt(varCPF.charAt(indSoma)) * (indSoma + 1)); }

    /* Obter o resto da divisao da soma com 11 */
    varDigito1 = varSoma % 11;

    /* Caso seja 10, deve-se transformar para 0 */
    if (varDigito1 == 10)
        varDigito1 = 0;

    /* Verificar o segundo digito */
    varSoma = 0;

    for (indSoma = 0; indSoma <= 7; indSoma++) { varSoma = varSoma + (parseInt(varCPF.charAt(indSoma + 1)) * (indSoma + 1)); }

    varSoma = varSoma + (varDigito1 * 9);

    /* Obter o resto da divisao da soma com 11 */
    varDigito2 = varSoma % 11;

    /* Caso seja 10, deve-se transformar para 0 */
    if (varDigito2 == 10) { varDigito2 = 0; }

    /* Fazer a validacao dos digitos com os digitos verificadores do CPF */
    if (varDigito1 == parseInt(varCPF.charAt(9)) && varDigito2 == parseInt(varCPF.charAt(10))) { return (true); }

    return (false);
}

function IsCNPJ(CNPJ) {
    var varCNPJ = "";
    var indSoma, varSoma, varDigito1, varDigito2;

    varCNPJ = filterValue(CNPJ);

    /* Validar o tamanho */
    if (varCNPJ.length != 14)
        return (false);

    /* Verificar o primeiro digito */
    varSoma = 0;
    varMult = 5;

    for (indSoma = 0; indSoma < 12; indSoma++) {
        if (varMult == 1) { varMult = 9 };
        varSoma += parseInt(varCNPJ.charAt(indSoma)) * varMult;
        varMult -= 1;
    }

    varDigito1 = varSoma % 11;

    if (varDigito1 <= 1) { varDigito1 = 0; } else { varDigito1 = 11 - varDigito1; }

    /* Verificar o segundo digito */
    varSoma = 0;
    varMult = 6;

    for (indSoma = 0; indSoma < 12; indSoma++) {
        if (varMult == 1) { varMult = 9 };
        varSoma += parseInt(varCNPJ.charAt(indSoma)) * varMult;
        varMult -= 1;
    }

    varSoma += varDigito1 * 2;
    varDigito2 = varSoma % 11;

    if (varDigito2 <= 1) { varDigito2 = 0; } else { varDigito2 = 11 - varDigito2; }

    /* Fazer a validacao dos digitos com os digitos verificadores do CNPJ */
    if (parseInt(varCNPJ.charAt(12)) == varDigito1 && parseInt(varCNPJ.charAt(13)) == varDigito2) { return (true) };

    return (false);
}

function IsNumber(n) {
    return !isNaN(parseFloat(n)) && isFinite(n);
}

function IsDate(Date) {
    var Dia = Date.substring(0, 2);
    var Mes = Date.substring(3, 5);
    var Ano = Date.substring(6, 10);
    UltDia = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

    /* Se o primeiro é numero */
    if (IsNumber(Dia))
        if (IsNumber(Mes))
            if (Date.charAt(2) == "/")
                if (parseFloat(Mes) > 0 && parseFloat(Mes) < 13)
                    if (parseFloat(Dia) > 0 && parseFloat(Dia) <= UltDia[parseFloat(Mes) - 1])
                        if (Date.charAt(5) == "/")
                            if (parseFloat(Ano) >= 0)
                                return (true);
                            else
                                return (false);
                        else
                            return (false);
                    else
                        return (false);
                else
                    return (false);
            else
                return (false);
        else
            return (false);
}

function IsTime(Time) {
    var Hora = Time.substring(0, 2);
    var Minuto = Time.substring(3, 5);

    if (IsNumber(Hora) && parseInt(Hora) >= 0 && parseInt(Hora) < 24)
        if (IsNumber(Minuto) && parseInt(Minuto) >= 0 && parseInt(Minuto) < 60)
            return (true);
        else
            return (false);
    else
        return (false);
}

function IsTimeComplete(Time) {
    var Hora = Time.substring(0, 2);
    var Minuto = Time.substring(3, 5);
    var Segundo = Time.substring(6, 8);

    if (IsNumber(Hora) && parseInt(Hora) >= 0 && parseInt(Hora) < 24)
        if (IsNumber(Minuto) && parseInt(Minuto) >= 0 && parseInt(Minuto) < 60)
            if (IsNumber(Segundo) && parseInt(Segundo) >= 0 && parseInt(Segundo) < 60)
                return (true);
            else
                return (false);
        else
            return (false);
    else
        return (false);
}

function ValidateDocument(varField) {
    if (varField.value.length == 14) {
        if (varField.value != "___.___.___-__" && !IsCPF(varField.value)) {
            window.alert("CPF inválido!");
            varField.focus();
            varField.value = "";
        }
    }
    else {
        if (varField.value != "__.___.___/____-__" && !IsCNPJ(varField.value)) {
            window.alert("CNPJ inválido!");
            varField.focus();
            varField.value = "";
        }
    }
}

function ValidateEmail(varField) {
    if (varField.value.length > 0) {
        if (!IsEmail(varField.value)) {
            window.alert("E-mail inválido!");
            varField.focus();
            varField.value = "";
        }
    }
}
