﻿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);
    }
}

/*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
----------------------------------------------------------------------------------------*/
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].onkeydown = soNumero;

                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 "_dtt":  //campo data

                objForm.elements[i].onkeypress = formatarMascara;
                objForm.elements[i].onkeydown = capturaCodTeclaCPData;
                objForm.elements[i].onblur = ValidaData;
                objForm.elements[i].maxLength = 10

                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;
        }
    }
}

/*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;

/* -----------------------------------------------------------------------------------------------
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;
}


/* -----------------------------------------------------------------------------------------------
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 ValidaData(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(e) {

    var obj = (isNav) ? e.target : event.srcElement;

    var cpf = obj.value;

    if (cpf != '') {

        exp = /\.|\-/g
        cpf = cpf.toString().replace(exp, "");

        var a = [];
        var b = new Number;
        var c = 11;
        for (i = 0; i < 11; i++) {
            a[i] = cpf.charAt(i);
            if (i < 9) b += (a[i] * --c);
        }
        if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11 - x }
        b = 0;
        c = 11;
        for (y = 0; y < 10; y++) b += (a[y] * c--);
        if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11 - x; }
        if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[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;
        }
    }
}


/* -----------------------------------------------------------------------------------------------
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;
}

/* -----------------------------------------------------------------------------------------------
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;
}

/* -----------------------------------------------------------------------------------------------
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;
}
/*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;
}
