(function(){

	var clase_galeria='galeria';
	var clase_foto='greybox';
	var img_peq=[];
	var fondo,contenedor,w,miniaturas,scroller_miniaturas,contenedor_miniaturas,ancho_ventana,alto_ventana,body,efecto,cargando,izq,der,pie_foto;
	var num_fotos=0;
	var despl=0;
	var moviendo=false;

	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';

    cabecera_miniaturas=$(w.document.createElement('div'));
    cabecera_miniaturas.id='cabecera_miniaturas';

    scroller_miniaturas=$(w.document.createElement('div'));
    scroller_miniaturas.id='scroller_miniaturas';

    pie_foto=$(w.document.createElement('div'));
    pie_foto.id='pie_foto_galeria';


		txt_galeria_fotografica=$(w.document.createElement('img'));
    txt_galeria_fotografica.id='txt_galeria_fotografica';
    if(!window.idioma) window.idioma='es';
    txt_galeria_fotografica.src='/images/comunes/'+window.idioma+'/cerrar_galeria.gif';
    txt_galeria_fotografica.height=14;
    txt_galeria_fotografica.width=162;

	  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.gif';

		izq=$(w.document.createElement('img'));
    izq.id='galeria_izq';
    izq.src='/images/comunes/izquierda.gif';
    izq.height=14;
    izq.width=7;

		der=$(w.document.createElement('img'));
    der.id='galeria_der';
    der.src='/images/comunes/derecha.gif';
    der.height=14;
    der.width=7;

		miniaturas.adopt(scroller_miniaturas);
		contenedor.adopt(contenedor_miniaturas);
		contenedor_miniaturas.adopt(cabecera_miniaturas);
	  cabecera_miniaturas.adopt(txt_galeria_fotografica);
	  cabecera_miniaturas.adopt(cerrar);
		contenedor_miniaturas.adopt(miniaturas);
		contenedor.adopt(cargando);

		//contenedor.adopt(cerrar);
		cerrar.onclick=ocultarGaleria;
		txt_galeria_fotografica.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(miniaturas, {duration: 500});

		izq.onclick=anteriorFoto;
		der.onclick=siguienteFoto;

		pie_foto.efecto_pie=new Fx.Style(pie_foto, 'opacity', {duration:200});

	}

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

		el.foto_grande=padre.href;

		if(window.ie6){
			if(el.foto_grande.indexOf('?')==-1){
				el.foto_grande+='?';
			}else{
				el.foto_grande+='&';
			}
			el.foto_grande+='rand='+Math.random();
		}

		//el.addClass(clase_foto);

		clon=$(w.document.createElement('img'));
		clon.src=el.src;
		clon.className=el.className;
		if(el.longdesc){
			clon.pie=el.longdesc;
		}else{
			if(el.title){
				clon.pie=el.title;
			}else{
				clon.pie=el.alt;
			}
		}
		clon.foto_grande=el.foto_grande;
		clon.addEvent('click',irAFoto);
		el.addEvent('click',irAFoto.bindWithEvent(clon));
	/*	clon.mostrarGaleria=function(){
			irAFoto.bindWithEvent(this);
		}*/
		el.mostrarGaleria=function(){
			//clon.mostrarGaleria();
			irAFoto.bind(clon)();
		}
		clon.num=num_fotos;
		img_peq.push(clon);
		scroller_miniaturas.adopt(clon);
		num_fotos++;
	}

	function mostrarGaleria(){
		w.$E('body').addClass('noscroll');
		/*
		$$('embed').each(function(el){
			el.addClass('invisible');
		});
		$$('object').each(function(el){
			el.addClass('invisible');
		});*/
		ocultarFlash(w);
		w.$$('select').each(function(el){
			el.addClass('invisible');
		});
		body=w.$E('body');
		if(!$('fondo_galeria')){
			body.adopt(fondo);
			body.adopt(contenedor);
		}

		if(!$('pie_foto_galeria')){
			body.adopt(pie_foto);
			//pie_foto.setStyle('top',120-window.getScrollTop());
		}

		if(img_peq.length>0){
			var ultima_foto=img_peq[(img_peq.length-1)].getCoordinates();
			var limite=ultima_foto.left+ultima_foto.width;
			if(ancho_ventana>limite){
				izq.setStyle('display','none');
				der.setStyle('display','none');
			}else{
				izq.setStyle('display','block');
				der.setStyle('display','block');
			}
		}

	}

	function ocultarGaleria(){
		w.$E('body').removeClass('noscroll');
		mostrarFlash(w);
		/*
		w.$$('embed').each(function(el){
			el.removeClass('invisible');
		});
		w.$$('object').each(function(el){
			el.removeClass('invisible');
		});	*/
		w.$$('select').each(function(el){
			el.removeClass('invisible');
		});
		//hundirFoto();
		efecto=false;
		w.$$('.cambio_foto').each(function(el){
			el.remove();
		});
		pie_foto.remove();
		fondo.remove();
		contenedor.remove();
		//window.onscroll=null;
		w.removeEvent('scroll',resituarFoto);
	}

	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]
			});
		}
		//pie_foto.efecto_pie.start(1,0);
		pie_foto.efecto_pie.hide();
		pie_foto.innerHTML='';
	}

	function resituarFoto(){
		var foto=w.$E('.cambio_foto');
		var cargando=$('cargando');
		var margen_arriba=30;
		if(window.ie6) margen_arriba+=120;
		if (foto)	foto.setStyle('top',margen_arriba+w.getScrollTop());
		if (cargando) cargando.setStyle('top',50+w.getScrollTop());
		if(window.ie){
			var y_pie=115+w.getScrollTop();
		}else{
			var y_pie=35+tam_destino_y+w.getScrollTop();
		}
		if (pie_foto) pie_foto.setStyle('top',y_pie);
	/*	if(window.ie6){
			$('contenedor_miniaturas').setStyle('top',window.getScrollTop()+alto_ventana-$('contenedor_miniaturas').getSize().size.y);
			$('galeria_cerrar').setStyle('top',window.getScrollTop()+10);
		}*/
	}

	function irAFoto(event){
		if(moviendo) return;
		if(event){
			event = new Event(event);
			event.preventDefault();
		}
		mostrarGaleria();
		hundirFoto();
		var scroll_ventana=w.getScrollTop();

		if(efecto && efecto.elemento && this.foto_grande==efecto.elemento.src) return;

		var dimensiones=this.getCoordinates();
		dimensiones.top+=scroll_ventana;
		cargando.setStyle('visibility','visible');
		cargando.setStyle('top',50+w.getScrollTop());
		var foto_mini=this;

		var fp=$(w.document.createElement('img'));
		fp.addClass('cambio_foto');
		fp.addEvent('click',hundirFoto);

		pie_foto.innerHTML='';

		fp.pie=this.pie;
		body.adopt(fp);

		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+scroll_ventana;
			if(window.ie6) pos_destino_y+=120;
			tam_destino_x=dimensiones_grande.width;
			tam_destino_y=dimensiones_grande.height;

			//pie_foto.efecto_pie.start(0,1);


			efecto = new Fx.Styles(fp, {
				duration: 500,
				transition: Fx.Transitions.Quad.easeOut,
				onComplete: function(){
					//if()

					moviendo=false;
					if(this.borrar && this.elemento){
						//pie_foto.efecto_pie.start(1,0);
						this.elemento.remove();
						delete this.elemento;
						this.borrar=false;
						/*if(window.ie6){
							window.onscroll=function(){
								$('contenedor_miniaturas').setStyle('top',window.getScrollTop()+alto_ventana-$('contenedor_miniaturas').getSize().size.y);
								$('galeria_cerrar').setStyle('top',window.getScrollTop()+10);
							};
						}else{*/
							//window.onscroll=null;
							w.removeEvent('scroll',resituarFoto);
					//	}
					}else{
						pie_foto.efecto_pie.set(1);
						if(window.ie6){
							var y_pie=115+w.getScrollTop();
						}else{
							var y_pie=37+tam_destino_y+w.getScrollTop();
						}
					  pie_foto.setStyle('top',y_pie);
						pie_foto.innerHTML=fp.pie;
						w.addEvent('scroll',resituarFoto);
						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;

			moviendo=true;
			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;

	}

	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);

})();
