/*
 * Nome:        Filtro
 * Autor:       7COMm/Fábrica de Softwares - Autor: Juliana Ferris
 * Data:        14/01/2001
 * Descrição:   Durante a digitação formata campos <input type=text> de acordo 
 *              com o tipo informado
 * Entrada:     objCampo - campo a ser formatado
 *              strTipFmt - tipo de formatação
 * Observação: 
 *              1.)Sempre atribuir esta função aos eventos onKeyUp e onKeyPress 
 *              incluída da Tag. Assim cumprimos com todas as possibilidades 
 *              de digitação do usuário, inclusive se ele mantiver a tecla 
 *              pressionada.

 *              2.)Verifica qual o browser, pois nem todos os browser permitem 
 *              formatar durante a digitação (onKeyPress e onKeyUp não existem)
 *
 *              3.)Certifique-se que a função indicada por strTipFmt foi 
 *              incluída na página
 
 * Autor:       7COMm/Fábrica de Softwares - Autor: Fernando Vieira
 * Data:        12/11/2002
 * Descrição:   Revisão de Padrões e Testes
*/
function Filtro (objCampo, strTipFmt) { 
    // Determina o navegador e sua versão
    var intIndMinNS6 = ( navigator.appName.indexOf("Netscape") >= 0 &&
                         parseFloat(navigator.appVersion) >= 5) ? 1 : 0;
    var intIndMinIE4 = ( document.all ) ? 1 : 0;

    // Se é IE4
    if (intIndMinIE4) {
        /* Não executar as funções de formatação 
           caso pressionado as seguintes teclas
             8 = backspace
             9 = tab
            16 = shift
            36 = home
            37 = left arrow
            39 = right arrow
            46 = delete
        */
        if( window.event.keyCode == 37 || window.event.keyCode == 8 ||
                window.event.keyCode == 36 || window.event.keyCode == 39 ||
                window.event.keyCode == 46 || window.event.keyCode == 16 ||
                window.event.keyCode == 9 ) {
            return;
        }  
    // Se é Netscape versão anterior a 5
    } else if (! intIndMinNS6) {
        // Não executar as funções de formatação
        return
    }
    // Deixar o Campo apenas com caracteres de 0 à 9
    objCampo.value = (objCampo.value).replace( /\D/g, "" );

    if (strTipFmt != "Numero") {
        // Formatar o campo de acordo com o tipo informado
        objCampo.value = eval( "FormataPag" + strTipFmt + "(\"" + objCampo.value + "\")" );
    }
}

/*
 * Nome:        FiltroFinal
 * Autor:       7COMm/Fábrica de Softwares - Autor: Juliana Ferris
 * Data:        14/01/2001
 * Descrição:   Após perder o foco, formata campos <input type=text> de acordo 
 *              com o tipo informado
 * Entrada:     objCampo - campo a ser formatado
 *              strTipFmt - tipo de formatação
 * Observação: 
 *              1.) Sempre atribuir esta função ao evento onBlur da Tag. Assim
 *              quando o usuário tirar o foco do campo este será formatado.
 *              2.) NÃO verifica qual o browser, pois todos os browser entendem
 *              o evento onBlur.
 *              3.) Certifique-se que a função indicada por strTipFmt foi 
 *              incluída na página
 * Autor:       7COMm/Fábrica de Softwares - Autor: Fernando Vieira
 * Data:        12/11/2002
 * Descrição:   Revisão de Padrões e Testes
*/
function FiltroFinal (objCampo, strTipFmt) {
    // Deixar o Campo apenas com caracteres de 0 à 9
    objCampo.value = (objCampo.value).replace( /\D/g, "" );

    if (strTipFmt != "Numero") {
        // Formatar o campo de acordo com o tipo informado
        objCampo.value = eval( "FormataPag" + strTipFmt + 
                "(\"" + objCampo.value + "\")" );
    }
}

