/************************************************************
/*** MenuBuilder 
/************************************************************
/** Responsáveis: Rodrigo Innecco
/************************************************************
/** TODO: Fazer documentação de uso
/************************************************************
   /*** Variaveis de controle do menu **/ 
   var abriuMenu = false;
   var idAtual = "";
   var idAntecessor = "";
   var nivelAntecessor = 0;
   var codigoTeste = "";
   var indiceItem = new Array(0,0,0,0,0,0,0,0,0,0,0,0);
   var indiceItemMarcado = new Array(0,0,0,0,0,0,0,0,0,0,0,0);
   var estaMarcando = true;

   //** Muda a cor da Borda da tabela
   function LinkaNivel1(urlSecao){
      window.location.href=urlSecao;
   }

	
   //** Muda a cor da Borda da tabela
   function MudaCorNivel1(NomeDaTabela){
      document.getElementById(NomeDaTabela).style.border="1px solid #1D3BAB";
   }

   //** Volta a cor da Borda da tabela
   function VoltaCorNivel1(NomeDaTabela){
      document.getElementById(NomeDaTabela).style.border="1px solid #FFFFFF";
   }
   
   //** Escreve a linha passada como parametro na tela
   function escreveNaPagina(linha) {

      /*DEBUG
      for (i=0; i<=nivelAntecessor; i++)
         linha = "    " + linha;
      
      //document.teste2.campo2.value += linha;
      */
      
      document.write(linha);
       
   }//function
   
   //** Fecha todos os níveis pendentes
   function FechaMenu() {
   
      escreveNaPagina("</span>");
      
      //De acordo com a descida de nivel...   
      for (i=1; i<=nivelAntecessor; i++) {
            //fecha os niveis
            escreveNaPagina("</span>");
      }//for      
      
   }//function
   
   //** Abre um nivel no menu, fechando os outros niveis abertos
	function MenuAbreNivel(paramIdSecao) {
   
      var indiceItem = 1;
      var temSecao = true;
      var novoIdSecao = "";
      
      idSecao = paramIdSecao;
      posRetirada = idSecao.lastIndexOf("_");            
      idSecaoGeral = idSecao.substring(0,posRetirada);

      //** Fecha todos os outros itens da mesma seção **  
	   while (temSecao) {
               
         //Simula o novo item
         novoIdSecao = idSecaoGeral + "_" + indiceItem;
         
         //Se este novo item existir...
         if (ObjetoExiste(document.getElementById(novoIdSecao))) {
                    
            //Some com ele, se ele for diferente do atual
           if (paramIdSecao != novoIdSecao) {               
	       document.getElementById(novoIdSecao).style.display = "none";
	       if(document.getElementById(novoIdSecao).innerHTML.replace('\r\n\r\n','') != ""){
		     eval("document.getElementById('img"+novoIdSecao+"')").src="images/MenuMais.gif";
	       }		
            }//if

            indiceItem++;
            
         } else {
         
            temSecao = false;
            
         }//if
           	  
	   }//while
      
      //** Abre o item se ele estiver fechado, ou fecha se estiver aberto  
	   if (document.getElementById(paramIdSecao).style.display == "none") {      
               document.getElementById(paramIdSecao).style.display = "block"; 	       
	       if(eval("document.getElementById('img"+paramIdSecao+"')").src != "images/MenuNada.gif"){
	       	  eval("document.getElementById('img"+paramIdSecao+"')").src="images/MenuMeno.gif"; 	 
	       }
	   } else {      
         document.getElementById(paramIdSecao).style.display = "none";	 
	 if(eval("document.getElementById('img"+paramIdSecao+"')").src != "images/MenuNada.gif"){
	    eval("document.getElementById('img"+paramIdSecao+"')").src="images/MenuMais.gif";
	 }
      }//if
      
	}//function

   //** Verifica se um determinado objeto existe na página 
	function ObjetoExiste(paramObjeto) {
	   return (typeof(paramObjeto) != "undefined" && paramObjeto != null);
	}//function

	//** Cria um novo item no menu
   //** É necessário passar o nivel atual e o nome da seção
   function MenuCriaItem(paramNivel, paramNomeSecao, paramLinkSecao, temSubSecao) {

      //Quando subir o nivel...
      if (paramNivel > nivelAntecessor) {
      
         //adiciona o nivel ao id atual
         idAtual = idAtual + paramNivel + "_";
         
         //seta que o nivel antecessor para a próxima chamada
		   nivelAntecessor = paramNivel;
         
      //Quando descer o nivel...
		} else if (paramNivel < nivelAntecessor) {
      
         //fecha os niveis
         escreveNaPagina("</span>\n\n");

   
         //alert("paramNivel = "+paramNivel+"\nnivelAntecessor = "+nivelAntecessor);
         
	 //De acordo com a descida de nivel...   
         for (j=paramNivel; j<nivelAntecessor; j++) {

            //fecha os niveis
            escreveNaPagina("</span>\n\n");
            
            //volta o id
            posRetirada = idAtual.lastIndexOf("_",idAtual.lastIndexOf("_")-1);            
            idAtual = idAtual.substring(0,posRetirada) + "_";
            //alert("idAtual = " + idAtual);
            
         }//for
         
		   nivelAntecessor = paramNivel;		
                                 
      //Manteve o nivel
      } else {
      
			escreveNaPagina("</span>\n\n");
      
      }//if
		
      indiceItem[paramNivel] = indiceItem[paramNivel] + 1;

		VerificaEstado = VerificaSeVaiMostrar(paramNivel, paramNomeSecao);
		//alert(VerificaSeJaMarcouNiveisAnteriores(paramNivel));
		//alert(indiceItemMarcado[paramNivel]);
		
		if (paramNomeSecao.substring(paramNomeSecao.length-4,paramNomeSecao.length) == '.gif') {
			escreveNaPagina("<table cellpadding='0' id = 'table" + idAtual + indiceItem[paramNivel] + "' cellspacing='1' class='tableMenuNivel" + paramNivel +  VerificaSeVaiMarcar(paramNivel, paramNomeSecao) + "' ");
		    if(paramNivel==1){
		       escreveNaPagina(" onMouseOver=MudaCorNivel1('table" + idAtual + indiceItem[paramNivel] + "'); onMouseOut=VoltaCorNivel1('table" + idAtual + indiceItem[paramNivel] + "'); onClick=LinkaNivel1('"+paramLinkSecao+"'); ");
		    }
		    escreveNaPagina(">\n <tr>\n");
			escreveNaPagina("<td class='tdMenuNivel" + paramNivel +  VerificaSeVaiMarcar(paramNivel, paramNomeSecao) + "' valign='middle' style='padding-top:2px;padding-left:2px'>\n");
			escreveNaPagina("<a href='"+ paramLinkSecao +"'><img src='" + paramNomeSecao + "' border='0'></a>\n"+
			"</td>\n"+
			"</tr>\n"+
			"</table>\n");			
			escreveNaPagina("<span id='" + idAtual + indiceItem[paramNivel] + "' " + VerificaEstado + ">\n");				
			escreveNaPagina("\n");
						
		} else {				
			escreveNaPagina("<table cellpadding='0' cellspacing='1' id = 'table" + idAtual + indiceItem[paramNivel] + "' class='tableMenuNivel" + paramNivel + VerificaSeVaiMarcar(paramNivel, paramNomeSecao) + "' ");
		    if(paramNivel==1){
		       escreveNaPagina(" onMouseOver=MudaCorNivel1('table" + idAtual + indiceItem[paramNivel] + "'); onMouseOut=VoltaCorNivel1('table" + idAtual + indiceItem[paramNivel] + "'); onClick=LinkaNivel1('"+paramLinkSecao+"'); ");
		    }
		    escreveNaPagina(">\n <tr>\n");
			escreveNaPagina("<td class='tdMenuNivel" + paramNivel +  VerificaSeVaiMarcar(paramNivel, paramNomeSecao) + "' valign='middle'>\n");
			if (paramNivel > 1) {
				escreveNaPagina("<img  id = 'img" + idAtual + indiceItem[paramNivel] + "' src='images/"+ VerificaTipoDeSeta(paramNivel, paramNomeSecao, temSubSecao) +"' width=7 height=7 border=0 style='cursor:pointer' ");
				if(temSubSecao){
					escreveNaPagina("onMouseOver=MenuAbreNivel(\'" + idAtual + indiceItem[paramNivel] + "\','this');");
				}
				escreveNaPagina("> ");
			}
			if(paramLinkSecao != "#"){ /*	teste original era ''	*/
				escreveNaPagina("<a href='"+ paramLinkSecao +"' class='linkMenuNivel" + paramNivel + VerificaSeVaiMarcar(paramNivel, paramNomeSecao) + "' target='detail'>");
			}else{
				if(temSubSecao){
					escreveNaPagina("<a href='#' class='linkMenuNivel" + paramNivel + VerificaSeVaiMarcar(paramNivel, paramNomeSecao)+"'");	
					escreveNaPagina(" onClick=MenuAbreNivel(\'" + idAtual + indiceItem[paramNivel] + "\','this');");
				}else{
					escreveNaPagina("<span class='linkMenuNivel" + paramNivel + VerificaSeVaiMarcar(paramNivel, paramNomeSecao)+"'");	
				}
				escreveNaPagina("> ");
			}
			escreveNaPagina(paramNomeSecao + "</a>\n"+
					"</td>\n"+
					"</tr>\n"+
					"</table>\n");				
			escreveNaPagina("<span id='" + idAtual + indiceItem[paramNivel] + "' " + VerificaEstado + ">\n");           
         	escreveNaPagina("\n");	 

		}//if
				
	}//function

	function VerificaSeJaMarcouNiveisAnteriores(paramNivel){	   
	   for(i=paramNivel-1;i>0;i--){
		if(indiceItemMarcado[i]==0){return false;}
	   }
	   return true;
	}

	function VerificaSeVaiMostrar(paramNivel, paramNomeSecao) {
		if((indiceItemMarcado[paramNivel] == 0) && (VerificaSeJaMarcouNiveisAnteriores(paramNivel))){
			if((itemMarcadoNoNivel[paramNivel] == paramNomeSecao)) {
				indiceItemMarcado[paramNivel] = indiceItem[paramNivel];
				abriuMenu = true;
				return "style='display:block'";				
			
			} else {
				abriuMenu = false;
				return "style='display:none'";				
			}//if		   
		}else{
			abriuMenu = false;
			return "style='display:none'";
		}

	}//function



	function VerificaSeVaiMarcar(paramNivel, paramNomeSecao) {
		if ((itemMarcadoNoNivel[paramNivel] == paramNomeSecao)&&(VerificaSeJaMarcouNiveisAnteriores(paramNivel))) {
			if(abriuMenu){
			   if(itemMarcadoNoNivel.length-1 == paramNivel){
				return "MarcadoPreto";
			   }else{
				return "Marcado";				
			   }
			}else{return "";}
		} else {			
			return "";
		}//if 
	}//function

	
	function VerificaTipoDeSeta(paramNivel, paramNomeSecao, temSubSecao) {		

	   if(indiceItemMarcado[paramNivel] == indiceItem[paramNivel]){
	        if(abriuMenu){

			if (temSubSecao) {
				return "MenuMeno.gif";
			} else {		
				return "MenuMarcado.gif";
			}
		}else{

		if(temSubSecao){			
			return "MenuMais.gif";
		}else {			
			return "MenuNada.gif";
		}

		}
	
	   }else{

		if(temSubSecao){			
			return "MenuMais.gif";
		}else {			
			return "MenuNada.gif";
		}

	   }//if	
	}