
function GaleriaArtistas(contenedor, datos) {

	var galeria = this;

	this._datos = [];
	this._imagenes = [];
	
	this._posicion = 0;
	
	this._navegando = false;
	
	this._DURACION = 200;	
	this._OFFSET_SELECCIONADA = 0;	
	
	this.analizarImagenes = function()
	{
		var todasCargadas = true;
		var i = 0;
		
		while (i < this._imagenes.length && todasCargadas)
		{

			var imagen = this._imagenes[i];

			var cargada = imagen.height > 0;
			
			todasCargadas = todasCargadas && cargada;

			if (cargada && ($(imagen).data("agregada") == false))
			{
				if (i==0){
					$(imagen).css("left", "0px");
				}				
				else {
					$(imagen).css("left", this._width + 1 + "px");
				}

				$(this._contenedor).append(imagen);
				$(imagen).data("agregada", true);
			}

			i++;
		}
		
		if (todasCargadas)
		{
			if (this._imagenes.length > 0)
			{
				galeria.colocarPanel(galeria._datos[0], 0);
				this.animarPaneles();
			}
		}
		else
		{
			setTimeout("$('#aplicacion').trigger('analizarImagenes')", 100);
		}
		
	};
	
	this.cargarImagenes = function() {

		// cargamos las imagenes
		this._datos = this._datos.imagenes;
		var galeria = this;
		
		if (this._datos != null && this._datos.length > 0) {

			$("#aplicacion").bind("analizarImagenes", function(){

				galeria.analizarImagenes();

			});
		
			var navegador = document.createElement("div");
			$(navegador).attr("id", "Galeria_Artistas_Navegador");
			$(navegador).addClass("GaleriaArtistasNavegador");

			$(navegador).insertAfter(this._contenedor);

			for (var i = 0; i < this._datos.length; i++) {
			
				var image = new Image();
				$(image).data("cargada", false);
				$(image).data("agregada", false);
				$(image).data("index", i);

				image.onload = function()
				{
					$(image).data("cargada", true);
				};

				image.src = this._datos[i].imagen;

				this._imagenes[i] = image;

				var link = document.createElement("a");
				$(link).attr("id", "Galeria_Artistas_Link_"+i);
				$(link).addClass("Link_Galeria_Artistas");
				$(link).text(""+(i+1));
				$(navegador).append(link);
				$(link).click(function(){
					galeria.navegar(parseInt(this.id.replace("Galeria_Artistas_Link_","")));
				});

				if (i==0)
				{
					$(link).addClass("Actual");
				}

			}
			
			setTimeout("$('#aplicacion').trigger('analizarImagenes')", 100);
			
		}
	};
	
	this.navegar = function(pos) {
		if (this._navegando) return;
		if (pos != this._posicion) {
			var galeria = this;
			this._navegando = true;

			this.quitarPaneles();
			
			var pasoFinal = function() {
				$("#Galeria_Artistas_Link_" + galeria._posicion).removeClass("Actual");
				galeria._posicion = pos;
				$("#Galeria_Artistas_Link_" + galeria._posicion).addClass("Actual");
				galeria._navegando = false;
				
				/*
				Ahora hay que colocar los paneles con la
				info de las imágenes		
				*/
				galeria.colocarPanel(galeria._datos[galeria._posicion], galeria._posicion);				

				galeria.animarPaneles();
				
			}
			
			if (this._posicion < pos) {
				// Direccion derecha.
				
				var paso2 = function() {
					$(galeria._imagenes[pos]).css("left", galeria._width+1+"px");
					$(galeria._imagenes[pos]).animate({left: galeria._OFFSET_SELECCIONADA+"px"}, galeria._DURACION, pasoFinal);	
				};

				// La imagen actual desaparece
				$(galeria._imagenes[galeria._posicion]).animate({left: (galeria._imagenes[galeria._posicion].width*(-1))+"px"}, galeria._DURACION, paso2);

			}
			else {
				// direccion izquierda

				var paso2 = function() {
					
					// hay que hacer aparecer la imagen seleccionada (que ahora mismo no está visible)
					$(galeria._imagenes[pos]).css("left", (galeria._imagenes[pos].width*(-1))+"px");
					$(galeria._imagenes[pos]).animate({left: galeria._OFFSET_SELECCIONADA+"px"}, galeria._DURACION, pasoFinal);
					
				};

				// hay que hacer desaparecer la imagen actual
				$(galeria._imagenes[galeria._posicion]).animate({left: galeria._width+"px"}, galeria._DURACION, paso2);

			}

		}

	};

	this.colocarPanel = function(datos, pos) {
		var panelHTML = document.createElement("div");
		$(panelHTML).addClass("GaleriaArtistas_PanelInfo");

		if (datos.autor != '' && datos.autor != undefined) {
			$(panelHTML).append("<span class='GaleriaArtistas_PanelInfo_Autor'>" + datos.autor + "</span>");
		}
		if (datos.titulo != '' && datos.titulo != undefined) {
			$(panelHTML).append("<span class='GaleriaArtistas_PanelInfo_Titulo'>" + datos.titulo + "</span>");
		}
		if (datos.tecnica != '' && datos.tecnica != undefined) {
			$(panelHTML).append("<span>" + datos.tecnica + "</span>");
		}
		if (datos.dimensiones != '' && datos.dimensiones != undefined) {
			$(panelHTML).append("<span>" + datos.dimensiones + "</span>");
		}
		$(panelHTML).appendTo(this._contenedor);
		var left = $(this._imagenes[pos]).css("left");
		$(panelHTML).css("left", left);
		$(panelHTML).css("top", (this._contenedor.clientHeight - 90)+"px");
	};

	this.animarPaneles = function() {
		$(this._contenedor).children(".GaleriaArtistas_PanelInfo").slideDown();
	};
	
	this.quitarPaneles = function() {
		$(this._contenedor).children(".GaleriaArtistas_PanelInfo").remove();
	};

	this.detachAllImages = function() {
		$(this._contenedor).children("img").remove();
	};

	/////////////////////
	/// INICIALIZACION
	/////////////////////
	
	// nos quedamos con el contenedor	
	this._contenedor = contenedor;
	this._datos = datos;
	
	// seteamos la clase CSS
	$(this._contenedor).addClass("GaleriaArtistas");
	
	// atachamos el wrapper
	$(this._contenedor).wrap("<div id='Galeria_Artistas_Wrapper' class='GaleriaArtistasWrapper'/>");
	
	// cojemos las dimensiones del contenedor	
	this._width  = parseInt($(this._contenedor).css("width").replace("px", ""));
	this._height = parseInt($(this._contenedor).css("height").replace("px", ""));
	
	this.cargarImagenes();
	
}
