//validação de cpf inicio
function TestaCPF(elemento) {
    cpf = elemento.value;
    cpf = cpf.replace(/[^\d]+/g, '');
    if (cpf === '') {
        //alert('CPF inválido ' + cpf);
         return $("#cpf").addClass("form-control is-invalid");
    }
    // Elimina CPFs invalidos conhecidos
    if (cpf.length !== 11 ||
            cpf === "00000000000" ||
            cpf === "11111111111" ||
            cpf === "22222222222" ||
            cpf === "33333333333" ||
            cpf === "44444444444" ||
            cpf === "55555555555" ||
            cpf === "66666666666" ||
            cpf === "77777777777" ||
            cpf === "88888888888" ||
            cpf === "99999999999\n{") {
        //alert('CPF inválido: ' + cpf);
        elemento.setAttribute("style","border-color: red;");
        elemento.setAttribute("data-toggle","tooltip");
        elemento.setAttribute("data-tigger","hover focus");
        elemento.setAttribute("data-placement","top");
        elemento.setAttribute("title","CPF inválido!");
//        form-control is-valid
        return $("#cpf").addClass("form-control is-invalid");
    }
    // Valida 1o digito
    add = 0;
    for (i = 0; i < 9; i++)
        add += parseInt(cpf.charAt(i)) * (10 - i);
    rev = 11 - (add % 11);
    if (rev === 10 || rev === 11)
        rev = 0;
    if (rev !== parseInt(cpf.charAt(9))) {
        //alert('CPF inválido: ' + cpf);
        elemento.setAttribute("style","border-color: red;");
        elemento.setAttribute("data-toggle","tooltip");
        elemento.setAttribute("data-tigger","hover focus");
        elemento.setAttribute("data-placement","top");
        elemento.setAttribute("title","CPF inválido!");
        return $("#cpf").addClass("form-control is-invalid");
    }
    // Valida 2o digito
    add = 0;
    for (i = 0; i < 10; i++)
        add += parseInt(cpf.charAt(i)) * (11 - i);
    rev = 11 - (add % 11);
    if (rev === 10 || rev === 11)
        rev = 0;
    if (rev !== parseInt(cpf.charAt(10))) {
        //alert('CPF inválido: ' + cpf);
        elemento.setAttribute("style","border-color: red;");
        elemento.setAttribute("data-toggle","tooltip");
        elemento.setAttribute("data-tigger","hover");
        elemento.setAttribute("data-placement","top");
        elemento.setAttribute("title","CPF inválido!");
        return $("#cpf").addClass("form-control is-invalid");
    }
    elemento.setAttribute("style","border-color: lightgreen;");
    return $("#cpf").addClass("form-control is-valid");
}

//mascara de cpf , telefone e cep inicio
function mascara(campo) {
    if (campo.id === 'Telefone') {
        if (campo.value.length === 0) {
            campo.value = '(' + campo.value;
        }
        if (campo.value.length === 3) {
            campo.value = campo.value + ') ';
        }

        if (campo.value.length === 9) {
            if (campo.value[5] < 6) {
                campo.value = campo.value + '-';
            }
        } else if (campo.value.length === 10) {
            campo.value = campo.value + '-';
        }
    } else if (campo.getAttribute("class").includes('cpf')||campo.id.includes('CPF') || campo.id.includes('fiscalCPF') ) {
//        if (campo.value.length === 14) {
//            document.getElementById("Nome").focus();
//        }
        if (campo.value.length === 3) {
            campo.value = campo.value + '.';
        }
        if (campo.value.length === 7) {
            campo.value = campo.value + '.';
        }

        if (campo.value.length === 11) {
            campo.value = campo.value + '-';
        }
    } else if (campo.id === 'cep') {
        if (campo.value.length === 5) {
            campo.value = campo.value + '-';
        }
    } else if(campo.getAttribute("class").includes("cnpj")){
        if (campo.value.length === 2) {
            campo.value = campo.value + '.';
        }
        if (campo.value.length === 6) {
            campo.value = campo.value + '.';
        }
        if (campo.value.length === 10) {
            campo.value = campo.value + '/';
        }
        if (campo.value.length === 15) {
            campo.value = campo.value + '-';
        }
    }
}

//apenas numeros nos formularios
function somenteNumeros(e) {
    var charCode = e.charCode ? e.charCode : e.keyCode;
    // charCode 8 = backspace
    // charCode 9 = tab
    if (charCode !== 8 && charCode !== 9) {
        // charCode 48 equivale a 0
        // charCode 57 equivale a 9
        if (charCode < 48 || charCode > 57) {
            return false;
        }
    }
}

//fim

function validarCNPJ(cnpj) {
    cnpj = cnpj.replace(/[^\d]+/g,'');

    if(cnpj == '') return false;

    if (cnpj.length != 14)
        return false;

    // Elimina CNPJs invalidos conhecidos
    if (cnpj == "00000000000000" ||
        cnpj == "11111111111111" ||
        cnpj == "22222222222222" ||
        cnpj == "33333333333333" ||
        cnpj == "44444444444444" ||
        cnpj == "55555555555555" ||
        cnpj == "66666666666666" ||
        cnpj == "77777777777777" ||
        cnpj == "88888888888888" ||
        cnpj == "99999999999999")
        return false;

    // Valida DVs
    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;

}


