﻿// ######################### validar somente numeros #################################
// como usar: onKeyPress="return validaTecla(this, event)"

function isNum(caractere) {
    var strValidos = "0123456789"
    if (strValidos.indexOf(caractere) == -1)
        return false;
    return true;
}

function validaTecla(campo, event) {
    var BACKSPACE = 8;
    var key;
    var tecla;
    CheckTAB = true;

    if (navigator.appName.indexOf("Netscape") != -1)
        tecla = event.which;
    else
        tecla = event.keyCode;

    key = String.fromCharCode(tecla);
    //alert( 'key: ' + tecla + ' -> campo: ' + campo.value);
    if (tecla == 13)
        return false;

    if (tecla == BACKSPACE)
        return true;
    return (isNum(key));
}
//############################### fim somente numeros ########################################



//############################### mascara para telefone ######################################
// como usar: onblur="vtelefone(this.id);" onclick="vtelefone(this.id);" onKeyDown="vtelefone(this.id);" onKeyUp="vtelefone(this.id);"

var digits = true;
function vtelefone(id,e) {
    /*/texta a tecla precionda e o navegador
    var tecla;
    if (navigator.appName.indexOf("Netscape") != -1)
        tecla = e.which;
    else
        tecla = e.keyCode;

    if (tecla == 0) return true; // 0
    if (tecla == 37) return true; // 0
    if (tecla == 13) return true; // Tecla Enter
    if (tecla == 8) return true; // Tecla Backspace */

    campo = document.getElementById(id);
    tamanho = campo.value.replace('(', '').replace(')', '').replace('-', '');
    if (campo.value != '' && !(BrowserDetect.browser == "Explorer" && BrowserDetect.version <= 7)) {
        if (tamanho.length <= 10) {
            if (digits) {
                if (campo.value.length == 1 && campo.value[0] != '(') {
                    var str = campo.value[0];
                    campo.value = "(" + str;
                }
                if (campo.value.length == 4 && campo.value[3] != ')') {
                    var str = campo.value[3];
                    campo.value = campo.value.substr(0, 3) + ")" + str;
                }
                if (campo.value.length == 9 && campo.value[8] != '-') {
                    var str = campo.value[8];
                    campo.value = campo.value.substr(0, 8) + "-" + str;
                }
                if (campo.value.length == 14) {
                    var str = campo.value[13];
                    campo.value = campo.value.substr(0, 13);
                }
            }
        }
        else 
        if (tamanho.length = 11) {
            if (campo.value.length == 14) {
                var str = campo.value[13];
                campo.value = campo.value.substr(0, 13);
            }
        
        }
    }
}

//############################ fim mascara telefone ##########################


//############################### mascara para DATA ######################################
// como usar: onblur="check_date(this.id);" onclick="vdata(this.id);" onKeyDown="vdata(this.id);" onKeyUp="vdata(this.id);"

function vdata(id) {
    campo = document.getElementById(id);
    tamanho = campo.value.replace('.', '').replace('-', '');
    if (campo.value != '' && !(BrowserDetect.browser == "Explorer" && BrowserDetect.version <= 7)) {
        if (tamanho.length <= 8) {
            if (digits) {
                if (campo.value.length == 3 && campo.value[2] != '/') {
                    var str = campo.value[2];
                    campo.value = campo.value.substr(0, 2) + "/" + str;
                }
                if (campo.value.length == 6 && campo.value[5] != '/') {
                    var str = campo.value[5];
                    campo.value = campo.value.substr(0, 5) + "/" + str;
                }
            }
        }
        else
            if (tamanho.length = 9) {
                if (campo.value.length == 11) {
                    var str = campo.value[10];
                    campo.value = campo.value.substr(0, 10);
                }

            }
    }
}



