/*
// Mauro Silvosa Rivera
// 2004.03.03
// ------------------------------------------------------------------------------------
// Representación mediante listas HTML del tipo <UL> <OL> de un menú de navegación.
// El hecho de realizarlo en javaScript permite modificar el menú en un sólo fichero
//   (éste) y que los cambios se propaguen automáticamente a todo el site.
// Una chapuzilla rápida. Se puede mejorar mucho.
*/


/* OBJETO: menuItem() */
function menuItem() {
   this.parent = "";
   this.id = "";
   this.name = "";
   this.url = "";
}

/* METODO addMenuItem DEL OBJETO menu */
function addMenuItem(p, i, n, u) {
   this.data[this.numElements] = new menuItem;
   this.data[this.numElements].parent = p;
   this.data[this.numElements].id = i;
   this.data[this.numElements].name = n;
   this.data[this.numElements].url = u;
   this.numElements++;
}
/* METODO getMenuItemById DEL OBJETO menu */
function getMenuItemById(parentId, childId) {
   for (var i=0; i < this.data.length; i++) {
      if (this.data[i].id == childId && this.data[i].parent == parentId)
         document.write(this.data[i].name + this.data[i].url);
   }
}

/* METODO getMenuAsList DEL OBJETO menu */
/*    Algoritmo de ordenación poco eficiente, pero sirve */
/*    teniendo en cuenta que el menú tiene pocos items. */
function getMenuAsList() {
   if (this.data.length == 0) return;

   document.writeln("<div class='menu'>");
   for (var i=0; i < this.data.length; i++) {
      if (this.data[i].parent == 0) {
         document.write("<ul>");

         if (this.data[i].url != "")
            document.write("<li><a href='" + this.data[i].url + "'>" + this.data[i].name + "</a></li>");
         else
            document.write("<li>" + this.data[i].name + "</li>");

         document.write("<ul>");

         for (var j=0; j < this.data.length; j++) {
            if (j != i && this.data[j].parent == this.data[i].id) {
               if (this.data[j].url != "")
                  document.write("<li><a href='" + this.data[j].url + "'>" + this.data[j].name + "</a></li>");
               else
                  document.write("<li>" + this.data[j].name + "</li>");
            }
         }

         document.write("</ul>");
         document.write("</ul>");
         document.write("<br>");
      }
   }
   document.write("</div>");
}
function init(dir_level) {

	var base_url;

	if (dir_level == 0) {
		base_url = "./"
	}
	else {
      base_url = "";
      for (i=0; i < dir_level; i++) {
         base_url += "../";
		}
   }

	this.addMenuItem(0, 1, "Optimus PFC", base_url + "index.html");
	this.addMenuItem(1, 1, "Definición", base_url + "links/01_definicion.html");
	this.addMenuItem(1, 2, "Memoria", base_url + "links/01_memoria.html");
	this.addMenuItem(1, 3, "Presentación", base_url + "links/01_presentacion.html");
	this.addMenuItem(1, 4, "Álbumes de fotos y vídeos", base_url + "links/01_fotos_videos.html");
	this.addMenuItem(1, 5, "Agradecimientos", base_url + "links/01_agradecimientos.html");

	this.addMenuItem(0, 2, "Documentación", "");
	this.addMenuItem(2, 1, "Bibliografía", base_url + "links/02_biblio.html");
	this.addMenuItem(2, 2, "Datasheets", base_url + "links/02_datasheets.html");
	this.addMenuItem(2, 3, "Enlaces de interés", base_url + "links/02_links.html");
	this.addMenuItem(2, 3, "Otra documentación", base_url + "links/02_misc.html");
	//this.addMenuItem(2, 4, "Material empleado", base_url + "links/02_material.html");
	this.addMenuItem(2, 4, "Esquemas y planos", base_url + "links/02_esquemas_planos.html");

	this.addMenuItem(0, 3, "Hardware", "");
	this.addMenuItem(3, 1, "Arquitectura HW", base_url + "links/03_arquitectura_hw.html");
	this.addMenuItem(3, 1, "Material empleado", base_url + "links/03_material_empleado.html");
	/*
	this.addMenuItem(3, 2, "H-Bridges ST L298", "");
	this.addMenuItem(3, 3, "Microcontrolador PIC18F252", "");
	this.addMenuItem(3, 4, "Comunicaciones serie RS232", "");
	this.addMenuItem(3, 5, "Motores Matsushita Electric GMX6MP013A", "");
	*/

	this.addMenuItem(0, 4, "Software", "");
	this.addMenuItem(4, 1, "Arquitectura SW", base_url + "links/04_arquitectura_sw.html");
	this.addMenuItem(4, 2, "Control de velocidad", base_url + "links/04_speedctrl.html");
	this.addMenuItem(4, 3, "Odometría", base_url + "links/04_odometry.html");
	this.addMenuItem(4, 4, "API de programación", base_url + "links/04_api.html");
	this.addMenuItem(4, 5, "Código fuente", base_url + "links/04_codigo_fuente.html");

}

/* OBJETO MENU */
function menu() {
   this.data = new Array();
   this.numElements = 0;
   this.addMenuItem = addMenuItem;
   this.getMenuItemById = getMenuItemById;
   this.getMenuAsList = getMenuAsList;
	this.init = init;
}

/*
// INICIALIZACIÓN DEL MENÚ
*/

var m = new menu();

