function msk_data(objeto){
	
	if (event.keyCode < 48 || event.keyCode > 57){
	 event.returnValue = false;
	}
	
	if ((objeto.value).length == 2) {
		objeto.value = (objeto.value).substring(0,2) + "/"
		return false
	}
	if ((objeto.value).length == 5) {
		objeto.value = (objeto.value).substring(0,2) + "/" + (objeto.value).substring(5,3) + "/"
		return false
	}
	if ((objeto.value).length > 5) {
		objeto.value = (objeto.value).substring(0,2) + "/" + (objeto.value).substring(5,3) + "/" + (objeto.value).substring(6,(objeto.value).length)
		return false
	}
}
function msk_fone(objeto){
	if(event.keyCode < 48 || event.keyCode > 57){
	 event.returnValue = false;
	} 
	
	if ((objeto.value).length == 4) {
		objeto.value = (objeto.value).substring(0,4) + "-"
		return false
	}
}

function OnlyNumber(event){
   if ((event.keyCode < 48)||(event.keyCode > 57)) {
        event.keyCode = 0;
   }
}
function gera_zero( num_dec ){
    var zero = "0";
    if (num_dec > 0) {
      zero += ",";
      for ( i=0; i < num_dec ;i++ )
        zero += "0";
    }
    return zero;
}

function GetOutZeroLeft(STR){
  var sAux="";
  var i=0;
  var negativo = false;
  STR=new String(STR);
  if (STR.charAt(0) == "-") {
    negativo = true;
    STR = STR.substr(1);
  }
  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 (negativo ? "-" : "" ) + sAux;
}
function RefreshField(obj){
   obj.value = obj.value;
}
function Formato_Valor_Monetario (fValue, num_dec, max_length, ponto_milhar) {
  var Digito = fValue;
  var inteiro = "";
  var decimal = "";
  var Contador = 0;
  var negativo = false;
  var saida;

  if (Digito.charAt(0) == "-") {
    negativo = true;
    Digito = Digito.substr(1);
  }
  var TamanhoDigito = Digito.length;

  if (TamanhoDigito <= num_dec) {
    inteiro  = "0";
    for (i=0;i<( num_dec - TamanhoDigito );i++)
      decimal = decimal + "0";
    decimal = decimal + Digito;
  }
  else {
    decimal = Digito.substring((TamanhoDigito - num_dec), TamanhoDigito);
    i=(num_dec+1);//decimais
    while (i <= TamanhoDigito){
      if (Contador==3) {
        inteiro = (ponto_milhar ? "." : "") + inteiro;//voltar o . (ponto) se quiser o decimal point
        Contador = 0;
      }
      inteiro = Digito.charAt(TamanhoDigito - i) + inteiro;
      Contador++;
      i++;
    }
  }
  if (inteiro == "")
    inteiro = "0";
  if (decimal == "")
    for (i=0;i<num_dec;i++)
      decimal += "0";
  if(num_dec == 0) {
    saida = inteiro;
  }
  else {
    Digito = inteiro+","+decimal;
    saida = (TamanhoDigito == max_length) ? Digito.substring(0, max_length - 1)
                                          : Digito;
  }
  if (saida.charAt(0) == "." ) // ponto de milhar no início tem que ser eliminado
    saida = saida.substr(1);
  saida = (negativo ? "-" : "") + saida;
  return saida;
}

function VLR_Monetario_Para_Float(fValue){
  var STR = fValue;
  while (STR.indexOf(".", STR) > 0 ) {
    STR = STR.replace(".", "")
  }
  STR = STR.replace(",", ".")
  return STR;
}
function Float_Para_VLR_Monetario(fValue, num_dec, ponto_milhar, max_length ){
  var STR = fValue;
  if (ponto_milhar == true) {
    STR = STR.replace(".", "")
    STR = Formato_Valor_Monetario(STR, num_dec, max_length, true);
  } else
    STR = STR.replace(".", ",")
  return STR;
}



