
function ReFormataValor(num) {
num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num))
num = "0";
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
if(cents<10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+'.'+
num.substring(num.length-(4*i+3));
return (((sign)?'':'-') + num + ',' + cents);
}

function FormataValorMoeda(campo,tammax)
{
  var valorAuxiliar = "";
  digitosValidos = "0123456789" ;
  valor = campo.value;
  //retira digitos não numericos
  for (i=0;i<valor.length;i++)
  {
    if(digitosValidos.indexOf(valor.charAt(i))>=0) 
    {
    valorAuxiliar += valor.charAt(i);
    }
  }
  //verifica tamanho (tamanho máximo vindo do método)
  if(tammax > 0 && tammax < valorAuxiliar.length)
  valorAuxiliar = valorAuxiliar.substring(0,tammax);
  //retira zeros desnecessários ao início do número
  while (valorAuxiliar.length > 3 && valorAuxiliar.charAt(0) == "0")
  valorAuxiliar = valorAuxiliar.substring(1);
  valor = valorAuxiliar;
  digitosNumericos = valor.length;
  //insere pontos decimais
  for(i = 1;i<=(digitosNumericos/3);i++)
  valor = valor.substring(0,digitosNumericos + 1 - 3*i) +
  (i==1?',':'.') +
  valor.substring(digitosNumericos + 1 - 3*i);
  campo.value = valor;
} 

function fValidaCampoValor(obj)
{
  if(GM_VerVirgula(obj.value)>1)
  {
    alert('Campo contém 2 ou mais virgulas.')
    obj.value = ''
  }
}
function fValida100(obj, tamMax)
{
  sValor = obj.value
  if(GM_VerVirgula(sValor)>1)
  {
    alert('Campo contém 2 ou mais virgulas!')
    obj.value=''
  }
  else
  {
    sValor = sValor.replace('.','')
    sValor = sValor.replace(',','.')
    if(sValor>tamMax)
    {
      alert('Valor inserido superior ao máximo permitido.')
      obj.value=''
    }
  }
}

  function GM_VerVirgula(sValor)
  {
  verVirgula = 0
    for(i=0;i<=sValor.length;i++)
    {
    carac = sValor.substring(i,i+1)
      if(carac==',')
      { 
      verVirgula = verVirgula + 1;
      }
    }
    return verVirgula;
  }
function GM_Verifica_Data(vAno, vMes, vDia)
  {
    vOk = false;
    //Cria uma data
    vData = new Date(vAno, vMes-1, vDia);
    //Verifica se a data criada é a mesma que foi digitada
    vDia1 = vData.getDate();
    if(vDia1<10)
    {
    vDia1 = '0'+vDia1
    }
    
    vMes1 = vData.getMonth();
    vAno1 = vData.getFullYear();  
    //alert(vDia + ' - ' + vDia1) 
    //alert(vMes-1 + ' - ' + vMes1)
    //alert(vAno + ' - ' + vAno1)
    vOk = isDateJS(vAno,vMes,vDia) && (vDia == vDia1) && ((vMes -1) == vMes1) && (vAno == vAno1);  
    return vOk;
  }

function isDateJS (year, month, day)
{   // catch invalid years (not 2- or 4-digit) and invalid months and days.
    //alert(year)
    //alert(month)
    //alert(day)
  if(parseInt(month.substring(0,1))==0)
  {
    month = parseInt(month.substring(1,2))
  }
  if(parseInt(day.substring(0,1))==0)
  {
    day = parseInt(day.substring(1,2))
  }
    if (! (isYear(year, false) && isMonth(month, false) && isDay(day, false))) return false;
    // Explicitly change type to integer to make code work in both
    // JavaScript 1.1 and JavaScript 1.2.
    var intYear = parseInt(year);
    var intMonth = parseInt(month);
    var intDay = parseInt(day);

    // catch invalid days, except for February
    if (intDay > daysInMonth[intMonth]) return false; 

    if ((intMonth == 2) && (intDay > daysInFebruary(intYear))) return false;

    return true;
}

