/**
	Menu JavaScript menuDHM_foldout
	Autor Antonio Gámez agamez@dobleh.com
	Empresa www.dobleh.com
	Version 1.1 (20/01/2008) se añade compatibilidad IE FF
	Version 1.0 (19/01/2008) creación
	Licencia Puedes usar este script libremente. Lo único que se te pide es que mantengas este bloque de comentarios y si es posible que me envies tus mejoras y
	te incluiré en la revisión de versiones
	Descripcion Script que crea un menu simple con capas y estilos los menus superiores son los menus padre y los submenus menus hijos. Un estilo nos indica
	el tipo de menu que es cada elemento (hijo o padre). Los menus hijos estaran anidamos en menus padres. Solo se permite un nivel de anidamientos
*/
//_________________________________________________________________________________________________

var dhmClaseMenuPadre	='dhmNodoPadre';
var dhmClaseSubMenu		='dhmNodoHijo';
var tipoManejardoMenus='div';
var dhmMenuAbierto = null;
//_________________________________________________________________________________________________
/*
	Esta funcion es invocada al pinchar sobre cualquier menu/submenu. En el caso de los 
	submenus en principio no se hace nada ya que esta función es para abrir menus no para gestionar 
	que deben hacer los submenus. 
	(tendriamos que detener la propagación del evento event.cancelBubble=true)
	El parametro tiene la referencia al menu seleccionado.
*/
function abrirMenu(e){		
	var menu = null;
	if (e.srcElement)
		menu=event.srcElement;
	else
		menu=e.target;	
	try {
		abrirMenuDHM(menu);
	} catch(e){}
}
//_________________________________________________________________________________________________
/*
	Esta funcion se invoca por un objeto que desciende del menu y que necesita simular el clic en su 
	menu padre. (Un clic de un elemento de este menu)
	El parametro tiene la referencia del objeto seleccionado.
*/
function abrirMenuXReferencia(e){
	e.cancelBubble=true;//aqui si puedo evitar la propagacion de eventos
	var menu = null;
	if (e.srcElement)
		menu=event.srcElement.parentNode;
	else
		menu=e.target.parentNode;	
	abrirMenuDhm(menu);
}		
//_________________________________________________________________________________________________
/*Abre el menu seleccionado*/
function abrirHijosMenu(menu){
	submenu = ( menu.childNodes.length );
	for (i=0;i<submenu;i++)
		if ( menu.childNodes[i].id==dhmClaseSubMenu ){
			try {
				menu.childNodes[i].style.setAttribute('display','block');
			} catch (e){
				menu.childNodes[i].style.display='block';
			}
		}
}
//_________________________________________________________________________________________________
/*Cierrar todos los menus*/
function cerrarMenus(){	
	var items = document.getElementsByTagName(tipoManejardoMenus).length;
	for (i=0; i < items; i++)
		if (document.getElementsByTagName(tipoManejardoMenus)[i].id==dhmClaseSubMenu){
			try {
				document.getElementsByTagName(tipoManejardoMenus)[i].style.setAttribute('display','none');
			} catch (e) {				
				document.getElementsByTagName(tipoManejardoMenus)[i].style.display='none';
			}
		}
}
//_________________________________________________________________________________________________
/*
	-PRIVADA-
	Funcion que se encar de abrir el menu seleccionado. No abrira el menu si la referencia pasada es nula,
	o si el tipo referencia no es menu.
	Se añade una operativa adicional para que si el menu de referencia ya esta abierto se cierre
*/
function abrirMenuDhm(menu){
	//prevenimos un posible error. SI no detectamos sobre que objeto (menu, submenu) se hizo clic
	if (menu==null){
		alert ("Lo siento, pero no he detectado en que Menu/SubMenu has hecho clic");
		return;
	}	
	//SI hago clic en un submenu no quiero hacer nada
	if ( menu.id!=dhmClaseMenuPadre)
		return;		
	//siempre se cierrar todos los menus y después determinamos que abrir
	cerrarMenus();	
	//SI queremos que un menu abierto se cierre al volver a hacer clic sobre el
	if ( dhmMenuAbierto!=null && dhmMenuAbierto==menu ){
		dhmMenuAbierto = null;
		return;
	}
	//guardamos una referencia al menu clicado y abrimos hijos
	dhmMenuAbierto = menu;
	abrirHijosMenu ( dhmMenuAbierto );	
}

