﻿function FormatarMascara(controle, teclapres, mascara) {
    if (somenteNumeros(controle, teclapres)) {
        var campo = controle.value.length;
        var saida = mascara.substring(0, 1);
        var texto = mascara.substring(campo);
        var navegador = navigator.appName

        if (texto.substring(0, 1) != saida) {
            if (navegador == "Netscape") {
                if (teclapres.which == 8)
                    return true;
                else
                    controle.value += texto.substring(0, 1);
            }
            else {
                controle.value += texto.substring(0, 1);
            }
        }
        return true;
    }
    else
        return false;
}

function somenteNumeros(controle, event) {


    navegador = navigator.appName;

    if (navegador == "Microsoft Internet Explorer") {
        var tecla = event.keyCode;
    }
    else if (navegador == "Netscape") {
        var tecla = event.which;
    }
    else {
        return true;
    }
    if ((tecla > 46 && tecla < 58) || (tecla > 95 && tecla < 106) || ((tecla == 8) || (tecla == 13) || (tecla == 9) || (tecla == 0))) {
        return true;
    }
    else {
        return false;
    }
}

function FormataData(controle, teclapres) {

    if (somenteNumeros(controle, teclapres)) {
        navegador = navigator.appName;

        if (navegador == "Microsoft Internet Explorer") {
            var tecla = event.KeyCode;
        }
        else if (navegador == "Netscape") {
            var tecla = teclapres.which;
        }
        vr = controle.value;
        vr = vr.replace(".", "");
        vr = vr.replace("/", "");
        vr = vr.replace("/", "");
        tam = vr.length + 1;

        if (tam <= 6) {
            if (tecla != 9 && tecla != 8) {
                if (tam > 2 && tam < 5)
                    controle.value = vr.substr(0, tam - 2) + '/' + vr.substr(tam - 2, tam);
                if (tam >= 5 && tam <= 10)
                    controle.value = vr.substr(0, 2) + '/' + vr.substr(2, 2) + '/' + vr.substr(4, 4);
            }
        }
        return true;
    }
    else {
        return false;
    }
}

function ChecarCPF(Controle) {
    if (!ValidarCPF(Controle)) {
        alert('CPF Inválido');
        Controle.value = '';
        Controle.focus();
    }
}

function ChecarCNPJ(Controle) {
    if (ValidarCNPJ(Controle)) {
        alert('CNPJ Inválido');
        Controle.value = '';
        Controle.focus();
    }
}

function ValidarCPF(Controle) {
    var char_valido = 0,
		char_invalido = 0,
		digito1,
		digito2, msgaux, texto, erro,
		soma_digito1 = 0,
		soma_digito2 = 0;

    var conteudo = Controle.value;
    conteudo = remove(conteudo, '.');
    conteudo = remove(conteudo, '-');

    erro = false;

    if (conteudo.length == 0)
        return true;
    while (conteudo.length < 11)
        conteudo = 0 + conteudo;

    if (conteudo.length > 11)
        erro = true;

    if (conteudo == '00000000000' || conteudo == '11111111111' ||
    	conteudo == '22222222222' || conteudo == '33333333333' ||
		conteudo == '44444444444' || conteudo == '55555555555' ||
		conteudo == '66666666666' || conteudo == '77777777777' ||
		conteudo == '99999999999')
        erro = true;

    if (conteudo.length == 11) {
        for (var i = 0; i <= conteudo.length - 1; i++)
            if (conteudo.charAt(i) >= '0' && conteudo.charAt(i) <= '9')
            char_valido = char_valido + 1;
        else
            char_invalido = char_invalido + 1;

        if (char_valido == conteudo.length) {
            for (i = 0; i < 9; i++)
                soma_digito1 += (10 - i) * (eval(conteudo.charAt(i)));

            digito1 = 11 - (soma_digito1 % 11);

            for (i = 0; i < 9; i++)
                soma_digito2 += (11 - i) * (eval(conteudo.charAt(i)));

            soma_digito2 += 2 * (eval(conteudo.charAt(9)));
            digito2 = 11 - (soma_digito2 % 11);

            if ((soma_digito1 % 11) < 2)
                digito1 = 0;

            if ((soma_digito2 % 11) < 2)
                digito2 = 0;

            if (eval(conteudo.charAt(9) != digito1) || eval(conteudo.charAt(10) != digito2))
                erro = true;
        }
        else
            erro = true;
    }

    if (erro)
        return false;

    return !(erro);
}

