

var SmoothGallery = {
	init: function(options){
		this.options = $extend({
			container: 'gCont',
			strip: 'gStrip',
			block: 'b',
			lbl: 'lbl',
			arrayImg: null
		}, options || {});
		
		//Offset della gallery rispetto al lato sinistro dello schermo
		this.offset = 10;
		
		//Padding dell'immagine
		this.baseLeft = 0;
		
		//Numero di immagine corrente
		this.pos = 1;
		
		this.classImage = 'myImage'; 
		
		//Creo le chiamate AJAX per le immagini
		var elements = $$('#' + this.options.container + ' div.gBlockImg');
		for(i=1;i<=elements.length;i++){
			elements[i-1].setStyle('opacity','0');
			new Asset.image(
				this.options.arrayImg[i-1],{
					'id': this.classImage+i,
					'class': this.classImage,
					onload: function(){	
						$(SmoothGallery.options.block+this.id.substring(this.className.length)).setStyle('width', this.width); 
						$(SmoothGallery.options.block+this.id.substring(this.className.length)).effect('opacity', {duration: 1000, transition: Fx.Transitions.linear}).start('0','1');
					}
				}
			).injectBefore(this.options.lbl+i);
			//).injectInside(this.options.block+i);
		}
		
		//$(this.options.block+"1").setStyle('border-color','#ec008c');

		//Creo gli elementi per la gestione della gallery
		this.cont = $(this.options.container);
		this.strip = $(this.options.strip);		
		this.nav = new Element('div', {'id': 'gNav'}).injectInside(this.cont);
		this.prev = new Element('div', {'id': 'gPrev', 'styles': {'visibility': 'hidden'}}).injectInside(this.nav);
		this.nex = new Element('div', {'id': 'gNext'}).injectInside(this.nav);
		//this.descr = new Element('div', {'id': 'gDescr'}).injectInside(this.nav);
		/*if($(this.options.lbl+this.pos)){
			this.descr.setHTML($(this.options.lbl+this.pos).getText());
		}*/
		
		this.nex.onclick = this.next.bind(this);
		this.prev.onclick = this.previous.bind(this);
		
		//Effetti
		this.fx = {
			moveAbs: this.strip.effect('left', {duration: 1000, transition: Fx.Transitions.Expo.easeInOut})//,
			//descr: this.descr.effect('opacity', {duration: 500, transition: Fx.Transitions.Expo.easeInOut})
		};
		this.old = 0;
	},
	
	previous: function(){
		return this.move(this.options.block+(this.pos-1));
	},

	next: function(){
		return this.move(this.options.block+(this.pos+1));
	},
	
	move: function(anchor){
		if($(anchor)){
			for (var f in this.fx) 
				this.fx[f].stop();
			this.offset = this.cont.getPosition().x;	
			
			//Ottengo la position X dell'immagine di destinazione
			var p = $(anchor).getPosition();
			if(p.x==0)	this.final = this.old;
			else{
				this.final = (-p.x+this.old+this.baseLeft+this.offset);
				if (this.final==this.baseLeft)	this.final=0;
				this.old = this.final;
			}
			//$(SmoothGallery.options.block+SmoothGallery.pos).setStyle('border','1px solid white');
			this.pos = anchor.substring(this.options.block.length).toInt();
			
			//Animazione dello spostamento
			//this.descr.setOpacity(0);
			this.fx.moveAbs.start(this.final);
			//this.fx.moveAbs.start(this.final).chain(function(){
				//SmoothGallery.descr.setText($(SmoothGallery.options.lbl+SmoothGallery.pos).getText());
				//SmoothGallery.fx.descr.start(0,1);
				//$(SmoothGallery.options.block+SmoothGallery.pos).effect('border-color', {duration: 500, transition: Fx.Transitions.linear}).start('FFFFFF','EC008C');			
			//});
			
			//Gestione dei bottoni
			if(this.pos>1)	this.prev.setStyle('visibility','visible');
			else			this.prev.setStyle('visibility','hidden');
			if($(this.options.block+(this.pos+1)))	this.nex.setStyle('visibility','visible');
			else										this.nex.setStyle('visibility','hidden');
		}
	},
	
	close: function(){
		//Eliminazione della gallery
		var elements = $$("."+this.classImage);
		elements.each(function(el){
			el.remove();
		});
		this.nav.remove();
		//this.descr.remove();
		this.fx.moveAbs.start(0);
		this.pos=1;
	}
};
