function menuNavegacion(){
  var milisegundos=250;
  $$('#menu_arbol li a').each(function(el){	
      // aplico esta función a los enlaces de primer nivel que no tienen una lista de segundo nivel al lado
      if ((el.parentNode.parentNode.id=='menu_arbol') && (!el.getNext())){
        el.addEvent('mouseover',function(){	
              $$('.abierto').each(function(elem){
                                    //elem.getPrevious().removeClass('selected');
                                    var efecto = new Fx.Styles(elem, {duration: milisegundos, transition: Fx.Transitions.linear});
                                    efecto.start({'opacity': [1, 0]})
                                    elem.removeClass('abierto');
                                 }
              );
            }
          ) ;
      }
    }
  );
  
  
  $$('#menu_arbol li ul').each(function(el){
  			el.setOpacity(0);
        //defino las acciones para los enlaces del menú de 1er nivel que tiene lista de segundo nivel a su lado
        el.getPrevious().addEvent('mouseover',function(){
        		if(this.getNext().hasClass('abierto')) return; //si el menu seleccionado ya está abierto no se hace nada, para evitar el parpadeo.
            //oculto todos los menús de segundo nivel abiertos
            //los identifico con la clase .abierto
          $$('.abierto').each(function(elem){
        //    $$('#menu_arbol li ul').each(function(elem){
          //  			if(elem.getNext()==el || elem.getPrevious().getStyle('opacity')==0) return;
                  elem.getPrevious().removeClass('selected');
                  var efecto = new Fx.Styles(elem, {duration: milisegundos, transition: Fx.Transitions.linear});
                  efecto.start({'opacity': [1, 0]})
                  elem.removeClass('abierto');
               }
            );
            
            //his.addClass('selected');
            this.getNext().addClass('abierto');
            var efecto = new Fx.Styles(this.getNext(), {duration: milisegundos, transition: Fx.Transitions.linear});
            efecto.start({'opacity': [0, 1]})
          }
        );
        el.addEvent('mouseout',function(e){
              //evalúo el evento mouseout dentro de la lista de segundo nivel
            	if (!e) var e = window.event;
            	//reltg almacena el detino del mouseout
            	var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
            	//compruebo en el árbol de etiquetas por si el mouseout me lo
            	//ha dado al salir del enlace o al pasar entre los li que forman la lista
            	while (reltg.nodeName!="UL" && reltg.nodeName != 'BODY'){	
            	  reltg= reltg.parentNode;
            	}
            		
            	if (reltg.nodeName== "UL") return;  
            	
            	//si llego aquí es porque el mouseout es fuera de la lista de segundo nivel
              var efecto = new Fx.Styles(this, {duration: milisegundos, transition: Fx.Transitions.linear});
              efecto.start({'opacity': [1, 0]});
              this.removeClass('abierto');
            	

           }
        );

    }
  );
};

Window.onDomReady(function(){menuNavegacion()});