function onBlurData(campo_obj_data)
{
  var erro = 0;
  var Data = campo_obj_data.value;
  var ArrayData = Data.split("/");
  if(Data != '')
  {
  vAnoOriginal = ArrayData[2]
    if(vAnoOriginal<1900)
    {
      erro = erro + 1;
    }
    if(Data.length!=10) // Valida o len do campo
    {
      erro = erro + 1;
    }
    if(ArrayData.length!=3) // valida o tamanho do array de barras (/) DD/MM/YYYY
    {
      erro = erro + 1;
    }
    else
    {
      biSexto(Data,campo_obj_data);
    }
    if(erro>0)
    {
      campo_obj_data.value = '';
      alert('Data inválida')  
      return false;
    }
  }
}

function biSexto(data_valor, nome_campo)
{
var sData = data_valor.split("/");
var entrou;
  sDia = sData[0];
  sMes = sData[1];
  sAno=(sData[2]%4);
  sAnoOriginal=sData[2];
  entrou = 0;
  
  if((sData[1] == 2) && (sData[0] > 27))
  {
    if(sAno==0)
    {//ano bisexto (Fev tem 29 dias)
      if(sDia>29)
      {
        alert('O mês de Fevereiro ocorre variação em ano bisexto.\nVocê escolheu uma data de ano bisexto. \nEstamos corrigindo a data.');
        nome_campo.value = '29'+'/'+sData[1]+'/'+sData[2];
        entrou = 1;
      }
    }
    else
    {//nao eh ano bisexto, fev tem 28 dias
      if(sDia>28)
      {
        alert('O mês de Fevereiro ocorre variação em ano bisexto.\n A Data escolhida não é valida. \nEstamos corrigindo a data.');
        nome_campo.value = '28'+'/'+sData[1]+'/'+sData[2];
        entrou = 1;
      }
    }
  }
  if(entrou == 0)
  {
    if(GM_Verifica_Data(sAnoOriginal, sMes, sDia)==false)
    {
//      alert('Data inexistente.')
      nome_campo.value = '';
    }
  }
}


function mascara_data(data_valor,nome_campo, evento)
{
  CharCode = evento.keyCode;
  var sData = data_valor.split("/");
  var ano;
  ano = sData[2];
  if((sData[0]>31) || (sData[1]>12))
  {
    nome_campo.value='';
    alert('Data Inválida');
  }
  else
  {
    if(CharCode!=8)//verificacao do BACKSPACE, so entra qnd nao for backspace
    {
      var mydata = '';
      mydata = mydata + data_valor;
      if (mydata.length == 2) {
        mydata = mydata + '/';
        nome_campo.value = mydata;
      }
      if (mydata.length == 5) {
        mydata = mydata + '/';
        nome_campo.value = mydata;
      }
    }
  }
//  if (data_valor.length == 10)
//  {
//    biSexto(mydata,nome_campo);
//  }
}

function mascara_hora(hora_valor,nome_campo)
{
var sHora = hora_valor.split(":");
  if((sHora[0]>23) || (sHora[1]>59))
  {
  alert('Hora Inválida')
  nome_campo.value=''
  nome_campo.focus()
  }
  else
  {
    var myHora = '';
    myHora = myHora + hora_valor;
    if (myHora.length == 2) {
      myHora = myHora + ':';
      nome_campo.value = myHora;
    }
  }
}

function fValidaNumerico(oEvento) 
{
  oEvento = (oEvento) ? oEvento : event;
    var charCode = (oEvento.charCode) ? oEvento.charCode : ((oEvento.keyCode) ? oEvento.keyCode : ((oEvento.which) ? oEvento.which : 0));
  if (charCode == 44) return true;  
    if (charCode > 31 && (charCode < 48 || charCode > 57)) 
    {
        return false;
    }
    return true;
}


