
	function ini()
	{
		for ( cont_nivel=max_niveles-1; cont_nivel>0; cont_nivel--)
		{
			for ( cont_elementos=0; cont_elementos<array_elementos.length; cont_elementos++)
			{
				if ( cont_nivel == (array_elementos[cont_elementos][3]) )
					plegar(cont_elementos);
			}
		}

		for ( cont_elementos=0; cont_elementos<array_elementos.length; cont_elementos++)
		{
			mostrar("m" + cont_elementos);
		}

		elemento_abierto = -1;
		nivel_abierto = 0;
	}

	function principal(id)
	{
		//Se cambia de negrita a normal y al revés los elementos correspondientes
		eval("document.all.t_" + elemento_pulsado + ".style.fontWeight = 'normal'");
		elemento_pulsado = id;
		eval("document.all.t_" + elemento_pulsado + ".style.fontWeight = 'bold'");
		
		//alert("elemento_pulsado: " + parent.frames.menu.elemento_pulsado);
		//alert("nivel_pulsado: " + parent.frames.menu.array_elementos[elemento_pulsado][3]);
		//alert("elemento_abierto: " + parent.frames.menu.elemento_abierto);
		if (elemento_abierto != -1)
		{
			//alert("nivel_abierto: " + parent.frames.menu.array_elementos[elemento_abierto][3]);
		}
		if ( !menu_activado )
		{
			//Se buscan los elementos que plegarán sus "hijos"
			calcular_ids_abiertos();
			
			//Si hay que plegar
			if (( array_elementos_abiertos.length > 0)&&(!(pulsado_desciende_de_abierto())))
			{
				numero_hijos = buscar_hijos(array_elementos_abiertos[0]);
				desplazamiento_total = numero_hijos * alto_divs;
				plegar_hijos_timer(array_elementos_abiertos[0],desplazamiento);
			}
			
			//Si no se ha plegado porque no había nada desplegado
			else
			{
				//Se buscan los elementos que desplegarán sus "hijos" hasta desplegar el pulsado
				calcular_ids_cerrados();

				//Se inicia el despliegue los "hijos" del primer elemento de la matriz.
				numero_hijos = buscar_hijos(array_elementos_cerrados[0]);
				desplazamiento_total = numero_hijos * alto_divs;
				desplazamiento = 0;
				desplegar_hijos_timer(array_elementos_cerrados[0],desplazamiento,0);
				
				//canviaVis(elemento);
			}
		}
	}


function calcular_ids_abiertos()
{
	array_elementos_abiertos.length = 0;
		
	//Si hay algún elemento abierto variará el tamaño de la matriz de elementos abiertos
	if ( elemento_abierto != -1)
	{
		elemento_anterior = "";
		nivel_elemento_anterior = nivel_abierto + 1;
		elemento_actual = elemento_abierto;
		num_ids = 0;

		for ( cont=elemento_abierto; (cont >= 0); cont--)
		{
			//Si el nivel del elemento anterior es mayor es que está desplegado y el actual es "hijo" suyo.
			//Hay que plegarlo y se pone por tanto en la matriz de elementos a plegar.
			if  ( array_elementos[elemento_actual][3] < nivel_elemento_anterior ) 
			{
				array_elementos_abiertos[num_ids] = elemento_actual;
				num_ids++;
				nivel_elemento_anterior--;
			}
			elemento_anterior = elemento_actual;
			elemento_actual--;
		}
	}
}


//Se mira qué hay que desplegar hasta llegar al pulsado, incluyéndolo
function calcular_ids_cerrados()
{
	array_elementos_cerrados.length = 0;
	array_temp = new Array();
	i=0;
	nivel_anterior = array_elementos[elemento_pulsado][3] + 1;
	for (cont=elemento_pulsado; (cont > elemento_abierto); cont--)
	{
		if  ( array_elementos[cont][3] < nivel_anterior ) 
		{
			array_temp[i] = cont;
			i++;
			nivel_anterior--;
		}
	}
	//Se da la vuelta a la matriz temporal para ponerla en el orden en que se desplegará
	for (j=0; (j < array_temp.length); j++)
	{
		array_elementos_cerrados[j] = array_temp[array_temp.length - 1 - j];
//alert("array_elementos_cerrados[" + j + "]: " + array_elementos_cerrados[j]);
	}
}



