var GiramentoDiGallery = new Class({
	Implements: [Options,Chain],
	
	options:{
		proprietaContenenteUrlImg:'href',
		elencoImmagini:'#gallery-home a',
		totaleImmagini:0,
		immagini:Array(),
		testiImmagini:Array(),
		elementiImmagini:Array(),
		inizioRand:true,
		prossimoIndex:0,
		attualeIndex:0,
		contenitore: 'gallery-home',
		periodo: 8000,
		testoOpacity: 0.8,
		incubatore:'',
		per:''
	},
	
	initialize: function(opt){
		var prop=this;
		this.setOptions(opt);
		incubatore='';
		div='';
		
		this.prendiImmagini();
		
		this.options.totaleImmagini = this.options.immagini.length-1;
		this.options.prossimoIndex = (this.options.inizioRand) ? Math.floor(Math.random()*(this.options.totaleImmagini)) : 0;
		this.options.attualeIndex = this.options.prossimoIndex;
		
		this.chain(
			function(){
				incubatore = new Element('div').inject($('galley_libro'));
				div = new Element('div',{'id':'testoImmagine'}).inject(prop.options.contenitore);
				prop.visualizzaImmagine(prop.options.attualeIndex);
				this.callChain();
			},
			function(){
				this.periodico();
			}
		);
		this.callChain();
	},
	
	prendiImmagini: function(){
		var prop = this;
		$$(this.options.elencoImmagini).each(function(item,id){
			
			prop.options.immagini.include(item.getProperty(prop.options.proprietaContenenteUrlImg));
			prop.options.testiImmagini.include(item.innerHTML);
			
			item.addEvent('click',function(e){
				e.stop();
				prop.sceltaImmagine(id);
			});
			
			prop.options.elementiImmagini.include(item);
			item.set('html','');
		});
	},
	
	girotondo: function(){
		var prop = this;
		
		this.chain(
				function(){
					imgLoaded.fade('out');
					this.callChain();
				},
				function(){
					prop.options.elementiImmagini[prop.options.attualeIndex].set('class','blurImgHome');
					prop.options.prossimoIndex = (prop.options.attualeIndex<prop.options.totaleImmagini) ? prop.options.attualeIndex+1 : 0;
					this.callChain();
				},
				function(){
					prop.visualizzaImmagine(prop.options.prossimoIndex);
				}
		);
		this.callChain();
		
	},
	
	loadImmagine: function(url){
		carica = new Asset.image(url,{
			id : 'immagineGirante'
		});
		return carica;
	},
	
	periodico: function(){
		var prop = this;
		per = function(){
			prop.girotondo();
		}
		
		this.options.per=per.periodical(this.options.periodo);
	},
	
	visualizzaImmagine: function(idImg){
		var prop = this;
		
		this.chain(
				function(){
					if($type(incubatore)=='element'){
						incubatore.set('html','');
					}
					if($type(div)=='element'){
						div.set('html','');
					}
					this.callChain();
				},
				function(){
					prop2 = this;
					imgLoaded = new Asset.image(prop.options.immagini[idImg],{
						id : 'immagineGirante',
						onload: function(){
							prop2.callChain();
						}
					});
					div.set('html',prop.options.testiImmagini[idImg]);
					div.tween('opacity',0);
				},
				function(){
					imgLoaded.inject(incubatore);
					incubatore.fade('hide');
					this.callChain();
				},
				function(){
					incubatore.fade('in');
					div.tween('opacity',prop.options.testoOpacity);
					prop.options.elementiImmagini[idImg].set('class','focusImgHome');
					prop.options.attualeIndex = idImg;
				}
		);
		this.callChain();
	},
	
	sceltaImmagine: function(idImg){
		prop = this;
		this.options.per = $clear(this.options.per);
		this.options.elementiImmagini[this.options.attualeIndex].set('class','blurImgHome');
		this.chain(
				function(){
					prop.visualizzaImmagine(idImg);
					this.callChain();
				},
				function(){
					prop.periodico();
				}
		);
		this.callChain();
	}
});

window.addEvent('domready',function(){
	galleryhome = new GiramentoDiGallery();
	var css = new Asset.css('style_din/gallery_home.css');
});

