/*
 *  Objeto para el control del cambio de imágenes en el carrusel de locutores
 */
RollOver = {};

/*
 *  Método para establecer las propiedades necesarias y para marcar el elemento activo
 *  si lo hubiera
 */
RollOver.inicializar = function(activo)
{

	// Elemento contenedor del carrusel identificado por id
	this.contenedor = document.getElementById("lista");
	
	// Lista de elementos tomados por etiqueta
	//this.elementos = this.contenedor.getElementsByTagName("li");
	
	// Id del elemento activo si hay
	this.activo = (activo)? activo : (this.activo)? this.activo : "";
	
	// Elemento activo si lo hay
	this.padreActivo = (this.padreActivo)? this.padreActivo : "";
	
	// Propiedad que va a contener la matriz con los objetos imagen correspondientes a las fotos
	this.imagenObj = "";

	this.precarga();
	this.crearEventos();
	
	// Comprobamos si hay elemento activo y lo marcamos
	if(this.activo)
	{
		var imagen = document.getElementById("img" + this.activo)
		if(imagen){
			var padreImagen = imagen.parentNode.parentNode.parentNode;
			imagen.src = this.imagenObj[this.activo][1].src;
			padreImagen.className = (padreImagen.className.indexOf("ultimo") == -1)?"activo":"activo ultimo";
			this.padreActivo = padreImagen;
		}
	}
}

/*
 *  Método para precargar las imágenes
 */
RollOver.precarga = function()
{
	if(!this.contenedor) this.contenedor = document.getElementById("lista");
	var imagenes = this.contenedor.getElementsByTagName("img");
	
	// Array que contiene las imágenes. Toma como primer índice el id de la imagen, al que previamente
	// se sustrae la cadena "img". Un segundo índice de 0 indica foto en bn y de 1 en color.
	this.imagenObj = new Array();
	var imgId;
	//document.write(imagenes.length + "<br>");
	for(i=0;i<imagenes.length;i++)
	{
		imgId = imagenes[i].id.substring(3);
		//document.write(imgId + " ---> " + imagen[imgId] + "<br>");
		this.imagenObj[imgId] = new Array();
		this.imagenObj[imgId][0] = new Image();
		this.imagenObj[imgId][0].src = imagen[imgId][0];
		this.imagenObj[imgId][1] = new Image();
		this.imagenObj[imgId][1].src = imagen[imgId][1];
	}
}

/*
 *  Método que crea los eventos en todos los enlaces encontrados en el contenedor
 */
RollOver.crearEventos = function() {
	var enlaces = this.contenedor.getElementsByTagName("a");
	var obj;
		for(i=0;i<enlaces.length;i++)
		{
			if (enlaces[i].addEventListener) {	
          enlaces[i].addEventListener("mouseover", RollOver.activar, false);
          enlaces[i].addEventListener("mouseout", RollOver.desactivar, false);
          enlaces[i].addEventListener("click", RollOver.setActivo, false);
      } else {
          enlaces[i].attachEvent("onmouseover", RollOver.activar);
          enlaces[i].attachEvent("onmouseout", RollOver.desactivar);
          enlaces[i].attachEvent("onclick", RollOver.setActivo);
      }
		}   
}

/*
 *  Método que recibe el objeto que dispara un evento y busca el elemento padre con la
 *  etiqueta especificada, en este caso "LI"
 */
RollOver.getElementoPadre = function(e)
{
	if (document.all)
		obj = event.srcElement;
	else
		obj = e.target;
		
	while(obj.nodeName != "LI")
	{
		obj = getParent(obj);
	}
	return obj;
}

/*
 *  Método que activa una imagen para el evento onmouseover
 */
RollOver.activar = function(e)
{
	var padre = RollOver.getElementoPadre(e);
	var objetoImagen = padre.getElementsByTagName("img")[0];
	var idImagen = objetoImagen.id.substring(3);
       
	if(RollOver.activo && RollOver.activo != idImagen)
	{
		var objetoImagenActiva = document.getElementById("img" + RollOver.activo);
		if(objetoImagenActiva)
				objetoImagenActiva.src = RollOver.imagenObj[RollOver.activo][0].src;
	}
	objetoImagen.src =  RollOver.imagenObj[idImagen][1].src;
}

/*
 *  Método que desactiva una imagen para el evento onmouseout
 */
RollOver.desactivar = function(e)
{
	var padre = RollOver.getElementoPadre(e);
	var objetoImagen = padre.getElementsByTagName("img")[0];
	var idImagen = objetoImagen.id.substring(3);
	
	if(RollOver.activo != "" && RollOver.activo != idImagen)
	{
		var objetoImagenActiva = document.getElementById("img" + RollOver.activo);
		if(objetoImagenActiva)
				objetoImagenActiva.src = RollOver.imagenObj[RollOver.activo][1].src;
	}
	
	objetoImagen.src = (RollOver.activo == idImagen)? RollOver.imagenObj[idImagen][1].src : RollOver.imagenObj[idImagen][0].src;
}

/*
 *  Método que establece un elemento como activo para el evento onclick
 */
RollOver.setActivo = function(e)
{
	var padre = RollOver.getElementoPadre(e);
	var objetoImagen = padre.getElementsByTagName("img")[0];
	var idImagen = objetoImagen.id.substring(3);
	
	if(RollOver.padreActivo){
		RollOver.padreActivo.className = (RollOver.padreActivo.className.indexOf("ultimo") == -1)?"":"ultimo";
	}
	
	RollOver.activo = idImagen;
	RollOver.padreActivo = padre;
	
	padre.className += " activo"
}

/*
 *  Método que devuelve el id del elemento activo (numérico) o -1 si no hay activo
 */
RollOver.getActivo = function()
{
	if(this.activo && this.activo != ""){
		return this.activo;
	}
	return "-1";
}