function nuevo_id_abierto(elemento_actual)
{
	//Se añade a la matriz de elementos abiertos el elemento desplegado, en primera posición
	array_temp = new Array();
	array_temp[0] = elemento_actual;
	for (i=0; i < array_elementos_abiertos.length; i++)
	{
		array_temp[i+1] = array_elementos_abiertos[i];
	}
	array_elementos_abiertos.length = 0;
	for (j=0; j < array_temp.length; j++)
	{
		array_elementos_abiertos[j] = array_temp[j];
	}
	array_temp.length = 0;
}


function quitar_de_elementos_abiertos(elemento_actual)
{
	//Se quita de la matriz de elementos abiertos el elemento plegado
	array_temp = new Array();
	for (i=1; i < array_elementos_abiertos.length; i++)
	{
		array_temp[i-1] = array_elementos_abiertos[i];
	}
	array_elementos_abiertos.length = 0;
	for (j=0; j < array_temp.length; j++)
	{
		array_elementos_abiertos[j] = array_temp[j];
	}
	array_temp.length = 0;
}



function mismo_padre(elemento_plegado)
{
	//Se mira si el elemento plegado tiene el mismo padre que el pulsado
	var mismo_padre = false;
	var padre_elemento_pulsado = -1;
	var padre_elemento_plegado = -1;

	//Se busca el padre del elemento_pulsado
	fin = false;
	for ( cont=(elemento_pulsado-1); ((cont >= 0)&&(!fin)); cont--)
	{
		if  ( array_elementos[cont][3] < array_elementos[elemento_pulsado][3] ) 
		{
			padre_elemento_pulsado = cont;
			fin = true;
		}
	}

	//Se busca el padre del elemento_plegado
	fin = false;
	for ( cont=(elemento_plegado-1); ((cont >= 0)&&(!fin)); cont--)
	{
		if  ( array_elementos[cont][3] < array_elementos[elemento_plegado][3] ) 
		{
			padre_elemento_plegado = cont;
			fin = true;
		}
	}
//alert("elemento_pulsado: " + elemento_pulsado + " , padre_elemento_pulsado: " + padre_elemento_pulsado + ", elemento_plegado: " + elemento_plegado + " , padre_elemento_plegado: " + padre_elemento_plegado);
	if ((padre_elemento_plegado == padre_elemento_pulsado)&&(padre_elemento_plegado != -1))
	{
		mismo_padre = true;
	}
//alert("mismo_padre: " + mismo_padre);
	return mismo_padre;
}



function pulsado_desciende_de_abierto()
{
	//Se mira si el elemento pulsado desciende del que se va a plegar
	var desciende = false;
	
	//Se comparan los ascendientes del elemento pulsado con el elemento abierto
	i=0;
	nivel_anterior = array_elementos[elemento_pulsado][3];
	for ( cont=(elemento_pulsado - 1); (cont >= 0); cont--)
	{
		if  ( array_elementos[cont][3] < nivel_anterior ) 
		{
			if (cont == elemento_abierto)
			{
				desciende = true;
			}
			nivel_anterior--;
		}
	}
//alert("desciende: " + desciende);
	return desciende;
}


	function calcular_nivel_abierto()
	{
//alert("elemento_abierto (al entrar en cálculo): " + elemento_abierto);
//alert("array_elementos_abiertos.length: " + array_elementos_abiertos.length);
		if (array_elementos_abiertos.length	 > 0)
		{
for (cont=0; cont<array_elementos_abiertos.length; cont++)
{
//	alert("array_elementos_abiertos["+cont+"]: " + array_elementos_abiertos[cont]);
}
			elemento_abierto = array_elementos_abiertos[0];
			nivel_abierto = array_elementos[elemento_abierto][3];
		}
		else
		{
			elemento_abierto = -1;
			nivel_abierto = 0;
		}
//alert("elemento_abierto (al salir del cálculo): " + elemento_abierto);
	}


// ------------------------------------------------------------------------------------------------------------
// BUSCAR HIJOS 

	function buscar_hijos(id)
	{
		nivel = array_elementos[id][3];
		
		for ( i=id+1, contador_elementos=0, parar=false; ( (i<array_elementos.length) && (!parar) ) ; i++ )
		{
			if ( array_elementos[i][3] == (nivel+1) )
				contador_elementos++;

			if ( array_elementos[i][3] <= nivel )
				parar = true;
		}
		
//alert("El elemento " + id + " tiene " + contador_elementos + " hijos");
		return contador_elementos;
	}