function ValidarCNPJ(Controle) {
    var 
					char_valido = 0,
					char_invalido = 0,
					digito1,
					digito2,
					soma_digito1 = 0,
					soma_digito2 = 0,
					valororiginal = '';

    erro = false;

    valororiginal = Controle.value;

    Controle.value = Controle.value.replace(".", "");
    Controle.value = Controle.value.replace(".", "");
    Controle.value = Controle.value.replace(".", "");
    Controle.value = Controle.value.replace(".", "");
    Controle.value = Controle.value.replace(".", "");
    Controle.value = Controle.value.replace(",", "");
    Controle.value = Controle.value.replace(",", "");
    Controle.value = Controle.value.replace(",", "");
    Controle.value = Controle.value.replace(",", "");
    Controle.value = Controle.value.replace(",", "");
    Controle.value = Controle.value.replace("-", "");
    Controle.value = Controle.value.replace("-", "");
    Controle.value = Controle.value.replace("-", "");
    Controle.value = Controle.value.replace("-", "");
    Controle.value = Controle.value.replace("-", "");
    Controle.value = Controle.value.replace("/", "");
    Controle.value = Controle.value.replace("/", "");
    Controle.value = Controle.value.replace("/", "");
    Controle.value = Controle.value.replace("/", "");
    Controle.value = Controle.value.replace("/", "");

    if (Controle.value != "") {
        while (Controle.value.length < 14)
            Controle.value = 0 + Controle.value;

        //verifica quantidade de caracteres 
        if (Controle.value.length > 14) {
            erro = true;
        }

        //verifica sequencia de caracteres repetidos							
        if (Controle.value.length == 14) {
            if (Controle.value == '00000000000000' || Controle.value == '11111111111111' ||
						    Controle.value == '22222222222222' || Controle.value == '33333333333333' ||
							Controle.value == '44444444444444' || Controle.value == '55555555555555' ||
							Controle.value == '66666666666666' || Controle.value == '77777777777777' ||
							Controle.value == '88888888888888' || Controle.value == '99999999999999') {
                erro = true;
            }

            if (erro == false) {
                //verifica se digitou apenas números
                for (var i = 0; i <= Controle.value.length - 1; i++) {
                    if (Controle.value.charAt(i) >= '0' && Controle.value.charAt(i) <= '9') {
                        char_valido = char_valido + 1;
                    }
                    else {
                        char_invalido = char_invalido + 1;
                    }
                }

                if (char_valido == Controle.value.length) {
                    for (i = 0; i < 4; i++) {
                        soma_digito1 += (5 - i) * (eval(Controle.value.charAt(i)));
                    }
                    for (i = 0; i < 8; i++) {
                        soma_digito1 += (9 - i) * (eval(Controle.value.charAt(i + 4)));
                    }
                    digito1 = 11 - (soma_digito1 % 11);

                    for (i = 0; i < 5; i++) {
                        soma_digito2 += (6 - i) * (eval(Controle.value.charAt(i)));
                    }
                    for (i = 0; i < 7; i++) {
                        soma_digito2 += (9 - i) * (eval(Controle.value.charAt(i + 5)));
                    }
                    soma_digito2 += 2 * (eval(Controle.value.charAt(12)));
                    digito2 = 11 - (soma_digito2 % 11);

                    if ((soma_digito1 % 11) < 2) {
                        digito1 = 0;
                    }
                    if ((soma_digito2 % 11) < 2) {
                        digito2 = 0;
                    }
                    if (eval(Controle.value.charAt(12) != digito1) || eval(Controle.value.charAt(13) != digito2)) {
                        erro = true;
                    }
                }
                else {
                    erro = true;
                }
            }
        }

        if (erro == false) {
            Controle.value = valororiginal;
        }

        return erro;
    }
}

function remove(str, sub) {
    i = str.indexOf(sub);
    r = "";
    if (i == -1) return str;
    r += str.substring(0, i) + remove(str.substring(i + sub.length), sub);
    return r;
}