function check_date(DATA) {
    var expReg = /^(([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/[1-2][0-9]\d{2})$/;
    var msgErro = 'Formato inválido de data.';
//    var vdt = new Date(); 
//    var vdia = vdt.getDate.();
//    var vmes = vdt.getMonth();
//    var vano = vdt.getYear();
    if ((DATA.value.match(expReg)) && (DATA.value!='')){
        var dia = DATA.value.substring(0,2);
        var mes = DATA.value.substring(3,5);
        var ano = DATA.value.substring(6, 10);
//        alert(dia + mes + ano);
//        alert(vdia +"&"+ vmes +"&"+ vano);  
        if((mes==04 && dia > 30) || (mes==06 && dia > 30) || (mes==09 && dia > 30) || (mes==11 && dia > 30)){
            alert("Dia incorreto !!! O mês especificado contém no máximo 30 dias.");
            DATAA.focus();
            return false;
        }
        else{ //1
            if(ano%4!=0 && mes==2 && dia>28){
                alert("Data incorreta!! O mês especificado contém no máximo 28 dias.");
                DATA.focus();
                return false;
            }
            else{ //2
                if(ano%4==0 && mes==2 && dia>29){
                alert("Data incorreta!! O mês especificado contém no máximo 29 dias.");
                DATA.focus();
                return false;
                } else{/* //3
                    if (ano > vano) {
                        alert("Data incorreta!! Ano informado maior que ano atual.");
                        DATA.focus();
                        return false;
                    }else{ //4
                        //alert ("Data correta!");
                    */    return true;
                    //} //4-else
                } //3-else
            }//2-else
        }//1-else
    } else { //5
        alert(msgErro);
        DATA.focus();
        return false;
    } //5-else
}


//############################ fim mascara DATA ##########################




















//############################ mascara para dinheiro ######################################
// como usar: onKeyPress="return(MascaraMoeda(this,'.',',',event))"

function MascaraMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e) {
    var sep = 0;
    var key = '';
    var i = j = 0;
    var len = len2 = 0;
    var strCheck = '0123456789';
    var aux = aux2 = '';
    //variabel whichcode recebe a tecla se o navegador não for IExplorer
    var whichCode = (window.Event) ? e.which : e.keyCode;
    //se nao tiver valor, quer dizer que o navegador é Iexplorer
    if (typeof whichCode == 'undefined') { 
        whichCode = /*(window.Event) ? e.which :*/e.keyCode;
    }
    // alert('Código:'+whichCode);
    if (whichCode == 0) return true; // 0
    if (whichCode == 13) return true; // Tecla Enter
    if (whichCode == 8) return true; // Tecla Backspace

    key = String.fromCharCode(whichCode); // Valor para o código da Chave
    if (strCheck.indexOf(key) == -1) return false; // Chave inválida
    len = objTextBox.value.length;
    for (i = 0; i < len; i++)
        if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break;
    aux = '';
    for (; i < len; i++)
        if (strCheck.indexOf(objTextBox.value.charAt(i)) != -1) aux += objTextBox.value.charAt(i);
    aux += key;
    len = aux.length;
    if (len == 0) objTextBox.value = '';
    if (len == 1) objTextBox.value = '0' + SeparadorDecimal + '0' + aux;
    if (len == 2) objTextBox.value = '0' + SeparadorDecimal + aux;
    if (len > 2) {
        aux2 = '';
        for (j = 0, i = len - 3; i >= 0; i--) {
            if (j == 3) {
                aux2 += SeparadorMilesimo;
                j = 0;
            }
            aux2 += aux.charAt(i);
            j++;
        }
        objTextBox.value = '';
        len2 = aux2.length;
        for (i = len2 - 1; i >= 0; i--)
            objTextBox.value += aux2.charAt(i);
        objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len);
    }
    return false;
}

//############################ fim mascara dinheiro ##########################


//############################### mascara para CEP ######################################
// como usar: onblur="vcep(this.id);" onclick="vcep(this.id);" onKeyDown="vcep(this.id);" onKeyUp="vcep(this.id);"

function vcep(id) {
    campo = document.getElementById(id);
    tamanho = campo.value.replace('.', '').replace('-', '');
    if (campo.value != '' && !(BrowserDetect.browser == "Explorer" && BrowserDetect.version <= 7)) {
        if (tamanho.length <= 8) {
            if (digits) {
                if (campo.value.length == 3 && campo.value[2] != '.') {
                    var str = campo.value[2];
                    campo.value = campo.value.substr(0, 2) + "." + str;
                }
                if (campo.value.length == 7 && campo.value[6] != ')') {
                    var str = campo.value[6];
                    campo.value = campo.value.substr(0, 6) + "-" + str;
                }
            }
        }
        else
            if (tamanho.length = 9) {
                if (campo.value.length == 11) {
                    var str = campo.value[10];
                    campo.value = campo.value.substr(0, 10);
                }

            }
    }
}

//############################ fim mascara CEP ##########################

//############################ mascara CNPJ ##################################
//como usar: onblur="maskcpfcnpj(this.id);" onchange="validarcpfcnpj(this.id);" onclick="maskcpfcnpj(this.id);" onKeyDown="maskcpfcnpj(this.id);" onKeyUp="maskcpfcnpj(this.id);" onKeyPress="return validaTecla(this, event);"

function Mascara(caminho) {
    if (BrowserDetect.browser == "Explorer" && BrowserDetect.version <= 7) {

    }
}


