//************FUNCOES DIVERSAS******************

  function verificaNavegador(caminhoAplicacao) { 
    if (navigator.appName.indexOf('Internet Explorer') <= 0) {
      alert('Por favor utilize o navegador Internet Explorer!');
      window.open(caminhoAplicacao,'_top');
    } 
  } 

  function abrejanela(file,janela,largura,altura,topo,esquerda,menubar,toolbar,localbar,dirbar,statusbar) {
    novajanela=open(file,janela,'width='+largura+',height='+altura+',top='+topo+',left='+esquerda+',titlebar=false,toolbar='+toolbar+',location='+localbar+',directories='+dirbar+',status='+statusbar+',menubar='+menubar+',scrollbars=yes,maximized=no,resizable=yes');
    if (novajanela.opener == null)
      novajanela.opener = self;
    else
      if (!novajanela.closed) novajanela.focus();
  }

  function montameses(quantosmeses,apartirdomes,barra) {
    vdata = new Date();
    vano = vdata.getYear();
    vmes = vdata.getMonth();

    if (apartirdomes == "anterior")
       vmes = vmes - quantosmeses;
    else
       vmes = vmes - quantosmeses + 1;

    if (vmes < 0) {
       vmes = vmes + 12;
       vano = vano - 1;
    }
    if (vmes == 0)
       if (barra == "sim") 
          return "Janeiro/" + vano;
       else
          return "janeiro" + vano;
    else
      if (vmes == 1)
         if (barra == "sim") 
            return "Fevereiro/" + vano;
         else
            return "fevereiro" + vano;
      else
        if (vmes == 2)
           if (barra == "sim") 
              return "Março/" + vano;
           else
              return "marco" + vano;
        else
          if (vmes == 3)
             if (barra == "sim") 
                return "Abril/" + vano;
             else
                return "abril"+vano;
          else
            if (vmes == 4)
               if (barra == "sim") 
                  return "Maio/" + vano;
               else
                  return "maio"+vano;
            else
              if (vmes == 5)
                 if (barra == "sim") 
                    return "Junho/" + vano;
                 else
                    return "junho"+vano;
              else
                if (vmes == 6)
                   if (barra == "sim") 
                      return "Julho/" + vano;
                   else
                      return "julho"+vano;
                else
                  if (vmes == 7)
                     if (barra == "sim") 
                        return "Agosto/" + vano;
                     else
                        return "agosto"+vano;
                  else
                    if (vmes == 8)
                       if (barra == "sim") 
                          return "Setembro/" + vano;
                       else
                          return "setembro"+vano;
                    else
                      if (vmes == 9)
                         if (barra == "sim") 
                            return "Outubro/" + vano;
                         else
                            return "outubro"+vano;
                      else
                        if (vmes == 10)
                           if (barra == "sim") 
                              return "Novembro/" + vano;
                           else
                              return "novembro"+vano;
                        else
                          if (vmes == 11) 
                             if (barra == "sim") 
                                return "Dezembro/" + vano;
                             else
                                return "dezembro"+vano;
  }
  
  function NovaFormataData(Campo, teclapres) {
    var tecla = teclapres.keyCode;
    var vr = new String(Campo.value);
    vr = vr.replace("/", "");
    vr = vr.replace("/", "");
    vr = vr.replace("/", "");
    tam = vr.length + 1;
    if (tecla != 8 && tecla != 8) {
      if (tam > 0 && tam < 2) {
        Campo.value = vr.substr(0, 2) ;
      }
      if (tam > 2 && tam < 4) {
        Campo.value = vr.substr(0, 2) + '/' + vr.substr(2, 2);
      }
      if (tam > 4 && tam < 7) {
        Campo.value = vr.substr(0, 2) + '/' + vr.substr(2, 2) + '/' + vr.substr(4, 7);
      }
    }
  } 
  
  function NovaFormataHora(Campo, teclapres) {
    var tecla = teclapres.keyCode;
    var vr = new String(Campo.value);
    vr = vr.replace(":", "");
    tam = vr.length + 1;
    if (tecla != 8 && tecla != 8) {
      if (tam > 0 && tam < 2) {
        Campo.value = vr.substr(0, 2) ;
      }
      if (tam > 2 && tam < 4) {
        Campo.value = vr.substr(0, 2) + ':' + vr.substr(2, 2);
      }
    }
  } 

  function NovaFormataProcesso(Campo, teclapres) {
    var tecla = teclapres.keyCode;
    var vr = new String(Campo.value);
    vr = limpa_string(vr);
    tam = vr.length;
    if (tam == 20) {
      Campo.value = vr.substr(0, 7) + "-" + vr.substr(7, 2) + "." + vr.substr(9, 4) + "." + vr.substr(13, 1) + "." + vr.substr(14, 2) + "." + vr.substr(16, 4);
    } else {
      Campo.value = vr;
    }
  } 

  function formataprocesso(processo) {
    var procjud = limpa_string(processo);
    var valor;
    if (procjud.length == 10) {
      valor = procjud.substr(0, 2) + "." + procjud.substr(2, 2) + "." + procjud.substr(4, 5) + "-" + procjud.substr(9, 1);
    } else {
      if (procjud.length == 15) {
        valor = procjud.substr(0, 4) + "." + procjud.substr(4, 2) + "." + procjud.substr(6, 2) + "." + procjud.substr(8, 6) + "-" + procjud.substr(14, 1);
      } else {
        valor = procjud.substr(0, 7) + "-" + procjud.substr(7, 2) + "." + procjud.substr(9, 4) + "." + procjud.substr(13, 1) + "." + procjud.substr(14, 2) + "." + procjud.substr(16, 4);
      }
    }
    return valor;
  }

  function FormataData(data){
    var tamdata;
    var posbarra1=0;
    var posbarra2=0;
    var dia=0;
    var mes=0;
    var ano=0;
    var posx=0;
    var novadata="";

    tamdata = data.length;
    posbarra1=data.indexOf("/",posx);
    posx=posbarra1+1
    posbarra2=data.indexOf("/",posx);

    if (data != "") {
      if (posbarra1==-1) {
        if (tamdata==8) {
          dia = data.substring(0,2);
          mes = data.substring(2,4);
          ano = data.substring(4,8);
        }
        else {
          if (tamdata==6) {
            dia = data.substring(0,2);
            mes = data.substring(2,4);
            if (data.substring(4,6)>10) {
              ano = "19" + data.substring(4,6);
            }
            else {
              ano = "20" + data.substring(4,6);
            }
          }
      else {
            novadata = data;
            return novadata;
      }
        }
      }
      else {
        dia = data.substring(0,posbarra1);
        mes = data.substring(posbarra1+1,posbarra2);
        ano = data.substring(posbarra2+1,tamdata);
        if (ano.length==2) {
          if (ano>10) {
            ano = "19" + ano;
          }
          else {
            ano = "20" + ano;
          }
        }
      }

      if (dia.length==1) dia = "0" + dia;
      if (mes.length==1) mes = "0" + mes;

    novadata = dia + "/" + mes + "/" + ano;

  }
    return novadata;
  }

  function ValidaData(data) {
    data.value=FormataData(data.value);
  
  var valordata = data.value;
    var dia = parseInt(valordata.substring(0,2),10);
    var mes = parseInt(valordata.substring(3,5),10);
    var ano = parseInt(valordata.substring(6,10),10);
  
    if (valordata.length>0 && valordata.length<10) {
      alert('Data inválida!');
    data.select();
      return false;
    }

    if (valordata!="" && (valordata.indexOf("/",0)!=2 || valordata.indexOf("/",3)!=5)) {
      alert('Data inválida!');
    data.select();
      return false;
    }

    if (dia>0 && dia<=31 && mes>0 && mes<=12 && ano>=1000) {
      if (mes==2) {
        if (dia<=28) {
          return true;
        }
      else {
          if (dia==29 && (ano%4)==0) {
            return true;
          } 
      else {
            alert('O dia informado não é válido!');
          data.select();
            return false;
          }
        } 
      } 
      else {
        if ((mes==4) || (mes==6) || (mes==9) || (mes==11)) {
          if (dia<=30){
            return true;
          } 
          else {
            alert('O dia informado não é válido!');
            data.select();
            return false;
        }
        }
      }
    } 
    else {
      if (mes<=0 || mes>12) {
        alert('O mês informado não é válido!');
        data.select();
        return false;
      }
      else {
        if (ano<1000) {
          alert('O ano informado não é válido!');
          data.select();
          return false;
        }
        else {
          if (dia<=0 || dia>31) {
            alert('O dia informado não é válido!');
            data.select();
            return false;
          }
        }
      }
    }
    return true;
  }

  function FormataHora(hora){
    var tamhora;
    var pos2pontos=0;
    var horas=0;
    var minutos=0;
    var novahora="";

    tamhora = hora.length;
    pos2pontos=hora.indexOf(":",0);

    if (hora != "") {
      if (pos2pontos==-1) {
        if (tamhora==4) {
          horas = hora.substring(0,2);
          minutos = hora.substring(2,4);
        }
        else {
          if (tamhora==2) {
            horas = hora.substring(0,2);
            minutos = "00";
          }
      else {
            novahora = hora;
            return novahora;
      }
        }
      }
      else {
        horas = hora.substring(0,pos2pontos);
        minutos = hora.substring(pos2pontos+1,tamhora);
      }

      if (horas.length==1) horas = "0" + horas;
      if (minutos.length==1) minutos = "0" + minutos;

    novahora = horas + ":" + minutos;

  }
    return novahora;
  }

  function ValidaHora(hora) {
    hora.value=FormataHora(hora.value);
  
  var valorhora = hora.value;
    var horas = parseInt(valorhora.substring(0,2),10);
    var minutos = parseInt(valorhora.substring(3,5),10);
  
    if (valorhora.length>0 && valorhora.length<5) {
      alert('Hora inválida! Informe a hora no formato hh:mm');
    hora.select();
      return false;
    }

    if (valorhora!="" && valorhora.indexOf(":",0)!=2) {
      alert('Hora inválida! Informe a hora no formato hh:mm');
    hora.select();
      return false;
    }

  if (minutos<0 || minutos>59) {
      alert('Os minutos informados não são válidos!\nInforme um número entre 0 e 59.');
    hora.select();
      return false;
    }
    else {
      if (horas<0 || horas>23) {
        alert('A hora informada não é válida!\nInforme um número entre 0 e 23.');
    hora.select();
        return false;
      }
    }
    return true;
  }

  function Maiusculas(texto) {
  var novotexto=texto.value;

    texto.value=novotexto.toUpperCase();
  }

  function SoNumeros(campo) {
  var valor=campo.value;
  var resultado = true;

  for (var i=0;i<valor.length;i++)
    if ("0123456789".indexOf(valor.substr(i,1))<0) {
      resultado = false;
      break;
    }
  
    if (!resultado) {
      alert('Informe somente números!');
    campo.select();
    }

  return resultado;
  }

  function NumeroPontoTraco(campo) {
  var valor=campo.value;
  var resultado = true;

  for (var i=0;i<valor.length;i++)
    if ("0123456789.-".indexOf(valor.substr(i,1))<0) {
      resultado = false;
      break;
    }
  
    if (!resultado) {
      alert('Informe somente números, pontos e traços!');
    campo.select();
    }

  return resultado;
  }

  function NumeroBarra(campo) {
  var valor=campo.value;
  var resultado = true;

  for (var i=0;i<valor.length;i++)
    if ("0123456789/".indexOf(valor.substr(i,1))<0) {
      resultado = false;
      break;
    }
  
    if (!resultado) {
      alert('Informe somente números e barra!');
    campo.select();
    }

  return resultado;
  }

  function VerificaValor(campo) {
  var valor=campo.value;
  var resultado=true;
  var ponto=0;

  for (var i=0;i<valor.length;i++)
    if ("0123456789.,".indexOf(valor.substr(i,1))<0) {
      resultado = false;
      break;
    }
  
    if (resultado) {
        for (var i=0;i<valor.length;i++) {
            if (".,".indexOf(valor.substr(i,1))>=0) {
          ponto+=1;
            }
            if (ponto>1) {
                resultado = false;
                break; 
            }
        }
    }

    if (!resultado) {
      alert('Informe somente números e ponto ou vírgula!');
    campo.select();
    }
  return resultado;
  }

  function Maiusculas2( caractere ) //Testar
  { 
    var strValidos = "ABCDEFGHIJKLMNOPQRSTUVWXYZÃÕÁÀÉÍÓÜÊÔ-/ ()" 
    if ( strValidos.indexOf( caractere ) == -1 ) 
      return false; 
    return true; 
  } 

  function limpa_string(S)
  {
    var Digitos = '0123456789';
    var temp = '';
    var digito = '';
    for (var i=0; i<S.length; i++)
    {
      digito = S.charAt(i);
      if (Digitos.indexOf(digito)>=0){temp=temp+digito}
    }
    return temp
  }
  
  function valida_CPF(s)
  {
    var i;
    var rep="";
  s = limpa_string(s);
  
  if (s.length<11) return false;
  
  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;
  }

    //Verifica se o nº se repete...  ex: 111.111.111-11, 222.222.222-22
    rep += s.charAt(0);
    for (i = 1; i < 11; i++)
  {
    rep += (s.charAt(i)==rep.charAt(0) ? s.charAt(i) : "");
  }
  if (rep.length==11)
  {
    return false;
  }

  return true;
  }

  function valida_CNPJ(s)
  {
  var i;
  s = limpa_string(s);
  var c = s.substr(0,12);
  var dv = s.substr(12,2);
  var d1 = 0;
  for (i = 0; i < 12; i++)
  {
    d1 += c.charAt(11-i)*(2+(i % 8));
  }
  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 < 12; i++)
  {
    d1 += c.charAt(11-i)*(2+((i+1) % 8));
  }
  d1 = 11 - (d1 % 11);
  if (d1 > 9) d1 = 0;
  if (dv.charAt(1) != d1)
  {
    return false;
  }
  return true;
  } 

  function valida_Processo(s) {
  var i;
  var c;
  var dv;
  var d = 0;
  s = limpa_string(s);
  if (s.length == 10) {
    c = s.substr(0,9);
    dv = s.substr(9,1);
    for (i = 0; i < 9; i++) {
      d += c.charAt(i) * (i+1);
    }
    d = (d % 11);
    if (d > 9) d = 0;
    if (dv.charAt(0) != d) {
      return false;
    }
  } else {
    if (s.length == 15) {
      c = s.substr(0,14);
      dv = s.substr(14,1);
      x = 2;
      for (i = 0; i < 14; i++) {
        d += c.charAt(13-i) * x;
        x++;
        if (x == 10) x = 2;
      }
      d = (d % 11);
      if (d > 9) d = 0;
      if (dv.charAt(0) != d) {
        return false;
      }
    } else {
      if (s.length == 20) {
        c1 = s.substr(0,7);
        dv = s.substr(7,2);
        c2 = s.substr(9,4);
        c3 = s.substr(13,3);
        c4 = s.substr(16,4);
        
        r1 = c1 % 97;
        r2 = (r1 + c2 + c3) % 97;
        
        n = (r2 + c4 + dv) % 97;

        if (n != 1) {
          return false;
        }
      } else {
        return false;
      }
    }
  }
    return true;
  }

  function msgVB(mensagem,tipo,titulo){
    /* COLOCAR NO HEAD DA PÀGINA O QUE ESTÁ COMENTADO ABAIXO:
      <script language=vbscript>
        suporteVBscript=1
        function VBconfirm(mensagem,tipo,titulo)
          VBconfirm=msgbox(mensagem,tipo,titulo)
        end function
      </script>
    
    
    VALORES POSSÍVEIS PARA O TIPO
       vbOKOnly            0 Display OK button only. 
       vbOKCancel          1 Display OK and Cancel buttons. 
       vbAbortRetryIgnore  2 Display Abort, Retry, and Ignore buttons. 
       vbYesNoCancel       3 Display Yes, No, and Cancel buttons. 
       vbYesNo             4 Display Yes and No buttons. 
       vbRetryCancel       5 Display Retry and Cancel buttons. 
       vbCritical         16 Display Critical Message icon.  
       vbQuestion         32 Display Warning Query icon. 
       vbExclamation      48 Display Warning Message icon. 
       vbInformation      64 Display Information Message icon. 
    */
  return typeof(suporteVBscript)=="undefined"?confirm(txt):VBconfirm(mensagem,tipo,titulo)==6
  }
  
