//valida uma data
function valida_data(data) {
  try {
    if (trim(data)=='') return true;
    
    var datePat = /^(\d{1,2})(\/|-|.)(\d{1,2})\2(\d{4})$/;
    var datadiv = data.match(datePat);
    
    if (datadiv == null) {
      loading_start("error","Formato da Data está incorreto!", true, true);
      return false;
    }
    
    var dia = datadiv[1];
    var mes = datadiv[3];
    var ano = datadiv[4];
    
    if (dia<1 || dia>31 || mes<1 || mes>12 ) {
      loading_start("error","Data Inválida! Verifique", true, true);
      return false;
    }
    
    if ((mes == 4 || mes == 6 || mes == 9 || mes == 11) && dia > 30) {
      loading_start("error","Este mês não pode ter 31 dias! Verifique.", true, true);
      return false;
    }
    
    if(mes == 2) {
      if (dia > 29) {
        loading_start("error","Fevereiro não pode ter mais de 29 dias! Verifique.", true, true);
        return false;
      }
    } else {
      if (dia == 29 && !ano_bi(ano)) {
        loading_start("error","Este ano não é bissexto! Verifique.", true, true);
        return false;
      }
    }
    return true;
  }catch(erro) {loading_start("error",erro,true,true);}
}

/** ************************************************************************************************************************
* Função            : validaDigNum
* Descrição         : Validação de Digitação Numérica
* Parâmetros        : e                 - Ref. Evento KeyPress (event)
*                     vbolVirgula       - Se a validação permitirá vírgula (boolean)
*                     vbolDoisPontos    - Se a validação permitirá dois pontos (boolean)
*                     vBolBarra         - Se a validação permitirá barra (boolean)
* Observação        : A chamada da Função deve ser realizado no return do evento onkeypress
* Retorno           : Boolean
* Data de criação   : 15/12/2008
* Data de alteração : --
* Autor             : Anderson Matuchenko
*** ***********************************************************************************************************************/
function validaDigNum(vObjevent, vbolVirgula,vbolDoisPontos,vBolBarra,vBolSpace){
  if (vbolVirgula==null || vbolVirgula==undefined) vbolVirgula = false;
  if (vbolDoisPontos==null || vbolDoisPontos==undefined) vbolDoisPontos = false;
  if (vBolBarra==null || vBolBarra==undefined) vBolBarra = false;
  if (vBolSpace==null || vBolSpace==undefined) vBolSpace = false;
  var vStrkeyCode = vObjevent.keyCode ? vObjevent.keyCode : vObjevent.which ? vObjevent.which : vObjevent.charCode;
  var vDelete = ((vObjevent.keyCode==46) && (vStrkeyCode==46));
  var vSetas = (vObjevent.keyCode>=37 && vObjevent.keyCode<=40);
  var vTab = (vObjevent.keyCode==9);
  var vF5 = (vObjevent.keyCode==116); 
  var vStrcaract = new RegExp(/^[0-9]+$/i);
  var vStrcaract = vStrcaract.test(String.fromCharCode(vStrkeyCode));
  
  if (vBolSpace==true) {
    if((!vStrcaract) && (String.fromCharCode(vStrkeyCode)!=' ') && (vStrkeyCode!=8) && (!vDelete) && (!vSetas) && (!vTab) && (!vF5)){
      vStrkeyCode=0;
      return false;
    }
  } else {
    if (vbolVirgula==true) {
      if((!vStrcaract) && (String.fromCharCode(vStrkeyCode)!=',') && (vStrkeyCode!=8) && (!vDelete) && (!vSetas) && (!vTab) && (!vF5)){
        vStrkeyCode=0;
        return false;
      }
    }
    else {
      if (vbolDoisPontos==true) {
        if((!vStrcaract) && (String.fromCharCode(vStrkeyCode)!=':') && (vStrkeyCode!=8) && (!vDelete) && (!vSetas) && (!vTab) && (!vF5)){
          vStrkeyCode=0;
          return false;
        }
      }
      else {
        if (vBolBarra==true) {
          if((!vStrcaract) && (String.fromCharCode(vStrkeyCode)!='/') && (vStrkeyCode!=8) && (!vDelete) && (!vSetas && (!vTab) && (!vF5))){
            vStrkeyCode=0;
            return false;
          }
        }
        else {
          if((!vStrcaract) && (vStrkeyCode!=8) && (!vDelete) && (!vSetas) && (!vTab) && (!vF5)){
            vStrkeyCode=0;
            return false;
          }
        }
      }
    }
  }   

}

/** ************************************************************************************************************************
* Função            : validaData
* Descrição         : Valida uma Data qualquer informada.
* Parâmetros        : data              - Data a ser validada.
* Retorno           : boolean
* Data de criação   : --
* Data de alteração : 17/12/2008
* Autor             : Anderson Matuchenko
*** ***********************************************************************************************************************/
function validaTel(e) {
  if (is_ie()) {
    campoTel = e.srcElement;    
  } else {
    campoTel = e.target;
  }
  if (campoTel==null) {
      campoTel = e;
  }
  var tel = campoTel.value;
  if (tel=='') return true;
  var nameTel = campoTel.name;
  campoTel.id = campoTel.name;
  if (tel.length<14) {
    if(tel.length==13) {
      if (tel.substring(8,9)!='-'){
        tel = tel.substring(0,8) + "-" + tel.substring(8,9) + tel.substring(10,13);
        campoTel.value=tel;
      }
    } else {
      loading_start("error", 'Telefone Inválido', true, true);   
      campoTel.value = '';
      return false;       
    } 
  }
  return true;
}

function validaCNPJ(id_campo) {
  var cnpj = id_campo.value; // Recebe o valor digitado no campo
  cnpj = cnpj.replace(/\D/g,'');
  if (cnpj == '') return true;
  cnpj = cnpj.replace('-','');
  cnpj = cnpj.replace('.','');
  cnpj = cnpj.replace('.','');
  cnpj = cnpj.replace('/','');
  var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;
  digitos_iguais = 1;
  if (cnpj.length < 14 && cnpj.length < 15) return false;
  for (i = 0; i < cnpj.length - 1; i++)
    if (cnpj.charAt(i) != cnpj.charAt(i + 1)) {
      digitos_iguais = 0;
      break;
    }
    if (!digitos_iguais) {
      tamanho = cnpj.length - 2;
      numeros = cnpj.substring(0,tamanho);
      digitos = cnpj.substring(tamanho);
      soma = 0;
      pos = tamanho - 7;
      for (i = tamanho; i >= 1; i--) {
        soma += numeros.charAt(tamanho - i) * pos--;
        if (pos < 2) pos = 9;
      }
      resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
      if (resultado != digitos.charAt(0)) return false;
      tamanho = tamanho + 1;
      numeros = cnpj.substring(0,tamanho);
      soma = 0;
      pos = tamanho - 7;
      for (i = tamanho; i >= 1; i--) {
        soma += numeros.charAt(tamanho - i) * pos--;
        if (pos < 2) pos = 9;
      }
      resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
      if (resultado != digitos.charAt(1)) return false;
      return true;
    } else return false;
 } 

