	
	//  JavaScript Document

	//
	//	GaleriaJavascript_MULT.js
	//	Fecha de creacion: 27 / 10 / 2010
	//	Descripcion: Clase que controla una galeria de imágenes sencilla pero múltiple
	//
	
	//
	//  Versión 1.0 (Original)
	//  Versión 1.01 (9/7/2010) :: Se ha añadido la funcionalidad de acceder a una foto en particular
	//  Versión 1.02 (21/9/2010) :: Soporta añadir o no información adicional al pasapáginas
	//  Versión 1.03 (27/10/2010) :: Se ha simplificado soportando muchas galerias pero muy simples, sin botones
	//

	//  CLASE
	
	
	var claseGaleriaMult = new Array ();

	function GaleriaMultipleJavascript ( idgaleria , desplazamientoCoordX , desplazamientoCoordY , tiempoEventoTransicion , tiempoTransicion ) 
	{
		tiempoEventoTransicion 	= typeof(tiempoEventoTransicion) != 'undefined' ? tiempoEventoTransicion : 10000;
  		tiempoTransicion 		= typeof(tiempoTransicion) 		 != 'undefined' ? tiempoTransicion : 0.8;
		
  		this.idgaleria			= idgaleria;
		this.galimagenes		= new Array();
		this.galdescripcion 	= new Array();
		this.galbuttons			= new Array();
		this.galbuttonsclass	= new Array();
		this.galdivbuttons		= null;
		this.galnumimagenes		= 0;
		this.galimagenActual	= 0;
		this.desplazamientoX 	= desplazamientoCoordX;
		this.desplazamientoY 	= desplazamientoCoordY;
		this.tiempoEvento 		= tiempoEventoTransicion;
		this.tiempoTrans 		= tiempoTransicion;
		this.bloqueado			= false;
		this.tieneBotones		= false;
		this.timer				= self.setTimeout ( 'claseGaleriaMult[' + this.idgaleria + '].siguienteImagenAutoGaleria()' , this.tiempoEvento );
		
		claseGaleriaMult[idgaleria]	= this;
		
		this.addImagenGaleria = function addImagenGaleria ( idImagen , idDescripcion )
		{
			this.galimagenes	[ this.galnumimagenes ]	= idImagen;
			this.galdescripcion	[ this.galnumimagenes ]	= idDescripcion;
	
			this.galnumimagenes++;
		}
		
		this.pausarTemporizador = function pausarTemporizador ()
		{
			clearTimeout ( this.timer );
		}
		
		this.siguienteImagenAutoGaleria = function siguienteImagenAutoGaleria ()
		{
			if ( this.galnumimagenes <= 1 )  return false;
			
			// Programamos reloj
			this.timer = self.setTimeout ( 'claseGaleriaMult[' + this.idgaleria + '].siguienteImagenAutoGaleria()' , this.tiempoEvento );
			
			this.siguienteImagenGaleria ();
		}
		
		this.siguienteImagenManualGaleria = function siguienteImagenManualGaleria ()
		{
			if ( this.galnumimagenes <= 1 )  return false;
			
			// Reiniciamos reloj
			self.clearTimeout ( this.timer );
			this.timer = self.setTimeout ( 'claseGaleriaMult[' + this.idgaleria + '].siguienteImagenAutoGaleria()' , this.tiempoEvento );
			
			this.siguienteImagenGaleria ();
		}
		
		this.anteriorImagenGaleria = function anteriorImagenGaleria ()
		{
			if ( this.galnumimagenes <= 1 )  return false;
			if ( this.galimagenActual == 0 ) return false;
			
			if ( !document.getElementById ( this.galimagenes	[ this.galimagenActual ] ) )		return false;
			if ( !document.getElementById ( this.galimagenes	[ this.galimagenActual - 1 ] ) )	return false;
			
			var imagenActual 	= document.getElementById ( this.galimagenes	[ this.galimagenActual ] );
			var imagenAnterior	= document.getElementById ( this.galimagenes	[ this.galimagenActual - 1 ] );

			var idgaleria = this.idgaleria;
			
			new Effect.Move ( imagenAnterior , { x: this.desplazamientoX , y: this.desplazamientoY , duration: this.tiempoTrans } );
			new Effect.Move ( imagenActual ,   { x: this.desplazamientoX , y: this.desplazamientoY , duration: this.tiempoTrans } );
			
			if ( ( document.getElementById ( this.galdescripcion [ this.galimagenActual ] ) ) && ( document.getElementById ( this.galimagenActual - 1 ) ) )
			{
				var descripActual 	= this.galdescripcion [ this.galimagenActual ];
				var descripAnterior	= this.galdescripcion [ this.galimagenActual - 1 ];
				
				this.transicionEntreBloques(descripAnterior, descripActual);
			}

			this.galimagenActual--;
		}
		
		this.siguienteImagenGaleria = function siguienteImagenGaleria ()
		{
			if ( this.galnumimagenes <= 1 )  return false;
			if ( this.galimagenActual >= ( this.galnumimagenes - 1 ) )
			{
				this.siguienteImagenGaleriaLoop ();
				
				return;
			}
			
			if ( !document.getElementById ( this.galimagenes    [ this.galimagenActual ] ) )		return false;
			if ( !document.getElementById ( this.galimagenes    [ this.galimagenActual + 1 ] ) )	return false;
			
			var imagenActual 		= document.getElementById ( this.galimagenes    [ this.galimagenActual ] );
			var imagenSiguiente		= document.getElementById ( this.galimagenes    [ this.galimagenActual + 1 ] );

			var idgaleria = this.idgaleria;
			
			new Effect.Move ( imagenSiguiente , { x: -this.desplazamientoX, y: -this.desplazamientoY , duration: this.tiempoTrans } );
			new Effect.Move ( imagenActual ,    { x: -this.desplazamientoX, y: -this.desplazamientoY , duration: this.tiempoTrans } );
			
			if ( ( document.getElementById ( this.galdescripcion [ this.galimagenActual ] ) ) && ( document.getElementById ( this.galdescripcion [ this.galimagenActual + 1 ] ) ) )
			{
				var descripActual 		= this.galdescripcion [ this.galimagenActual ];
				var descripSiguiente	= this.galdescripcion [ this.galimagenActual + 1 ];
				
				this.transicionEntreBloques(descripActual, descripSiguiente);
			}

			this.galimagenActual++;
		}
	
		this.siguienteImagenGaleriaLoop = function siguienteImagenGaleriaLoop ()
		{
			if ( this.galnumimagenes <= 1 )  return false;
			
			if ( this.galimagenActual == ( this.galnumimagenes - 1 ) )
			{
				var imagenActual = null;
				
				if ( ( document.getElementById ( this.galdescripcion [ this.galimagenActual ] ) ) && ( document.getElementById ( this.galdescripcion [ 0 ] ) ) )
				{
					var descripActual 		= this.galdescripcion [ this.galimagenActual ];
					var descripSiguiente	= this.galdescripcion [ 0 ];
					
					this.transicionEntreBloques(descripActual, descripSiguiente);
				}
				
				for ( var count = ( this.galnumimagenes - 1 ); count >= 0; count-- ) 
				{
					if (!document.getElementById(this.galimagenes[count])) 
					{
						this.bloqueado = false;
						return false;
					}
					
					imagenActual = document.getElementById(this.galimagenes[count]);
					
					idgaleria = this.idgaleria;
					
					if 		( count == 0 ) 								new Effect.Move(imagenActual, { x: this.desplazamientoX, y: this.desplazamientoY, duration: this.tiempoTrans });
					else if	( count == ( this.galnumimagenes - 1 ) )	new Effect.Move(imagenActual, { x: this.desplazamientoX, y: this.desplazamientoY, duration: this.tiempoTrans });
					else												new Effect.Move(imagenActual, { x: (this.desplazamientoX * 2), y: (this.desplazamientoY * 2), duration: this.tiempoTrans });
				}
				
				this.galimagenActual = 0;
			}
		}
	
	
		// Funciones privadas para la propia clase
		
		this.obtenerPosicionBotonByDiv = function obtenerPosicionBotonByDiv ( idBoton )
		{
			var posicion = 0;
			
			for ( var count = 0 ; count < this.galnumimagenes ; count++ )
			{
				if ( this.galbuttons[count] == idBoton )
				{
					posicion = count; 
					break;
				}
			}
			
			return posicion;
		}
	
		this.transicionEntreBloques = function transicionEntreBloques ( idBloqueDesaparece , idBloqueAparece )
		{
			$(idBloqueDesaparece).setStyle({display: 'none'});
			
			Effect.Fade( idBloqueAparece , { 	duration: this.tiempoTrans, 
										 		from: 0,
										 		to: 1,
										 		afterUpdate: ( function(){ $(idBloqueAparece).setStyle({display: 'block'}); })
			});
		}
		
		this.apareceBloque = function apareceBloque ( idBloque )
		{
			$(idBloque).setStyle({display: 'block'});
		}
		
		this.desapareceBloque = function desapareceBloque ( idBloque )
		{
			$(idBloque).setStyle({display: 'none'});
		}
	}
	
