//****************************************************************
//inicio do arquivo
//****************************************************************
//***funções para posicao dos campos
 var isNN = (navigator.appName.indexOf("Netscape")!=-1);
 function autoTab(input,len, e)
 {
   var keyCode = (isNN) ? e.which : e.keyCode; 
   var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
   if(input.value.length >= len && !containsElement(filter,keyCode))
   {
     input.value = input.value.slice(0, len);
     input.form[(getIndex(input)+1) % input.form.length].focus();
   }

   function containsElement(arr, ele)
   {
   var found = false, index = 0;
   while(!found && index < arr.length)
     if(arr[index] == ele)
       found = true;
     else
       index++;
   return found;
   }

   function getIndex(input)
   {
     var index = -1, i = 0, found = false; 
     while (i < input.form.length && index == -1)
     if (input.form[i] == input) index = i;
     else i++;
     return index;
   }

  return true;
 }

 /***********************************************
 * Habilita o "Enter"
 ***********************************************/           
 function handleEnter (field, event) {
  var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
  if (keyCode == 13) {
     var i;
     for (i = 0; i < field.form.elements.length; i++)
       if (field == field.form.elements[i])
          break;
       i = (i + 1) % field.form.elements.length;
       field.form.elements[i].focus();
       if(field.form.elements[i].type=="text")
       {
         field.form.elements[i].select();
       }
       return false;
     } 
  else
   return true;
 }
      
 function checkDecimals(fieldName, fieldValue)
 {
  decallowed = 2;  // how many decimals are allowed?
  if (!isNaN_Brasil(fieldValue) || fieldValue == "") {
    alert("Valor Inválido !, Tente Novamente.");
    fieldName.select();
    fieldName.focus();
  }
  else {
    if (fieldValue.indexOf(',') == -1) fieldValue += ",";
      dectext = fieldValue.substring(fieldValue.indexOf(',')+1, fieldValue.length);
    if (dectext.length > decallowed){
      alert ("Digitar apenas " + decallowed + " casas decimais.  Tente de Novo.");
      fieldName.select();
      fieldName.focus();
    }
   }
 }

 function isNaN_Brasil( caractere )
 {
   var strValidos = "0123456789,"
   for (i = 0; i < caractere.length; i++){ 
     if ( strValidos.indexOf( caractere.charAt(i) ) == -1 ){
        return (false);
     }
   }
   return (true); 
 }


 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( ":", "" );
     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;
     }
 }
 //---------------------------------
 function ChecaData(data) 
 {
  var err = 0;
  string = data;
  var valid = "0123456789/";
  var temp;
  for (var i=0; i< string.length; i++)
  {
    temp = "" + string.substring(i, i+1);
    if (valid.indexOf(temp) == "-1") err = 1;
  }
  if ((string.length != 10)&&(string.length!=8)) err=1
  dia = string.substring(0, 2); // dia
  c = string.substring(2, 3);// '/'
  mes = string.substring(3, 5); // mes
  barra= string.substring(5, 6);// '/'
  if (string.length ==10)
    ano = string.substring(6, 10); // ano
  else
    ano = string.substring(6, 8); // ano
  
  if (mes<1 || mes>12) err = 1;
  if (c != '/')  err = 1;
  if (dia<1 || dia>31) err = 1;
  if (barra!= '/') err = 1;
  if ((ano.length != 4)&&(ano.length!=2)) err = 1;
  if (mes==4 || mes==6 || mes==9 || mes==11)
  {
    if (dia==31) err=1;
  }
  if (mes==2)
  {
    var g=parseInt(ano/4);
    if (isNaN(g))
    {
	err=1;
    }
    if (dia>29) err=1;
    if (dia==29 && ((ano/4)!=parseInt(ano/4))) err=1;
  }
  if (err==1)
  {
    return false;
  }
  else
  {
    return true;
  }
 }

 function valida_data(item)
 { 
  if ((!ChecaData(document.forms[0].item(item).value))&&(document.forms[0].item(item).value.length>=1))
  {
    alert("Data Inválida")
    document.forms[0].item(item).focus()
    document.forms[0].item(item).value=""
  }
 }

 function janela()
 {
  vpos=window.open('','vpos','toolbar=no,location=no,directories=no,status=yes,menubar=yes,scrollbars=yes,resizable=no,copyhistory=no,top=15,left=50,width=695,height=430'); 
 }

 function validaCPFCNPJ(campo)
 {
  //digitado = document.gerar.sac_cnpj.value;
  digitado = campo.value;
  if(digitado.length==11)
    retorno = validaCPF(digitado);
  else
    retorno = validaCNPJ(digitado);
/*
  if(!retorno)
  {
    campo.value="";
    campo.focus();
  }
*/
  return retorno;
 }

 function validaCPF(cpf)
 {
  //cpf = document.gerar.sac_cnpj.value;
   valor = true;
   erro = new String;
   if (cpf.length < 11) erro += "Sao necessarios 11 digitos para verificacao do CPF! \n\n"; 
     var nonNumbers = /\D/;
   if (nonNumbers.test(cpf)) erro += "A verificacao de CPF suporta apenas numeros! \n\n";
      if (cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999")
      {
        erro += "Numero de CPF invalido!"
      }
      var a = [];
      var b = new Number;
      var c = 11;
      for (i=0; i<11; i++)
      {
        a[i] = cpf.charAt(i);
        if (i < 9) b += (a[i] *  --c);
      }
      if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11-x }
      b = 0;
      c = 11;
      for (y=0; y<10; y++) b += (a[y] *  c--); 
      if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11-x; }
      if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10]))
      {
	erro +="CPF Inválido!";
      }
      if (erro.length > 0)
      {
        //alert(erro);
        return false;
      }
 return true;
 }

 function validaCNPJ(CNPJ)
 {
 //CNPJ = document.gerar.sac_cnpj.value;
  erro = new String;
  /*
  if (CNPJ.length < 18) erro += "E' necessarios preencher corretamente o numero do CNPJ! \n\n";
  if ((CNPJ.charAt(2) != ".") || (CNPJ.charAt(6) != ".") || (CNPJ.charAt(10) != "/") || (CNPJ.charAt(15) != "-"))
  {
    if (erro.length == 0) erro += "E' necessarios preencher corretamente o numero do CNPJ! \n\n";
  }
 */
 //substituir os caracteres que nao sao numeros
  if(document.layers && parseInt(navigator.appVersion) == 4)
  {
   x = CNPJ.substring(0,2);
   x += CNPJ.substring(3,6);
   x += CNPJ.substring(7,10);
   x += CNPJ.substring(11,15);
   x += CNPJ.substring(16,18);
   CNPJ = x;	
  } else {
   CNPJ = CNPJ.replace(".","");
   CNPJ = CNPJ.replace(".","");
   CNPJ = CNPJ.replace("-","");
   CNPJ = CNPJ.replace("/","");
  }
   var nonNumbers = /\D/;
   if (nonNumbers.test(CNPJ)) erro += "A verificacao de CNPJ suporta apenas numeros! \n\n";	
   var a = [];
   var b = new Number;
   var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];
   for (i=0; i<12; i++)
   {
     a[i] = CNPJ.charAt(i);
     b += a[i] * c[i+1];
   }
   if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x }
   b = 0;
   for (y=0; y<13; y++)
   {
     b += (a[y] * c[y]); 
   }
   if ((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11-x; }
   if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13]))
   {
      erro +="CNPJ Inválido !";
   }
   if (erro.length > 0)
   {
     //alert(erro);
     return false;
   } else {
     return true;
   }
 }

