/****************************************************************************************************/
/***************************************** IMPORTANTE *********************************************/
/****************************************************************************************************/
/* Siempre que se utilizen estas librerias en proyectos .NET con paginas aspx hay que tener cuidado */
/* de no poner acentos ni en los comentarios de las librerias ni en los posibles alert que pongamos */
/* en ellas, ya que no funcionarian en Netscape.                                                    */
/****************************************************************************************************/


/* 
* @importante.
* Tipo 2: 
* ('pref' + numero de la opcion) --> El id del TD.  
*
* Ejemplo tipo2:
* <td id="menuTd1" width="155" height="15" align="right" bgcolor="#EAEAEA" class="verdana11normalgrismenu" 
* onClick="menu.accionMenu(1,'click','lasbizarricas.htm','contenidoint');" onMouseOver="menu.accionMenu(1,'over');" 
* onMouseOut="menu.accionMenu(1,'out');" >Las Bizarricas&nbsp;</td>
*
* Tipo 3: 
* ('pref' + numero de la opcion) --> El id de la imagen.  
* ('pref' + numero de la opcion + 'off.gif') --> Primer estado de la imagen.
* ('pref' + numero de la opcion + 'on.gif') --> Segundo estado de la imagen.
* Ejemplo tipo3:
* <a href="pagina" target="frame" onClick="Menu.accionMenu(2,'click');" 
* onMouseOver="Menu.accionMenu(2,'over');" onMouseOut="Menu.accionMenu(2,'out');">
* <img src="img/opc2off.gif" name="opc2" width="95" height="24" border="0" id="opc2"></a>
*
* Metodos disponibles para sobreescribir:
* endOver(pNum,pAccion,pHref,pTarget)
* endOut(pNum,pAccion,pHref,pTarget)
* endClick(pNum,pAccion,pHref,pTarget)
* endRemote(pNum,pAccion,pHref,pTarget)
* endTapadera(pEstado)
*
*/
function Menu(pref,colorTxt,colorTd,pListProp) { 
	// Atributos.
	this.bw = new verifyCompatibleBrowser();
	this.pref = pref;
	this.listProp = (pListProp)?pListProp:new Array();
	// Obtenemos el numero de opciones del menu.
	var fin = false;
	var cont = 1;
	while(!fin){
		if(document.getElementById(pref + cont)) cont++;
		else fin = true
	}

	this.num = --cont;

	this.stoRetardo = false
	this.numIdObjActivo = null;
	// Indica si se desactiva la opcion del menu una vez pulsado.
	this.siempreActivo = false;
	
	// Opcional.
	this.depurado = 0;
	
	if(colorTxt){
		if(colorTd){
			this.tipo = 2; // TD.
		}else{
			this.tipo = 1; // TEXTO.
		}
	}else{ 
		if(this.num){
			this.tipo = 3; // IMAGEN
		}else{
	// Obtenemos el numero de opciones del menu.
			fin = false;
			cont = 1;		
			while(!fin){
				if(document.getElementById(pref + cont + "on")) cont++;
				else fin = true
			}
			this.num = --cont;
			this.tipo = 4; // CAPAS DINAMICAS
		}
	}	
	
	if(this.depurado) window.status = "Menu::tipo: " + this.tipo;		
	
	
	// Iniciacion en funcion del tipo de menu seleccionado.
	switch (this.tipo){ 
	   case 2 :	   
			this.colorTd1 = colorTd.split("|")[0];
			this.colorTd2 = colorTd.split("|")[1];
			this.colorTd3 = colorTd.split("|")[2];  		
	   case 1 : 
			this.colorTxt1 = colorTxt.split("|")[0];
			this.colorTxt2 = colorTxt.split("|")[1];
			this.colorTxt3 = colorTxt.split("|")[2];
	   		break
	   case 3 : 
			// Precarga de imagenes.	   
			for(i=1;i<=this.num;i++){
				eval("this." + pref + i + "on = new Image();");
				eval("this." + pref + i + "on.src =\"img/" + pref + i + "on.gif\";");
				eval("this." + pref + i + "off = new Image();");
				eval("this." + pref + i + "off.src =\"img/" + pref + i + "off.gif\";");
			}	   		
	   		break	   			   		
	}	
	
	this.obj = pref + "_MenuGT";
	eval(this.obj + " = this;");
	
	// Si existe ocultamos la tapadera del menu.
	this.accionTapadera(0);
	
	return this
}


