/*
estilosMenu.js: Este fichero contiene las funciones que controlan el cambio de estilo o imagen para
las opciones de los menús cuando hay un evento onMouseOver o onclick
Se utiliza con los menús estáticos y con el menú dinámico vertical

*/
var arrIdSel=new Array("",""); // Array de ids de opciones seleccionadas arrIdSel[Nivel]=id celda selecionada 
var arrClasNor=new Array("",""); //Array de clases sin seleccionar de las ultimas opciones seleccionadas de nivel 0 o 1 arrImgNor[Nivel]=nombre clase
var arrImgNor=new Array("",""); //Array de imagenes sin seleccionar de las ultimas opciones seleccionadas de nivel 0 o 1 arrImgNor[Nivel]=nombre clase
var overImgAux=new Array("","");
var overClasAux=new Array("",""); 

var lista_imagenes = new Array(); // Para precarga de imagenes en menu horizontal



/*
Funcion cargarImagenes()
Precarga las imágenes del array  imagenes que debe estar previamente definido
*/
function cargarImagenes(){
	
	for(i in imagenes)
	{
		lista_imagenes[i] = new Image();
		lista_imagenes[i].src = imagenes[i];
	}
}

/* 
Función ejecutada cuando se pasa con el ratón sobre una opción de menú de texto
----------------------------------------------------------------
id: Nombre de la celda pinchada
clase: Nombre de la clase que hay que asignar al texto
accion: guardar (onMouseOver) o no guardar (onMouseOut). sirve paraque cuando se hace click se guarde la clase o imagen normal y no la de over
niv: 0: nivel menú 1, 1: nivel menú 2
*/
function chgEst(ide, clase, img, accion, niv)
{
	if(ide!=arrIdSel[niv])
	{
		obj=document.getElementById(ide);
		if (obj.firstChild && obj.firstChild.tagName=="IMG")
		{
			if(accion=='guardar') overImgAux[niv]=obj.firstChild.src; 
		 	obj.firstChild.src=img;
		} else {
			if(accion=='guardar') overClasAux[niv]=obj.className; 
			obj.className=clase;
		}
	} 
}

/*
 funcion recuperarEstilo: Recupera el estilo normal de una opción seleccionada en un nivel de menu
 -----------------------------------------------------
 niv: Nivel de menú
*/
function recuperarEstilo(niv)
{
	objAnt=document.getElementById(arrIdSel[niv]);
	if (objAnt && objAnt.firstChild)
	{
		if  (objAnt.firstChild && objAnt.firstChild.tagName=="IMG")
				 objAnt.firstChild.src=arrImgNor[niv];
	    else   // Es con estilo
	  			 objAnt.className=arrClasNor[niv];
	}
}



/*
	funcion menu_onclick: Ejecutada cuando se selecciona una opción
	---------------------------------------------------------------
	ide: identificador del enlace <a> de la opcion.
	clase: nombre de clasea cambiar
	img: ruta a una imagen en funcion del tipo de elemento
	niv: Nivel de menú
	destinomain: URL destino para el main (frame principal)
	opNiv2: id de nivel 1 que se correspode con la opciçon de nivel 2. tiene dos usos:
			- Cuando se llama para nivel 1 indica que grupo de subopciones de nivel 2 cargar. Si se pasa una cadena vacía o no existe el elemnto "nivel2" en el DOM no se hace nada
			- Cuando se llama en nivel 2 indica la opción de nivel 1 con que se corresponde.
	selInactivas: Indica si las opciones que no cargan un cont o URL deben tomar un estilo de seleccionadas: 0 no 1 si
*/
function menu_onclick(ide, clase, img, niv, destinomain, opNiv2, selInactivas)
{
	obj=document.getElementById(ide);
	var accion=1; // 0: la opción no carga nada, 1 la opción carga una url o contenido en un frame
	if (obj.href=="javascript:void(0);" && destinomain=="#") accion=0;
	
	
	if (ide!=arrIdSel[niv] && (accion==1 || selInactivas==1))
	{
		// Para opciones seleccionadas anteriormente debemos restaurar su estilo o imagen
		recuperarEstilo(niv);
		
		// Para la opción en la que se acaba de pinchar
		if (obj.firstChild && obj.firstChild.tagName=="IMG")
		{
			arrImgNor[niv]= overImgAux[niv];
			obj.firstChild.src=img;
			arrIdSel[niv]=ide;
		} else {
			arrClasNor[niv]= overClasAux[niv];	
			obj.className=clase;
			arrIdSel[niv]=ide;	
		}
	}	
	
	// si estamos en un nivel 0 nos podemos haber dejado marcada una opción que no se corresponda en el nivel 1
	if (niv==0 && arrIdSel[1]!="" && accion==1)
	{
		recuperarEstilo(1);
		arrIdSel[1]="";
	}
	
	// Si estamos en nivel 1 comprobamos si la opción de nivel 0 asociada no se corresponde y la desmarcamos
	if (niv==1 && arrIdSel[0]!="" && opNiv2!="" && arrIdSel[0]!=opNiv2)
	{
		recuperarEstilo(0);
		arrIdSel[0]="";	
	}
	
	
	// Cargamos en el main la url y/o opciones de niv 2
	if (niv==0)
	{
		if (destinomain!="#") 
			window.parent.frames['main'].location=destinomain;
		// solo para los menus horizontales con capas
		if (opNiv2!="" && document.getElementById("nivel2"))
		{
			if (arrSubopciones[opNiv2])
				document.getElementById("nivel2").innerHTML= "<table><tr>"+arrSubopciones[opNiv2]+"</tr></table>"; 
			else
				document.getElementById("nivel2").innerHTML= "<table><tr><td>&nbsp;</td></tr></table>";
		}
	}
}