// VERIFICA CAMPOS EM BRANCO
 function checkCampos(frm)
 {
  if(frm.name=="usuario")
  {
   var nomedocampo = Array("usu_login","usu_senha","usu_nome");
   var descricao   = Array("Login","Senha","Nome");
  }
  var msgAlert = "Por favor complete os seguintes Campos:\n\n";
  var msg = msgAlert.length;
  for (var i = 0; i < nomedocampo.length; i++)
  {
   var objetos = frm.elements[nomedocampo[i]];
   if (objetos)
   {
     switch(objetos.type)
     {
     case "select-one":
       if (objetos.selectedIndex == -1 || objetos.options[objetos.selectedIndex].text == "")
       {
        msgAlert += " - " + descricao[i] + "\n";
       }	
       break;
     case "select-multiple":
       if (objetos.selectedIndex == -1)
       {
        msgAlert += " - " + descricao[i] + "\n";
       }	
       break;
     case "text":
       if (objetos.name.substring(4)=="cnpj" || objetos.name.substring(4)=="cpf")
       {
         bCNPJ = validaCPFCNPJ(objetos);
         if(objetos.value == "" || objetos.value == null || bCNPJ==false )        
         {
            msgAlert += " - " + descricao[i] + " Inválido !" + "\n";
         }
         break;
       }
       else
       {
         if(objetos.value == "" || objetos.value == null)
         {
         msgAlert += " - " + descricao[i] + "\n";
         }
         break;
       }

     case "textarea":
       if(objetos.value == "" || objetos.value == null)
       {
         msgAlert += " - " + descricao[i] + "\n";
       }
       break;
     default:
     }
     if (objetos.type == undefined)
     {
        var blnchecked = false;
	for (var j = 0; j < objetos.length; j++)
        {
          if (objetos[j].checked)
          {
            blnchecked = true;
          }
	}
	if (!blnchecked)
        {
          msgAlert += " - " + descricao[i] + "\n";
        }
     }
   }
  }
  if (msgAlert.length == msg)
  {
  // alert('Todos os Campos estão Preenchidos!');
    return true;
  }else{
    alert(msgAlert);
    return false;
  }
 } 

 function numerico(field)
 {
  expr = field.value; 
  if (isNaN(expr))
  {
    alert('Campo '+ field.name.substring(4) +' Aceita somente Números.');
    field.value = '0';
    field.focus();
    return false;
  } else {
    return true;
  }
 }

 function validaData(str)
 { 
  dia = (str.value.substring(0,2)); 
  mes = (str.value.substring(3,5)); 
  ano = (str.value.substring(6,10)); 
  cons = true; 
  // verifica se foram digitados números
  if (isNaN(dia) || isNaN(mes) || isNaN(ano))
  {
    alert("Preencha a data somente com números."); 
    str.value = "";
    str.focus(); 
    return false;
  }
  // verifica o dia valido para cada mes 
  if ((dia < 01)||(dia < 01 || dia > 30) && (mes == 04 || mes == 06 ||  mes == 09 || mes == 11 ) ||  dia > 31)
  { 
    cons = false; 
  } 
  // verifica se o mes e valido 
  if (mes < 01 || mes > 12 )
  { 
    cons = false; 
  } 
  // verifica se e ano bissexto 
  if (mes == 2 && ( dia < 01 || dia > 29 || ( dia > 28 &&  (parseInt(ano / 4) != ano / 4))))
  { 
    cons = false; 
  } 
  if (cons == false)
  { 
    alert("A data inserida não é válida: " + str.value); 
    str.value = "";
    str.focus(); 
    return false;
  } 
 }

 // colocar no evento onKeyUp passando o objeto como parametro
 function formata(val)
 {
   var pass = val.value;
   var expr = /[0123456789]/;
   for(i=0; i<pass.length; i++)
   {
   // charAt -> retorna o caractere posicionado no índice especificado
     var lchar = val.value.charAt(i);
     var nchar = val.value.charAt(i+1);
     if(i==0)
     {
     // search -> retorna um valor inteiro, indicando a posição do inicio da primeira
     // ocorrência de expReg dentro de instStr. Se nenhuma ocorrencia for encontrada o método retornara -1
     // instStr.search(expReg);
       if ((lchar.search(expr) != 0) || (lchar>3))
       {
	  val.value = "";
       }
     }
     else if(i==1)
     {
        if(lchar.search(expr) != 0)
        {
	  // substring(indice1,indice2)
	  // indice1, indice2 -> será usado para delimitar a string
          var tst1 = val.value.substring(0,(i));
	  val.value = tst1;				
 	  continue;			
        }
        if ((nchar != '/') && (nchar != ''))
        {
          var tst1 = val.value.substring(0, (i)+1);
          if(nchar.search(expr) != 0) 
            var tst2 = val.value.substring(i+2, pass.length);
          else
            var tst2 = val.value.substring(i+1, pass.length);
          val.value = tst1 + '/' + tst2;
        }
     }
     else if(i==4)
     {
       if(lchar.search(expr) != 0)
       {
	var tst1 = val.value.substring(0, (i));
	val.value = tst1;
	continue;			
       }
       if ((nchar != '/') && (nchar != ''))
       {
         var tst1 = val.value.substring(0, (i)+1);
         if(nchar.search(expr) != 0) 
            var tst2 = val.value.substring(i+2, pass.length);
         else
            var tst2 = val.value.substring(i+1, pass.length);
         val.value = tst1 + '/' + tst2;
       }
     }
     if(i>=6)
     {
       if(lchar.search(expr) != 0)
       {
         var tst1 = val.value.substring(0, (i));
         val.value = tst1;			
       }
     }
   }
   if(pass.length>10) val.value = val.value.substring(0, 10);
   return true;
 }

