// active nos permite saber que menú, si hay alguno, está activo
var active;

// Cambia el estado del "desplegable" entre visible e invisible
function toggle(t){
// Si hay un desplegable activado lo escondemos
	if(active != null){
		for(var i=0; i<active.childNodes.length; i++)
		if(active.childNodes[i].nodeName == "UL")
		active.childNodes[i].style.display = "none";
	}

// Si el usuario no ha hecho click en el activo (escondiéndolo)
	if(active != t){
// establecer el desplegable activo
		active = t;

// Hacemos que cada UL del menú sea un bloque
		for(var i=0; i<active.childNodes.length; i++)
		if(active.childNodes[i].nodeName == "UL")
		active.childNodes[i].style.display = "block";

// Lo subimos
		active.style.zIndex = "999";
	}
	else
	active = null;
}

// utilizado para evitar el cambio de estado cuando se pinche en un enlace
function untogglefromlink(t){
// si quieres esconder el desplegable al pincharse en un enlace puedes usar esta función, eg:
// <a href="page.html" onclick="untogglefromlink(this);">whatever&lt/a&gt.
	toggle(t.parentNode.parentNode.parentNode);
}