// Versão 18/03/2008
var TabPressionado = false;
function VerificaRetrocessoWebNumero(Controle, Evento) {
  if (!(Controle.readOnly) &&  !(Controle.disabled)) {
    var TeclaAtual = (isMSIExplorer()) ? Evento.keyCode : Evento.which;
    if (TeclaAtual==9) {TabPressionado = true; return false;}
    var Mascara = Controle.getAttribute("Mascara");
    if ((TeclaAtual == 8) || (TeclaAtual == 37) || (TeclaAtual == 46)) { 	// 8->BackSpace 37->Seta Esquerda, retira o último caracter da direita
      if (TeclaAtual == 46) {Controle.value = '';}                        // 46->Del, apaga todos os caracteres  
      if (Trim(Controle.value) != '') {
        while (Mascara.substring(Controle.value.length-1, Controle.value.length) != '9') {
          Controle.value = Controle.value.substring(0,Controle.value.length-1);}
        if (TeclaAtual == 8 || TeclaAtual == 37) {Controle.value = Controle.value.substring(0,Controle.value.length-1);}
        var SomenteConstanteF = true;
        for (var posicao=0; (posicao <= Controle.value.length-1) && (SomenteConstanteF); posicao++) {
          SomenteConstanteF = (Mascara.substring(posicao, posicao+1) != '9');}
        if (SomenteConstanteF) {Controle.value = '';} 
      }
      return false;
    }
  }
}
function FormatacaoWebNumero(Controle, Evento) {
  var txtSelecionado = '';
  var startSelection = 0;
  var endSelection = 0;
  
  if (TabPressionado) {TabPressionado = false; return true;}
  if (Controle.readOnly) {return false;}
  if (document.selection) {txtSelecionado = document.selection.createRange().text;
		                   startSelection = parseInt(Controle.value.lastIndexOf(txtSelecionado));
		                   endSelection = parseInt(startSelection + txtSelecionado.length);}
  else                    {txtSelecionado = Controle.value.slice(Controle.selectionStart,Controle.selectionEnd);
		                   startSelection = parseInt(Controle.selectionStart);
		                   endSelection = parseInt(Controle.selectionEnd);}
  if (txtSelecionado == Controle.value) {Controle.value = '';
		                                 Controle.select();}
  if (endSelection == Controle.value.length && txtSelecionado != "") {Controle.value = Controle.value.slice(0,startSelection);
		                                                              Controle.select();}
  var CaracterValido = false;
  var CaracterAtual = '';
  var TeclaAtual = (isMSIExplorer()) ? Evento.keyCode : Evento.which;
  if (TeclaAtual == 46) {TeclaAtual = 44;}   // troca ponto por vírgula
  CaracterAtual = String.fromCharCode(TeclaAtual);
  if (CaracterAtual == '.') {CaracterAtual = ',';}
  CaracterValido = (('0123456789,' + ((Controle.getAttribute("Negativo")=='true') ? '+-' : '')).indexOf(CaracterAtual) > -1);
  if ((CaracterValido) && (Trim(Controle.value) == '')) {CaracterValido =  (CaracterAtual != '0');}
  if ((CaracterValido) && (Controle.value == '-')) {CaracterValido =  (CaracterAtual != '0');}
  if ((CaracterValido) && (CaracterAtual == ',') && (Trim(Controle.value) != '')) {CaracterValido = (Controle.value.indexOf(',') == -1);}
  if ((CaracterValido) && (CaracterAtual == '-') && (Trim(Controle.value) != '')) {CaracterValido = (Controle.value.indexOf('-') == -1);}
  if ((CaracterValido) && (CaracterAtual == '+') && (Trim(Controle.value) != '')) {CaracterValido = (Controle.value.indexOf('+') == -1);}
  if (CaracterValido) {
    var ValorFormatado = (Controle.value + CaracterAtual).replace(/[.]/gi,'');
    var PosicaoVirgula = ValorFormatado.indexOf(',');
    var ParteInteira = ValorFormatado.substring(0, ((PosicaoVirgula == -1) ? ValorFormatado.length : PosicaoVirgula));
    if ((ParteInteira == '0') && (CaracterAtual == ',')) {ParteInteira = '';}
    var ValorNegativo = (ParteInteira.indexOf('-') > -1)
    Controle.value = Controle.value.replace(/[-]/gi,'');
    ParteInteira = ParteInteira.replace(/[-]/gi,'');
    var ParteDecimal = ''
    if (PosicaoVirgula > -1) {ParteDecimal = ValorFormatado.substring(PosicaoVirgula+1);}
    var Mascara = Controle.getAttribute("Mascara");
    var PosicaoVirgulaMascara = Mascara.indexOf(',');
    var ParteInteiraMascara = Mascara.substring(0, ((PosicaoVirgulaMascara == -1) ? Mascara.length : PosicaoVirgulaMascara));
    var ParteDecimalMascara = ''
    if (PosicaoVirgulaMascara > -1) {ParteDecimalMascara = Mascara.substring(PosicaoVirgulaMascara+1);}
    if ((CaracterAtual != '-') && (CaracterAtual != '+')) {
      if ((ParteInteira.length <= (ParteInteiraMascara.replace(/[.]/gi,'').length)) && (ParteDecimal.length <= ParteDecimalMascara.replace(/[.]/gi,'').length)) {
        Controle.value = '';
        var PosicaoDigitacao = ParteInteira.length-1;
        for (var PosicaoMascara=ParteInteiraMascara.length-1; ((PosicaoMascara > -1) && (PosicaoDigitacao > -1)) ; PosicaoMascara--) {
          if (ParteInteiraMascara.substring(PosicaoMascara, PosicaoMascara+1) != '9') {
            Controle.value = Mascara.substring(PosicaoMascara, PosicaoMascara+1) + Controle.value;
          }
          else {
            Controle.value = ParteInteira.substring(PosicaoDigitacao, PosicaoDigitacao+1) + Controle.value;
            PosicaoDigitacao = PosicaoDigitacao - 1;
          }
        }
        if ((CaracterAtual == ',') && (PosicaoVirgulaMascara > -1)) {Controle.value = ((Trim(Controle.value) == '') ? '0' : Controle.value)  + CaracterAtual;}
        if (Trim(ParteDecimal) != '') {Controle.value = ((Trim(Controle.value) == '') ? '0' : Controle.value)  + ',' + ParteDecimal;}
      }
    }
    if ((CaracterAtual == '-') || (ValorNegativo)) {Controle.value = '-' + Controle.value;}
    if (CaracterAtual == '+') {Controle.value = Controle.value.replace(/[-]/gi,'');}
  }
  Evento.returnValue = false;
  ValidaNumero(Controle,true);
  return Evento.returnValue;
}