// ------------------------------------------------------------------------------------------------------------
// PLEGAR

	function plegar(id)
	{
		numero_hijos = buscar_hijos(id);
		
		for ( i = 0 ; i < numero_hijos; i++ )
		{
			plegar_hijos(id,numero_hijos);
		}
	}

	function plegar_hijos(id,cuantos)
	{
		for ( i=id+1; i<array_elementos.length; i++ )
		{
			eval("document.all.m" + i + ".style.pixelTop = document.all.m" + i + ".style.pixelTop - " + (alto_divs*cuantos));
		}
	}

// ------------------------------------------------------------------------------------------------------------
// DESPLEGAR

	function desplegar(id)
	{
		//alert (id);
		numero_hijos = buscar_hijos(id);
		for ( i = 0 ; i < numero_hijos; i++)
		{
			desplegar_hijos(id,numero_hijos);
		}

		if (numero_hijos > 0)
		{
			elemento_abierto = id;
			nivel_abierto = array_elementos[id][3];
		}
	}

	function desplegar_hijos(id,cuantos)
	{
		for ( i=id+1; i<array_elementos.length; i++ )
		{
			eval("document.all.m" + i + ".style.pixelTop = document.all.m" + i + ".style.pixelTop + " + (alto_divs*cuantos));
		}
	}

// ********************************************************************************************************
//													TIMER
// ********************************************************************************************************

// --------------------------------------------------------------------------------------------------------
//	PLEGAR CON TIMER

	function plegar_hijos_timer(elemento_a_plegar,desplazamiento)
	{
		menu_activado = true;
		numero_hijos = buscar_hijos(array_elementos[elemento_a_plegar][3]);
		for (i = elemento_a_plegar+1; i < (elemento_a_plegar+numero_hijos+1); i++)
		{
			posaVis("t_"+i,"none");
		}
		
		//Se mueven los divs hacia arriba en cada iteración hasta su posición final
		if( desplazamiento < desplazamiento_total )
		{
			if ( ( (desplazamiento_total-desplazamiento) > velocidad_movimiento) )
				velocidad = velocidad_movimiento;
			else
				velocidad = desplazamiento_total-desplazamiento;

			for ( i=elemento_a_plegar+1; i<array_elementos.length; i++ )
			{
				eval("document.all.m" + i + ".style.pixelTop = document.all.m" + i + ".style.pixelTop - " + velocidad);
			}

			desplazamiento += velocidad;
			timer_plegar = setTimeout("plegar_hijos_timer(" + elemento_a_plegar + "," + desplazamiento + ")", intervalo);
		}
		else
		{
			clearTimeout(timer_plegar);
			elemento_plegado = elemento_a_plegar;
			quitar_de_elementos_abiertos(elemento_plegado);
			
			//Hay que seguir plegando si hay más elementos abiertos y si éstos no son hermanos del pulsado
			if ((array_elementos_abiertos.length > 0)&&(!mismo_padre(elemento_plegado)))
			{
				if ( array_elementos_abiertos[0] != elemento_pulsado )
				{
					desplazamiento = 0;
					numero_hijos = buscar_hijos(array_elementos_abiertos[0]);
					desplazamiento_total = numero_hijos * alto_divs;
					plegar_hijos_timer(array_elementos_abiertos[0],desplazamiento);
				}
				else
				{
					calcular_nivel_abierto();
					menu_activado = false;					
				}
			}
			//Si se ha acabado de plegar
			else
			{
				calcular_nivel_abierto();
				
				//Puede ser que ahora tenga que desplegarse el pulsado
				if ( elemento_pulsado != elemento_plegado )
				{
					array_elementos_cerrados.length = 0;

					//Se buscan los elementos que desplegarán sus "hijos"
					calcular_ids_cerrados();

					//Se inicia el despliegue los "hijos" del primer elemento de la matriz.
					numero_hijos = buscar_hijos(array_elementos_cerrados[0]);
					desplazamiento_total = numero_hijos * alto_divs;
					desplazamiento = 0;
					desplegar_hijos_timer(array_elementos_cerrados[0],desplazamiento,0);
				}
				else
				{
					menu_activado = false;
				}
			}
		}
	}

