// MENU CONTEXTUAL
// by Iván Nieto
// Version 1.1 (01/11/2005)
//
// Este script y otros muchos pueden
// descarse on-line de forma gratuita
// en El Código: www.elcodigo.com

/* DEFINICION DE LOS MENUS: MODIFICA LOS DATOS DE LOS ARRAYS PARA CREAR TUS PROPIOS MENUS */
/* lista_menus es la lista con los nombres de los menus */
var lista_menus = new Array (
"Menu1",		//menu numero 1  (Viajes)
"Menu2",		//menu numero 2  (Miami)
"Menu3",		//menu numero 3  (Camino de Snatiago)
"Menu4"			//menu numero 4  (Documentos)
)

/* Menu1: este menu se escribe con EscribeMenu( "Menu1", 1, datos_menu1 );
	  este menu se abre con javascript:LanzaMenu('Menu1', 1);
	"Menu1" es el nombre del menu, utilizado para referirse al menu en todo el script.
	1 es el indice del elemento del array lista_menus que contiene el nombre anterior.
	datos_menu1 es el nombre del array con los datos del menu.
*/
var datos_menu1 = new Array (
/*URL								Texto del menu*/
"index.php?dir=champions1998", 		"Mayo, 1998. Amsterdam",
"index.php?dir=costaacosta", 		"Agosto, 2000.Costa-costa americano ",
"index.php?dir=tartanedo_2001", 	"Octubre 2001.Tartanedo (Guadalajara).Fotos de Pablo",
"index.php?dir=tartanedo_2001_mio", 	"Octubre 2001.Tartanedo (Guadalajara).Mis fotos",
"index.php?dir=champions2002", 		"Mayo 2002.Glasgow",
"index.php?dir=lleida",			"Agosto, 2002.Lleida. MultiAventura",
"index.php?dir=monaco_2002",		"Monaco, 2002. Supercopa de Europa",
"index.php?dir=viena_2003",		"Febrero, 2003. Viena",
"index.php?dir=praga2003",		"Marzo, 2003. Praga",
"index.php?dir=madrid_2003",		"Abril, 2003. Madrid",
"index.php?dir=algarve",		"Agosto, 2003. Algarve",
"index.php?dir=cantabria_2004",		"Febrero 2004. Cantabria-Asturias",
"index.php?dir=cadiz",		        "Diciembre 2004. Cadiz",
"index.php?dir=cervera",		"Diciembre 2004. Cervera del Pisuerga",
"index.php?dir=euro2004",		"Eurocopa 2004. Portugal",
"index.php?dir=roma_2006",		"Febrero 2006. Roma",
"index.php?dir=coca_2006",		"Agosto 2006. Coca",
"index.php?dir=mallorca_2006",		"Agosto 2006. Mallorca",
"index.php?dir=sansebastian_2006", 	"Noviembre 2006. San Sebastian"	//OJO, el ultimo no lleva coma
)

/* Menu2: este menu se escribe con EscribeMenu( "Menu2", 2, datos_menu2 ); 
          este menu se abre con javascript:LanzaMenu('Menu2', 1);*/
var datos_menu2 = new Array (
"index.php?dir=orlando", 	"Noviembre, 2000. Orlando",
"index.php?dir=keywest", 	"Diciembre, 2000. Key West",
"index.php?dir=classic_car", 	"Enero, 2001. Classic Car",
"index.php?dir=everglades",	"Enero, 2001. Everglades",
"index.php?dir=nasa",		"Febrero, 2001. Cabo Cañaveral",
"index.php?dir=sea_aquarium",	"Marzo, 2001. Miami Seaquarium",
"index.php?dir=U2",		"Marzo, 2001. Concierto U2",
"index.php?dir=coral_gables",	"Mayo, 2001. Coral Gables",
"index.php?dir=keywest_2001",	"Mayo, 2001. Key West",
"index.php?dir=miami_2001", 	"Miami"	//OJO, el ultimo no lleva coma
)

/* Menu3: este menu se escribe con EscribeMenu( "Menu3", 3, datos_menu3 ); 
          este menu se abre con javascript:LanzaMenu('Menu3', 1);*/
var datos_menu3 = new Array (
"index.php?dir=CS2002_1", 		"Julio 2002",
"index.php?dir=CS2003_1", 		"Semana Santa 2003",
"index.php?dir=CS2004_1", 		"Año 2004"		//OJO, el ultimo no lleva coma
)

/* Menu4: este menu se escribe con EscribeMenu( "Menu4", 4, datos_menu4 ); 
          este menu se abre con javascript:LanzaMenu('Menu4', 1);*/
var datos_menu4 = new Array (
"index.php?dir=erasmus", 				"Erasmus",
"http://www.comomolo.com/ficheros/monologos.zip",	"El Club de la Comedia",
"index.php?dir=remeros",				"Competición de remeros",
"index.php?dir=termodinamica",				"Termodinámica",
"index.php?dir=mujercomplicada",			"Mujer complicada",
"index.php?dir=australia",				"Oficina de turismo <br>   de Australia",
"index.php?dir=accidentelaboral",			"Accidente laboral",
"index.php?dir=independizarse",				"Independizarse de los padres",
"index.php?dir=soyinformatico",				"Soy informático",
"index.php?dir=pringao", 				"Pringao Howto",
"index.php?dir=stella_awards", 				"Los Stella Awards"		//OJO, el ultimo no lleva coma
)




/* NO HACE FALTA CAMBIAR NADA A PARTIR DE AQUI */
/* Variables */
var xpos = 0
var ypos = 0
var TemporizadorDestino = null
var origen = -1
var destino = -1

