/**
  Arquivo de funções
  nulo -> verifica se um campo é nulo
     Passagem: nulo (campo_do_formulário, nome_para_o_aviso)
     Exemplo: if (nulo(document.forms[0].nome,'Nome')) return false;

  cpfCnpj -> valida CPF/CNPJ
     Passagem: nulo (campo_do_formulário, tipo('CNPJ' ou 'CPF')
     Exemplo: if (cpfCnjp(document.forms[0].cnpj,'CNPJ')) return false;      

   enterAsTab -> troca ENTER por TAB no formulário
     Utilização: chamar a função após o </form> na página
     Exemplo: <script type="text/javascript">enterAsTab();</script>

   email -> valida o e-mail
     Passagem: nulo (campo_do_formulário)   
     Exemplo: if (email(document.forms[0].email)) return false;      

   numero -> aceita apenas números no campo
     Passagem: nulo (campo_do_formulário, nome_para_o_aviso)   
     Exemplo: if (numero(document.forms[0].id,'Código')) return false;      

**/

 function numero(campo,mensagem)
 {
  valor = campo.value;
  for (var i = 0; i < valor.length; i++)
  {
   var ch = valor.substring(i, i + 1);
   if ((ch < '0') || ('9' < ch))
   {
    alert(mensagem+' deve conter apenas números');
    campo.value = '';
    campo.focus();
    return true;
   }
  }
  return false;
 }


enterAsTab = function(){
    function next(e){
        var l, i, f, j, o = e.target;
        if(e.key == 13 && !/textarea|select/i.test(o.type)){
            for(i = l = (f = o.form.elements).length; f[--i] != o;);
            for(j = i; (j = (j + 1) % l) != i && (!f[j].type || f[j].disabled || f[j].readOnly || f[j].type.toLowerCase() == "hidden"););                
            e.preventDefault(), j != i && f[j].focus();
        }
    }
    for(var f, i = (f = document.forms).length; i; addEvent(f[--i], "keypress", next));
};

function nulo(campo,nome)
{
  if (campo.value == '')
  {
    alert ('O campo '+nome+' é obrigatório');
	campo.focus();
	return true;
  }
  else
  {
    return false;
  }
}

function tabEnter(event)
{
  if(event.keyCode==13) event.keyCode=9;
}

function cpfCnjp(campo,tipo)
{
  // passar tipo como CPF ou CNPJ
  if (!validacpf(campo.value)) 
  {
	 alert(tipo+' inválido!')
	 campo.focus();
	 return true;
  }
  return false;
}

function email(campo)
{
   email = campo.value;
   if (email.indexOf("@") == -1 || email.indexOf(".") == -1) 
   {
 	 alert('E-mail inválido!')
	 campo.focus();
	 return true;
   }
  return false;
}

function validacpf(ncpf)
{
  var i;
  s = ncpf
  if (s.length != 11 && s.length != 14) {
    return false;
  }
  if (VerifyCNPJ(s) == 1) {
    return true;
  }
  var c = s.substr(0,9);
  var dv = s.substr(9,2);
  var d1 = 0;
  for (i = 0; i < 9; i++)
  {
    d1 += c.charAt(i)*(10-i);
  }
  if (d1 == 0){
    return false;
  }  
  d1 = 11 - (d1 % 11);
  if (d1 > 9) d1 = 0;
  if (dv.charAt(0) != d1)
  {
    return false;
  }
  d1 *= 2;
  for (i = 0; i < 9; i++)
  {
    d1 += c.charAt(i)*(11-i);
  }
  d1 = 11 - (d1 % 11);
  if (d1 > 9) d1 = 0;
  if (dv.charAt(1) != d1)
  {
    return false;
  }
  return true;
}

function isNUMB(c)
{
  if((cx=c.indexOf(","))!=-1)
  {
    c = c.substring(0,cx)+"."+c.substring(cx+1);
  }
  if((parseFloat(c) / c != 1))
  {
    if(parseFloat(c) * c == 0)
    {
      return(1);
    }
    else
    {
      return(0);
    }
  }
  else
  {
    return(1);
  }
}