// --------------------------------------------------------------------------------------------------------
//	DESPLEGAR CON TIMER

	function desplegar_hijos_timer(elemento_a_desplegar,desplazamiento,contador)
	{
		menu_activado = true;
		
		//Se mueven los divs hacia abajo en cada iteración hasta su posición final
		if( desplazamiento < desplazamiento_total )
		{
			if ( ( (desplazamiento_total-desplazamiento) > velocidad_movimiento) )
				velocidad = velocidad_movimiento;
			else
				velocidad = desplazamiento_total-desplazamiento;
			
			for ( i=elemento_a_desplegar+1; i<array_elementos.length; i++ )
			{
				eval("document.all.m" + i + ".style.pixelTop = document.all.m" + i + ".style.pixelTop + " + velocidad);
			}
			
			desplazamiento += velocidad;
			timer_desplegar = setTimeout("desplegar_hijos_timer(" + elemento_a_desplegar + "," + desplazamiento + "," + contador + ")", intervalo);
		}
		else
		{
			clearTimeout(timer_desplegar);
			elemento_desplegado = elemento_a_desplegar;
			//Si el elemento tratado no es el último y tenía hijos, se añade a la matriz de elementos abiertos
			if (elemento_desplegado != (array_elementos.length - 1))
			{
				if (array_elementos[elemento_desplegado][3] < array_elementos[elemento_desplegado + 1][3])
				{
					nuevo_id_abierto(elemento_desplegado);
					numero_hijos = buscar_hijos(array_elementos[elemento_desplegado][3]);
					for (i = elemento_desplegado+1; i < (elemento_desplegado+numero_hijos+1); i++)
					{
						posaVis("t_"+i,"");
					}
				}
			}
			calcular_nivel_abierto();
			contador++;
			if (contador < array_elementos_cerrados.length)
			{
				desplazamiento = 0;
				numero_hijos = buscar_hijos(array_elementos_cerrados[contador]);
				desplazamiento_total = numero_hijos * alto_divs;
				desplegar_hijos_timer(array_elementos_cerrados[contador],desplazamiento,contador);
			}
			else
			{
				menu_activado = false;
			}
		}
	}

	function abrir(pagina)
	{
		//alert("elemento_pulsado: " + parent.frames.menu.elemento_pulsado);
		//alert("nivel_pulsado: " + parent.frames.menu.array_elementos[elemento_pulsado][3]);
		//alert("elemento_abierto: " + parent.frames.menu.elemento_abierto);
		if (elemento_abierto != -1)
		{
		//	alert("nivel_abierto: " + parent.frames.menu.array_elementos[elemento_abierto][3]);
		}

		parent.frames.contenido.document.location = pagina;
		array_tmp = parent.frames.menu.array_elementos;
		for ( cont_elementos=0, parar=false; ( (cont_elementos<array_tmp.length) && (!parar) ); cont_elementos++)
		{
			if ( array_tmp[cont_elementos][2] == pagina )
			{
				parent.frames.menu.principal(cont_elementos);
				parar = true;
			}
		}
	}
	

function canviaVis(id)
{	
	//alert(id);
	itm = extrauControl(id);
	if (!itm) 
	{
	  // do nothing
	}
	else if (itm.style) 
	{
		if (itm.style.display == "none") 
		{
			itm.style.display = ""; 
		}
		else 
		{ 
			itm.style.display = "none"; 
		}
	}
	else 
	{ 
		itm.visibility = "show"; 
	}
}

function extrauControl(id)
{
	var itm = null;
	if (document.getElementById) 
	{
		itm = document.getElementById(id);
	}
	else if (document.all)
	{
		itm = document.all[id];
	}
	else if (document.layers)
	{
		itm = document.layers[id];
	}

	return itm;
}

function posaVis(id,vis)
{
	itm = extrauControl(id);

	if (!itm) 
	{
	  // do nothing
	}
	else if (itm.style) 
	{
		itm.style.display = vis; 
	}
	else 
	{ 
		itm.visibility = "show"; 
	}
}

function canviarMenu(id)
{
	//	canviaVis(id);
	$("#"+id).slideToggle("fast");
}

function actuNegritas(vinc)
{
	vinculos = $("#menus a");
	
	for (i=0; i < vinculos.length; i++)
	{
		vinculos[i].className="";
	}
	
	vinc.className="negrita";
}