// JavaScript Document

function MontaListaNosFdrTreeView(no)
{
  var resultado = new Array();
  var i = 0;
  
  for (i = 0;i<no.filhos.length;i++)
  {
    resultado[resultado.length] = no.filhos[i];
    resultado = resultado.concat(MontaListaNosFdrTreeView(no.filhos[i]));
  }
  
  return resultado;
}

function PesquisarIndice(palavra, indice)
{
  var nos = MontaListaNosFdrTreeView(indice);
  var i = 0;
  var resultado = new Array();
  var auxstr = "";
  
  palavra = palavra.toLowerCase();
  
  ///
  //
  // em "resultado" tenho um vetor com todos os nós do FdrTV. Preciso apenas analisar um a um, vendo se tem a string desejada
  //
  ///
  
  for (i=0;i<nos.length;i++)
  {
    auxstr = nos[i].texto.toLowerCase();
    if (auxstr.indexOf(palavra) != -1) resultado[resultado.length] = nos[i];
  }
  
  return resultado;
}

function ExibeNoIncluindoPais(tv, no)
{
  var noaux = no;
  while (noaux)
  {
    if (!noaux.expandido) tv.exibir(noaux);
    noaux = noaux.pai;
  }
  no.div.scrollIntoView(true);
  window.scrollTo(0,0);
  
  no.expandido = false;//precisa dessa "gambizinha" aqui pq o fireEvent logo abaixo abre ele novamente
  no.div.fireEvent("onclick");
  tv.destacarno(no);
}

/* *****************************************************************************

            FUNÇÕES TRATADORAS PARA BUSCA NO FRAMEBANCO

***************************************************************************** */


function localizatextonoindiceanalitico()
{
  elocaliza = RetornaElementosComID(FrameAtivo().div, 'eLocalizaIndice')[0];
  
  if (elocaliza.value == "")
  {
    alert("Digite o texto a ser localizado.");
    elocaliza.focus();
    return;
  }
  
  tv = FrameAtivo().tvanalitico;
  
  var resultado = PesquisarIndice(elocaliza.value, tv);
  
  ///
  //  aproveitando o esquema de properties "a quente", eu adiciono estas properties diretamente no objeto ;o)
  ///
  tv.indicelocaliza = 0;
  tv.resultadolocaliza = resultado;
  
  RetornaElementosComID(FrameAtivo().div, 'divbotoesnavegarocorrenciasindice')[0].style.display = (resultado.length > 0)?"block":"none";
  if (resultado.length > 0) primeiraocorrencialocalizaindice();
}
 
 
function primeiraocorrencialocalizaindice()
{
  tv = FrameAtivo().tvanalitico;
  tv.indicelocaliza = 0;
  RetornaElementosComID(FrameAtivo().div, 'locorrenciasloclaizarindice')[0].innerHTML = sprintf("Ocos. índice %d de %d", tv.indicelocaliza + 1, tv.resultadolocaliza.length);
  ExibeNoIncluindoPais(tv, tv.resultadolocaliza[tv.indicelocaliza]); 
}

function anteriorocorrencialocalizaindice()
{
  tv = FrameAtivo().tvanalitico;
  if (tv.indicelocaliza > 0)
  {
    tv.indicelocaliza--;
    RetornaElementosComID(FrameAtivo().div, 'locorrenciasloclaizarindice')[0].innerHTML = sprintf("Ocos. índice %d de %d", tv.indicelocaliza +  1, tv.resultadolocaliza.length);
    ExibeNoIncluindoPais(tv, tv.resultadolocaliza[tv.indicelocaliza]); 
  }
}

function proximaocorrencialocalizaindice()
{
  tv = FrameAtivo().tvanalitico;
  
  if (tv.indicelocaliza < tv.resultadolocaliza.length - 1)
  {
    tv.indicelocaliza++;
    RetornaElementosComID(FrameAtivo().div, 'locorrenciasloclaizarindice')[0].innerHTML = sprintf("Ocos. índice %d de %d", tv.indicelocaliza +  1, tv.resultadolocaliza.length);
    ExibeNoIncluindoPais(tv, tv.resultadolocaliza[tv.indicelocaliza]);
  }
}

function ultimaocorrencialocalizaindice()
{
  tv = FrameAtivo().tvanalitico;
  if (tv.indicelocaliza < tv.resultadolocaliza.length - 1)
  {
    tv.indicelocaliza = tv.resultadolocaliza.length - 1;
    RetornaElementosComID(FrameAtivo().div, 'locorrenciasloclaizarindice')[0].innerHTML = sprintf("Ocos. índice %d de %d", tv.indicelocaliza + 1, tv.resultadolocaliza.length);
    ExibeNoIncluindoPais(tv, tv.resultadolocaliza[tv.indicelocaliza]); 
  }
}