function FormatOnKeyPress(OBJ, evt, num_dec, permite_negativo, ponto_milhar, classe_pos, classe_neg ){
  var class_pos = classe_pos == true ? "TextBox" : "";
  var class_neg = classe_neg == true ? "Textbox_negat" : "";
  var STR, zero, keyCode, Digito, Contador, TamanhoDigito, realMaxLength;
  var keyCode = (evt.charCode) ? evt.charCode
                               : ( (evt.keyCode) ? evt.keyCode
                                                 : ( (evt.which) ? evt.which : 0) );
  if (keyCode == 9) return true;
  STR = new String(OBJ.value);
  zero = STR == "" ? "" : gera_zero(num_dec);
  realMaxLength = permite_negativo ? OBJ.maxLength - 1 : OBJ.maxLength;

  if ( ( keyCode != 45 && keyCode != 8 &&       // tecla diferente de "-" e backspace
         ( ( realMaxLength == STR.length && STR.charAt(0) != "-" ) ||
           ( OBJ.maxLength == STR.length ) )  // já atingiu o limite do campo
        ) ||
       ( ( keyCode == 45 || keyCode == 48 ) && STR == zero )  // tecla é "-" ou "zero" e valor do campo é "zero" (elimina flick de CSS)
     ) {
    return false;
  }
  var sinal_menos = false;
  if ( (keyCode == 45 || keyCode == 8) || (keyCode > 47 && keyCode < 58) )
  {
    if ( permite_negativo && STR.charAt(0) == "-" ) {
      sinal_menos = true;
      STR = STR.substr(1);  // retira o sinal
    }
    if ( keyCode != 45 ) {  // tecla "-"
      Digito = STR;
      TamanhoDigito = Digito.length;
      Contador = 0;

      if (TamanhoDigito > 1){
        numer = "";
        for (i = TamanhoDigito; (i >= 0); i--){
          if ((parseInt(Digito.charAt(i))>=0) && (parseInt(Digito.charAt(i))<=9))
            {
            Contador++;
            if ((Contador == num_dec) && ((TamanhoDigito -i) < 4)){
              numer = ","+numer;
              Contador = 0;
            }
            else if (Contador == (num_dec + 1) && ponto_milhar){
              numer = "."+numer;
              Contador = 0;
            }
            numer = Digito.charAt(i)+numer;
          }
        }
        STR = numer;
      }
    } else {
      if (permite_negativo) {
        sinal_menos = !sinal_menos;
      }
    }
    STR = (sinal_menos ? "-" : "" ) + STR;
    OBJ.value = STR;

  if ( permite_negativo && ( ( class_pos != "" && class_pos != false ) || (class_neg != "" && class_neg != false ) ) )
    FormatClassPosNeg(OBJ, class_pos, class_neg);

    return ( keyCode != 45 );  // se for tecla "-" evita inclusao no final do texto.
  } else {
    return( false )
  }
}

