include("core/System.js");
include("core/AjaxConnection.js");
include("core/Util.js");

var ConstruirMenus = function(){};
ConstruirMenus.ColorMenu = null;
ConstruirMenus.PlantillaContenido = null;

ConstruirMenus.Consultar = function()
{
    var objAjaxConection = new AjaxConnection();
    objAjaxConection.ResponseType = "json";
	objAjaxConection.SetOptions(["tiposeccion=minisite"]);
    objAjaxConection.OnSuccess = ConstruirMenus.ConsultarRetorno;
    objAjaxConection.ServerControl = "admin/menus/construirmenus.php";
    objAjaxConection.Connect();
}

ConstruirMenus.ConsultarRetorno = function(objRespuesta)
{
    switch(objRespuesta.Result)
    {
        case "success":
        {
			var objMenu, objSubmenu, objEnlaceMenu, objEnlaceSubmenu, objSpan, arrMenus=[], arrSubmenus = [];
			var objContenedor = document.getElementById("objMenus"), objSubmenus = document.getElementById("objSubmenus");

			ConstruirMenus.Menu(objRespuesta.Menus);
			break;
		}

        case "error":
        {
            alert(objRespuesta.Message);
			break;
        }
	}
}

/***
 * Función recursiva que construye el menú
 */
ConstruirMenus.Menu = function(arrMenus)
{
	var objMenu, strNombreMenu, objEnlaceMenu, objSpan, objContenedor = document.getElementById("objMenus");
	for(var intMenu=0; intMenu<arrMenus.length; intMenu++)
	{
		objMenu = document.createElement("div");
		objMenu.className = "menu";
		objMenu.onmouseover = function(event){ menuMouseover(event); };
		objMenu.title = "Codigo" + arrMenus[intMenu].Codigo;

		// Se verifica si es un menú de primer nivel
		if(isDefined(arrMenus[intMenu], "Plantilla"))
		{
			strNombreMenu = arrMenus[intMenu].Nombre.toLowerCase();
			while(strNombreMenu.indexOf(" ") != -1)
			{
				strNombreMenu = strNombreMenu.replace(" ", "");
			}

			// Se almacena el color del menú par aplicarlo a todos sus hijos
			ConstruirMenus.ColorMenu = arrMenus[intMenu].Color
			ConstruirMenus.PlantillaContenido = arrMenus[intMenu].Plantilla;
		}
		else
		{
			strNombreMenu = "menu" + arrMenus[intMenu].Codigo;
		}

		objMenu.style.backgroundColor = ConstruirMenus.ColorMenu;
		objMenu.id = strNombreMenu;
		objContenedor.appendChild(objMenu);

		for(var intSubmenu=0; intSubmenu<arrMenus[intMenu].Menus.length; intSubmenu++)
		{
			objEnlaceMenu = document.createElement("a");
			objEnlaceMenu.className = "menuItem";

			objSpan = document.createElement("span");
			objSpan.className = "menuItemText";
			objSpan.appendChild(document.createTextNode(arrMenus[intMenu].Menus[intSubmenu].Nombre));
			objEnlaceMenu.appendChild(objSpan);

			// Si un menú contiene submenús se le asigna el evento para mostrarlos
			if(arrMenus[intMenu].Menus[intSubmenu].Menus.length > 0)
			{
				objSpan = document.createElement("span");
				objSpan.className = "menuItemArrow";
				objSpan.innerHTML = "&#9654;";
				objEnlaceMenu.appendChild(objSpan);			

				var intCodigo = arrMenus[intMenu].Menus[intSubmenu].Codigo;
				objEnlaceMenu.onmouseover = ConstruirMenus.menuItemMouseover('menu' + intCodigo);
				//objEnlaceMenu.title = "menuItemMouseover(event, menu" + intCodigo + ")";
			}
			else
			{
				var strOperador;
				/**
				 * Eso se hace para poder pasar como parámetro valores fijos que vienen juntos al nombre de la plantilla de contenido
				 * desde la base de datos
				 */
				if(ConstruirMenus.PlantillaContenido.indexOf("?") == -1)
				{
					strOperador = "?";
				}
				else
				{
					strOperador = "&";
				}
				objEnlaceMenu.href = ConstruirMenus.PlantillaContenido + strOperador + "tipoactividad=" + arrMenus[intMenu].Menus[intSubmenu].Codigo;
			}

			objMenu.appendChild(objEnlaceMenu);
		}

		if(arrMenus[intMenu].Menus.length > 0)
		{
			ConstruirMenus.Menu(arrMenus[intMenu].Menus);
		}
	}
}

ConstruirMenus.menuItemMouseover = function(strIdentificador)
{
	return(function(event){
		menuItemMouseover(event, strIdentificador);
	});	
}