﻿var bln_campo_editado = false;
/*INICIO IDENTIFICAÇÃO DE BROWSER--------------------------------------------------------------
Identificação de browser
Data - 22/01/2008
-----------------------------------------------------*/
var isNav4, isNav, isIE;
if (parseInt(navigator.appVersion.charAt(0)) >= 4) {
    isNav = (navigator.appName == "Netscape") ? true : false;
    isIE = (navigator.appName.indexOf("Microsoft") != -1) ? true : false;
}

if (navigator.appName == "Netscape") {
    isNav4 = (parseInt(navigator.appVersion.charAt(0)) == 4);
}

function formatarMascara(e) {

    var src;

    src = (isNav) ? e.target : event.srcElement;

    var mask = '##/##/####';
    var i = src.value.length;
    var saida = mask.substring(0, 1);
    var texto = mask.substring(i)
    if (texto.substring(0, 1) != saida) {
        src.value += texto.substring(0, 1);
    }



}

function formatarMascaraHora(e) {

    var src;

    src = (isNav) ? e.target : event.srcElement;

    if (isNumberKey(src) == true) {

        var mask = '##:##';
        var i = src.value.length;
        var saida = mask.substring(0, 1);
        var texto = mask.substring(i)
        if (texto.substring(0, 1) != saida) {
            src.value += texto.substring(0, 1);
        }
    }
    else {
        return false;
    }
}

function isNumberKey(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57))
        return false;

    return true;
}


function val_num(strObj) {
    var obj = (isNav) ? e.target : event.srcElement;
    //v = obj.value;
    RegExp = /^[0-9]$/;

    if (!(strObj.value.toString().replace(":", "").match(RegExp))) {

        return false;
    }
    else {
        return true;
    }
}

/*FIM IDENTIFICAÇÃO DE BROWSER------------------------------------------------------------*/

/*----------------------------------------------------------------------------------------
aplicacarFormatacaoCampos - Encarregado do comportamento dos campos num formulário
Data - 22/01/2008


Descrição:
Formata os campos de um formulário HTML de acordo com o texto das primeiras três letras
do nome do campo.
		
O valores possíveis são:
* num - Numérico
* vlr - Valor
* aln - alphanumérico
* alp - alpha	
* cpf - Campo CPF
* cpj - Campo CNPJ
* pfj - campo CPFCNPJ
* eml - campo de email
* pis - campo de pis
----------------------------------------------------------------------------------------*/
function aplicacarFormatacaoCampos(objForm) {
    var i, numEl, j;
    numEl = objForm.elements.length;
    for (i = 0; i < numEl; i++) {
        var tipo, prefixo;

        if (objForm.elements[i].name == undefined) {
            prefixo = '';
        } else {
            j = objForm.elements[i].name.length;
            if ((j - 4) >= 0) { j = j - 4; }
            prefixo = objForm.elements[i].name.substr(j, 4);
        }

        switch (prefixo) {
            case "_num":  //campo numérico

                objForm.elements[i].onkeypress = soNum;
                break;

            case "_aln": //campo alfanumerico - nao permite a insercao de letras acentuadas
                objForm.elements[i].onkeypress = soAlfaNumerico;
                break;

            case "_alp": //campo alfanumerico - nao permite a insercao de letras acentuadas
                objForm.elements[i].onkeypress = soAlfa;
                break;

            case "_vlr":  //campo valor
                objForm.elements[i].onkeypress = exibirValorFormatado;
                objForm.elements[i].onkeydown = capturaCodTecla;

                if ((objForm.elements[i].maxLength == -1) || (objForm.elements[i].maxLength == 2147483647) || (objForm.elements[i].maxLength == "undefined")) {
                    objForm.elements[i].maxLength = 17
                }
                if (navigator.appName != "Netscape") {
                    objForm.elements[i].style.textAlign = "right";
                }
                break;

            case "_vus":  //campo valor
                objForm.elements[i].onkeypress = exibirValorUS;
                objForm.elements[i].onkeydown = capturaCodTeclaUS;
                break;

            case "_dtt":  //campo data

                objForm.elements[i].onkeypress = formatarMascara;
                objForm.elements[i].onkeydown = capturaCodTeclaCPData;
                objForm.elements[i].onblur = ValidaDataLib;
                objForm.elements[i].maxLength = 10
                break;

            case "_hrm":  //hora e minuto
                objForm.elements[i].onkeypress = formatarMascaraHora;
                objForm.elements[i].maxLength = 5;
                objForm.elements[i].onblur = verifica_hora;

                break;

            case "_dtm":  //campo data
                objForm.elements[i].onkeypress = exibirDataFormatadaMenor;
                objForm.elements[i].onkeydown = capturaCodTeclaCPData;
                objForm.elements[i].onfocus = limparValorLabel;
                objForm.elements[i].onblur = exibirValorLabel;
                objForm.elements[i].maxLength = 5
                break;

            case "_alf":  //campo alfa - só permite a ditação de letras sem acento
                objForm.elements[i].onkeypress = soAlfa;
                break;

            case "_eml":  //campo email - só permite a ditação de letras sem acento, números e os caracteres (@ _ - . /)
                objForm.elements[i].onkeypress = soEmail;
                break;

            case "_cnj":
                objForm.elements[i].onkeyup = "this.value = this.value.toCNPJ()";
                break;

            case "_cpf": //campo cpf - só permite valores numéricos formatando no padrão de cpf.
                objForm.elements[i].onkeypress = soCPF;
                objForm.elements[i].onkeychange = soCPF;
                objForm.elements[i].onblur = ValidaCPF;
                break;

            case "_cpj": //campo cnpj - só permite valores numéricos formatando no padrão de cnpj.
                objForm.elements[i].onkeypress = soCNPJ;
                objForm.elements[i].onkeychange = soCNPJ;
                objForm.elements[i].onblur = ValidaCNPJ;
                break;


            case "_pis": //verifica se é valido o numero do pis.
                objForm.elements[i].onblur = Validapis;
                objForm.elements[i].onkeypress = soNum;

        }
    }
}