function VirgulaPorPonto(numero)
{
 var strValidos = "0123456789,"
 var strNum     = "";
 for (i = 0; i < numero.length; i++){ 
  if (strValidos.indexOf( numero.charAt(i) ) != -1 )
  {
    strNum = strNum + numero.charAt(i);
  }
 }
 return (strNum.replace(/,/gi, ".") );
}

fmtMoney = function(n, c, d, t)
{
 var m = (c = Math.abs(c) + 1 ? c : 2, d = d || ",", t = t || ".",/(\d+)(?:(\.\d+)|)/.exec(n + "")), x = m[1].length > 3 ? m[1].length % 3 : 0;
 return (x ? m[1].substr(0, x) + t : "") + m[1].substr(x).replace(/(\d{3})(?=\d)/g,        "$1" + t) + (c ? d + (+m[2] || 0).toFixed(c).substr(2) : "");
};

function checkAll()
{
 check=true;
 for (i=0;i<document.datagrid.checkbox.length;i++)
 {
   if (document.datagrid.checkall.checked==true)
   {
      document.datagrid.checkbox[i].checked=true;
   }
   else
   {
      document.datagrid.checkbox[i].checked=false;
   }
 }
}


function mask(str,textbox,loc,delim)
{
 var locs = loc.split(',');
 for (var i = 0; i <= locs.length; i++)
 {
    for (var k = 0; k <= str.length; k++)
    {
     if (k == locs[i])
     {
      if (str.substring(k, k+1) != delim)
      {
       str = str.substring(0,k) + delim + str.substring(k,str.length)
      }
     }
    }
 }
 textbox.value = str
}
function fmtTime(campo, e)
{
   myVal = campo.value;
   if (myVal.length > 8 && !myVal.match(/\:/))
   {
      myVal = '';
   }
   else
   {
      if (window.event)
      {
          keycode = window.event.keyCode;
      }
      else if (e)
      {
          keycode = e.which;
      } 
      if (keycode < 48 || keycode > 57)
      {
          myVal = myVal.substr(0, (myVal.length - 1));
      }
      if (myVal.length == 4)
      {
          myVal += ':';
      }
  }
  campo.value = myVal;
}