Menu.prototype.popup = function(web_ventana,resx,resy,posx,posy,scroll){
	var ancho_interface=10
	var alto_interface=29	
	if ((posx==-1) && (posy==-1))
	{
		var tamx=screen.width;
		var tamy=screen.height;
		posx=(tamx-(resx+ancho_interface))/2;
		posy=(tamy -(resy+alto_interface))/2;
	}
	
	var inicioNombre = web_ventana.lastIndexOf('/')+1;
	
	if(resx != null && resy != null){	
		var cadena_opciones = "width=" + resx + ",height=" + resy + ",left=" + posx + ",top=" + posy +((scroll)?",scrollbars=yes":"");
		var vent= window.open(web_ventana,"",cadena_opciones);
	}else{ // Si solo se pasa como parametro web_ventana es una nueva ventana (_blank).
		var vent= window.open(web_ventana);
	}
}

Menu.prototype.verifyCompatibleBrowser = function() {
	this.ver=navigator.appVersion 
	this.dom=document.getElementById?1:0 
	this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom)?1:0; 
	this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom)?1:0; 
	this.ie4=(document.all && !this.dom)?1:0; 
	this.ns5=(this.dom && parseInt(this.ver) >= 5) ?1:0;
	this.ns4=(document.layers && !this.dom)?1:0; 
	this.bw=(this.ie5 || this.ie6 || this.ie4 || this.ns4 || this.ns5) 
	return this 
}

Menu.prototype.capaShow = function(divID){
	if(this.bw.ns4){
		document.layers[divID].visibility = "show";
	}else{
	  if(this.bw.ie4){
	  		document.all[divID].style.visibility = "visible";
	  	}else{
	  		document.getElementById(divID).style.visibility = "visible";
	  	}
	}
}

Menu.prototype.capaHide = function(divID){
	if(this.bw.ns4){
		document.layers[divID].visibility = "hide";
	}else{
		if(this.bw.ie4){
			document.all[divID].style.visibility = "hidden";
		}else{
			document.getElementById(divID).style.visibility = "hidden";
		}
	}
}


Menu.prototype.toCamelCase = function(sInput) {
    var oStringList = sInput.split('-');
    if(oStringList.length == 1)    
        return oStringList[0];
    var ret = sInput.indexOf("-") == 0 ? 
    	oStringList[0].charAt(0).toUpperCase() + oStringList[0].substring(1) : oStringList[0];
    for(var i = 1, len = oStringList.length; i < len; i++){
        var s = oStringList[i];
        ret += s.charAt(0).toUpperCase() + s.substring(1)
    }
    return ret;
}

Menu.prototype.setStyle = function(idObj,pProp,pValue) {
	objLink = document.getElementById(idObj);
	if (objLink && pProp && pValue){
		objLink.style[this.toCamelCase(pProp)] = pValue;	
	}
}

Menu.prototype.getStyle = function(idObj,pProp){
	objLink = document.getElementById(idObj);
	if (window.getComputedStyle && pProp)
		var y = window.getComputedStyle(objLink,null).getPropertyValue(pProp);
	else if (objLink.currentStyle && pProp)
		var y = eval('objLink.currentStyle.' + pProp);
	return y;
}

