(function(){

	var clase_galeria='galeria';
	var clase_foto='greybox';
	var img_peq=[];
	var contenedor,w,miniaturas,scroller_miniaturas,contenedor_miniaturas,ancho_ventana,alto_ventana,body,efecto,cargando,dimensiones_grande;
	var num_fotos=0;
	var despl=0;
	var moviendo=false;
	
	function inicializar(){
		
		if((window.parent)){
		    w=window.parent;
		}else{
		    w=window;  
		}
		
    body=w.$E('body');
    
		ancho_ventana=w.getWidth();	
		alto_ventana=w.getHeight();
           		
	  cargando=$(w.document.createElement('img'));
    cargando.id='cargando';
    cargando.src='/images/comunes/loading.gif';
;
		$$('.'+clase_galeria+' a img').each(anyadirFoto);
		$$('.'+clase_foto+' img').each(anyadirFoto);		


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

    

		
		clon=$(w.document.createElement('img'));
		clon.src=el.src;
		clon.className=el.className;

		clon.foto_grande=el.foto_grande;
    clon.removeEvent('click',irAFoto);
		clon.addEvent('click',irAFoto);
    el.removeEvent('click',irAFoto.bindWithEvent(clon));
		el.addEvent('click',irAFoto.bindWithEvent(clon));		
    
    try{
      dimensiones=el.getCoordinates();
      clon.ancho_original=dimensiones.width;
      clon.alto_original=dimensiones.height;
      clon.posicion_izquierda=dimensiones.left;
      clon.posicion_arriba=dimensiones.top;
    }catch(ex){
      clon.ancho_original=50;
      clon.alto_original=50;
    }

		clon.num=num_fotos;		
		img_peq.push(clon);

		num_fotos++;
	}
	
	
	
	function hundirFoto(){
		if(efecto){	
			efecto.start({
				'opacity': [1,0.27],
				'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 resituarFoto(){
		var foto=w.$E('.cambio_foto');
	//	var cargando=$('cargando');
  try{
		var margen_arriba=(alto_ventana-dimensiones_grande.height)/2;
    
		if (foto)	foto.setStyle('top',margen_arriba+w.getScrollTop());
  }catch(ex){}
	/*	if (cargando) cargando.setStyle('top',50+w.getScrollTop());*/


	}
	
	function irAFoto(event){
    if(event){
			event = new Event(event);
			event.preventDefault();		
		}
		if(moviendo) return;
    
    ancho_ventana=w.getWidth();	
		alto_ventana=w.getHeight();
    
    /*try{
      dimensiones=$(this).getCoordinates();
      this.ancho_original=dimensiones.width;
      this.alto_original=dimensiones.height;
      this.posicion_izquierda=dimensiones.left;
      this.posicion_arriba=dimensiones.top;
    }catch(ex){
     // this.ancho_original=50;
     // this.alto_original=50;
    }*/
    
    var ratonX=this.posicion_izquierda-2;
    var ratonY=this.posicion_arriba-2;
    var ancho_original=this.ancho_original;
    var alto_original=this.alto_original;
		

		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;
		
    body.adopt(cargando);
		cargando.setStyle('left',ratonX+w.getScrollLeft()+this.ancho_original-16);
    cargando.setStyle('top',ratonY+w.getScrollTop()+this.alto_original-16);
		var foto_mini=this;
		
		var fp=$(w.document.createElement('div'));
    var imagen_interior=$(w.document.createElement('img'));
		fp.addClass('cambio_foto');
		fp.addEvent('click',hundirFoto);
		
		body.adopt(fp); 
    fp.adopt(imagen_interior);
		
		imagen_interior.onload=function(){
			if(foto_mini.dimensiones_gra){
				var dimensiones_grande=foto_mini.dimensiones_gra;
			}else{
				 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; 
				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;
			}
			fp.setStyle('width',ancho_original);
			fp.setStyle('height',alto_original);
			fp.setStyle('top',ratonY);
			fp.setStyle('left',ratonX);			
		//	cargando.setStyle('visibility','hidden');
      try{
        cargando.remove();
        }catch(ex){};
			fp.setStyle('visibility','visible');
			pos_destino_x=(ancho_ventana-dimensiones_grande.width)/2;
			pos_destino_y=(alto_ventana-dimensiones_grande.height)/2+scroll_ventana;
		
			tam_destino_x=dimensiones_grande.width;
			tam_destino_y=dimensiones_grande.height;	
			
			$(this).setStyle('width','100%');
      
			
			efecto = new Fx.Styles(fp, {
				duration: 500,
				transition: Fx.Transitions.Quad.easeOut,
				onComplete: function(){ 
					
					moviendo=false;
					if(this.borrar && this.elemento){
						this.elemento.remove();
						delete this.elemento;
						this.borrar=false;
							w.removeEvent('scroll',resituarFoto);
					}else{
						w.addEvent('scroll',resituarFoto);
						this.borrar=true;
					}
				}
			});
			
			efecto.dimensiones_peq={
			 width:ancho_original,
       height:alto_original,
       top:ratonY,
       left:ratonX
			};
			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': [ancho_original,tam_destino_x],
				'height': [ alto_original,tam_destino_y],
				'top': [ratonY,pos_destino_y],
				'left': [ratonX,pos_destino_x]
				,'opacity': [0.27,1]
			});
		}
		
		imagen_interior.src=this.foto_grande;		
		
	}
	
	
	window.addEvent('domready',inicializar);
  window.addEvent('resize',inicializar);
	
	
})();