/*INICIO - FORMATAÇÃO DE CAMPOS------------------------------------------------------------------*/
/* -----------------------------------------------------------------------------------------------
variável que armazena a tecla que foi digita pelo usuário
Essa variável é usa na função: "exibirValorFormatado"
---------------------------------------------------------------------------------------*/
var codTeclaKeyDown;


/* -----------------------------------------------------------------------------------------------
verifica se é valido o numero do pis.
Data - 20/05/2009
-----------------------------------------------------*/

function Validapis(e) {

    var obj = (isNav) ? e.target : event.srcElement;

    //verifica se é valido o numero do pis
    sString = obj.value;
    sAux = sString.substring(0, sString.length - 1);
    sDigito = sString.substring(sString.length - 1, sString.length);

    if (obj.value != "") {
        if (sCalculaDigitoMod11(sAux, 1, 2) != sDigito) {
            alert('PIS Invalido,Verifique se o número foi informado corretamente.');
            obj.value = ""
            obj.focus();
            return;
        }
    }

}



function verifica_hora() {

    var obj = (isNav) ? e.target : event.srcElement;
    sString = obj.value;

    hrs = (obj.value.substring(0, 2));
    min = (obj.value.substring(3, 5));

    situacao = "";
    // verifica data e hora 
    if ((hrs < 00) || (hrs > 23) || (min < 00) || (min > 59)) {
        situacao = "falsa";
    }

    if (obj.value == "") {
        situacao = "falsa";
    }
    if (situacao == "falsa") {
        alert("Hora inválida!");
        obj.value = ""
        obj.focus();
    }
}



function sCalculaDigitoMod11(sValor, iDigSaida, sTipoValidacao) {
    if (sTipoValidacao == 1) iCod = 12
    if (sTipoValidacao == 2) iCod = 9
    if (sTipoValidacao == 3) iCod = 10

    for (t = 1; t <= iDigSaida; t++) {
        soma = 0
        mult = 2
        for (j = sValor.length; j > 0; j--) {
            soma = soma + (mult * parseInt(sValor.substring(j, j - 1), 10))
            mult++
            if (mult > iCod) mult = 2
        }
        soma = (soma * 10) % 11
        if (soma == 10) sValor = sValor + "0"
        else sValor = sValor + soma
    }
    return sValor.substring(sValor.length - iDigSaida, sValor.length)
}


