js.menuDesplagableAbierto = false;
js.menuDesplegableTimeOut = false;

js.cerrarMenuDesplagable = function()
	{
	this.menuDesplagableAbierto.style.display = "none";
	clearTimeout(this.menuDesplegableTimeOut);
	this.menuDesplagableAbierto = false;
	this.menuDesplegableTimeOut = false;
	}

js.menuDesplegable = function(menu,keepOpen)
	{
	/*
		Si se pasa un id de menu establecemos que la intencion de la llamada
		al metodo es abrir un menu contextual. De esta manera diferenciamos si
		la intencion es abrir o cerrar el menu y usamos el mismo metodo
		para ambas cuestiones.
	*/
	if(menu)
		{
		/*
			Sino hay ningun menu abierto abrimos el pasado como parametro
			sin mas
		*/
		if(!this.menuDesplagableAbierto)
			{
			this.menuDesplagableAbierto = this.stringToObject(menu);
			this.menuDesplagableAbierto.style.display = "block";
			}
		else
			{
			menu = this.stringToObject(menu);
			/*
				Si ya hay uno abierto comprobamos si es el mismo que se ha pasado como
				parametro o no.
				En caso verdadero solo detenemos el time out. Si no abrimos el nuevo
				menu y cerramos el viejo.
			*/
			if(this.menuDesplagableAbierto.id == menu.id)
				{
				clearTimeout(this.menuDesplegableTimeOut);
				this.menuDesplegableTimeOut = false;
				}
			else
				{
				this.cerrarMenuDesplagable();
				this.menuDesplagableAbierto = menu;
				this.menuDesplagableAbierto.style.display = "block";
				}
			}
		}
	else
	{
		/*
			Si no se pasaron argumentos solo establecemos el time out para cerrar
			el menu
		*/
		this.menuDesplegableTimeOut = setTimeout("js.cerrarMenuDesplagable()",500);
	}
}