function FormatOnKeyUp(OBJ,num_dec){
   var decimal,inteiro;
   var i,count;
   STR = new String(OBJ.value);
   STR = GetOutZeroLeft(STR);
   inteiro="";
   decimal="";
   if (event.keyCode == 46)
    {
      STR = "";
    OBJ.value = "";
      return true;
  }
   if (STR.length <= num_dec){
       inteiro  = "0";
       for (i=0;i<(num_dec-STR.length);i++){
            decimal = decimal + "0";
       }
       decimal = decimal + STR;
   }
   else {
       decimal = STR.substring((STR.length-num_dec),STR.length);
       i=(num_dec+1);//decimais
       count=0;
       while (i<=STR.length){
          if (count==3) {
              inteiro = "" + inteiro;//voltar o . (ponto) se quiser o decimal point
              count = 0;
          }
          inteiro = STR.charAt(STR.length-i) + inteiro;
          count++;
          i++;
       }
   }
   if (inteiro == "") {
      inteiro = "0";
   }
   if (decimal == "") {
      for (i=0;i<num_dec;i++){
           decimal = decimal + "0";
      }
   }
   if(num_dec == 0) {
      OBJ.value = inteiro;
   }
   else {
      var valor = inteiro+","+decimal;
      if (valor.length == OBJ.maxLength) {
         OBJ.value = OBJ.value.substring(0,OBJ.maxLength-1);
      }
      else {
         OBJ.value = inteiro+","+decimal;
      }
   }
   return true;
}
function FormatOnKeyUp_V2(OBJ, evt, num_dec, ponto_milhar, classe_pos, classe_neg ){
  var class_pos = classe_pos == true ? "TextBox" : "";
  var class_neg = classe_neg == true ? "Textbox_negat" : "";
  var STR;
  var negativo = false;
  var keyCode = (evt.charCode) ? evt.charCode
                               : ( (evt.keyCode) ? evt.keyCode
                                                 : ( (evt.which) ? evt.which : 0) );
  if (keyCode == 9 || keyCode == 16 )  // backspace, shift, etc,...
    return true;
  if (keyCode == 46)  // tecla "DEL"
  {
    STR = "";
  } else {
    STR = new String(OBJ.value);
    if (STR.charAt(0) == "-" ) { // original é negativo, reserva
      negativo = true;
      STR = STR.substr(1);
    }
    STR = GetOutZeroLeft(STR);
    STR = Formato_Valor_Monetario(STR, num_dec, OBJ.maxLength, ponto_milhar);
    STR = ( negativo && STR != gera_zero(num_dec) ? "-" : "" ) + STR;
  }
  OBJ.value = STR;
  if ( class_pos != "" || class_neg != "" )
    FormatClassPosNeg(OBJ, class_pos, class_neg);
}
function FormatOnKeyDown(OBJ,teclapres,num_dec){
   var decimal,inteiro;
   var i,count;
   STR = new String(OBJ.value);
   inteiro="";
   decimal="";

   if (event.keyCode == 46)
    {
      STR = "";
    OBJ.value = "";
      return true;
  }

   if (OBJ.maxLength > STR.length){
      STR = GetOutZeroLeft(STR); //ESTA FUNCAO TIRA TAMBEM PONTO E VIRGULA
      if ( ((event.keyCode > 47) && (event.keyCode < 59)) ||
            ((event.keyCode > 95) && (event.keyCode < 106))   ){

         if (STR.length <= num_dec){
             inteiro  = "0";
             for (i=0;i<(num_dec-STR.length);i++){
                  decimal = decimal + "0";
             }
             decimal = decimal + STR;
         }
         else {
               decimal = STR.substring((STR.length-num_dec),STR.length);
               i=num_dec+1;//decimais
               count=0;
               while (i<=STR.length){
                 if (count==3) {
                    inteiro = "" + inteiro;//voltar o . (ponto) se quiser o decimal point
                    count = 0;
                 }
                 inteiro = STR.charAt(STR.length-i) + inteiro;
                 count++;
                 i++;
              }
         }
      }
      else{
         if (event.keyCode == 8){
            if (STR.length <= num_dec){
                inteiro  = "0";
                for (i=0;i<(num_dec-STR.length);i++){
                     decimal = decimal + "0";
                }
                decimal = "0" + decimal + STR;
            }
            else {
                decimal = STR.substring((STR.length-num_dec),STR.length);
                i=(num_dec+1);//decimais
                count=0;
                while (i<=STR.length){
                   if (count==3) {
                      inteiro = "" + inteiro;//voltar o . (ponto) se quiser o decimal point
                      count = 0;
                   }
                   inteiro = STR.charAt(STR.length-i) + inteiro;
                   count++;
                   i++;
                }
            }

         }
         else {
             if (STR.length <= num_dec){
                 inteiro  = "0";
                 for (i=0;i<(num_dec-STR.length);i++){
                    decimal = decimal + "0";
                 }
                 decimal = decimal + STR;
             }
             else {
                 decimal = STR.substring((STR.length-num_dec),STR.length);
                 i=(num_dec+1);//decimais
                 count=0;
                 while (i<=STR.length){
                    if (count==3) {
                        inteiro = "" + inteiro;//voltar o . (ponto) se quiser o decimal point
                        count = 0;
                    }
                    inteiro = STR.charAt(STR.length-i) + inteiro;
                    count++;
                    i++;
                 }
             }
         }
   }
   if (inteiro == "") {
      inteiro = "0";
   }
   if (decimal == "") {
      for (i=0;i<num_dec;i++){
           decimal = decimal + "0";
      }
   }
   if(num_dec == 0) {
      OBJ.value = inteiro;
   }
   else {
      var valor = inteiro+","+decimal;
      if (valor.length == OBJ.maxLength) {
         OBJ.value = OBJ.value.substring(0,OBJ.maxLength-1);
      }
      else {
         OBJ.value = inteiro+","+decimal;
      }
   }
   return true;
   }
}