/* -----------------------------------------------------------------------------------------------
exibirValorFormatado - Encarregada de exibir uma string com formatação de valor num campo text
Data - 22/01/2008
-----------------------------------------------------*/
function exibirValorFormatado(e) {
    bln_campo_editado = true;
    var obj, tecla;
    //verificando se o que foi digitado é um número
    if (!soNumero(e)) {
        return false;
    }
    obj = (isNav) ? e.target : event.srcElement;
    codTecla = (isNav) ? e.which : event.keyCode;
    switch (codTeclaKeyDown) {
        case 8:
            obj.value = formatarValor(obj.value.substring(0, obj.value.length - 1));
            break;
        case 9:
            return true;
            break;
        case 46:
            obj.value = formatarValor(obj.value.substring(0, obj.value.length - 1));
            break;
        default:
            if ((codTecla > 47) && (codTecla < 58)) {
                if (obj.maxLength > obj.value.length) {
                    obj.value = formatarValor(obj.value + String.fromCharCode(codTecla));
                }
            }
    }
    return false;
}

function exibirValorUS(e) {
    bln_campo_editado = true;
    var obj, tecla;
    //verificando se o que foi digitado é um número
    if (!soNumero(e)) {
        return false;
    }
    obj = (isNav) ? e.target : event.srcElement;
    codTecla = (isNav) ? e.which : event.keyCode;
    switch (codTeclaKeyDown) {
        case 8:
            obj.value = formatarValorUS(obj.value.substring(0, obj.value.length));
            break;
        case 9:
            return true;
            break;
        case 46:
            obj.value = formatarValorUS(obj.value.substring(0, obj.value.length));
            break;
        default:
            if ((codTecla > 47) && (codTecla < 58)) {
                if (obj.maxLength > obj.value.length) {
                    obj.value = formatarValorUS(obj.value + String.fromCharCode(codTecla));
                }
            }
    }
    return false;
}



/* -----------------------------------------------------------------------------------------------
exibirDataFormatadaMenor - Encarregada de exibir uma string com formatação de data num campo text
Data - 22/01/2008
-----------------------------------------------------*/

function exibirDataFormatadaMenor(e) {
    bln_campo_editado = true;
    var obj, tecla;
    //verificando se o que foi digitado é um número
    obj = (isNav) ? e.target : event.srcElement;
    codTecla = (isNav) ? e.which : event.keyCode;
    switch (codTeclaKeyDown) {
        case 8:
            obj.value = formatarDataMenor(obj.value.substring(0, obj.value.length - 1));
            return false;
        case 9:
            return true;
        case 46:
            obj.value = formatarDataMenor(obj.value.substring(0, obj.value.length - 1));
            return false;
        default:
            if ((codTecla > 47) && (codTecla < 58)) {
                if (obj.maxLength > obj.value.length) {
                    obj.value = formatarDataMenor(obj.value + String.fromCharCode(codTecla));
                }
            }
            if (isIE) {
                event.keyCode = 0;
            }
            return false;
    }
}

/* -----------------------------------------------------------------------------------------------
exibirDataFormatada - Encarregada de exibir uma string com formatação de data num campo text
Data - 22/01/2008
-----------------------------------------------------*/

function exibirDataFormatada(e) {

    bln_campo_editado = true;
    var obj, codTecla;

    obj = (isNav) ? e.target : event.srcElement;
    codTecla = (isNav) ? e.which : event.keyCode;

    switch (codTeclaKeyDown) {
        case 8:
            obj.value = formatarData(obj.value.substring(0, obj.value.length - 1));
            return false;
        case 46:
            obj.value = formatarData(obj.value.substring(0, obj.value.length - 1));
            return false;
    }

    return true;

}

function limparValorLabel(e) {
    var obj = (isNav) ? e.target : event.srcElement;

    if (obj.value == "dd/mm/aaaa") {
        obj.value = "";
    }
    else if (obj.value == "mm/aa") {
        obj.value = "";
    }
}

function exibirValorLabel(e) {
    var obj = (isNav) ? e.target : event.srcElement;

    if (obj.value == "") {
        if (obj.maxLength == 10)
            obj.value = "dd/mm/aaaa";
        else
            obj.value = "mm/aa";
    }
}

//Validar data