function validaFormato(element) {
    var strDocument = (element.value).replace(/\D/g, '');
    var sizeStrDocument = (strDocument).length;
    var RegExp = /(^[\d]{3}[\d]{3}[\d]{3}[\d]{2}$)|(^[\d]{2}[\d]{3}[\d]{3}[\d]{4}[\d]{2}$)/;
    var divResultado = document.getElementById("divResultado");
//    var input = document.getElementById("cpf");

    if (RegExp.test(strDocument) == true) {
        if (sizeStrDocument == 11) {
            if (!validaCPF(strDocument)) {
                document.querySelector('#cpf').classList.add("is-invalid");
                element.value = mascaraCPF(strDocument);
                window.alert('Digite um CPF vÃ¡lido!');
                document.getElementById('cpf').value = '';
                document.querySelector('#cpf').classList.remove("is-invalid");
                document.querySelector('#cpf').classList.remove("is-valid");
                element.select();

                return false;
            } else
            {

                document.querySelector('#cpf').classList.add("is-valid");
                element.value = mascaraCPF(strDocument);
                return true;
            }
        }
        if (sizeStrDocument == 14) {
            if (!validaCNPJ(strDocument)) {

                element.value = mascaraCPF(strDocument);
                document.querySelector('#cpf').classList.add("is-invalid");
                window.alert('Digite um CNPJ vÃ¡lido!');
                document.getElementById('cpf').value = '';
                document.querySelector('#cpf').classList.remove("is-invalid");
                element.select();
                return false;
            } else {
                document.querySelector('#cpf').classList.add("is-valid");
                element.value = mascaraCNPJ(strDocument);
                return true;
            }
        }
    } else {
        document.querySelector('#cpf').classList.add("is-invalid");
        window.alert('Digite um CPF ou um CNPJ!');
        document.getElementById('cpf').value = '';
        document.querySelector('#cpf').classList.remove("is-invalid");
        document.querySelector('#cpf').classList.remove("is-valid");
        return false;
    }
}

// FunÃ§Ã£o que valida o CPF
function validaCPF(strDocument) {
    var soma;
    var resto;
    soma = 0;

    // Elimina CPF's invalidos conhecidos
    if (strDocument == "00000000000" ||
            strDocument == "11111111111" ||
            strDocument == "22222222222" ||
            strDocument == "33333333333" ||
            strDocument == "44444444444" ||
            strDocument == "55555555555" ||
            strDocument == "66666666666" ||
            strDocument == "77777777777" ||
            strDocument == "88888888888" ||
            strDocument == "99999999999")
        return false;

    for (i = 1; i <= 9; i++)
        soma = soma + parseInt(strDocument.substring(i - 1, i)) * (11 - i);
    resto = (soma * 10) % 11;

    if ((resto == 10) || (resto == 11))
        resto = 0;
    if (resto != parseInt(strDocument.substring(9, 10)))
        return false;

    soma = 0;
    for (i = 1; i <= 10; i++)
        soma = soma + parseInt(strDocument.substring(i - 1, i)) * (12 - i);
    resto = (soma * 10) % 11;

    if ((resto == 10) || (resto == 11))
        resto = 0;
    if (resto != parseInt(strDocument.substring(10, 11)))
        return false;
    return true;
}

// FunÃ§Ã£o que valida o CNPJ
function validaCNPJ(CNPJ) {
    var validaArray = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
    var primeiroDigito = new Number;
    var segundoDigito = new Number;
    var digito = Number(eval(CNPJ.charAt(12) + CNPJ.charAt(13)));

    for (i = 0; i < validaArray.length; i++) {
        primeiroDigito += (i > 0 ? (CNPJ.charAt(i - 1) * validaArray[i]) : 0);
        segundoDigito += CNPJ.charAt(i) * validaArray[i];
    }
    primeiroDigito = (((primeiroDigito % 11) < 2) ? 0 : (11 - (primeiroDigito % 11)));
    segundoDigito = (((segundoDigito % 11) < 2) ? 0 : (11 - (segundoDigito % 11)));

    resultado = (((primeiroDigito * 10) + segundoDigito)) == digito ? true : false;
    return resultado;
}

// FunÃ§Ã£o de mascara para o CPF
function mascaraCPF(CPF) {
    return CPF.substring(0, 3) + "." + CPF.substring(3, 6) + "." + CPF.substring(6, 9) + "-" + CPF.substring(9, 11);
}

//	FunÃ§Ã£o de mascara para o CNPJ
function mascaraCNPJ(CNPJ) {
    return CNPJ.substring(0, 2) + "." + CNPJ.substring(2, 5) + "." + CNPJ.substring(5, 8) + "/" + CNPJ.substring(8, 12) + "-" + CNPJ.substring(12, 14);
}

// FunÃ§Ã£o que bloqueia teclas nÃ£o numÃ©ricas
function apenasNumeros(e)
{
    if (document.all) {
        var evt = event.keyCode;
    } else {
        var evt = e.charCode;
    }
    if (evt < 20 || (evt > 47 && evt < 58)) {
        return true;
    }
    return false;
}
function mascara(campo) {
    if (campo.id === 'Telefone') {
        if (campo.value.length === 0) {
            campo.value = '(' + campo.value;
        }
        if (campo.value.length === 3) {
            campo.value = campo.value + ') ';
        }

        if (campo.value.length === 9) {
            if (campo.value[5] < 6) {
                campo.value = campo.value + '-';
            }
        } else if (campo.value.length === 10) {
            campo.value = campo.value + '-';
        }
    }
}

