
//formata de forma generica os campos
function formataCampo(campo, Mascara, evento)
{
    var boleanoMascara;

    var Digitato = evento.keyCode;
    exp = /\-|\.|\/|\(|\)| /g
    campoSoNumeros = campo.value.toString().replace( exp, "" );

    var posicaoCampo = 0;
    var NovoValorCampo="";
    var TamanhoMascara = campoSoNumeros.length;

    if (Digitato != 8) { // backspace
        for(i=0; i<= TamanhoMascara; i++) {
            boleanoMascara  = ((Mascara.charAt(i) == "-") || (Mascara.charAt(i) == ".")
                                || (Mascara.charAt(i) == "/"))
            boleanoMascara  = boleanoMascara || ((Mascara.charAt(i) == "(")
                                || (Mascara.charAt(i) == ")") || (Mascara.charAt(i) == " "))
            if (boleanoMascara) {
                NovoValorCampo += Mascara.charAt(i);
                  TamanhoMascara++;
            }else {
                NovoValorCampo += campoSoNumeros.charAt(posicaoCampo);
                posicaoCampo++;
              }
          }
        campo.value = NovoValorCampo;
          return true;
    }else {
        return true;
    }
}

//valida numero inteiro com mascara
function mascaraInteiro(){
    if (event.keyCode < 48 || event.keyCode > 57){
        event.returnValue = false;
        return false;
    }
    return true;
}

//adiciona mascara ao CPF
function MascaraCPF(txtCPF)
{
    if(mascaraInteiro(txtCPF)==false)
	{
        event.returnValue = false;
    }
    return formataCampo(txtCPF, '000.000.000-00', event);
}

//adiciona mascara de data
function MascaraData(txtDtNascimento)
{
    if(mascaraInteiro(txtDtNascimento)==false)
	{
        event.returnValue = false;
    }
    return formataCampo(txtDtNascimento, '00/00/0000', event);
}

//adiciona mascara ao CEP
function MascaraCep(txtCep)
{
    if(mascaraInteiro(txtCep)==false)
	{
        event.returnValue = false;
    }
    return formataCampo(txtCep, '00000-000', event);
}

// adiciona mascara aos telefones
function MascaraTel(txtTel)
{
    if(mascaraInteiro(txtTel)==false)
	{
        event.returnValue = false;
    }
    return formataCampo(txtTel, '(00)0000-0000', event);
}


//adiciona mascara de cnpj
function MascaraCNPJ(txtCNPJ){
    if(mascaraInteiro(txtCNPJ)==false){
        event.returnValue = false;
    }
    return formataCampo(txtCNPJ, '00.000.000/0000-00', event);
}

// ************ ROTINAS PARA VALIDAR DIGITO NUMERICO ************
// valida digitos numericos
// sintaxe: onKeyPress='return (validaDigNumerico(event));'
function validaDigNumerico(e)
{
   var keynum = '';
   if(window.event) // IE
   { keynum = e.keyCode; }
   else if(e.which) // Netscape/Firefox/Opera
   { keynum = e.which;}

   var s = String.fromCharCode(keynum);
   if ( (s < "0" || s > "9") && (keynum!= 13) && (keynum != 8)   )
   {
      return false;
   }
}
//-------------------------------

// ************ ROTINA PARA verificar campos nulos ************
function validaCampo(pObj)
{
   var vObj = getCampo(pObj);
   var bValido = (vObj != null);
   if (bValido)
   {
      var sVar = new String(vObj.value);
      sVar = sVar.replace(/ /gi, "");
      bValido = (sVar.length > 0);
   }
   return bValido;
}
//-------------------------------

// ************ ROTINA PARA pegar um campo do form ************

function getCampo(pNameORId)
{
   var vObj = document.getElementById(pNameORId);
   if (vObj == null)
   {
      vObj = document.getElementsByName(pNameORId);
      vObj = vObj[0];
   }
   return vObj;
}
//-------------------------------

// ************ Rotina para formatar a data no padrao ************
function formataData(pData)
{
   var sVar = new String(pData);
   if (sVar.search("/") < 0)
   {
      sVar = sVar.substr(0, 2)+'/'+sVar.substr(2, 2)+'/'+sVar.substr(4, 4);
   }
   return sVar;
}
//-------------------------------

