var __mnHnd = null;

function inici_menus()
{
	// buscar el div menu
	var obj = document.getElementById('menu');
	if (!obj) return;
	
	// buscar el menu principal
	for(var n = 0; n < obj.childNodes.length; n++)
		if (obj.childNodes[n].tagName=="OL") inici_menu(obj.childNodes[n], false);

	// Hay que mostrar el menu?
	MostrarMenu(obj);
	
	spreadOptions();
	if(!IsNull(__mnHnd))
		__mnHnd();
}

function spreadOptions()
{
	for(var i = 0; i < 100; i++)
	{
		var id = "mn_" + i;
		var ck = getCookie(id);

		if(!IsNull(ck))
		{
			if(ck == "true")			
			{
				var option = GetById(id);
				if(!IsNull(option))
				{
					if(IsNull(option.click))
					{
						//__FFClick(option);
						option.onclick();
					}
					else
					{
						option.click();
					}
				}
				//else alert("null =" + id);
			}
		}
	}
}

// retorna verdadero si la entrada esta activa
function inici_menu (obj_ol, desplegable) {

	// buscar las entrades
	var actiu=false;
	for (var n=0; n<obj_ol.childNodes.length; n++) {
		if (obj_ol.childNodes[n].tagName=="LI") {
			if (inici_entrada_menu(obj_ol.childNodes[n])) actiu=true;
		}
	}
	
	//alert(obj_ol.id);
	
	if (!actiu && desplegable) obj_ol.style.display="none";
	return (actiu);
}

var mnIndex = 0;

// retorna verdadero si ?s l'entrada activa o si t? un submenu amb l'entrada activa
function inici_entrada_menu (obj_li)
{
	var te_subs = false;
	var actiu = es_actiu(obj_li);

	// mirem si la entrada t? submenus 
	for (var n = 0; n < obj_li.childNodes.length; n++)
	{
		if (obj_li.childNodes[n].tagName == "OL")
		{
			if (inici_menu(obj_li.childNodes[n], true)) actiu = true;
			te_subs = true;
		}
	}

	var ckDesplegat = actiu;

	if (te_subs)
	{
		for (var n = 0; n < obj_li.childNodes.length; n++, mnIndex++)
		{
			if (obj_li.childNodes[n].tagName == "A")
			{
				obj_li.childNodes[n].onclick = canvi_menu;				
				obj_li.childNodes[n].id = "mn_" + mnIndex;
			}
		}
	}

	obj_li.actiu=actiu;
	obj_li.desplegat=actiu;

	return(actiu);
}

// retorna verdadero si la objecte t? assignada la classe 'actiu'
function es_actiu (obj) {
	return (obj.className != null && obj.className.search('(^|\\s)actiu(\\s|$)') >= 0); 
}

function canvi_menu(e, obj) {

	if (!obj) obj=this;
	var obj_li = obj.parentNode;
	var obj_ol = obj_li.parentNode;
	
	// primer buscar las entrades germanes del que han clicat i n'amaguem els submenus
	for (var n=0; n<obj_ol.childNodes.length; n++) {
		if (
			(obj_ol.childNodes[n].tagName=="LI") &&		
		    (obj_ol.childNodes[n]!=obj_li)&&(!obj_ol.childNodes[n].actiu)
			)
		{
			var obj_li2=obj_ol.childNodes[n];
			for (var nn=0; nn<obj_li2.childNodes.length; nn++) {
				if (obj_li2.childNodes[nn].tagName=="OL") {
					if (obj_li2.desplegat) obj_li2.childNodes[nn].style.display="none";
					obj_li2.desplegat=false;
				}
			}
		}
	}

	// si han clicat la entrada activa, no cal que continuem perqu? no s'ha d'amagar
	if (obj_li.actiu) return;

	// finalment, canviem la estat dels submenus de la entrada que han clicat
	for (var n=0; n<obj_li.childNodes.length; n++) {
		if (obj_li.childNodes[n].tagName=="OL") {
			if (obj_li.desplegat) obj_li.childNodes[n].style.display="none";
			else obj_li.childNodes[n].style.display="block";
		}
	}

	obj_li.desplegat=!obj_li.desplegat;

	setCookie(obj.id, obj_li.desplegat, 180, "/");
}

function setOnLoadHnd()
{
	__mnHnd = document.body.onload;
	window.onload = inici_menus;
}

setOnLoadHnd();


function MostrarMenu(obj)
{
	//Get querystring
	var queryString = window.top.location.search.substring(1);
	var ShowMenu = getQueryStringParameter ( queryString, 'ShowMenu');
	if (ShowMenu && ShowMenu == 'False')
		obj.style.display="none";
}


function getQueryStringParameter ( queryString, parameterName ) {
   // Add "=" to the parameter name (i.e. parameterName=value)
   var parameterName = parameterName + "=";
   if ( queryString.length > 0 ) {
      // Find the beginning of the string
      begin = queryString.indexOf ( parameterName );
      // If the parameter name is not found, skip it, otherwise return the value
      if ( begin != -1 ) {
         // Add the length (integer) to the beginning
         begin += parameterName.length;
         // Multiple parameters are separated by the "&" sign
         end = queryString.indexOf ( "&" , begin );
      if ( end == -1 ) {
         end = queryString.length
      }
      // Return the string
      return unescape ( queryString.substring ( begin, end ) );
   }
   // Return "null" if no parameter has been found
   return "null";
   }
}

