//Mantiene el la estructura del menu ppal
var mainMenu = new Array();

//Opción de menú seleccionada actualmente
var opcionActual = null;
var subOpcionActual = null;
var cellSubOpcionActual = null;

//Agrega una nueva opción de menú a la estructura
//@param tag img del html que representa la opción de menú
//@param tablaSubmenu tag TABLE donde se escribirá el submenú
//@param imgSrc imagen del botón
//@param imgOverSrc imagen del botón cuando el mouse pasa por arriba
//@param imgSelectedSrc imagen del botón cuando se selecciona la opción
//@param action link a la página a visitar
//@param target target del action
function newOption(imgTag, tablaSubMenu, imgSrc, imgOverSrc, imgSelectedSrc, action, target){
	mainMenu[imgTag.id]= new Object();
	mainMenu[imgTag.id].object = imgTag;
	mainMenu[imgTag.id].subMenu= new Array();
	mainMenu[imgTag.id].tablaSubMenu = tablaSubMenu;
	mainMenu[imgTag.id].image = imgSrc;
	mainMenu[imgTag.id].imageOver = imgOverSrc;
	mainMenu[imgTag.id].imageSelected = imgSelectedSrc;
	mainMenu[imgTag.id].action = action;
	mainMenu[imgTag.id].target = target;
}

//Agrega una nueva opción de sub menú al menú representado por imgTag
//@param tag Tag HTML donde se representa la opción de menú ppal
//@param caption texto de la opción de submenú
//@param estilo nombre de clase de la opción
//@param estiloOver nombre de clase de la opción para cuando el mouse está sobre ella
//@param colorSelected nombre de clase de la opción para cuando está activa
//@param action link a la página a visitar
//@param target target del action
function addSubOption(imgTag, caption, estilo, estiloOver, estiloSelected, action, target){
	var subitem;
	var subOption = new Object();
	subOption.caption = caption;
	subOption.action = action;
	subOption.target = target;
	subOption.estilo = estilo;
	subOption.estiloOver = estiloOver;
	subOption.estiloSelected = estiloSelected;
	subitem = mainMenu[imgTag.id].subMenu.length;
	mainMenu[imgTag.id].subMenu[subitem] = subOption;
}

//Evento, cuando el mouse está sobre la opción
function mouseOver(sender){
	if (((opcionActual==null)||(sender.id != opcionActual.id))&&(mainMenu[sender.id].imageOver!=null))
		sender.src = mainMenu[sender.id].imageOver;
}

//Evento, cuando el mouse sale de la opción
function mouseOut(sender){
	if (((opcionActual==null) || (sender.id != opcionActual.id))&&(mainMenu[sender.id].image!=null))
		sender.src = mainMenu[sender.id].image;
}

//Evento, cuando se selecciona la opción
function mouseClick(sender){
	if ((opcionActual!=null)&&(mainMenu[opcionActual.id].image!=null))
		opcionActual.src = mainMenu[opcionActual.id].image;
	if(mainMenu[sender.id].imageSelected!=null)
		sender.src = mainMenu[sender.id].imageSelected;
	opcionActual = sender;
	window.open(mainMenu[sender.id].action, mainMenu[sender.id].target);		
	// alert("activesubmenu="+sender.id.toString());
	activeSubMenu(sender.id);
}

//Evento, cuando se selecciona un submenu
//@param sender SubMenuOption, definido en el método addSubOption
//@param cell Celda donde se renderiza la opción
function subOptionMouseClick(sender, cell){
	if (subOpcionActual!=null)
		cellSubOpcionActual.className = subOpcionActual.estilo;		
	subOpcionActual = sender;
	cellSubOpcionActual = cell;
	window.open(sender.action, sender.target);
	cell.className = sender.estiloSelected;
}

//Evento, cuando el mouse pasa sobre la opción
//@param sender SubMenuOption, definido en el método addSubOption
//@param cell Celda donde se renderiza la opción
function subOptionMouseOver(sender, cell){
	//
	if (sender!=subOpcionActual) {
		cell.className = sender.estiloOver;
	};
	
	// var ss = StrPropiedades(cell);
	// var ss="pepep";
	// wdebug.value="ver="+ss;
}

//Evento, cuando el mouse sale de la opción
//@param sender SubMenuOption, definido en el método addSubOption
//@param cell Celda donde se renderiza la opción
function subOptionMouseOut(sender, cell){
	if (sender!=subOpcionActual)
		cell.className = sender.estilo;
}

//Muestra un submenu de ser necesario, desactivando el resto
//Requiere la primera celda de la tabla para marcar el offset del menu, que debe tener id="celdaSubMenuOffset"
//@param idMenu Identificador de la opción de menú que contiene el submenú a activar
function activeSubMenu(idMenu){
	//Inicializa la opción seleccionada
	subOpcionActual = null;
	var i, cant_opciones, cont, caption, comdoble;
	comdoble=String.fromCharCode(34); 
	cant_opciones=mainMenu[idMenu].subMenu.length;
	cont = 0;
	// alert("cant_opciones="+cant_opciones.toString());
	//Ajusta la posición del submenu seteando el ancho de la primera celda
	var posOffsetSubMenu = new Array();
	var posOffsetMenu = new Array();
	GetposXposY("celdaSubMenuOffset", posOffsetMenu);
	GetposXposY(idMenu, posOffsetSubMenu);
    //
	// var ss = StrPropiedades(mainMenu[idMenu].tablaSubMenu.rows[0]);
	// wdebug.innerHTML="ver="+ss;
	
	mainMenu[idMenu].tablaSubMenu.rows[0].cells[0].width = posOffsetSubMenu[0] - posOffsetMenu[0];
	// alert("fase-2");
	
	//Agrega las opciones al submenu
	for(i=1; i<mainMenu[idMenu].tablaSubMenu.rows[0].cells.length; i++){ //Recorre las celdas de la tabla
		if (cont<cant_opciones){  //Inserta la opción
			caption = mainMenu[idMenu].subMenu[cont].caption;
			htmlText = "<p onClick="+comdoble+"subOptionMouseClick(mainMenu['"+idMenu+"'].subMenu["+cont+"], mainMenu['"+idMenu+"'].tablaSubMenu.rows[0].cells["+i+"]);"+comdoble+
					   "   onMouseOver="+comdoble+"subOptionMouseOver(mainMenu['"+idMenu+"'].subMenu["+cont+"], mainMenu['"+idMenu+"'].tablaSubMenu.rows[0].cells["+i+"]);"+comdoble+
					   "   onMouseOut="+comdoble+"subOptionMouseOut(mainMenu['"+idMenu+"'].subMenu["+cont+"], mainMenu['"+idMenu+"'].tablaSubMenu.rows[0].cells["+i+"]);"+comdoble+
					   ">"+caption+"&nbsp;&nbsp;</p>";
					   
			mainMenu[idMenu].tablaSubMenu.rows[0].cells[i].className = mainMenu[idMenu].subMenu[cont].estilo;
			mainMenu[idMenu].tablaSubMenu.rows[0].cells[i].innerHTML = htmlText;
			// alert("classname="+mainMenu[idMenu].subMenu[cont].estilo);
			
			cont++;
		} else { //Si no, blanquea la celda
			mainMenu[idMenu].tablaSubMenu.rows[0].cells[i].className ="";
			mainMenu[idMenu].tablaSubMenu.rows[0].cells[i].bgColor = "#FFFFFF" ;
			mainMenu[idMenu].tablaSubMenu.rows[0].cells[i].innerHTML = "&nbsp;";
		}
	}
}