Menu.prototype.cambiarPropiedad = function(pIdObj,pEstado){
	objLink = document.getElementById(pIdObj);
	if(objLink)
		for(var i=0;i<this.listProp.length;i++){
			var tmpProp = this.listProp[i].split("|");
			this.setStyle(pIdObj,tmpProp[0],tmpProp[pEstado + 1]);
		}
}

Menu.prototype.cambiarCapa = function(pIdObj, pEstado){
	if(pEstado) this.capaShow(pIdObj + "on"); 
	else this.capaHide(pIdObj + "on");
}


Menu.prototype.cambiarImagen = function(pIdObj, pEstado){
	if(pEstado) var rutaIMG = eval("this." + pIdObj + "on.src") 
	else var rutaIMG = eval("this." + pIdObj + "off.src");
	objLink = document.getElementById(pIdObj);
	if(objLink){objLink.src = rutaIMG;};
}

Menu.prototype.cambiarColor = function(pIdObj, pColor){
	objLink = document.getElementById(pIdObj);
	if(objLink){objLink.style['color'] = pColor;};
}

Menu.prototype.cambiarColorFondo = function(pIdObj, pColor, pCursor){
	objLink = document.getElementById(pIdObj);
	if(objLink){
		if(pColor) objLink.bgColor=pColor;
		objLink.style.cursor = pCursor;
	}
}

Menu.prototype.cambiarCursor = function(pIdObj, pCursor){
	objLink = document.getElementById(pIdObj);
	if(objLink){
		objLink.style.cursor = pCursor;
	}
}

Menu.prototype.accionTapadera = function(pEstado) {
	if(document.getElementById("cp" + this.pref + "Over")){
		if(pEstado == 1){
			this.capaShow("cp" + this.pref + "Over");
		}else{
			this.capaHide("cp" + this.pref + "Over");
		}
	}
	this.endTapadera(pEstado);	
}	 

// Metodos para sobreescribir click y remote
Menu.prototype.endOver = function(pNum,pHref,pTarget) {
}

Menu.prototype.endOut = function(pNum,pHref,pTarget) {
}

Menu.prototype.endClick = function(pNum,pHref,pTarget) {
}

Menu.prototype.endRemote = function(pNum,pHref,pTarget) {
}

Menu.prototype.endTapadera = function(pEstado) {
}