function LIMP(c)
{
  while((cx=c.indexOf("-"))!=-1)
  {
    c = c.substring(0,cx)+c.substring(cx+1);
  }
  while((cx=c.indexOf("/"))!=-1)
  {
    c = c.substring(0,cx)+c.substring(cx+1);
  }
  while((cx=c.indexOf(","))!=-1)
  {
    c = c.substring(0,cx)+c.substring(cx+1);
  }
  while((cx=c.indexOf("."))!=-1)
  {
    c = c.substring(0,cx)+c.substring(cx+1);
  }
  while((cx=c.indexOf("("))!=-1)
  {
    c = c.substring(0,cx)+c.substring(cx+1);
  }
  while((cx=c.indexOf(")"))!=-1)
  {
    c = c.substring(0,cx)+c.substring(cx+1);
  }
  while((cx=c.indexOf(" "))!=-1)
  {
    c = c.substring(0,cx)+c.substring(cx+1);
  }
  return(c);
}

function VerifyCNPJ(CNPJ)
{
  CNPJ = LIMP(CNPJ);
  if(isNUMB(CNPJ) != 1)
  {
    return(0);
  }
  else
  {
    if(CNPJ == 0)
    {
      return(0);
    }
    else
    {
      g=CNPJ.length-2;
      if(RealTestaCNPJ(CNPJ,g) == 1)
      {
        g=CNPJ.length-1;
        if(RealTestaCNPJ(CNPJ,g) == 1)
        {
          return(1);
        }
        else
        {
          return(0);
        }
      }
      else
      {
        return(0);
      }
    }
  }
}
 
function RealTestaCNPJ(CNPJ,g)
{
  var VerCNPJ=0;
  var ind=2;
  var tam;
  for(f=g;f>0;f--)
  {
    VerCNPJ+=parseInt(CNPJ.charAt(f-1))*ind;
    if(ind>8)
    {
      ind=2;
    }
    else
    {
      ind++;
    }
  }
  VerCNPJ%=11;
  if(VerCNPJ==0 || VerCNPJ==1)
  {
    VerCNPJ=0;
  }
  else
  {
    VerCNPJ=11-VerCNPJ;
  }
  if(VerCNPJ!=parseInt(CNPJ.charAt(g)))
  {
    return(0);
  }
  else
  {
    return(1);
  }
 }

function FormataCGC(Formulario, Campo, TeclaPres)
{
  var tecla = TeclaPres.keyCode;
  var strCampo;
  var vr;
  var tam;
  var TamanhoMaximo = 14;
  eval("strCampo = document." + Formulario + "." + Campo);
  vr = strCampo.value;
  vr = vr.replace("/", "");
  vr = vr.replace("/", "");
  vr = vr.replace("/", "");
  vr = vr.replace(",", "");
  vr = vr.replace(".", "");
  vr = vr.replace(".", "");
  vr = vr.replace(".", "");
  vr = vr.replace(".", "");
  vr = vr.replace(".", "");
  vr = vr.replace(".", "");
  vr = vr.replace(".", "");
  vr = vr.replace("-", "");
  vr = vr.replace("-", "");
  vr = vr.replace("-", "");
  vr = vr.replace("-", "");
  vr = vr.replace("-", "");
  tam = vr.length;
  if (tam < TamanhoMaximo && tecla != 8)
  {
    tam = vr.length + 1;
  }
  if (tecla == 8)
  {
    tam = tam - 1;
  }
  if (tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105)
  {
    if (tam <= 2)
    {
      strCampo.value = vr;
    }
     if ((tam > 2) && (tam <= 6))
     {
       strCampo.value = vr.substr(0, tam - 2) + '-' + vr.substr(tam - 2, tam);
     }
     if ((tam >= 7) && (tam <= 9))
     {
       strCampo.value = vr.substr(0, tam - 6) + '/' + vr.substr(tam - 6, 4) + '-' + vr.substr(tam - 2, tam);
     }
     if ((tam >= 10) && (tam <= 12))
     {
       strCampo.value = vr.substr(0, tam - 9) + '.' + vr.substr(tam - 9, 3) + '/' + vr.substr(tam - 6, 4) + '-' + vr.substr(tam - 2, tam);
     }
     if ((tam >= 13) && (tam <= 14))
     {
       strCampo.value = vr.substr(0, tam - 12) + '.' + vr.substr(tam - 12, 3) + '.' + vr.substr(tam - 9, 3) + '/' + vr.substr(tam - 6, 4) + '-' + vr.substr(tam - 2, tam);
     }
     if ((tam >= 15) && (tam <= 17))
     {
       strCampo.value = vr.substr(0, tam - 14) + '.' + vr.substr(tam - 14, 3) + '.' + vr.substr(tam - 11, 3) + '.' + vr.substr(tam - 8, 3) + '.' + vr.substr(tam - 5, 3) + '-' + vr.substr(tam - 2, tam);
     }
   }
 }
  