// Rotina para validar a data digita
//  a data deve ser informada no seguinte formato: dd/mm/yyyy
// sintaxe: onBlur = validaData(this);
function validaData(obj)
{
  var erro = "-1";
  var sVal = new String(obj.value);

  if  (sVal.length > 0)
  {
  sVal = formataData(sVal);
  obj.value = sVal;
  var sSpl = sVal.split("/");

     var dia, mes, ano;

     dia = sSpl[0];
     mes = sSpl[1];
     ano = sSpl[2];

     if ((sVal.length < 6) ||
         (dia.length <  1) || (dia.length > 2) ||
         (mes.length <  1) || (mes.length > 2) ||
         (ano.length != 4)
        )
     { erro = "Data inválida ";}
     else
     {
        if ( ano < 1900)
        { erro = "Ano inválido. Deve ser maior que 1900"; }
        else
        {  if (mes < 1 || mes > 12)
           {  erro = "Mês inválido. Deve estar entre 1 e 12"; }
           else
           {  d = new Date();
              d.setFullYear(eval(ano), eval(mes), 1);
              d.setDate(d.getDate()-1);
              var ultDia = d.getDate();

              if (dia < 1 || dia > ultDia)
              { erro = "Dia inválido. Deve estar entre 1 e "+ultDia; }
              else
              { if (mes == 2)
                { if (dia < 1 || dia > ultDia)
                  { erro = "Dia inválido. Deve estar entre 1 e "+ultDia+" para o mês de fevereiro."; }
                }
              }
           }
        }
     }

     if ((erro != "-1") && (obj.value != ""))
     {  obj.value = "";
        alert (erro);
        obj.focus();
     }
  }
}

// sintaxe: onBlur='verificaDataAtual(this);'
function verificaDataAtual(pData)
{
   var sVal = new String(pData.value);
   var bErro = false;

   if  (sVal.length > 0)
   {
      sVal = formataData(sVal);
      pData.value = sVal;
      var sSpl = sVal.split("/");
      var dData = new Date();
      var dia, mes, ano;
      dia = sSpl[0];
      mes = sSpl[1];
      ano = sSpl[2];
      var dDtDig = new Date();
      dDtDig.setFullYear(eval(ano), eval(mes)-1, dia);
      if (dDtDig > dData)
      {
         bErro = true;
      }
   }
   if (bErro)
   {
      alert('Data informada maior que a data atual.\nPor favor verifique.');
      pData.focus();
   }
}

// ************ ROTINAS PARA VALIDAR E-MAIL ************
// rotina de validação de E-Mail
// sintaxe: onBlur(frm.obj);
function validaEmail(pObjEmail)
{
   var sVar = new String(pObjEmail.value);
   var bValido = false;
   if (sVar != '')
   {
      if (sVar.indexOf('@') > 0)
      {// tem @
         sVar = sVar.substr(sVar.indexOf('@')+1);
         if (sVar.indexOf('.') > 0 )
         {// tem '.' entao pode ter dominio
            sVar = sVar.substr(sVar.indexOf('.')+1);
            if (sVar.length > 0)
            { // email está correto.
               bValido = true;
            }
         }
      }
      else
      { bValido = false; }
      if (!bValido)
      {
         alert('E-Mail inválido.');
         pObjEmail.value = '';
         pObjEmail.focus();
      }
      else
      {
         sVar = pObjEmail.value;
         pObjEmail.value = sVar.toLowerCase();
      }
   }
}
//-------------------------------

function valida_CNPJ_CPF(pValue)
{
   var _dig1     = '';
   var _dig2     = '';
   var _digV1    = '';
   var _digV2    = '';
   var _doc      = '';
   var _multiAte = 0;
   
   function retiraMascara(cgc_cpf)
   {
      var s = '';
      for (var i=0; i < cgc_cpf.length; i++)
      {
         if ( (cgc_cpf.charAt(i) != '/') &&
              (cgc_cpf.charAt(i) != '.') &&
              (cgc_cpf.charAt(i) != '-') &&
              (cgc_cpf.charAt(i) != ' ')    )
         {
            s = cgc_cpf.charAt(i) + s;
         }
      }
      return s;
   }
   
   function devolveDigito(pcgc_cpf)
   {
      var total = 0;
      var x     = 2;
      var y     = 0;
      for (var i = 0; i < pcgc_cpf.length; i++)
      {
         total = total + (parseInt(pcgc_cpf.charAt(i)) * x);
         x++;
         if (x == (_multiAte+1))
         { x = 2; }
      }
      y = 11 - (total % 11);
      if (y > 9)
      {  y = 0;}
      return y;
   }
   
   _doc = retiraMascara(pValue);

   _dig1 = _doc.substr(1,1);
   _dig2 = _doc.substr(0,1);
   
   if ( _doc.length > 11)
   { _multiAte = 9; }
   else { _multiAte = 11; }
   
   _digV1 = devolveDigito(_doc.substr(2));
   _digV2 = devolveDigito(_digV1 + _doc.substr(2));
   
   return ( (_dig1 == _digV1) && (_dig2 == _digV2) );
}

// ************ ROTINA PARA pegar o valor de um objeto radio do form ************
function getRadioValue(pNameORId)
{
   var i = 0;
   var sValue = '';
   var rdb = document.getElementsByName(pNameORId);
   while ( (sValue == '') && (i <= (rdb.length -1)) )
   {
      if ( rdb[i].checked == true )
      { sValue = rdb[i].value;  }
      i++;
   }

   return sValue;
}
//-------------------------------
