/*
	Pagina que implementa la barra de menu de Agricola.
	Contiene el JavaScript necesario para mostrar/ocultar los menus.
	Los menus se definen en menuAgricolaPerito.jsp y menuAgricolaSiniestros.jsp

	Estructura de los menus
		Un menu o submenu se implementará en un tag <div class='menu'> con un id que siga unas
			ciertas reglas de nomenclatura que se explican más adelante.
		El div que contiene un menu debe llamar a mostrar(this) en el onmouseover y a quitar(this) en
			el onmouseout.
		Los items de un menu o submenu se colocan en tags <td> dentro de una tabla <table class="menu"
		
	Nomenclatura de los menus:
		Menu: debe tener un id.
		SubMenu: se debe construir el id poniendo el id del padre, el carácter '_' y un id propio
		
	Items de menu:
		si el item despliega un menu o submenu debe indicar su id en la propiedad 'lang' y  llamar
			a la funcion mostrar(this) en el onmouseover y a la funcion quitar(this) en el onmouseout
		si el item implementa una accion diferente de mostrar menus o submenus debe programar el onclick
			y enviar el formulario frmMenu. 
*/		

function getItemPadre(menuPadre,idMenu){
	//devuelve la referencia al objeto que desplegó el menú
	//no funciona en netscape
	var filas = menuPadre.childNodes[0].rows;
	if(filas){
		for(var i=0; i<filas.length; i++) {
			if(filas[i].cells[0].lang == idMenu) return filas[i].cells[0];
		}
	}
	return null;
}

function foco(obj){
	obj.className="itemMenuOn";
}
function quitarFoco(obj){
	obj.className="itemMenu3"
}


function menuOver(obj){
	//cambia el estilo del item de menu sobre el que se encuentra el raton
	if(obj) with(obj.style){
		cursor = (obj.lang)? "default" : "hand"; 
		backgroundColor = '#FFCC00';
		color = "#515153";
	}
}

function menuOut(obj){
	//vuelve al estilo definido en el class
	if(obj) with(obj.style){
		backgroundColor = "";
		color = "";
	}
}

function mostrar(obj) { // funcion para mostrar un menu o submenu
	var tipo = "Menu";
	// se utiliza el parámetro lang para indicar el id del menu a mostrar.
	var idMenu = (obj.lang)? obj.lang : obj.id; 
	var menu = document.getElementById(idMenu);
	
	menuOver(obj); // se cambia el estilo 
	
	if(idMenu.indexOf("_")>0){// si es un submenu
		var menuPadre =  document.getElementById(idMenu.split("_")[0]); 
		mostrar(menuPadre); //se evita que el menu padre quede oculto
		tipo = "Submenu";
		menuOver(getItemPadre(menuPadre,idMenu)); //se muetra seleccionado el item del menu padre que
													// desplegó el menu actual
	}
	
	if(!menu.style.left){ // si el menu no tiene posicion definida se define
		var p = obj;
		var y = obj.offsetHeight - 2;
		var x = obj.offsetLeft - 5;
		if(tipo == "Submenu"){ // si es un submenu la posicion es algo distinta, porque no aparece
								// debajo del item que lo llama, sino al lado.
		 	x+= obj.offsetWidth - 5;
			y-= obj.offsetHeight + 2;
		}
		
		while((p=p.parentNode) != null){//se recorren todos los nodos de la jerarquia
			if(typeof p.offsetTop != "undefined") y += p.offsetTop;
			if(typeof p.offsetLeft != "undefined") x += p.offsetLeft;
		}
		
		//finalmente se asignan los valores
		menu.style.top = y;
		menu.style.left = x;		
	}
	menu.style.visibility = "visible"; 
	// se muestra el menu y se pone debajo el iframe tapacombos
	document.getElementById("iframeMenu2").style.top=menu.style.top;
	document.getElementById("iframeMenu2").style.left=menu.style.left;
	document.getElementById("iframeMenu2").style.width=menu.clientWidth;
	document.getElementById("iframeMenu2").style.height= menu.clientHeight;	

}

function quitar(obj) { // funcion para ocultar un menu o submenu

	var tipo = "Menu";
	var idMenu = (obj.lang)? obj.lang : obj.id;	
	document.getElementById(idMenu).style.visibility = "hidden";
	menuOut(obj);

	if(idMenu.indexOf("_")>0){
		var menuPadre =  document.getElementById(idMenu.split("_")[0]);
		quitar(menuPadre);
		tipo = "Submenu";
		menuOut(getItemPadre(menuPadre,idMenu));
	} 
	document.getElementById("iframeMenu2").style.width=0;
	document.getElementById("iframeMenu2").style.height=0;	
}


