//===== fazer a validacao de um campo com mm/aaaa ==================
function chk_mes(el)
{
   var msg="";
   var s=el.value.replace(/\D/g,"");
   var m=parseInt(s.substr(0,2), 10);
   var a=parseInt(s.substr(2,4), 10);
   var valid=true;

   if ( (m<1) || (m>12) ) valid=false;
   if ( (a<2000) || (a>2012) ) valid=false;

   if (!valid) msg="Mes Inválido!";
   else el.value=s.substr(0,2)+"/"+s.substr(2,4);

   return {valid: valid, msg: msg}
}


//===== fazer a validacao de um campo com mm/aaaa ==================
function chk_dia_mes(el)
{
   var msg="";
   var s=el.value.replace(/\D/g,"");
   var d=parseInt(s.substr(0,2), 10);
   var m=parseInt(s.substr(2,2), 10);
   var valid=true;

   s = s.replace(/(\d{2})(\d{2})/,"$1/$2");

   data = s + "/2004";
   var vetor = data.split("/");
   var valid = true;
   var regData = /(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[012])\/[12][0-9]{3}/;
   if (!data.match(regData)) valid = false;
   if (((vetor[1] == 4) || (vetor[1] == 6) || (vetor[1] == 9) || (vetor[1] == 11)) && (vetor[0] > 30 )) var valid = false;
   if (vetor[1] == 2){
       if ((vetor[0] > 28) && ((vetor[2] % 4 ) != 0)) valid = false;
       if ((vetor[0] > 29) && ((vetor[2] % 4 ) == 0)) valid = false;
   }
   el.value = s;
   if (!valid) var msg = ('Dia e mes não é válido');
   return {valid: valid, msg: msg}
}

//=================== Valores com casas decimais =========================================================
function chk_ano(el)
{
   var v=el.value;
   var s=v.replace(/\D/g,"");
   var valid=true;

   el.value=s;

   if (s.length>0)
   {
      if ( (s<'1500') || (s>'2100')) valid=false;
   }
   else // s.length==0
   {
      valid=false;
   }
   if (!valid) var msg = ('Ano inválido!');
   return {valid: valid, msg: msg}
}
//==========================================================================================



//=================== Valores com casas decimais =========================================================
function chk_valor(el)
{
   d=0;
   if (el.hasClass('um') )    d=1;
   if (el.hasClass('dois') )  d=2;
   if (el.hasClass('tres') )  d=3;
   if (el.hasClass('quatro')) d=4;

   var v=el.value;
   var s=v.replace(/\D/g,"");
   var valid=true;

   if (s.length>0)
   {
      s=v.split(',');
      var sinal=s[0].charAt(0);
      if (sinal!="-") sinal="";
      var v=s[0].replace(/\D/g,"");
      if (s.length>1) var c=s[1].replace(/\D/g,""); else var c="0";
      //====== Formatar o Valor ====================================
      var c=c+"000000"; c=c.substr(0,d);
      var t=v.length;

      r="";
      if (t==0) { r='0'; }
      if (t>3)  { r=r+'.'+v.substr(t-3,3); v=v.substr(0,t-3); t=v.length; }
      if (t>3)  { r='.'+v.substr(t-3,3)+r; v=v.substr(0,t-3); t=v.length; }
      if (t>3)  { r='.'+v.substr(t-3,3)+r; v=v.substr(0,t-3); t=v.length; }
      if (t>3)  { r='.'+v.substr(t-3,3)+r; v=v.substr(0,t-3); t=v.length; }
      if (t>3)  { r='.'+v.substr(t-3,3)+r; v=v.substr(0,t-3); t=v.length; }
      if (t>0)  r=v+r;
      if (d>0)  r=r+','+c;
      //============================================================
      el.value=r;
   }
   else // s.length==0
   {
      el.value='';
   }
   return {valid: valid}
}
//==========================================================================================


