/*
  Módulo de Tratamento de dados numéricos em JavaScript
*/
  function soNumeros(evento) {
    /*
      ===========================
      Procedimento: soNumeros
      Função      : Verificar se o usuário está digitando somente caracteres numéricos
      Entradas    : evento -> Evento (onKeyPress) com o Código da tecla
                    pressionada pelo usuário
      Autor       : Edgar Rocha Mendonça
      Data        : 15/05/2003
      ===========================
    */
    var numTecla;
    var isIE = false;
    var teclas = "0 8 13 48 49 50 51 52 53 54 55 56 57 96 97 98 99 100 101 102 103 104 105";

    //Verifica o navegador
    if (navigator.appName.indexOf("Microsoft") != -1) {
      isIE = true;
    }

    //Obtém o código da tecla pressionada
    if (isIE) {
      numTecla = evento.keyCode
    } else {
      numTecla = evento.which;
    }

    if (teclas.indexOf(numTecla) == -1) {
      if (isIE) {
        evento.keyCode = 0;
      }
      return false;
    }

    return true;
  }

  function formataMoedaAoDigitar(objetoMoeda, evento, separadorMilhares, separadorDecimais, numeroDecimais) {
    /*
      ===========================
      Procedimento: formataMoedaAoDigitar
      Função      : Verificar se o usuário está digitando caracteres apropriados
                    para um campo do tipo Moeda (com posntos e virgulas)
      Entradas    : objetoMoeda -> o campo em que esta sendo digitado o valor em formato monetario
                    evento -> Evento (onKeyPress) com o Código da tecla
                              pressionada pelo usuário
                    separadorDecimal -> O caracter separador de decimais (,)
                    separadorDecimal -> O caracter separador de milhares (.)
                    numeroDecimais -> a quantidade de digitos apos o separador
      Autor       : Edgar Rocha Mendonça
      Data        : 05/06/2003
      ===========================
    */
    var isIE = false;
    var moedaACompor = new String( objetoMoeda.value );
    var moedaComposta = "";

    var tamanhoCampo = moedaACompor.length;
    var moedaRev = strRev(moedaACompor);
    moedaRev = moedaRev.toString().replace( separadorMilhares, "" );
    moedaRev = moedaRev.toString().replace( separadorDecimais, "" );

    //Verifica o navegador
    if (navigator.appName.indexOf("Microsoft") != -1) {
      isIE = true;
    }

    //Obtém o código da tecla pressionada
    if (isIE) {
      numTecla = evento.keyCode
    } else {
      numTecla = evento.which;
    }

    var tamanhoCampo = moedaACompor.length;
    var moedaRet = "";
    var proximoMilhar = numeroDecimais + 4;

    for (i = 0; i < moedaRev.length; i++) {
      moedaRet = moedaRet + moedaRev.substr(i, 1);
      if (String(moedaRet).length == (numeroDecimais+1)) {
        moedaRet = String(moedaRet).substr(0, numeroDecimais) + separadorDecimais + String(moedaRet).substr((numeroDecimais), 1);
      }
      if (String(moedaRet).length == (proximoMilhar + 1)) {
        moedaRet = String(moedaRet).substr(0, proximoMilhar) + separadorMilhares + String(moedaRet).substr(proximoMilhar, (moedaRet.length - proximoMilhar));
        proximoMilhar = (proximoMilhar + 4);
      }
    }

    var ret =  strRev(moedaRet);
    objetoMoeda.value = ret;
  }

  function converteValorParaBD(valor, separadorMilhares, separadorDecimais) {
    /*
      ===========================
      Procedimento: converteValorParaBD
      Função      : Converter um valor em formato moeda (com ponto e vírgula decimal
                    para um valor de banco de dados (somente ponto decimal)
      Entradas    : valor -> O valor formatado
                    separadorMilhares -> O símbolo de separador de milhares
                    separadorDecimais -> O Símbolo de separador de milhares
      Exemplo     : var numBD = converteValorParaBD("1.234,56", ".", ",");
                    retorna 1234.56
      Autor       : Edgar Rocha Mendonça
      Data        : 15/05/2003
      ===========================
    */
    //retira os caracteres não numéricos
    //com exceção do ponto decimal e do sinal de - (menos)
    valRet = valor.toString().replace( separadorMilhares, "" );
    valRet = valRet.toString().replace( separadorDecimais, "." );
    return valRet;
  }

  function validaCampoNumerico(valor, podeSerVazio, separadorMilhares, separadorDecimais) {
    /*
      ===========================
      Procedimento: validaCampoNumerico
      Função      : Verificar se o valor digitado é numérico (com máscara ou não)
      Entradas    : valor -> O Valor a ser verificado
                    podeSerVazio -> Indicador de preenchimento do valor do campo.
                                    A saber:
                                    true -> O campo pode ser vazio
                                    false -> O campo não pode ser vazio
                    separadorMilhares -> O caracter separador de milhares
                    separadorDecimais -> O caracter separador de decimais
      Saidas      : Número. A saber:
                    99 -> Validação OK
                     1 -> O campo não pode ser vazio
                     2 -> Foram digitados caracteres inválidos

      Autor       : Edgar Rocha Mendonça
      Data        : 15/05/2003
      ===========================
    */
    //Valor temporário para verificação
    var valorParaVerificacao = "";

    //Verifica se está vazio (e se pode ser vazio)
    if (valor.value == "") {
      if (podeSerVazio) {
        return 99;
      } else {
        return 1;  //O campo não pode ser vazio
      }
    }

    //retira os caracteres não numéricos
    //com exceção do ponto decimal e do sinal de - (menos)
    valorParaVerificacao = valor.value;
    valorParaVerificacao = valorParaVerificacao.toString().replace(separadorMilhares, "");
    valorParaVerificacao = valorParaVerificacao.toString().replace(separadorDecimais, ".");

    //Verifica se o resultado final é numérico
    if (isNaN(valorParaVerificacao)) {
      return 2;
    }

    return 99;
  }

  function strRev(stringAReverter) {
    var strInt = String(stringAReverter);
    var strRet = "";

    for (i = (strInt.length -1); i > -1 ; i--) {
      strRet = strRet + strInt.substr(i, 1);
    }
    return strRet;
  }