/*
 * Nome:        FormataPagValor
 * Autor:       7COMm/Fábrica de Softwares - Autor: Juliana Ferris
 * Data:        14/01/2002
 * Descrição:   Formata um campo <input type=text> com a máscara 9.999,99
 * Entrada:     strValor - Valor que será formatado
 * Saída:       String contendo o Valor formatado
 * Observação: 
 *              1.) Normalmente utilizada para formatar campos da página
 *              2.) Não faz nenhuma consistência
 * Autor:       7COMm/Fábrica de Softwares - Autor: Fernando Vieira
 * Data:        13/11/2002
 * Descrição:   Revisão de Padrões e Testes
 */
function FormataPagValor (strValor) {
    var intCont;
    var intTamValor;
    var strValorFmt, strValorAux; 

    // Inicializar o Valor de retorno com vazio
    strValorFmt = "";

    // Inicializar o Valor auxiliar com o conteúdo do Valor de entrada como
    // string
    strValorAux = strValor.toString();

    // Obter o tamanho da strValor
    intTamValor = strValorAux.length;

    // Formatar Valor com os . e a ,
    if (intTamValor > 2) {
        strValorFmt = "," + strValorAux.substr( intTamValor - 2, 2 );

        for (intCont = 5; intCont <= intTamValor; intCont += 3) {
            strValorFmt = strValorAux.substr( intTamValor - intCont, 3 ) + 
                    strValorFmt;
            if (intTamValor > intCont) {
                strValorFmt = "." + strValorFmt;
            }
        }

        strValorFmt = strValorAux.substr( 0, intTamValor - intCont + 3 ) + 
                strValorFmt;
    } else {
        strValorFmt = strValorAux;
    }    

    // Retornar Valor formatada
    return strValorFmt;
    
}

/*
 * Nome:        FormataPagValorBlur
 * Autor:       7COMm/Fábrica de Softwares - Autor: Juliana Ferris
 * Data:        14/01/2002
 * Descrição:   Formata um campo <input type=text> com a máscara 9.999,99    
 * Entrada:     strValor - Valor que será formatado
 * Saída:       String contendo o Valor formatado
 * Observação: 
 *              1.) Normalmente utilizada para formatar campos da página
 *              2.) Não faz nenhuma consistência
 * Autor:       7COMm/Fábrica de Softwares - Autor: Tiago Rosa
 * Data:        14/01/2002
 * Descrição:   Concatenar ",00" somente quando tamanho de strValor for igual 
 *              a 1.
 * Autor:       7COMm/Fábrica de Softwares - Autor: Fernando Vieira
 * Data:        13/11/2002
 * Descrição:   Revisão de Padrões e Testes
 */
function FormataPagValorBlur (strValor) {
    var intCont;
    var intTamValor;
    var strValorFmt, strValorAux;

    // Inicializar o Valor de retorno com vazio
    strValorFmt = "";

    // Inicializar o Valor auxiliar com o conteúdo do Valor de entrada como
    // string
    strValorAux = strValor.toString();

    // Obter o tamanho da strValor
    intTamValor = strValorAux.length;

    // Formatar Valor com os . e a ,
    if ( intTamValor > 2 ) {
        strValorFmt = "," + strValorAux.substr( intTamValor - 2, 2 );

        for ( intCont = 5; intCont <= intTamValor; intCont += 3 ) {
            strValorFmt = strValorAux.substr( intTamValor - intCont, 3 ) + 
                    strValorFmt;
            if ( intTamValor > intCont ) {
                strValorFmt = "." + strValorFmt;
            }
        }

        strValorFmt = strValorAux.substr( 0, intTamValor - intCont + 3 ) +
                strValorFmt;
    } else if ( intTamValor == 0 ) {
        strValorFmt = strValorAux;
    } else {
         strValorFmt = strValorAux + ",00";
    }

    // Retornar ValorBlur formatada
    return strValorFmt;
}
