/******
* Control de menus mediante capas
*
* @project		Generico
* @author  		Teide Soft, s.l. - Fran Hdez Herrera
* @copyright	Consejeria de Educacion, Cultura y Deportes
* @date				13.01.03
* @version		0.02
* 
* tab: 2
*/

// Constantes
var TIEMPO_RETARDO = 550;		// Retardo para ocultar menu, en ms

// Variables internas
var retardo;								// Contenedora del evento de retardo
var menuAbierto = null;			// Elemento de menu abierto actualmente

/**
* Posicion absoluta con respecto a la izquierda del documento
* @param	object	el		Elemento al que se determinara posicion
* @return	int			Pixeles desde la izquierda del documento
*/
function offsetLeftPag(el) {
  var x = el.offsetLeft;
  if (el.offsetParent != null)
    x += offsetLeftPag(el.offsetParent);
  return x;
} // offsetLeftPag()

/**
* Posicion absoluta con respecto al margen superior del documento
* @param	object	el		Elemento al que se determinara posicion
* @return	int			Pixeles desde parte superior del documento
*/
function offsetTopPag(el) {
  var y = el.offsetTop;
  if (el.offsetParent != null)
    y += offsetTopPag(el.offsetParent);
  return y;
} // offsetTopPag()

/**
* Activacion de una opcion de menu
* @param	object	el		Elemento que se activara
*/
function opcionOn(el) {
	el.className = "menuOn";
} // opcionOn()

/**
* Desactivacion de una opcion de menu
* @param	object	el		Elemento que se desactivara
*/
function opcionOff(el) {
	el.className = "menu";
} // opcionOff()

/**
* Oculta todos los paneles que cuelguen del elemento especificado
* @param	object	el		Elemento cuyo hijo se ocultara
*/

function ocultarPaneles(el) {
	if (el != null) {
		if (el.hijo != null)
			el.hijo.style.visibility = "hidden";
		opcionOff(el);
		menuAbierto = null;
	}
} // ocultarPaneles()

/**
* Activa submenus existentes
* @param	object	elOpcion		Menu que se desea expandir
* @param	string	submenuId		Identificador submenu a activar
*/
function submenuOn(elOpcion, submenuId) {
	var elSubmenu, x, y;
	
	clearTimeout(retardo);
	
	// Si hemos cambiado de opcion de menu, ocultamos submenus abiertos
	if (menuAbierto != elOpcion) {		
		ocultarPaneles(menuAbierto);
		opcionOn(elOpcion);
		menuAbierto = elOpcion;
	}
	
	// Si esta opcion tiene un submenu asociado, lo mostramos	
	if (submenuId != null) {
		if (!elOpcion.hijo) {
			elOpcion.hijo = document.getElementById(submenuId);
			x = offsetLeftPag(elOpcion) + elOpcion.offsetWidth;
			y = offsetTopPag(elOpcion);	
			elOpcion.hijo.style.left = x + "px";
			elOpcion.hijo.style.top  = y + "px";			
		}
		elOpcion.hijo.style.visibility = "visible";
	}
} // submenuOn()

/**
* Elimina cualquier retardo de ocultacion existente
*/
function submenuMuestra(){
	clearTimeout(retardo);
} // submenuMuestra()

/**
* Inserta nuevo retardo de ocultacion para el menu abierto actualmenet
*/
function submenuOculta(){
	clearTimeout(retardo)
	retardo = setTimeout("ocultarPaneles(menuAbierto)", TIEMPO_RETARDO)
} // submenuOculta()