function ValidaDataLib(e) {

    var obj = (isNav) ? e.target : event.srcElement;

    var RegExPattern = /^((((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/;

    if (obj.value != "") {
        if (!(obj.value.match(RegExPattern))) {
            alert("Data inválida.");
            obj.value = "";
            obj.focus();
        }
    }
}

// Validar Cpf

function ValidaCPF_old(e) {

    var obj = (isNav) ? e.target : event.srcElement;

    var cpf = obj.value;

    if (cpf != '') {
        exp = /\.|\-/g
        cpf = cpf.toString().replace(exp, "");
        var digitoDigitado = eval(cpf.charAt(9) + cpf.charAt(10));
        var soma1 = 0, soma2 = 0;
        var vlr = 11;

        for (i = 0; i < 9; i++) {
            soma1 += eval(cpf.charAt(i) * (vlr - 1));
            soma2 += eval(cpf.charAt(i) * vlr);
            vlr--;
        }
        soma1 = (((soma1 * 10) % 11) == 10 ? 0 : ((soma1 * 10) % 11));
        soma2 = (((soma2 + (2 * soma1)) * 10) % 11);

        var digitoGerado = (soma1 * 10) + soma2;
        if ((cpf == '11111111111' || cpf == '22222222222' || cpf == '33333333333' || cpf == '44444444444' || cpf == '55555555555' || cpf == '66666666666' || cpf == '77777777777' || cpf == '88888888888' || cpf == '99999999999' || cpf == '00000000000') || (digitoGerado != digitoDigitado)) {
            alert('Atenção: CPF Inválido!');
            obj.value = '';
            obj.focus();
        };

    };
}

function ValidaCPF(e) {

    var obj = (isNav) ? e.target : event.srcElement;

    var cpf = obj.value;

    if (cpf != '') {
        exp = /\.|\-/g
        cpf = cpf.toString().replace(exp, "");

        if (cpf.length != 11 || cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999") {
            alert('Atenção: CPF Inválido!');
            obj.value = '';
            obj.focus();
        }
        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('Atenção: CPF Inválido!');
            obj.value = '';
            obj.focus();
        }
        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('Atenção: CPF Inválido!');
            obj.value = '';
            obj.focus();
        }
    }
}



function ValidaCNPJ(e) {
    var obj = (isNav) ? e.target : event.srcElement;

    var cnpj = obj.value;

    if (cnpj != '') {
        var valida = new Array(6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2);
        var dig1 = new Number;
        var dig2 = new Number;

        exp = /\.|\-|\//g
        cnpj = cnpj.toString().replace(exp, "");
        var digito = new Number(eval(cnpj.charAt(12) + cnpj.charAt(13)));

        for (i = 0; i < valida.length; i++) {
            dig1 += (i > 0 ? (cnpj.charAt(i - 1) * valida[i]) : 0);
            dig2 += cnpj.charAt(i) * valida[i];
        }
        dig1 = (((dig1 % 11) < 2) ? 0 : (11 - (dig1 % 11)));
        dig2 = (((dig2 % 11) < 2) ? 0 : (11 - (dig2 % 11)));

        if ((cnpj == '11111111111111' || cnpj == '22222222222222' || cnpj == '33333333333333' || cnpj == '44444444444444' || cnpj == '55555555555555' || cnpj == '66666666666666' || cnpj == '77777777777777' || cnpj == '88888888888888' || cnpj == '99999999999999' || cnpj == '00000000000000') || (((dig1 * 10) + dig2) != digito)) {
            alert('Atenção: CNPJ Inválido!');
            obj.value = '';
            obj.focus();
            return false;
        }
        else {
            return true;
        }
    }

} //isCnpj

/* -----------------------------------------------------------------------------------------------
capturaCodTecla - Função encarregada obter a tecla digitada pelo usuário
apresentando comportamento distinto para o netScape e IE.
Data - 22/01/2008
-----------------------------------------------------*/

function capturaCodTecla(e) {
    codTeclaKeyDown = (isNav) ? e.which : event.keyCode;
    if (isIE) {
        switch (codTeclaKeyDown) {
            case 8:
                event.srcElement.value = formatarValor(event.srcElement.value.substring(0, event.srcElement.value.length - 1));
                return false;
                break;
            case 46:
                event.srcElement.value = formatarValor(event.srcElement.value.substring(0, event.srcElement.value.length - 1));
                return false;
                break;
            default:
                return true;
        }
    }
}

function capturaCodTeclaUS(e) {
    codTeclaKeyDown = (isNav) ? e.which : event.keyCode;
    if (isIE) {
        switch (codTeclaKeyDown) {
            case 8:
                event.srcElement.value = formatarValorUS(event.srcElement.value.substring(0, event.srcElement.value.length - 1));
                return false;
                break;
            case 46:
                event.srcElement.value = formatarValorUS(event.srcElement.value.substring(0, event.srcElement.value.length - 1));
                return false;
                break;
            default:
                return true;
        }
    }
}


/* -----------------------------------------------------------------------------------------------
capturaCodTeclaCPData - Função encarregada obter a tecla digitada pelo usuário
apresentando comportamento distinto para o netScape e IE.
Data - 22/01/2008
----------------------------------------------------*/

function capturaCodTeclaCPData(e) {
    codTeclaKeyDown = (isNav) ? e.which : event.keyCode;
    if (isIE) {
        switch (codTeclaKeyDown) {
            case 8:
                event.srcElement.value = formatarData(event.srcElement.value.substring(0, event.srcElement.value.length - 1));
                return false;
                break;
            case 46:
                event.srcElement.value = formatarData(event.srcElement.value.substring(0, event.srcElement.value.length - 1));
                return false;
                break;
            default:
                if (!soNumero(codTeclaKeyDown)) {
                    return false;
                }
        }
    }
    return true;
}


/* -----------------------------------------------------------------------------------------------
formatarValor - Formata uma string no padrão de valor: xx.xxx.xxx,xx
Data - 22/01/2008
-----------------------------------------------------*/

function formatarValor(str) {
    var decimal, inteiro;
    var i, count;
    STR = new String(str);
    STR = tirarZerosEsquerda(STR);
    inteiro = '';
    if (STR.length == 1) {
        inteiro = '0';
        decimal = '0' + STR;
    }
    else {
        if (STR.length == 2) {
            inteiro = '0';
            decimal = STR;
        }
        else {
            decimal = STR.substring(STR.length - 2, STR.length);
            i = 3;
            count = 0;
            while (i <= STR.length) {
                if (count == 3) {
                    inteiro = '.' + inteiro;
                    count = 0;
                }
                inteiro = STR.charAt(STR.length - i) + inteiro;
                count++;
                i++;
            }
        }
    }
    if (inteiro == '') {
        inteiro = '0';
    }
    if (decimal == '') {
        decimal = '00';
    }
    return inteiro + ',' + decimal;
}

function formatarValorUS(str) {
    var decimal, inteiro;
    var i, count;
    STR = new String(str);
    STR = tirarZerosEsquerdaUS(STR);
    inteiro = '';
    if (STR.length == 1) {
        inteiro = '0';
        decimal = '00' + STR;
    }
    else if (STR.length == 2) {
        inteiro = '0';
        decimal = '0' + STR;
    }
    else if (STR.length == 3) {
        inteiro = '0';
        decimal = STR;
    }
    else {
        decimal = STR.substring(STR.length - 3, STR.length);
        i = 4;
        count = 0;
        while (i <= STR.length) {
            if (count == 3) {
                inteiro = '.' + inteiro;
                count = 0;
            }
            inteiro = STR.charAt(STR.length - i) + inteiro;
            count++;
            i++;
        }
    }

    if (inteiro == '') {
        inteiro = '0';
    }

    if (decimal == '') {
        decimal = '000';
    }

    return inteiro + ',' + decimal;
}

/* -----------------------------------------------------------------------------------------------
formatarData - Formata uma string no padrão de data: DD/MM/AAAA
Data - 22/01/2008
-----------------------------------------------------*/
function formatarData(str) {
    var data, re, T;
    re = /\//g;
    data = new String(str);
    data = data.replace(re, "");
    data = data.substr(0, 8);
    T = data.length;
    if (T > 2 && T < 5) {
        data = data.substr(0, 2) + "/" + data.substr(2, 2);
    }
    if (T > 4) {
        data = data.substr(0, 2) + "/" + data.substr(2, 2) + "/" + data.substr(4, 4);
    }
    return data;
}

/* -----------------------------------------------------------------------------------------------
formatarDataMenor - Formata uma string no padrão de data: MM/AA
Data - 22/01/2008
-----------------------------------------------------*/
function formatarDataMenor(str) {
    var data, re, T;
    re = /\//g;
    data = new String(str);
    data = data.replace(re, "");
    data = data.substr(0, 4);
    T = data.length;
    if (T > 2 && T < 5) {
        data = data.substr(0, 2) + "/" + data.substr(2, 2);
    }
    if (T < 3) {
        data = data;
    }
    return data;
}
/* -----------------------------------------------------------------------------------------------
tirarZerosEsquerda - função que tira todos os "0", "," e "." da string
passada como argumento
Data - 22/01/2008
-----------------------------------------------------*/

function tirarZerosEsquerda(STR) {
    var sAux = '';
    STR = new String(STR);
    var i = 0;
    while (i < STR.length) {
        if ((STR.charAt(i) != '.') && (STR.charAt(i) != ',')) {
            sAux += STR.charAt(i);
        }
        i++
    }
    STR = new String(sAux);
    sAux = '';
    i = 0;
    while (i < STR.length) {
        if (STR.charAt(i) != '0') {
            sAux = STR.substring(i, STR.length)
            i = STR.length;
        }
        i++;
    }
    return sAux;
}

function tirarZerosEsquerdaUS(STR) {
    var sAux = '';
    STR = new String(STR);
    var i = 0;
    while (i < STR.length) {
        if ((STR.charAt(i) != '.') && (STR.charAt(i) != ',')) {
            sAux += STR.charAt(i);
        }
        i++
    }
    STR = new String(sAux);
    sAux = '';
    i = 0;
    while (i < STR.length) {
        if (STR.charAt(i) != '0') {
            sAux = STR.substring(i, STR.length)
            i = STR.length;
        }
        i++;
    }
    return sAux;
}

/* -----------------------------------------------------------------------------------------------
tirarZerosEsquerda - função que tira todos os "0", "," e "." da string
passada como argumento
Data - 22/01/2008
------------------------------------------------------*/
function soNumero(e) {
    bln_campo_editado = true;
    var keyNumber = (isIE) ? event.keyCode : e.which;
    //if (((keyNumber<48)||(keyNumber>57)) && (keyNumber!=13) && (keyNumber!="0") && (keyNumber!=8)) {

    //Verifica se é número
    if (((keyNumber > 95) && (keyNumber < 106)) || ((keyNumber > 47) && (keyNumber < 58))) {
        return true;
    }
    if ((keyNumber != 13) && (keyNumber != 8) && (keyNumber != 9)) {
        if (isIE) {
            event.keyCode = 0
        }
        return false;
    }
    return true;
}

function soNum(e) {
    bln_campo_editado = true;
    var keyNumber = (isIE) ? event.keyCode : e.which;

    if (((keyNumber < 48) || (keyNumber > 57)) && (keyNumber != 13) && (keyNumber != "0") && (keyNumber != 8)) {

        if (isIE) {
            event.keyCode = 0
        }
        return false;
    }
    return true;
}

/*FIM - FORMATAÇÃO DE VALOR---------------------------------------------------------------------*/


/* -----------------------------------------------------------------------------------------------
validarData - Verifica se a data passada é valida
o retorno da função é booleano, se data válida retorna true senão retorna false
Data - 22/01/2008
------------------------------------------------------*/
function validarData(DIA, MES, ANO) {
    MES = MES - 1;
    data = new Date(ANO, MES, DIA);
    if ((data.getDate() != DIA) || (data.getMonth() != MES) || (data.getFullYear() != ANO)) {
        return false;
    }
    return true;
}
/*-----------------------------------------------------------------------------------------------*/

/* -----------------------------------------------------------------------------------------------
verifDataSelMenorDataAtual - Verifica se a data selecionada é menor que a data atual
o retorno da função é booleano, se data selecionada for menor que data atual retorna true senão 
retorna false
Data - 22/01/2008
------------------------------------------------------*/
function verifDataSelMenorDataAtual(diaAtual, mesAtual, anoAtual, diaSelecionado, mesSelecionado, anoSelecionado) {
    var dataAtual = anoAtual + mesAtual + diaAtual;
    var dataSelec = anoSelecionado + mesSelecionado + diaSelecionado;
    dataAtual = parseInt(dataAtual);
    dataSelec = parseInt(dataSelec);
    if (dataSelec < dataAtual) {
        return true;
    }
    return false;
}

/* -----------------------------------------------------------------------------------------------
dataDifDias - Retorna a diferenca entre duas datas, todos os parametros são strings
Data - 22/01/2008
------------------------------------------------------*/
function dataDifDias(diaSelecionado, mesSelecionado, anoSelecionado, diaAtual, mesAtual, anoAtual) {
    data1 = new Date(anoAtual, mesAtual - 1, diaAtual);
    data2 = new Date(anoSelecionado, mesSelecionado - 1, diaSelecionado);
    var difDias = data2 - data1;
    difDias /= 86400000;
    return difDias;
}

/* -----------------------------------------------------------------------------------------------
validarAgCta - Verifica se a agencia conta digita é válida
o retorno da função é booleano, se a AG/CTA for válida retorna true senão retorna false
Data - 22/01/2008
------------------------------------------------------*/
function validarAgCta(ag, cta) {
    ag = new String(ag);
    cta = new String(cta);

    if ((ag.length4) || (cta.length7)) {
        return false;
    }

    var AG_CTA_AUX = new String(ag + cta);
    var i = 0;
    strRes = '';
    peso = 1;
    for (i = 0; i < 10; i++) {
        strRes += (AG_CTA_AUX.charAt(i) * peso);
        peso = (peso == 1) ? 2 : 1;
    }
    soma = 0;
    for (i = 0; i < strRes.length; i++) {
        soma += parseInt(strRes.charAt(i));
    }
    dv = 10 - (soma % 10);
    if (dv == 10) {
        dv = 0;
    }
    if (cta.charAt(6) == dv) {
        return true;
    }
    return false;

}

/* -----------------------------------------------------------------------------------------------
soAlfaNumerico - só permite a digitação de letras não acentuadas e números
Data - 22/01/2008	
------------------------------------------------------*/
function soAlfaNumerico(e) {
    bln_campo_editado = true;
    var keyNumber = (isIE) ? event.keyCode : e.which;
    if (
			!(
				(
					((keyNumber > 47) && (keyNumber < 58)) ||
					((keyNumber > 64) && (keyNumber < 91)) ||
					((keyNumber > 96) && (keyNumber < 123)) ||
					(keyNumber == 32) ||
					(keyNumber == 8)
				) &&
				(keyNumber != 168)
			)
		) {
        if (isIE) {
            event.keyCode = 0
        }
        return false;
    }
    return true;
}

/* -----------------------------------------------------------------------------------------------
soAlfa - só permite a digitação de letras não acentuadas 
Data - 22/01/2008
------------------------------------------------------*/
function soAlfa(e) {
    bln_campo_editado = true;
    var keyNumber = (isIE) ? event.keyCode : e.which;
    if (
			!(
				(
					((keyNumber > 64) && (keyNumber < 91)) ||
					((keyNumber > 96) && (keyNumber < 123)) ||
					(keyNumber == 32) ||
					(keyNumber == 8)
				) &&
				(keyNumber != 168)
			)
		) {
        if (isIE) {
            event.keyCode = 0
        }
        return false;
    }
    return true;
}


/* -----------------------------------------------------------------------------------------------------------------
soEmail - Validacao de campo e-mail.
Data - 22/01/2008
------------------------------------------------------------------------------*/

function soEmail(e) {
    var keyNumber = (isIE) ? event.keyCode : e.which;
    if (
			!(
				(
					((keyNumber > 43) && (keyNumber < 58)) ||
					((keyNumber > 63) && (keyNumber < 91)) ||
					((keyNumber > 96) && (keyNumber < 123)) ||
					((keyNumber > 191) && (keyNumber < 221)) ||
					((keyNumber > 223) && (keyNumber < 253)) ||
					(keyNumber == 32) ||
					(keyNumber == 8) ||
					(keyNumber == 95)
				) &&
				(keyNumber != 168)
			)
		) {
        if (isIE) {
            event.keyCode = 0
        }
        return false;
    }
    return true;
}

/* ----------------------------------------------------------------
soCPF - Formata o campo no padrão de CPF ("999.999.999-99")
Data - 22/01/2008
-----------------------------------------------------------------*/
function soCPF(e) {
    var keyNumber = (isIE) ? event.keyCode : e.which;
    if (((keyNumber < 48) || (keyNumber > 57)) && (keyNumber != "0") && (keyNumber != 8)) {
        if (isIE) {
            event.keyCode = 0
        }
        return false;
    }

    obj = (isNav) ? e.target : event.srcElement;

    if ((keyNumber != "0") && (keyNumber != 8)) {
        var i, nCount, sValue, fldLen, mskLen, bolMask, sCod, nTecla;

        objForm = document.forms[0];

        sMask = '999.999.999-99';

        sValue = obj.value;

        // Limpa todos os caracteres de formatação que já estiverem no campo.
        sValue = sValue.toString().replace("-", "");
        sValue = sValue.toString().replace("-", "");
        sValue = sValue.toString().replace(".", "");
        sValue = sValue.toString().replace(".", "");
        sValue = sValue.toString().replace("/", "");
        sValue = sValue.toString().replace("/", "");
        sValue = sValue.toString().replace("(", "");
        sValue = sValue.toString().replace("(", "");
        sValue = sValue.toString().replace(")", "");
        sValue = sValue.toString().replace(")", "");
        sValue = sValue.toString().replace(" ", "");
        sValue = sValue.toString().replace(" ", "");
        fldLen = sValue.length;
        mskLen = sMask.length;

        i = 0;
        nCount = 0;
        sCod = "";
        mskLen = fldLen;

        while (i <= mskLen) {
            bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/"))
            bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))

            if (bolMask) {
                sCod += sMask.charAt(i);
                mskLen++;
            }
            else {
                sCod += sValue.charAt(nCount);
                nCount++;
            }

            i++;
        }

        obj.value = sCod;
    }

    return true;
}