function ConsisteHora(Campo) 
{ 
  back = ''; 
  if(Campo.value.length == 2) 
  {  
     hrs = (Campo.value.substring(0,2)); 
     if (hrs >= 00 && hrs <= 23) 
     { 
        Campo.value += ":"; 
        event.returnValue = true; 
        back = (Campo.value.substring(0,3)); 
     } 
     else 
     { 
        Campo.value = ""; 
        event.returnValue = false; 
     } 
  } 
  else if(Campo.value.length == 4) 
  { 
    min = (Campo.value.substring(3,4)); 
    if (min >= 0 && min < 6) 
    { 
      event.returnValue = true;  
    } 
    else 
    { 
      back = (Campo.value.substring(0,3)); 
      Campo.value = ""; 
      Campo.value = back; 
      event.returnValue = false; 
    } 
  }         
}
//-------------------------------
function RetiraCaracteresInvalidos(strCampo,tam)
{
  nTamanho = strCampo.length;
  szCampo = "";
  j=0;
  for (i = nTamanho-1;i>=0;i--) 
  {
    if (isDigit(strCampo.charAt(i)))
    {
	szCampo = strCampo.charAt(i) + szCampo;
	j++;
	if (j > tam) break;
    }
  }
  if (szCampo.length < tam)
  {
     for (i = szCampo.length;i<tam;i++) 
     {
	szCampo = "0" + szCampo;
     }
  }
  return szCampo;
} 
//-------------------------------
function ajustar_data(input, evento)
{
  var BACKSPACE=  8; 
  var DEL=  46; 
  var FRENTE=  39; 
  var TRAS=  37; 
  var tecla= (evento.keyCode ? evento.keyCode: evento.which ? evento.which : evento.charCode)
  if (( tecla == BACKSPACE )||(tecla == DEL)||(tecla == FRENTE)||(tecla == TRAS))
  {
     return true; 
  }
  if ( tecla == 13 )  return false; 
  if ((tecla<48)||(tecla>57))
  {
    evento.returnValue = false;
    return false; 
  }
  else
  {
   if((input.value.length==2)||(input.value.length==5))
   {
     input.value=input.value + "/" ;
   }
  }
//
  return true;			
};
//-------------------------------
function editadata(strCampo,tam)
{
  var i;
  var j;
  var nTamanho;
  var szCampo;
  nTamanho = strCampo.length;
  szCampo = "";
  j=0;
  for (i = nTamanho-1;i>=0;i--) 
  {
    if (isDigit(strCampo.charAt(i)))
    {
      szCampo = strCampo.charAt(i) + szCampo;
      j++;
      if (j > tam) break;
    }
  }
  if (szCampo.length < tam)
  {
    //for (i = szCampo.length;i<tam;i++)  
    //{
    //	szCampo = "0" + szCampo;
    //}
  }
  if (j==0) return "";
  return (szCampo.substr(0,2)+"/"+szCampo.substr(2,2)+"/"+szCampo.substr(4,4));
}
function ajustar_hora(input, evento)
{
  var BACKSPACE=  8; 
  var DEL=  46; 
  var FRENTE=  39; 
  var TRAS=  37; 
  var tecla= (evento.keyCode ? evento.keyCode: evento.which ? evento.which : evento.charCode)
  if (( tecla == BACKSPACE )||(tecla == DEL)||(tecla == FRENTE)||(tecla == TRAS))
  {
     return true; 
  }
  if ( tecla == 13 )  return false; 
  if ((tecla<48)||(tecla>57))
  {
    evento.returnValue = false;
    return false; 
  }
  else
  {
   if((input.value.length==2)||(input.value.length==5))
   {
     input.value=input.value + ":" ;
   }
  }
//
  return true;			
};
//-------------------------------
function editahora(strCampo,tam)
{
  var i;
  var j;
  var nTamanho;
  var szCampo;
  nTamanho = strCampo.length;
  szCampo = "";
  j=0;
  for (i = nTamanho-1;i>=0;i--) 
  {
    if (isDigit(strCampo.charAt(i)))
    {
      szCampo = strCampo.charAt(i) + szCampo;
      j++;
      if (j > tam) break;
    }
  }
  if (szCampo.length < tam)
  {
    //for (i = szCampo.length;i<tam;i++)  
    //{
    //	szCampo = "0" + szCampo;
    //}
  }
  if (j==0) return "";
  return (szCampo.substr(0,2)+":"+szCampo.substr(2,2)+":"+szCampo.substr(4,2));
}
//-------------------------------
function isDigit (c)
{   
  return ((c >= "0") && (c <= "9"))
}  
//-------------------------------
function isInteger (s)
{
  var i;
  if (isEmpty(s)) 
  if (isInteger.arguments.length == 1) return false;
  for (i = 0; i < s.length; i++)
  {   
     var c = s.charAt(i);
     if (!isDigit(c)) return false;
  }
  return true;
}
//-------------------------------
function isEmpty(s)
{
 return ((s == null) || (s.length == 0))
}

//****************************************************************
//Fim do arquivo
//****************************************************************

