(function(){

	var clase_galeria='galeria';
	var clase_foto='greybox';
	var img_peq=[];
	var fondo,contenedor,w,miniaturas,contenedor_miniaturas,ancho_ventana,alto_ventana,body,efecto,cargando;
	var num_fotos=0;
	var despl=0;
	
	function inicializar(){
		
		if((window.parent)){
		    w=window.parent;
		}else{
		    w=window;  
		}
		
		ancho_ventana=w.getWidth();	
		alto_ventana=w.getHeight();
		fondo=$(w.document.createElement('div'));
    fondo.id='fondo_galeria';
		fondo.setStyle('height',w.getScrollHeight());
    
    contenedor=$(w.document.createElement('div'));
    contenedor.id='contenedor_galeria';
    
    miniaturas=$(w.document.createElement('div'));
    miniaturas.id='miniaturas_galeria';
    
    contenedor_miniaturas=$(w.document.createElement('div'));
    contenedor_miniaturas.id='contenedor_miniaturas';
		
		cargando=$(w.document.createElement('img'));
    cargando.id='cargando';
    cargando.src='/images/comunes/cargando.gif';
		
		var cerrar=$(w.document.createElement('img'));
    cerrar.id='galeria_cerrar';
    cerrar.addClass='png';
    cerrar.src='/images/comunes/cerrar.png';
    
		var izq=$(w.document.createElement('img'));
    izq.id='galeria_izq';
    izq.src='/images/comunes/izquierda.gif';
    
		var der=$(w.document.createElement('img'));
    der.id='galeria_der';
    der.src='/images/comunes/derecha.gif';    
				
		
		contenedor.adopt(contenedor_miniaturas);
		contenedor_miniaturas.adopt(miniaturas);
		contenedor.adopt(cargando);
		contenedor.adopt(cerrar);
		cerrar.onclick=ocultarGaleria;
		
		contenedor.adopt(izq);
		contenedor.adopt(der);
		$$('.'+clase_galeria+' a img').each(anyadirFoto);
		$$('.'+clase_foto+' img').each(anyadirFoto);		

		contenedor_miniaturas.scroller = new Fx.Scroll(contenedor_miniaturas, {duration: 500});
		
		izq.onclick=anteriorFoto;
		der.onclick=siguienteFoto;

	}
	
	function anyadirFoto(el){
		var padre,clon,dimensiones;
		padre=el.getParent();

		el.foto_grande=padre.href;
		el.addClass(clase_foto);
		
		clon=$(w.document.createElement('img'));
		clon.src=el.src;
		clon.className=el.className;
		
		
		clon.foto_grande=el.foto_grande;
		clon.addEvent('click',irAFoto);
		el.addEvent('click',irAFoto.bindWithEvent(clon));		
		clon.num=num_fotos;		
		img_peq.push(clon);
		miniaturas.adopt(clon);
		num_fotos++;
	}
	
	function mostrarGaleria(){	
		$$('embed').each(function(el){
			el.style.visibility='hidden';
		});
		$$('object').each(function(el){
			el.style.visibility='hidden';
		});
		
		if(!$('fondo_galeria')){
			body=w.$E('body');
			body.adopt(fondo); 
			body.adopt(contenedor);
		}
	}
	
	function ocultarGaleria(){
		w.$$('embed').each(function(el){
			el.style.visibility='visible';
		});
		w.$$('object').each(function(el){
			el.style.visibility='visible';
		});		
		//hundirFoto();
		efecto=false;
		w.$$('.cambio_foto').each(function(el){
			el.remove();
		});
		fondo.remove();
		contenedor.remove();
	}
	
	function hundirFoto(){
		if(efecto){	
			efecto.start({
				'opacity': [1,0.15],
				'width': [efecto.dimensiones_gra.width,efecto.dimensiones_peq.width],
				'height': [efecto.dimensiones_gra.height,efecto.dimensiones_peq.height],
				'top': [efecto.dimensiones_gra.top,efecto.dimensiones_peq.top],
				'left': [efecto.dimensiones_gra.left,efecto.dimensiones_peq.left]
			});
		}
	}
	
	function irAFoto(event){
		event = new Event(event);
		event.preventDefault();		
		mostrarGaleria();
		hundirFoto();
		//	if(efecto && efecto.elemento) alert(this.fotogrande+" "+efecto.elemento.src);
		if(efecto && efecto.elemento && this.foto_grande==efecto.elemento.src) return;
		
		var dimensiones=this.getCoordinates();		
		cargando.setStyle('visibility','visible');
		
		var foto_mini=this;
		
		var fp=$(w.document.createElement('img'));
		fp.addClass('cambio_foto');
		fp.addEvent('click',hundirFoto);
		
		fp.onload=function(){
			if(foto_mini.dimensiones_gra){
				var dimensiones_grande=foto_mini.dimensiones_gra;
			}else{
				var dimensiones_grande=this.getCoordinates();
				
				if(dimensiones_grande.width>ancho_ventana){
					dimensiones_grande.height=Math.round(dimensiones_grande.height*ancho_ventana/dimensiones_grande.width);
					dimensiones_grande.width=ancho_ventana;
				}
				altura_corregida=alto_ventana-180; // alto de la barra inferior y margen superior;
				if(dimensiones_grande.height>altura_corregida){
					dimensiones_grande.width=Math.round(dimensiones_grande.width*altura_corregida/dimensiones_grande.height);
					dimensiones_grande.height=altura_corregida;
				}
				
				foto_mini.dimensiones_gra=dimensiones_grande;
			}
			this.setStyle('width',dimensiones.width);
			this.setStyle('height',dimensiones.height);
			this.setStyle('top',dimensiones.top);
			this.setStyle('left',dimensiones.left);			
			cargando.setStyle('visibility','hidden');
			this.setStyle('visibility','visible');
			pos_destino_x=(ancho_ventana-dimensiones_grande.width)/2;
			pos_destino_y=30;
			tam_destino_x=dimensiones_grande.width;
			tam_destino_y=dimensiones_grande.height;	
			
			efecto = new Fx.Styles(fp, {
				duration: 500,
				transition: Fx.Transitions.Quad.easeOut,
				onComplete: function(){ 
					if(this.borrar && this.elemento){
						this.elemento.remove();
						delete this.elemento;
						this.borrar=false;
					}else{
						this.borrar=true;
					}
				}
			});
			
			efecto.dimensiones_peq=dimensiones;
			efecto.dimensiones_gra=dimensiones_grande;
			efecto.dimensiones_gra.top=pos_destino_y;
			efecto.dimensiones_gra.left=pos_destino_x;
			efecto.elemento=fp;
			
			efecto.start({
				'width': [dimensiones.width,tam_destino_x],
				'height': [ dimensiones.height,tam_destino_y],
				'top': [dimensiones.top,pos_destino_y],
				'left': [dimensiones.left,pos_destino_x],
				'opacity': [0.15,1]
			});
		}
		
		fp.src=this.foto_grande;		
    

		
		body.adopt(fp); 
		
	}
	
	function siguienteFoto(){
		var limite=img_peq[(img_peq.length-1)].getLeft();
		if((despl+1)*ancho_ventana<limite){
			despl++;
			contenedor_miniaturas.scroller.scrollTo(despl*ancho_ventana,0);
		}
	}
	
	function anteriorFoto(){
		if(despl>0){
			despl--;
			contenedor_miniaturas.scroller.scrollTo(despl*ancho_ventana,0);
		}
	}
	
	window.addEvent('domready',inicializar);
})();