/*
Cuando se hace click en cualquier parte, ClickRaton() registra las coordenadas x e y, 
y las almacena en xpos e ypos. Si se pulso sobre un enlace, se creara un menu.
La funcion PosicionaMenu() utiliza xpos e ypos para posicionarlo.
*/
function ClickRaton(e){
	/*La gestion de eventos con IE4 e IE5 utiliza el objeto window.event, que no forma
	parte de DOM2. IE5 soporta getElementById, pero sigue usando este objeto para la
	gestion de eventos, por lo que hay que tratarle de forma exclusiva */
	if (!e) var e = window.event
	
	if (e.pageX || e.pageY) {						//N6
		//xpos = e.pageX + 'px'
		//ypos = e.pageY + 'px'
		if ((e.pageX > 497) && (e.pageX < 550)) xpos = '497px';
		if ((e.pageX > 567) && (e.pageX < 623)) xpos = '567px';
		if ((e.pageX > 640) && (e.pageX < 814)) xpos = '640px';
		if ((e.pageX > 831) && (e.pageX < 941)) xpos = '831px';
		ypos = '57px';
	} else if (e.clientX || e.clientY) {					//resto
		//xpos = e.clientX + document.body.scrollLeft + 'px'
		//ypos = e.clientY + document.body.scrollTop + 'px'
		if ((e.clientX > 501) && (e.clientX < 554)) xpos = '501px';
		if ((e.clientX > 571) && (e.clientX < 625)) xpos = '571px';
		if ((e.clientX > 644) && (e.clientX < 818)) xpos = '644px';
		if ((e.clientX > 835) && (e.clientX < 945)) xpos = '835px';
		ypos = '57px';
	}
	
	return true
}

/*
Mueve el menu a las coordenadas actuales donde esta el puntero del raton, registradas 
por ClickRaton(). PosicionaMenu() es invocada dentro de LanzaMenu().
*/
function PosicionaMenu( nombre_menu ) {
	if (document.getElementById) {				//DOM2 browsers
		document.getElementById(nombre_menu).style.left = xpos
		document.getElementById(nombre_menu).style.top = ypos
	} else if (document.all) {				//IE4+
		document.all[nombre_menu].style.pixelLeft = xpos
		document.all[nombre_menu].style.pixelTop = ypos
	}
}

/*
LanzaMenu() muestra o esconde un menu. nombre_menu especifica que
menu debe ser mostrado o escondido. El argumento on es boolean. Si vale 
1 se muestra el menu. Si vale 0 se oculta.
*/
function LanzaMenu(nombre_menu, on) {

	PosicionaMenu(nombre_menu) 	//Posiciona el menu a xos e ypos

	if (on){ 							//Mostrar menu
		if (document.getElementById) {				//DOM2 browsers
			document.getElementById(nombre_menu).style.visibility = "visible"
		} else if (document.all) {				//IE4+
			document.all[nombre_menu].style.visibility = "visible"
		}

	} else {							//Ocultar menu
		if (document.getElementById) {				//DOM2 browsers
			document.getElementById(nombre_menu).style.visibility = "hidden"
		} else if (document.all) {				//IE4+
			document.all[nombre_menu].style.visibility = "hidden"
		}
	}
}

/*MarcaOrigen() registra el menu desde el cual se ha movido el puntero del raton a otro menu.
Se invoca desde onMouseOut en el elemento div*/
function MarcaOrigen( menu ) {
	if (TemporizadorDestino)
		clearTimeout(TemporizadorDestino)

	origen = menu
	destino = -1
	TemporizadorDestino = setTimeout('CompruebaDestino()', 250)

}

/*MarcaDestino() registra el menu al cual se ha movido el puntero del raton desde otro meno.
Se invoca con onMouseOver en el elemento div*/
function MarcaDestino( menu ) {
	destino = menu
}

/*Esta funcion establece la logica de ocultacion de menus, en base al origen/destino del
movimiento del raton*/
function CompruebaDestino( menu ) {
	if ( destino == -1 ) {
		Ocultar( 0 )			//Oculta todos
	} else if ( destino < origen ) {
		Ocultar( destino )		//Oculta hijos de destino
	} else if ( destino == origen ) {
		Ocultar( destino )		//Oculta hijos de destino
	}
}

/*Ocultar() se encarga de hacer no visible uno o varios menus*/
function Ocultar( menuID ) {
	//Recorre la lista de menus y los oculta
	for (contador = menuID; contador < lista_menus.length; contador++) {
		eval("LanzaMenu('" + lista_menus[contador] + "', 0)")
	}
}

/*EscribeMenu() crea el codigo HTML para la capa del menu. Los parametros son:
nombre_menu, el string que da nombre al menu.
numero_menu, el identificador del menu (de acuerdo al orden en el array lista_menus).
datos_menu, el nombre del array con los datos del menu.*/
function EscribeMenu( nombre_menu, numero_menu, datos_menu ) {
	var espacio = / /gi;
	var mayorque = />/gi;
	var literal;
	var cadena_menu = '<div class="SubMenu" id="' + nombre_menu + '" onMouseOut="MarcaOrigen(' + numero_menu + ');" OnMouseOver="MarcaDestino(' + numero_menu + ');"><table class="TabMenu">\n'
	for( contador = 0; contador < datos_menu.length; contador = contador + 2 ) {
		literal = new String( datos_menu[contador+1] )
		datos_menu[contador+1] = literal.replace(espacio, " ")
		literal = new String( datos_menu[contador+1] )
		datos_menu[contador+1] = literal.replace(mayorque, ">")
		cadena_menu += '<tr><td><a class="MenuItem" href="' + datos_menu[contador] + '">' + datos_menu[contador+1] + '</a></td></tr>\n'
	}
	cadena_menu += '</table></div>\n'
	
	document.write(cadena_menu)
}
