var ControlMenu = Class.create({
	
	
	/*Id de la lista raiz del menu*/
	idRaiz : "mi_0",
	actual : "actual",
	
	
	/*Elementos*/
	claseAbiertoT1 : "tituloElemMenuIzqN1Abierto",
	claseCerradoT1 : "tituloElemMenuIzqN1Cerrado",
	
	
	/*Elementos de primer nivel q no tienen hijos*/
	claseCerrado : "tituloElemMenuIzqN1",
	claseAbierto : "tituloElemMenuIzqN1Seleccionado",


	/*Elementos de segundo nivel q no tienen hijos*/
	claseAbiertoT2 : "tituloElemMenuIzqN2Abierto",
	claseAbiertoT2Selecc : "tituloElemMenuIzqN2Seleccionado",
	claseCerradoT2 : "tituloElemMenuIzqN2Cerrado",
	
	/*Elementos de segundo nivel q tienen hijos*/
	claseAbiertoLiT2 :"tituloElemMenuIzqN2PadreAbierto",
	claseCerradoLiT2 :"tituloElemMenuIzqN2PadreCerrado",
	
	/*Elementos de segundo nivel q ha sido seleccionado*/
	claseCerradoLiT2Selecc:"tituloElemMenuIzqN2PadreCerradoSeleccionado",
	
	/*Elementos del tercer nivel*/
	claseAbiertoT3:"tituloElemMenuIzqN3",
	claseCerradoT3:"tituloElemMenuIzqN3Seleccionado",
	
	/*hojas segundo nivel*/
	hojaN2 : "elemListaMenuIzqN2",
	hojaN3 : "elemListaMenuIzqN2",


	listaN2 : "ul.menuIzqN2",
	listaN3 : "ul.menuIzqN3",



	cerradoAutomatico : function () 
	{
		
		var raiz =  $(this.idRaiz);
				
		var listas = raiz.select(this.listaN2);
		
		for(var i=0; i < listas.length; i++)
		{		
			listas[i].style.display = "none";			
		}
		var listas = raiz.select("li");
		
		for(var i=0; i < listas.length; i++)
		{		
			if(listas[i].classNames().include("elemMenuIzqN1PadreAbierto")){
				this.cambiaClase(listas[i].down("div"), "tituloElemMenuIzqN1Abierto", "tituloElemMenuIzqN1Cerrado");
			}
			if(listas[i].classNames().include("elemMenuIzqN2")){
				if(listas[i].down("div").classNames().include("tituloElemMenuIzqN2PadreAbierto"))
					this.cambiaClase(listas[i].down("div"), "tituloElemMenuIzqN2PadreAbierto", "tituloElemMenuIzqN2PadreCerrado");
			}
			
		}
		
		
		var listas = raiz.select(this.listaN3);
		
		for(var i=0; i < listas.length; i++)
		{		
			listas[i].style.display = "none";			
		}
	},
	
	trataMenu : function (idActual) 
	{
			
		/*obtengo las clases del elemento llamante*/
		var clasesElemento = $(idActual).classNames();

		if (clasesElemento.include(this.claseCerradoT1)) {	
			this.cerradoManual();
			this.cambiaClase(idActual, this.claseCerradoT1, this.claseAbiertoT1);
			var descendientes = $(idActual).next(); 
			if(descendientes != null){
				descendientes.setStyle({
					"display" : "block"
				});
			}
		}
		else if (clasesElemento.include(this.claseAbiertoT1)) {
			this.cerradoManual();
			this.cambiaClase(idActual, this.claseAbiertoT1, this.claseCerradoT1);
			var descendientes = $(idActual).next(); 
			if(descendientes != null){
				descendientes.setStyle({
					"display" : "none"
				});
			}
			
		}
		//segundo nivel
		else if (clasesElemento.include(this.claseCerradoT2)) {
			
			var elementos = raiz.select("."+this.claseAbiertoT2Selecc);		
			for(var i=0; i < elementos.length; i++)
			{		
				this.cambiaClase(elementos[i].id, this.claseAbiertoT2Selecc, this.claseCerradoT2);			
			}
			this.cambiaClase(idActual, this.claseCerradoT2, this.claseAbiertoT2Selecc);
			var descendientes = $(idActual).next(); 
			if(descendientes != null){
				descendientes.setStyle({
					"display" : "block"
				});
			}
		}
		else if (clasesElemento.include(this.claseAbiertoT2Selecc)) 
		{
			this.cambiaClase(idActual, this.claseAbiertoT2Selecc, this.claseCerradoT2);
			var descendientes = $(idActual).next(); 
			if(descendientes != null){
				descendientes.setStyle({
					"display" : "none"
				});
			}

		}
		//tercer nivel
		else if ((clasesElemento.include(this.claseCerradoLiT2)) || (clasesElemento.include(this.claseCerradoLiT2Selecc)) ){
			this.cierraElementosHermanos(idActual);
			if(clasesElemento.include(this.claseCerradoLiT2)){
				this.cambiaClase(idActual, this.claseCerradoLiT2, this.claseAbiertoLiT2);
				var listadoIcono = $(idActual).select("div"); 
				for(var i=0; i < listadoIcono.length; i++)
				{		
					if(listadoIcono[i] != null){
						if($w(listadoIcono[i].className).include("iconoAbierto")){
							listadoIcono[i].setStyle({"display" : "none"});
						}
						if($w(listadoIcono[i].className).include("iconoCerrado")){
							listadoIcono[i].setStyle({"display" : "block"});
						}
					}
				}
			}else{
				this.cambiaClase(idActual, this.claseCerradoLiT2Selecc, this.claseAbiertoLiT2);
			}
			
			var descendientes = $(idActual).next("ul"); 
			if(descendientes != null){
				descendientes.setStyle({
					"display" : "block"
				});
			}

		}
		else if (clasesElemento.include(this.claseAbiertoLiT2)) 
		{	
			this.cambiaClase(idActual, this.claseAbiertoLiT2, this.claseCerradoLiT2);
			
			var listadoIcono = $(idActual).select("div"); 
			for(var i=0; i < listadoIcono.length; i++)
			{		
				if(listadoIcono[i] != null){
					if($w(listadoIcono[i].className).include("iconoAbierto")){
						listadoIcono[i].setStyle({"display" : "block"});
					}
					if($w(listadoIcono[i].className).include("iconoCerrado")){
						listadoIcono[i].setStyle({"display" : "none"});
					}
				}
			}
			var descendientes = $(idActual).next("ul"); 
			if(descendientes != null){
				descendientes.setStyle({
					"display" : "none"
				});
			}
		}		
	}, 
	
	cerradoManual : function () 
	{

		/*Cerrado de primer nivel*/
		var raiz =  $(this.idRaiz);
		
		/*Cierra listas desplegadas */
		var listas = raiz.select(this.listaN2);		
		for(var i=0; i < listas.length; i++)
		{		
			listas[i].style.display = "none";					
		}
		/* cambio la clase del t�tulo */
		var elementos = raiz.select("."+this.claseAbiertoT1);		
		for(var i=0; i < elementos.length; i++)
		{		
			this.cambiaClase(elementos[i].id, this.claseAbiertoT1, this.claseCerradoT1);			
		}
		
		var elementos = raiz.select("."+this.claseAbierto);		
		for(var i=0; i < elementos.length; i++)
		{		
			this.cambiaClase(elementos[i].id, this.claseAbierto, this.claseCerrado);			
		}

		
		
		var elementos = raiz.select("."+this.claseCerradoLiT2);		
		for(var i=0; i < elementos.length; i++)
		{		
			this.cambiaClase(elementos[i].id, this.claseCerradoLiT2, this.claseCerradoLiT2);			
			var listadoIcono = $(elementos[i].id).select("div"); 
			for(var i=0; i < listadoIcono.length; i++)
			{		
				if(listadoIcono[i] != null){
					if($w(listadoIcono[i].className).include("iconoAbierto")){
						listadoIcono[i].setStyle({"display" : "block"});
					}
					if($w(listadoIcono[i].className).include("iconoCerrado")){
						listadoIcono[i].setStyle({"display" : "none"});
					}
				}
			}
		}
		
		var elementos = raiz.select("."+this.claseAbiertoLiT2);		
		for(var i=0; i < elementos.length; i++)
		{		
			this.cambiaClase(elementos[i].id, this.claseAbiertoLiT2, this.claseCerradoLiT2);			
			var descendientes = $(elementos[i].id).next("ul"); 
			if(descendientes != null){
				descendientes.setStyle({
					"display" : "none"
				});
			}
			var listadoIcono = $(elementos[i].id).select("div"); 
			for(var i=0; i < listadoIcono.length; i++)
			{		
				if(listadoIcono[i] != null){
					if($w(listadoIcono[i].className).include("iconoAbierto")){
						listadoIcono[i].setStyle({"display" : "block"});
					}
					if($w(listadoIcono[i].className).include("iconoCerrado")){
						listadoIcono[i].setStyle({"display" : "none"});
					}
				}
			}
		}
		
		
		/*Con este codigo hacemos q si se cierra el padre, se desmarca la opcion de la tematica q estams actualmente*/
		var elementos = raiz.select("."+this.claseCerradoLiT2Selecc);		
		for(var i=0; i < elementos.length; i++)
		{		
	        this.cambiaClase(elementos[i], this.claseCerradoLiT2Selecc, this.claseCerradoLiT2);
		}


		var elementos = raiz.select("."+this.claseAbiertoT2Selecc);		
		for(var i=0; i < elementos.length; i++)
		{		
			this.cambiaClase(elementos[i].id, this.claseAbiertoT2Selecc, this.claseCerrado);			
		}
				
	},
	
	cambiaClase : function (id, elimina, anyade)
	{
		$(id).removeClassName(elimina);
		$(id).addClassName(anyade);
	},
	
	colorearMenuInicio: function (id) {

		/*obtengo las clases del elemento llamante*/
		var clasesElemento = $(id).classNames();

		/* Si el elemento es de primer nivel sin hijos */
		if(clasesElemento.include(this.claseCerrado)) {
			this.cambiaClase(id, this.claseCerrado, this.claseAbierto);
		}

		
		/* seleccionamos una opcion del tercer nivel*/
		if(clasesElemento.include(this.claseCerradoLiT2)) {
			/* Cambiamos la clase del elemento */
			$(id).ancestors()[1].setStyle({"display":"block"});//mostramos la clase padre menuIzqN3
			$(id).ancestors()[3].setStyle({"display":"block"});//mostramos la clase padre menuIzqN2
			/* se ha seleccionado elemento del segundo nivel q tiene hijos*/
			if($(id).ancestors()[2].down("div").classNames().include(this.claseCerradoT1)){
				if($(id).classNames().include(this.claseCerradoLiT2)){
			        this.cambiaClase($(id), this.claseCerradoLiT2, this.claseCerradoLiT2Selecc);
			      }
					this.cambiaClase($(id).ancestors()[2].down("div"), this.claseCerradoT1, this.claseAbiertoT1);
			}else{
				this.cambiaClase($(id).ancestors()[4].down("div"), this.claseCerradoT1, this.claseAbiertoT1);
				this.cambiaClase($(id).ancestors()[2].down("div"), this.claseCerradoLiT2, this.claseAbiertoLiT2);
			}


		}
		/* seleccionamos una opcion del segundo nivel sin hijo */
		if(clasesElemento.include(this.claseCerradoT2)) {
			/* Cambiamos la clase del elemento */
			this.cambiaClase(id, this.claseCerradoT2, this.claseAbiertoT2Selecc);//mostramos la clase padre elemMenuIzqN1PadreAbierto
			$(id).ancestors()[1].setStyle({"display":"block"});//mostramos la clase padre menuIzqN3
			this.cambiaClase($(id).ancestors()[2].down("div"), this.claseCerradoT1, this.claseAbiertoT1);//mostramos la clase padre elemMenuIzqN1PadreAbierto
		}
		
		/* seleccionamos una opcion del segundo nivel sin hijo */
		if(clasesElemento.include(this.claseAbiertoT2)) {
			/* Cambiamos la clase del elemento */
			this.cambiaClase(id, this.claseCerradoT2, this.claseAbiertoT2Selecc);//mostramos la clase padre elemMenuIzqN1PadreAbierto
			$(id).ancestors()[1].setStyle({"display":"block"});//mostramos la clase padre menuIzqN3
			this.cambiaClase($(id).ancestors()[2].down("div"), this.claseCerradoT1, this.claseAbiertoT1);//mostramos la clase padre elemMenuIzqN1PadreAbierto
		}
		
		if(clasesElemento.include(this.claseAbiertoT3)) {
			/* Cambiamos la clase del elemento */
			if($(id).classNames().include(this.claseAbiertoT3)){
				this.cambiaClase($(id), this.claseAbiertoT3, this.claseCerradoT3);//mostramos la clase padre elemMenuIzqN1PadreAbierto
			}
			$(id).ancestors()[1].setStyle({"display":"block"});//mostramos la clase padre menuIzqN3
			$(id).ancestors()[3].setStyle({"display":"block"});//mostramos la clase padre menuIzqN2
			this.cambiaClase($(id).ancestors()[2].down("div"), this.claseCerradoLiT2, this.claseAbiertoLiT2);//mostramos la clase padre elemMenuIzqN1PadreAbierto
			this.cambiaClase($(id).ancestors()[4].down("div"), this.claseCerradoT1, this.claseAbiertoT1);//mostramos la clase padre elemMenuIzqN1PadreAbierto
		}
	
		
			
		
	},
	
	cierraElementosIndividuales: function () {
		var raiz =  $(this.idRaiz);
		var elementosSolitarios = raiz.select("."+this.claseAbiertoT2);
		for(var i=0; i < elementosSolitarios.length; i++) {	
			this.cambiaClase(elementosSolitarios[i].id, this.claseAbiertoT2, this.claseCerradoT2);
		}
	},

	cierraElementosHermanos: function (id) {
		var elementosSolitarios = $(id).up("ul").select("."+this.claseAbiertoLiT2);
		for(var i=0; i < elementosSolitarios.length; i++) {	
			this.cambiaClase(elementosSolitarios[i].id, this.claseAbiertoLiT2, this.claseCerradoLiT2);
			elementosSolitarios[i].next("ul").setStyle({
						"display" : "none"
					});
					
			var listadoIcono = $(elementosSolitarios[i].id).select("div"); 
				for(var i=0; i < listadoIcono.length; i++)
				{		
					if(listadoIcono[i] != null){
						if($w(listadoIcono[i].className).include("iconoAbierto")){
							listadoIcono[i].setStyle({"display" : "block"});
						}
						if($w(listadoIcono[i].className).include("iconoCerrado")){
							listadoIcono[i].setStyle({"display" : "none"});
						}
					}
				}
			
		}
		
	}
	
	
});

function ocultaCapaMenu(id) {
	if(id!=""){
		var capa = $(id);
		if(capa != null){
			capa.style.display = "none"; 
		}
	}
}