// Funcion que actua en funcion de la accion recibida por el menu.
Menu.prototype.accionMenu = function(pNum,pAccion,pHref,pTarget,pOnEnd) {
	var idObj = this.pref + pNum;
	var onEnd = ((typeof(pOnEnd) == 'undefined') || ((typeof(pOnEnd) != 'undefined') && (pOnEnd == true)))? true:false;
	
	switch (pAccion){ 
	   case "over" : 
		if (this.numIdObjActivo != idObj){
			if(this.tipo == 4) window.setTimeout(this.obj+".cambiarCapa('" + idObj + "',1)",10);
			if(this.tipo == 3) window.setTimeout(this.obj+".cambiarImagen('" + idObj + "',1)",10);
		  	if(this.tipo == 2) window.setTimeout(this.obj+".cambiarColorFondo('"+idObj+"','" + this.colorTd2 + "','hand')",10);	   		
		  	if(this.tipo == 1 || this.tipo == 2){
				window.setTimeout(this.obj+".cambiarColor('" + idObj + "','" + this.colorTxt2 + "')",10);
				window.setTimeout(this.obj+".cambiarPropiedad('" + idObj + "',1)",10);
			}
		  	if(onEnd) this.endOver(pNum,pHref,pTarget);
		}else if(this.siempreActivo){
			if(this.tipo == 1 || this.tipo == 2) window.setTimeout(this.obj+".cambiarCursor('"+idObj+"','hand')",10);
			if(onEnd) this.endOver(pNum,pHref,pTarget);
		}
	   break; 
	   case "out" : 
	   	if (this.numIdObjActivo != idObj){
			if(this.tipo == 4) window.setTimeout(this.obj+".cambiarCapa('" + idObj + "',0)",10);	   		
   			if(this.tipo == 3) window.setTimeout(this.obj+".cambiarImagen('" + idObj + "',0)",10);
			if(this.tipo == 2) window.setTimeout(this.obj+".cambiarColorFondo('" + idObj + "','" + this.colorTd1 + "','default')",10);	   		
			if(this.tipo == 1 || this.tipo == 2){
				window.setTimeout(this.obj+".cambiarColor('" + idObj + "','" + this.colorTxt1 + "')",10);
				window.setTimeout(this.obj+".cambiarPropiedad('" + idObj + "',0)",10);
			}
			if(onEnd) this.endOut(pNum,pHref,pTarget);
		}else if(this.siempreActivo){
			if(this.tipo == 1 || this.tipo == 2) window.setTimeout(this.obj+".cambiarCursor('"+idObj+"','default')",10);
			if(onEnd) this.endOut(pNum,pHref,pTarget);
		}
	   break; 
	   case "click" :
	   
	   		if(this.depurado) alert("Menu::click: " + idObj);
	      	if ((this.numIdObjActivo != idObj || this.siempreActivo) && this.numIdObjActivo!=null){
	      		if(!this.stoRetardo){
	      			// Temporizacion de retardo entre pulsaciones.
		      		this.stoRetardo = true;
		      		window.setTimeout(this.obj+".stoRetardo = false",500);

		      		if(this.tipo == 4){
		      			window.setTimeout(this.obj+".cambiarCapa('" + this.numIdObjActivo + "',0)",10);
		      		}		      				      		
		      		if(this.tipo == 3){
		      			window.setTimeout(this.obj+".cambiarImagen('" + this.numIdObjActivo + "',0)",10);
		      		}
			      	if(this.tipo == 2){
			      		window.setTimeout(this.obj+".cambiarColorFondo('"+this.numIdObjActivo+"','" + this.colorTd1 + "','default')",10);
			      		if(this.colorTd3) window.setTimeout(this.obj+".cambiarColorFondo('"+idObj+"','" + this.colorTd3 + "','default')",10);
			    	}
			      	if(this.tipo == 1 || this.tipo == 2){
						window.setTimeout(this.obj+".cambiarColor('"+this.numIdObjActivo+"','" + this.colorTxt1 + "')",10);
						window.setTimeout(this.obj+".cambiarPropiedad('" + this.numIdObjActivo + "',0)",10);
						if(this.colorTxt3) window.setTimeout(this.obj+".cambiarColor('"+idObj+"','" + this.colorTxt3 + "')",10);
						window.setTimeout(this.obj+".cambiarPropiedad('" + idObj + "',2)",10);						
					}
			      	
			      	if(onEnd) this.endClick(pNum,pHref,pTarget)
			      	// Cargamos la pagina indicada.
			      	if(pHref){
				      	if(pHref.indexOf("popup::") == -1){ // Mod::popup.
					      	if(this.tipo == 2 && pHref && pTarget) eval("parent." + pTarget + ".document.location.href='" + pHref + "';");
					      	if(this.tipo == 2 && pHref && !pTarget) eval("parent.document.location.href='" + pHref + "';");
							this.numIdObjActivo = idObj; // Mod::popup. 									      	
				    	}else{ // Mod::popup.
				    		var matPopUp = pHref.split("::"); // Mod::popup.
				    		eval("this.popup('" + matPopUp[1] + "'," + matPopUp[2] + ");"); // Mod::popup.
				    	} // Mod::popup.
				 }else this.numIdObjActivo = idObj; // Mod::popup.

	      		}	      		
	      	}else if(this.numIdObjActivo==null){
				      	if(this.tipo == 2 && this.colorTd3) window.setTimeout(this.obj+".cambiarColorFondo('"+idObj+"','" + this.colorTd3 + "','default')",10);
				      	if(this.tipo == 1 || this.tipo == 2){
							if(this.colorTxt3) window.setTimeout(this.obj+".cambiarColor('"+idObj+"','" + this.colorTxt3 + "')",10);
							window.setTimeout(this.obj+".cambiarPropiedad('" + idObj + "',2)",10);						
						}	
						
						if(onEnd) this.endClick(pNum,pHref,pTarget) 
						// Cargamos la pagina indicada.  
			      		if(pHref){
			      			if(pHref.indexOf("popup::") == -1){ // Mod::popup.
		      				if(this.tipo == 2 && pHref && pTarget) eval("parent." + pTarget + ".document.location.href='" + pHref + "';");
		      				if(this.tipo == 2 && pHref && !pTarget) eval("parent.document.location.href='" + pHref + "';");
				    		}else{ // Mod::popup.
				    		var matPopUp = pHref.split("::"); // Mod::popup.
				    		eval("this.popup('" + matPopUp[1] + "'," + matPopUp[2] + ");"); // Mod::popup.
				    		}
				    	}						  		
	      				if(pHref && (pHref.indexOf("popup::") == -1)){this.numIdObjActivo = idObj;} // Mod::popup.
				}else if(this.siempreActivo && this.tipo == 2 && pHref && pTarget){
						if(onEnd) this.endClick(pNum,pHref,pTarget) 
						eval("parent." + pTarget + ".document.location.href='" + pHref + "';");
					  }

				if(pHref && (pHref.indexOf("popup::") == -1) && (this.numIdObjActivo != idObj)){this.accionTapadera(1);} // Mod::popup.

	      	break; 
	   case "remote" : 
	   		if(this.depurado) alert("Menu::remote: " + idObj);
	      	if (this.numIdObjActivo != idObj && this.numIdObjActivo != null){
	      		if(this.tipo == 4) window.setTimeout(this.obj+".cambiarCapa('" + this.numIdObjActivo + "',0)",10);	
	      		if(this.tipo == 3) window.setTimeout(this.obj+".cambiarImagen('" + this.numIdObjActivo + "',0)",10);	
		      	if(this.tipo == 2) window.setTimeout(this.obj+".cambiarColorFondo('" + this.numIdObjActivo + "','" + this.colorTd1 + "','default')",10);
		      	if(this.tipo == 1 || this.tipo == 2){
					window.setTimeout(this.obj+".cambiarColor('" + this.numIdObjActivo + "','" + this.colorTxt1 + "')",10);
					window.setTimeout(this.obj+".cambiarPropiedad('" + this.numIdObjActivo + "',0)",10);
				}
	      	}
	      	
	      	if(pNum){
	      		if(this.tipo == 4) window.setTimeout(this.obj+".cambiarCapa('" + idObj + "',1)",10);	      		
	      		if(this.tipo == 3) window.setTimeout(this.obj+".cambiarImagen('" + idObj + "',1)",10);
		      	if(this.tipo == 2){
					var colorTd=(this.colorTd3)? this.colorTd3:this.colorTd2;
					window.setTimeout(this.obj+".cambiarColorFondo('" + idObj + "','" + colorTd + "','default')",10);
				}
		      	if(this.tipo == 1 || this.tipo == 2){
					var	colorTxt = (this.colorTxt3)?this.colorTxt3:this.colorTxt2
					window.setTimeout(this.obj+".cambiarColor('" + idObj + "','" + colorTxt + "')",10);
					window.setTimeout(this.obj+".cambiarPropiedad('" + idObj + "',1)",10);
					window.setTimeout(this.obj+".cambiarPropiedad('" + idObj + "',2)",10);
				}
				this.numIdObjActivo = idObj;		
      		}else{
				this.numIdObjActivo = null;
      		}
			if(onEnd) this.endRemote(pNum,pHref,pTarget)
			window.setTimeout(this.obj+".accionTapadera(0)",500);
	      	break; 	      	
	} 
}     