var ndigito = true;
function maskcpfcnpj(id) {
    campo = document.getElementById(id);
    tamanho = campo.value.replace('.', '').replace('-', '').replace('.', '').replace('/', '');
    if (campo.value != '' && !(BrowserDetect.browser == "Explorer" && BrowserDetect.version <= 7)) {
        if (tamanho.length <= 11) //mascara para o cpf
        {
            if (ndigito) {
                if (campo.value.length == 4 && campo.value[3] != '.') {
                    var str = campo.value[3];
                    campo.value = campo.value.substr(0, 3) + "." + str;
                }
                if (campo.value.length == 8 && campo.value[7] != '.') {
                    var str = campo.value[7];
                    campo.value = campo.value.substr(0, 7) + "." + str;
                    //campo.value += ".";
                }
                if (campo.value.length == 12 && campo.value[11] != '-') {
                    var str = campo.value[11];
                    campo.value = campo.value.substr(0, 11) + "-" + str;
                    //campo.value += "-";
                }
            } else {
                if (tamanho.length == 11) {
                    var cnpj_original = campo.value.replace('.', '').replace('-', '').replace('.', '').replace('/', '');
                    var cnpj = cnpj_original.substr(0, 3) + "." +
				    cnpj_original.substr(3, 3) + "." +
				    cnpj_original.substr(6, 3) + "-" +
				    cnpj_original.substr(9, 2);
                    campo.value = cnpj;
                    ndigito = true;
                } else {
                    var cnpj_original = campo.value.replace('.', '').replace('-', '').replace('.', '').replace('/', '');
                    var cnpj = cnpj_original.substr(0, 3) + ".";
                    ndigito = true;
                }
            }
        }
        else if (tamanho.length == 12) //mascara para o cnpj
        {
            var cnpj_original = campo.value.replace('.', '').replace('-', '').replace('.', '').replace('/', '');
            var cnpj = cnpj_original.substr(0, 2) + "." +
			cnpj_original.substr(2, 3) + "." +
			cnpj_original.substr(5, 3) + "/" +
			cnpj_original.substr(8, 4);
            campo.value = cnpj;
            ndigito = false;
        }
        else //mascara para o cnpj
        {
            if (campo.value.length == 3 && campo.value[2] != '.') {
                var str = campo.value[2];
                campo.value = campo.value.substr(0, 3) + "." + str;
            }
            if (campo.value.length == 7 && campo.value[6] != '.') {
                var str = campo.value[6];
                campo.value = campo.value.substr(0, 6) + "." + str;
            }
            if (campo.value.length == 11 && campo.value[11] != '/') {
                var str = campo.value[11];
                campo.value = campo.value.substr(0, 10) + "/" + str;
            }
            if (campo.value.length == 16 && campo.value[15] != '/') {
                var str = campo.value[15];
                campo.value = campo.value.substr(0, 15) + "-" + str;
            }
        }
    }
}

//####################################### fim mascara CNPJ ########################


//####################################### valida cpf ##############################

function valida_cpf(cpf) {
    if (cpf != '99999999999') {
        var numeros, digitos, soma, i, resultado, digitos_iguais;
        digitos_iguais = 1;
        if (cpf.length < 11)
            return false;
        for (i = 0; i < cpf.length - 1; i++)
            if (cpf.charAt(i) != cpf.charAt(i + 1)) {
                digitos_iguais = 0;
                break;
            }
        if (!digitos_iguais) {
            numeros = cpf.substring(0, 9);
            digitos = cpf.substring(9);
            soma = 0;
            for (i = 10; i > 1; i--)
                soma += numeros.charAt(10 - i) * i;
            resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
            if (resultado != digitos.charAt(0))
                return false;
            numeros = cpf.substring(0, 10);
            soma = 0;
            for (i = 11; i > 1; i--)
                soma += numeros.charAt(11 - i) * i;
            resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
            if (resultado != digitos.charAt(1))
                return false;
            return true;
        }
        else
            return false;
    }
    else
        return true;
}
//###################################### fim valida CPF #######################


//###################################### valida CNPJ ##########################
function valida_cnpj(cnpj) {
    var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;
    digitos_iguais = 1;
    if (cnpj.length < 14 && cnpj.length < 15)
        return false;
    for (i = 0; i < cnpj.length - 1; i++)
        if (cnpj.charAt(i) != cnpj.charAt(i + 1)) {
            digitos_iguais = 0;
            break;
        }
    if (!digitos_iguais) {
        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;
    }
    else
        return false;
}


function validarcpfcnpj(id) {
    cpfcnpj = document.getElementById(id);
    var correto = false;
    var valor = cpfcnpj.value.replace('.', '').replace('-', '').replace('/', '').replace('.', '');
    if (valor != '') {
        if (valor.length == 11) {
            correto = valida_cpf(valor);
            if (!correto) {
                alert('CPF incorreto!');
                cpfcnpj.value = '';
            } else {
                document.getElementById('btnValidar').click();
            }
        } else if (valor.length == 14) {
            correto = valida_cnpj(valor);
            if (!correto) {
                alert('CNPJ incorreto!');
                cpfcnpj.value = '';
            } else {
                document.getElementById('btnValidar').click();
            }
        } else {
            alert('CPF ou CNPJ em formato incorreto!');
            cpfcnpj.value = '';
        }
    }
}


function validarcpfcnpjsw(id) {
    cpfcnpj = document.getElementById(id);
    var correto = false;
    var valor = cpfcnpj.value.replace('.', '').replace('-', '').replace('/', '').replace('.', '');
    if (valor != '') {
        if (valor.length == 11) {
            correto = valida_cpf(valor);
            if (!correto) {
                alert('CPF incorreto!');
                cpfcnpj.value = '';
            } else {
                document.getElementById('btnValidar').click();
            }
        } else if (valor.length == 14) {
            correto = valida_cnpj(valor);
            if (!correto) {
                alert('CNPJ incorreto!');
                cpfcnpj.value = '';
            } else {
                document.getElementById('btnValidar').click();
            }
        } else {
            alert('CPF ou CNPJ em formato incorreto!');
            cpfcnpj.value = '';
        }
    }
}