/* ----------------------------------------------------------------
soCPF - Formata o campo no padrão de CPF ("999.999.999-99")
Data - 17/09/2008
-----------------------------------------------------------------*/
function soCNPJ(e) {

    var keyNumber = (isIE) ? event.keyCode : e.which;
    if (((keyNumber < 48) || (keyNumber > 57)) && (keyNumber != "0") && (keyNumber != 8)) {
        if (isIE) {
            event.keyCode = 0
        }
        return false;
    }

    obj = (isNav) ? e.target : event.srcElement;

    if ((keyNumber != "0") && (keyNumber != 8)) {

        var i, nCount, sValue, fldLen, mskLen, bolMask, sCod, nTecla;

        objForm = document.forms[0];

        sMask = '99.999.999/9999-99';

        sValue = obj.value;

        // Limpa todos os caracteres de formatação que já estiverem no campo.
        sValue = sValue.toString().replace("-", "");
        sValue = sValue.toString().replace("-", "");
        sValue = sValue.toString().replace(".", "");
        sValue = sValue.toString().replace(".", "");
        sValue = sValue.toString().replace("/", "");
        sValue = sValue.toString().replace("/", "");
        sValue = sValue.toString().replace("(", "");
        sValue = sValue.toString().replace("(", "");
        sValue = sValue.toString().replace(")", "");
        sValue = sValue.toString().replace(")", "");
        sValue = sValue.toString().replace(" ", "");
        sValue = sValue.toString().replace(" ", "");
        fldLen = sValue.length;
        mskLen = sMask.length;

        i = 0;
        nCount = 0;
        sCod = "";
        mskLen = fldLen;

        while (i <= mskLen) {
            bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/"))
            bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))

            if (bolMask) {
                sCod += sMask.charAt(i);
                mskLen++;
            }
            else {
                sCod += sValue.charAt(nCount);
                nCount++;
            }

            i++;
        }

        obj.value = sCod;

    }

    return true;
}