addEvent = function(o, e, f, s){
    var r = o[r = "_" + (e = "on" + e)] = o[r] || (o[e] ? [[o[e], o]] : []), a, c, d;
    r[r.length] = [f, s || o], o[e] = function(e){
        try{
            (e = e || event).preventDefault || (e.preventDefault = function(){e.returnValue = false;});
            e.stopPropagation || (e.stopPropagation = function(){e.cancelBubble = true;});
            e.target || (e.target = e.srcElement || null);
            e.key = (e.which + 1 || e.keyCode + 1) - 1 || 0;
        }catch(f){}
        for(d = 1, f = r.length; f; r[--f] && (a = r[f][0], o = r[f][1], a.call ? c = a.call(o, e) : (o._ = a, c = o._(e), o._ = null), d &= c !== false));
        return e = null, !!d;
    }
};

removeEvent = function(o, e, f, s){
    for(var i = (e = o["_on" + e] || []).length; i;)
        if(e[--i] && e[i][0] == f && (s || o) == e[i][1])
            return delete e[i];
    return false;
};

function txtBoxFormat(objForm, strField, sMask, evtKeyPress) { 
var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla; 

if(document.all) { // Internet Explorer 
nTecla = evtKeyPress.keyCode; } 
else if(document.layers) { // Nestcape 
nTecla = evtKeyPress.which; 
} 

sValue = objForm[strField].value; 

// Limpa todos os caracteres de formatação que 
// já estiverem no campo. 
sValue = sValue.toString().replace( "-", "" ); 
sValue = sValue.toString().replace( "-", "" ); 
sValue = sValue.toString().replace( ".", "" ); 
sValue = sValue.toString().replace( ".", "" ); 
sValue = sValue.toString().replace( "/", "" ); 
sValue = sValue.toString().replace( "/", "" ); 
sValue = sValue.toString().replace( "(", "" ); 
sValue = sValue.toString().replace( "(", "" ); 
sValue = sValue.toString().replace( ")", "" ); 
sValue = sValue.toString().replace( ")", "" ); 
sValue = sValue.toString().replace( " ", "" ); 
sValue = sValue.toString().replace( " ", "" ); 
fldLen = sValue.length; 
mskLen = sMask.length; 

i = 0; 
nCount = 0; 
sCod = ""; 
mskLen = fldLen; 

while (i <= mskLen) { 
bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/")) 
bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " ")) 

if (bolMask) { 
sCod += sMask.charAt(i); 
mskLen++; } 
else { 
sCod += sValue.charAt(nCount); 
nCount++; 
} 

i++; 
} 

objForm[strField].value = sCod; 

if (nTecla != 8) { // backspace 
if (sMask.charAt(i-1) == "9") { // apenas números... 
return ((nTecla > 47) && (nTecla < 58)); } // números de 0 a 9 
else { // qualquer caracter... 
return true; 
} } 
else { 
return true; 
} 
};


