﻿/*
 * @param menuId, identificador del menú
 * @param baseDir, ruta base del menú (por defecto "/")
 * @param currentPath, path actual de la página
 * @param selectedSection, path de la sección que queremos aparezca desplegada, si es null o "" se desplegará la sección actual (currentPath) 
 * @param unfoldMenu, true si el menú debe aparecer plegado, false si el menú debe aparecer desplegado
 * @param activeParents,  true si las secciones padres son linkables, false si no son linkables
 */
function iniMenu(menuId, baseDir, currentPath, selectedSection, unfoldMenu, activeParents){
	var objMenu = document.getElementById(menuId);
	var linksMenu = objMenu.getElementsByTagName("a");
	if(selectedSection==null || (selectedSection!=null && selectedSection=="")) selectedSection = currentPath;
	
	if(unfoldMenu){
		for(var i=0; i<linksMenu.length; i++){
			if(activeParents){
				linksMenu[i].onclick = function(){return true;};
			}else{
				linksMenu[i].onclick = function(){if(!processSubMenu(this))return false;};			
			}	
		}		
		setUnfoldMenu(objMenu);
		setSelectedSection(objMenu, selectedSection);
	}
}

//Pliega/Despliega los submenus
function processSubMenu(objSubMenu){
	var subMenu = getSubMenu(objSubMenu.parentNode.childNodes);
	if(subMenu){
		if(subMenu.style && (subMenu.style.display=="none" || subMenu.style.display=="undefined")){
			subMenu.style.display = "block";
		}else{
			subMenu.style.display = "none";	
		}
		return false;
	}
	return true;
}

//Repliega todos los submenus, excepto el primer nivel
function setUnfoldMenu(objMenu){
	var objMenuULs = objMenu.getElementsByTagName("ul");
	for(var i=0; i<objMenuULs.length; i++){
		if(objMenuULs[i].parentNode.nodeName.toLowerCase()!="div"){
			objMenuULs[i].style.display = "none";
		}
	}	
}

//Despliega la sección seleccionada
function setSelectedSection(objMenu, selectedSection){
	var objMenuAs = objMenu.getElementsByTagName("a");
	var selectedObj = null;
	for(var i=0; i<objMenuAs.length; i++){
		if(objMenuAs[i].getAttribute("href")==selectedSection){
			selectedObj = objMenuAs[i];
			selectedObj.setAttribute("class","a_section_selected");
			selectedObj.setAttribute("className","a_section_selected");
			selectedObj.parentNode.setAttribute("class","li_section_selected");
			selectedObj.parentNode.setAttribute("className","li_section_selected");
			selectedObj.parentNode.parentNode.setAttribute("class","ul_section_selected");
			selectedObj.parentNode.parentNode.setAttribute("className","ul_section_selected");			
			break;
		}
	}	
	
	if(selectedObj!=null){
		var parentLISelectedObj = selectedObj.parentNode;
		if(parentLISelectedObj.nodeName.toLowerCase()=="li"){
			parentLISelectedObj.parentNode.style.display = "block";
			var childsSelectedObj = parentLISelectedObj.childNodes;
			for(var i=0;i<childsSelectedObj.length;i++){
				if(childsSelectedObj[i].nodeName.toLowerCase()=="ul"){
					childsSelectedObj[i].style.display = "block";
					break;
				}
			}
		}
		
		while(parentLISelectedObj.nodeName.toLowerCase()!="div"){
			if(parentLISelectedObj.nodeName.toLowerCase()=="ul"){
				parentLISelectedObj.style.display = "block";
			}
			parentLISelectedObj = parentLISelectedObj.parentNode;
		}
	}
	
}

//Comprueba si alguno de los nodos es de tipo "ul"
function getSubMenu(objSubMenu){
	for(var i=0; i<objSubMenu.length; i++){
		if(objSubMenu[i].nodeName.toLowerCase()=="ul") return objSubMenu[i];
	}
	
	return false;
}