/*
  function marcartodas(formulario) {
    for (var i=0;i<formulario.elements.length;i++)
    {
      var e = formulario.elements[i];
      if (e.type == "checkbox") {
        e.checked = true;
      }
    }
  }

  function desmarcartodas(formulario) {
    for (var i=0;i<formulario.elements.length;i++)
    {
      var e = formulario.elements[i];
      if (e.type == "checkbox") {
        e.checked = false;
      }
    }
  }
*/

  function marcartodas(formulario,campo) {
    for (var i=0;i<formulario.elements.length;i++)
    {
      var e = formulario.elements[i];
      var campoatual = e.name;
      if (e.type == "checkbox") {
        if (campoatual.substr(0,campo.length) == campo || campo=='') {
          e.checked = true;
        }
//        else  {
//          e.checked = false;
//        }
      }
    }
  }

  function desmarcartodas(formulario,campo) {
    for (var i=0;i<formulario.elements.length;i++)
    {
      var e = formulario.elements[i];
      var campoatual = e.name;
      if (e.type == "checkbox") {
        if (campoatual.substr(0,campo.length) == campo || campo=='') {
          e.checked = false;
        }
      }
    }
  }

  function validaremail(valor) {
    var er = new RegExp(/^[A-Za-z0-9_\-\.]+@[A-Za-z0-9_\-\.]{2,}\.[A-Za-z0-9]{2,}(\.[A-Za-z0-9])?/);
    if(typeof(valor) == "string") {
      if(er.test(valor)) return true;
    } else {
      if(typeof(valor) == "object") {
        if(er.test(valor.value)) return true;
      } 
    }
    return false;

/*    ------------------
//      if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(valor))
//        return true;
//      else 
//      return false; 
      ------------------

     parte1 = valor.value.indexOf("@");
     parte2 = valor.value.indexOf(".");
     parte3 = valor.value.length;
     if (!(parte1 >= 3 && parte2 >= 3 && parte3 >= 9)) {
        return false;
     }
     return true; */
  }

  function mascara_global(mascara, valor){
      var mascara_utilizar;
      var mascara_limpa;
      var temp;
      var i;
      var j;
      var caracter;
      var separador;
      var dif;
      var validar;
      var mult;
      var ret;
      var tam;
      var tvalor;
      var valorm;
      var masct;
      tvalor = "";
      ret = "";
      caracter = "#";
      separador = "|";
      mascara_utilizar = "";
      //valor = trim(valor);
      if (valor == "")return valor;
      temp = mascara.split(separador);
      dif = 1000;
      valorm = valor;
      //tirando mascara do valor já existente
      for (i=0;i<valor.length;i++){
            if (!isNaN(valor.substr(i,1))){
                  tvalor = tvalor + valor.substr(i,1);
            }
      }
      valor = tvalor;
      //formatar mascara dinamica
      for (i = 0; i<temp.length;i++){
            mult = "";
            validar = 0;
            for (j=0;j<temp[i].length;j++){
                  if (temp[i].substr(j,1) == "]"){
                        temp[i] = temp[i].substr(j+1);
                        break;
                  }
                  if (validar == 1)mult = mult + temp[i].substr(j,1);
                  if (temp[i].substr(j,1) == "[")validar = 1;
            }
            for (j=0;j<valor.length;j++){
                  temp[i] = mult + temp[i];
            }
      }
      //verificar qual mascara utilizar
      if (temp.length == 1){
            mascara_utilizar = temp[0];
            mascara_limpa = "";
            for (j=0;j<mascara_utilizar.length;j++){
                  if (mascara_utilizar.substr(j,1) == caracter){
                        mascara_limpa = mascara_limpa + caracter;
                  }
            }
            tam = mascara_limpa.length;
      }else{
            //limpar caracteres diferente do caracter da máscara
            for (i=0;i<temp.length;i++){
                  mascara_limpa = "";
                  for (j=0;j<temp[i].length;j++){
                        if (temp[i].substr(j,1) == caracter){
                             mascara_limpa = mascara_limpa + caracter;
                        }
                  }
                  if (valor.length > mascara_limpa.length){
                        if (dif > (valor.length - mascara_limpa.length)){
                             dif = valor.length - mascara_limpa.length;
                             mascara_utilizar = temp[i];
                             tam = mascara_limpa.length;
                        }
                  }else if (valor.length < mascara_limpa.length){
                        if (dif > (mascara_limpa.length - valor.length)){
                             dif = mascara_limpa.length - valor.length;
                             mascara_utilizar = temp[i];
                             tam = mascara_limpa.length;
                        }
                  }else{
                        mascara_utilizar = temp[i];
                        tam = mascara_limpa.length;
                        break;
                  }
            }
      }
      //validar tamanho da mascara de acordo com o tamanho do valor
      if (valor.length > tam){
            valor = valor.substr(0,tam);
      }else if (valor.length < tam){
            masct = "";
            j = valor.length;
            for (i = mascara_utilizar.length-1;i>=0;i--){
                  if (j == 0) break;
                  if (mascara_utilizar.substr(i,1) == caracter){
                        j--;
                  }
                  masct = mascara_utilizar.substr(i,1) + masct;
            }
            mascara_utilizar = masct;
      }
      //mascarar
      j = mascara_utilizar.length -1;
      for (i = valor.length - 1;i>=0;i--){
            if (mascara_utilizar.substr(j,1) != caracter){
                  ret = mascara_utilizar.substr(j,1) + ret;
                  j--;
            }
            ret = valor.substr(i,1) + ret;
            j--;
      }
      return ret;
  }


/*
  function numeroMes(mesextenso) {
    if (vmes == "") {
      return 0;
    }

    mesextenso = mesextenso.toLowerCase();
    switch (mesextenso) {
      case 'janeiro':
        return 1;
        break;
      case 'fevereiro':
        return 2;
        break;
      case 'março':
        return 3;
        break;
      case 'abril':
        return 4;
        break;
      case 'maio':
        return 5;
        break;
      case 'junho':
        return 6;
        break;
      case 'julho':
        return 7;
        break;
      case 'agosto':
        return 8;
        break;
      case 'setembro':
        return 9;
        break;
      case 'outubro':
        return 10;
        break;
      case 'novembro':
        return 11;
        break;
      case 'dezembro':
        return 12;
        break;
      default:
        return 0;
    }
  }
*/