//================  C  P  F  =======================
function chk_cpf(el)
{
   var valid = true;
   var msg="";
   var s=el.value.replace(/\D/g,"");
   if (s.length>0)
   {
     valid=valida_cpf(s);
     s=s.replace(/(\d{3})(\d)/,"$1.$2");
     s=s.replace(/(\d{3})(\d)/,"$1.$2");
     s=s.replace(/(\d{3})(\d)/,"$1-$2");
     if (!valid) msg="CPF Inválido!";
   }
   el.value=s;
   return {valid: valid, msg: msg}
}

function valida_cpf(cpf)
{
  d1 = 0;
  for (i=0;i<9;i++) d1 += cpf.charAt(i)*(10-i);
  d1 = 11 - (d1 % 11);
  if (d1>9) d1 = 0;
  if (cpf.charAt(9) != d1) return false;

  d1 *= 2;
  for (i=0;i<9;i++) d1 += cpf.charAt(i)*(11-i);
  d1 = 11 - (d1 % 11);
  if (d1>9) d1 = 0;

  if (cpf.charAt(10) != d1) return false;
  return true;
}
//==============================================================

//============================  C  G  C  =======================
function chk_cnpj(el)
{
   var valid = true;
   var msg="";
   var v=el.value.replace(/\D/g,"");
   if (v.length>0)
   {
       valid=valida_cnpj(v);

       v=v.replace(/^(\d{2})(\d)/,"$1.$2");
       v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3");
       v=v.replace(/\.(\d{3})(\d)/,".$1/$2");
       v=v.replace(/(\d{4})(\d)/,"$1-$2");

      if (!valid) msg="CNPJ Inválido!";
   }
   el.value=v;
   return {valid: valid, msg: msg}
}

function valida_cnpj(cgc)
{
  var d1=0,
      d2=0,
      soma=0;

  var soma=(cgc.charAt( 0)*5)+
           (cgc.charAt( 1)*4)+
           (cgc.charAt( 2)*3)+
           (cgc.charAt( 3)*2)+
           (cgc.charAt( 4)*9)+
           (cgc.charAt( 5)*8)+
           (cgc.charAt( 6)*7)+
           (cgc.charAt( 7)*6)+
           (cgc.charAt( 8)*5)+
           (cgc.charAt( 9)*4)+
           (cgc.charAt(10)*3)+
           (cgc.charAt(11)*2);
  d1 = 11 - (soma % 11);
  if (d1>9) d1 = 0;
  if (cgc.charAt(12) != d1) return false;

  var soma=(cgc.charAt( 0)*6)+
           (cgc.charAt( 1)*5)+
           (cgc.charAt( 2)*4)+
           (cgc.charAt( 3)*3)+
           (cgc.charAt( 4)*2)+
           (cgc.charAt( 5)*9)+
           (cgc.charAt( 6)*8)+
           (cgc.charAt( 7)*7)+
           (cgc.charAt( 8)*6)+
           (cgc.charAt( 9)*5)+
           (cgc.charAt(10)*4)+
           (cgc.charAt(11)*3)+
           d1*2;
   d2=11-(soma%11);
   if (d2>9) d2=0;
   if (cgc.charAt(13) != d2) return false;

   return true;
}
//====================================================================

function chk_cpf_cnpj(el)
{
  var s=el.value.replace(/\D/g,"");
  if (s.length>11) return chk_cnpj(el); // CNPJ
  else             return chk_cpf(el);  // CPF
}
//====================================================================


//============  Inscricao Estadual =======================
function chk_ie(el)
{
   var valid = true;
   var msg="";
   var s=el.value.replace(/\D/g,"");
   if (s.length>0)
   {
       valid=valida_ie(s);

       s=s.replace(/\D/g,"");
       s=s.replace(/(\d{3})(\d)/,"$1.$2");
       s=s.replace(/(\d{3})(\d)/,"$1.$2");

      if (!valid) msg="Inscricao Inválida!";
   }
   el.value=s;
   return {valid: valid, msg: msg}
}

function valida_ie(ie)
{
  d1 = 0;
  for (i=0;i<8;i++) d1 += ie.charAt(i)*(i+2);
  d1 = (d1 % 11);
  if (d1>9) d1 = 0;
  if (ie.charAt(8) != d1) return false;
  return true;
}
//========================================================

