/****************************************************************************************************/
/***************************************** 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,rutaImg,colorTxt,colorTd,pListProp) { 

	
	// Atributos.
	this.nav = new chequeoNavegador();
	this.pref = pref;
	if(rutaImg)	this.rutaImg = (rutaImg[rutaImg.length-1] != "/")?rutaImg+"/":rutaImg;
	this.listProp = (pListProp)?pListProp:new Array();
	this.activo = true;
	// Obtenemos el numero de opciones del menu.
	var fin = false;
	var cont = 1;
	this.listObj = new Array(null);
	while(!fin){
		if(document.getElementById(pref + cont)) {
			// almacenamos en un matriz las instancias de los objetos que componen el menu (img, txt, td, capas).
			this.listObj[cont] = 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 =\""  + this.rutaImg + pref + i + "on.gif\";");
				eval("this." + pref + i + "off = new Image();");
				eval("this." + pref + i + "off.src =\"" + this.rutaImg + pref + i + "off.gif\";");

			}	   		
	   		break	   			   		
	}	
	
	
	this.obj = pref + "_Menu";
	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.capaShow = function(divID){
	if(this.nav.NS || this.nav.IE || this.nav.FIREFOX){
		document.getElementById(divID).style.visibility = "visible";
	}
}

Menu.prototype.capaHide = function(divID){
	if(this.nav.NS || this.nav.IE || this.nav.FIREFOX){
		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){

	var constante = "/VAE/SKODA/WWW/PRD/opencms";

	if(pEstado) var rutaIMG = eval("this." + pIdObj + "on.src") 
	else var rutaIMG = eval("this." + pIdObj + "off.src");
		
	objLink = document.getElementById(pIdObj);
	rutaIMG=constante+"/img/comun"+rutaIMG.split("/img")[1]
	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;
		if(!this.nav.FIREFOX) 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) {
	if(this.activo){
		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(pHref && (pHref.indexOf("popup::") == -1) && (this.numIdObjActivo != idObj)){this.accionTapadera(1);} // Mod::popup.
	
		      	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(pHref && pTarget) eval("parent." + pTarget + ".document.location.href='" + pHref + "';");
						      	if(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(pHref && pTarget) eval("parent." + pTarget + ".document.location.href='" + pHref + "';");
			      				if(pHref && !pTarget) eval("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 && pHref && pTarget){
							if(onEnd) this.endClick(pNum,pHref,pTarget) 
							eval("parent." + pTarget + ".document.location.href='" + pHref + "';");
						  }
	
		      	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; 	      	
		} 
	}
}     