/* ----------------------------------------------------------------------------------
validarValores - Valida todos os campo de valor no formulario
Parametros:
objForm - formulario a ser varrido
Data - 22/01/2008
------------------------------------------------------------------------------------*/
function validarValores(objForm) {
    var i, numEl;
    var bErro = false;
    var numEl = objForm.elements.length;

    for (i = 0; i < numEl; i++) {
        var prefixo = objForm.elements[i].name.substring(0, 3);

        if (prefixo == "vlr") {
            //Limpa espaços a direita e a esquerda
            objForm.elements[i].value = trim(objForm.elements[i].value);

            //verifica se tem algum caracter não numerico
            if (!verificarNumeros(objForm.elements[i].value))
                bErro = true;

            //compara o valor formatado com o valor do campo
            var sFormatado = formatarValor(objForm.elements[i].value);
            if (sFormatado != objForm.elements[i].value)
                bErro = true;
        }
    }

    if (bErro) {
        alert("Um ou mais valores informados estão incorretos.");
        return false;
    }

    return true;
}

function trim(value) {
    var temp = value;
    var obj = /^(\s*)([\W\w]*)(\b\s*$)/;
    if (obj.test(temp)) { temp = temp.replace(obj, '$2'); }
    var obj = / +/g;
    temp = temp.replace(obj, " ");
    if (temp == " ") { temp = ""; }
    return temp;
}

function verificarNumeros(sValor) {
    for (x = 0; x < sValor.length; x++) {
        if (isNaN(sValor.substring(x, x + 1)) || sValor.substring(x, x + 1) == " ")
            if (sValor.substring(x, x + 1) != "," && sValor.substring(x, x + 1) != ".")
            return false;
    }

    return true;
}
