// ********************************************************
// * TreeView
// ********************************************************
// * Autor: Celso Pacheco
// * Data: 04/12/2006
// * Descrição:
//  Script para criação da estrutura de árvore. [Compativel com IE e FireFox]
// ********************************************************
// * Informações:
//  Para utilizar este script siga os seguintes passos:
// ********************************************************
//   1º- Linke no header da página os arquivos TreeView.js e TreeView.css
//     Ex.: <link href="/web/css/treeview.css" rel="stylesheet" type="text/css">
//          <script type="text/javascript" src="/web/inc/js/treeview.js"></script>
//
//   2º-  No load do body deve ser chamada a função: loadTree()
//        
//     Ex.: <body onload="javascript:loadTree();">
//
//   3º- Crie uma tabela de 2(duas) linhas e então na primeira lina insira uma imagem da classe "treeImgPlus" e na segunda linha 
//       insira o conteúdo que deve ser exibido e ocultado quando a imagem for clicada.
//				
//     Ex.:
//				<table border="0" cellpadding="0" cellspacing="0" id="table9" class="treeTabelaN3"  >
//					<tr>
//						<td>
//						<img border="0" id="imgPlus4" src=" /web/mapasite/plus.gif"  class="treeImgPlus">Nivel 1</td>
//					</tr>
//					<tr style="Display:none">
//						<td>
//						   [ Aqui entra o conteudo que desejar exibir e ocultar!! ]
//
//						</td>
//					</tr>
//					</table>
//
// ********************************************************




  // Identifica o browswer
	Nav_FireFox = (document.layers);
	Nav_IE = (document.all);


  //Classes CSS utilizadas
  var objClasses = new function (){
	                               this.imgPlus ='treeImgPlus'; 
	                               this.linkN1  ='treeLinkItemN1';  
	                               this.linkN2  ='treeLinkItemN2';  
	                               this.linkN3  ='treeLinkItemN3';  
	                               this.linkN4  ='treeLinkItemN4';
	                               this.linkN5  ='treeLinkItemN5';    
	                              }
	                              
  //Estados [Esconder e mostrar]
  var objEstados = new function(){
                                   this.mostra = (Nav_IE)?'block':'table-row';                    
                                   this.esconde= 'none';
                                 }	                 
  //Pre load das imagens                                 
  var objImagens = new function(){
                                   this.plus  = new Image().src='/web/mapasite/plus.gif';
                                   this.minus = new Image().src='/web/mapasite/minus.gif';
  
                                 }                                              
 
 // Prepara a Tree no load da página
 // Esta função deve se invocada no load da página. Ela é reponsável por identificar no documento todos os elementos IMG que sejam da 
 // classe "objClasses.imgPlus" e então associar ao evento onclick destes elementos a refência para a função "tooggleTr".
 // Obs.: Os elementos Img da classe "objClasses.imgPlus" devem sempre estar dentro da primeira linha de uma tabela, pois ao ser diparado
 // o seu evento onclick automaticamente irá alterar o status de visibilidade da segunda linha desta mesma tabela.
 function loadTree(){
     objImg = document.getElementsByTagName('img')
     for(i=0; i<objImg.length;i++){
       if (objImg[i].className == objClasses.imgPlus){
           objImg[i].onclick=tooggleTr;
       }
     }    
     

  
     objA = document.getElementsByTagName('a')
     for(i=0; i<objA.length;i++){
       if (   (objA[i].className == objClasses.linkN2)
           || (objA[i].className == objClasses.linkN3)
           || (objA[i].className == objClasses.linkN4) )
       {
           objA[i].onclick=tooggleTr;
          
       }
     }         
     

 }

//Altera o status de visibilidade de uma determinada Tr.
// Esta função deve ser associado a um elemnto que esteja na primeira Tr de uma tabela, então ao ser disparada, esta função irá
// alterar o status de visibilidade da segunda linha da mesma tabela.
function tooggleTr(){
  obj = this;
  var pE //Proximo Elemento Tr
      pE = obj.parentNode
      pE = pE.parentNode
      pE = pE.parentNode      
      
      //Se não existir a proxima Tr, então sai da função
      if (Nav_IE){
        if (pE.childNodes.length <= 1 ){
          return;
        }
      }else{
        if (pE.childNodes.length <= 2 ){
          return;
        }      
      }
      
      
     //Pega a proxima Tr
     //Compatibiliza com o Firefox
     for (i=0; i < pE.childNodes.length; i++){
        if(pE.childNodes[i] == obj.parentNode.parentNode){
          if(Nav_IE){
            pE = pE.childNodes[i+1]
          }else{
            pE = pE.childNodes[i+2]
          }
        }
      }
      
      
      //Mostra ou esconte pE(próximo elemento), ou seja, a próxima Tr
      if (pE.style.display == objEstados.esconde){

			pE.style.display = objEstados.mostra;        
			if (Nav_IE)
			{
			  obj.parentNode.childNodes[0].src = objImagens.minus;
			}else{
			  obj.parentNode.childNodes[1].src = objImagens.minus;
			}
		
      }else{
        
			pE.style.display = objEstados.esconde;  
			if (Nav_IE){     
			  obj.parentNode.childNodes[0].src = objImagens.plus;        
			}else{
			  obj.parentNode.childNodes[1].src = objImagens.plus;        
			}
       
      }
  
}

