    var x_Apartados = new Array();
    var x_cargando = false;
    var x_nHeightHang = 0;


	function Menu(sMenuClick, sUrl)
	{
	    // si son distintos y x_MenuActual no está vacio
	    if ((sMenuClick != x_MenuActual) && (x_MenuActual != ""))
	    {
	        // hacemos la transición del menú anterior para que se cierre si tiene subsecciones
	        if (ValorArray(x_MenuActual) > 0)
	        {
	        		if (x_cargando)
	        		{
	        			setTimeout("Menu('" + sMenuClick + "','" + sUrl + "')", 200);
	        		}
	        		else
	            {
	            	x_cargando = true;
					
					//cambiamos el ancho del div para mostrar la subseccion
		            document.getElementById(x_MenuActual + "_Subsec").style.height = ValorArray(x_MenuActual) + "px";
		            Slide(x_MenuActual + "_Subsec",0);
		          }
	            
	        }
	        
	    }
	    
	    if (sMenuClick != x_MenuActual) x_OpMenu = "cargando";

	    // lanzamos la url
	    if (sUrl != "") LanzaUrl(sUrl,sMenuClick,x_OpMenu);
	    
	}

    function LanzaUrl(sUrl,sMenu,sOp)
    {
        if (x_cargando)
            setTimeout("LanzaUrl('" + sUrl + "','" + sMenu + "','" + sOp + "')", 200);
        else
        {
            document.location.href = sUrl + "&menu=" + sMenu + "&op=" + sOp;
        }
    }
    
	// coge el nombre de la sección
	// y comprueba en el array el valor del height de su subseccion
	function ValorArray(sMenu)
	{
	    // 01234567
	    // ApX_SecX
	    
	    // para sacar Ap cargamos la subcadena desde la posición 2
	    // hasta el primer guión bajo
	    var sTempAp = sMenu.substring(2,sMenu.indexOf("_"));

	    // para sacar Sec cargamos la subcadena desde la posición del guión más 4 caracteres (_Sec)
	    // hasta el final de la cadena
	    var sTempSec = sMenu.substring((sMenu.indexOf("_") + 4),sMenu.length);
	    
	    // recogemos el valor guardado en el array de menus
	    return x_Apartados[sTempAp][sTempSec];
	}
	
	
	// funcion recursiva que va mostrando/ocultando el menú decelerando
	function Slide(sDiv, valor)
	{
	    
	    var obj_div = document.getElementById(sDiv);
	    
	    obj_div.style.display = "block";
	    obj_div.style.overflow = "hidden";
	    var nHeight = parseInt(obj_div.style.height);
	    
	    nHeight = nHeight + ((parseInt(valor) - nHeight) / 5);
			
      // cambia el height del objeto con respecto a la deceleración
      //obj_div.style.height = String(nHeight + "px");
      obj_div.style.height = nHeight.toString() + "px";

      // si la diferencia es menor de 5 px con respecto al valor final
      // pone directamente el valor final
      if ((Math.abs(parseInt(valor) - nHeight) < 6) || (x_nHeightHang == nHeight))
      {
          obj_div.style.height = valor.toString() + "px";
          x_cargando = false;
          
      } else {
      		x_nHeightHang = nHeight;
          setTimeout("Slide('" + sDiv + "','" +  valor + "')", 50);
      }
	}

    // Esta función se carga al iniciar la página y guarda la posición de cada uno de los divs
    // de los submenus
    function GuardaDivs()
    {
        // vamos a recorrer los menus para saber cuanto hay de cada uno
        var bSalir = false;
        var bSalirSeccion = false;
        
        var nAp = 0;
        var nSeccion = 0;
        
        while (!bSalir)
        {
            
            if(document.getElementById("Ap" + nAp))
            {
                nSeccion = 0;
                x_Apartados[nAp] = new Array();
                // comprobamos si tiene Secciones
                while (!bSalirSeccion)
                {
                    //alert('Ap' + nAp);
                    if(document.getElementById("Ap" + nAp + "_Sec" + nSeccion))
                    {
                        //alert('Ap' + nAp + '_Sec' + nSeccion);
                        // si existe la subsección creamos el array de este apartado
                        
                        // comprobamos si tiene Subsecciones
                        if(document.getElementById("Ap" + nAp + "_Sec" + nSeccion + "_Subsec"))
                        {
                            // mostramos el div para poder capturar el height
                            document.getElementById("Ap" + nAp + "_Sec" + nSeccion + "_Subsec").style.display = "block";
                            
                            // si tiene subsecciones creamos el array y guardamos el height del div
                            x_Apartados[nAp][nSeccion] = document.getElementById("Ap" + nAp + "_Sec" + nSeccion + "_Subsec").offsetHeight;
                        
                            // volvemos a ocultar el div
                            document.getElementById("Ap" + nAp + "_Sec" + nSeccion + "_Subsec").style.display = "none";
                        } else {
                        
                            // si no tiene subsecciones creamos el array y guardamos 0 como valor del height
                            x_Apartados[nAp][nSeccion] = 0;
                        }
                        
                        // añadimos 1 a los menus
                        nSeccion = nSeccion + 1;
                    } else {
                        break;
                    }
                }
                
                // añadimos 1 a los menus
                nAp = nAp + 1;
            }
            else
                break;
            
        }


/*
        sHtml = "";
        
        for (i=0;i<x_Apartados.length;i++)
        {
            //alert('Ap' + i + ': ' + x_Apartados[i].length + ' secciones');
            for (j=0;j<x_Apartados[i].length;j++)
                sHtml = sHtml + '<br>x_Apartados[' + i + '][' + j + ']: ' + x_Apartados[i][j];
        }
        
        document.getElementById('contenido').innerHTML = sHtml;
  */    

        //alert("x_MenuActual [" + x_MenuActual + "]");
        //alert("x_OpMenu [" + x_OpMenu + "]");
        // Comprobamos si hay de desplegar algún menu
        switch (x_OpMenu)
        {
            case "cargando": 
            
                // si tiene subsecciones hacemos el slide
                if (ValorArray(x_MenuActual) > 0)
                {            
                    //mostramos el objeto
                    document.getElementById(x_MenuActual + "_Subsec").style.display = "block";

                    // ponemos a 0 su height
                    document.getElementById(x_MenuActual + "_Subsec").style.overflow = "hidden";
                    document.getElementById(x_MenuActual + "_Subsec").style.height = "0px";
                    
                    // hacemos la transición del menú anterior para que se cierre
                    //document.getElementById('contenido').innerHTML = ""; 
                    Slide(x_MenuActual + "_Subsec",ValorArray(x_MenuActual));
                 }
                 
                 break;
            case "":
                //si no tiene ningun estado especial y hay cargado un menu
                //lo mostramos
                if (x_MenuActual != "")
					//mostramos el menu
					document.getElementById(x_MenuActual + "_Subsec").style.display = "block";
					
                break;
        }

		if (x_MenuActual != "")
		{
			//cambiamos el estilo del titulo para resaltarlo
			sCss = "link0" + (parseInt(x_MenuActual.substr(2,1)) + 1) + "_selected";
			
			//document.getElementById(x_MenuActual + "_Titulo").className = sCss;

			//comprobamos si hay que seleccionar alguna subseccion
			if (x_SubsecActual != "")
			{
				//cambiamos su aspecto
				document.getElementById(x_SubsecActual).className = sCss;
			}
		}

    }
