var CosMooCollection = new Class({
	Implements: [Options],
	

	version: '0.4',
 
	options: {
		'container':'collectionContainer',
		'divSlide': 'imgSlide',
		'classPag1': 'pag1',
		'classPag2':'pag2',
		'classColonna': 'colonna',
		'classBox':'imgBox',
		'classImgCont':'imgContainer',
		'classNext':'nextCol',
		'classPrev':'prevCol',
		'timeFx':100, //tempo del singolo fade
		'numImg':24, //numero di immagini in una pagina
		'numCol':3, //numero di immagini in una colonna
		'widthCol':113, //larghezza in una colonna
		'numColSlide':1, //numero di colonne spostate in uno slide
		'imgpath':'immagini/galleria/',
		'rootPath':'',
		'immagini':[]
	},
 
	
	initialize: function(options)
	{
		this.setOptions(options);
	},
	
	initStructure: function()
	{
		this.container = $(this.options.container);
		this.slide = new Element("div", {'id':this.options.divSlide});
		this.pag1 = new Element("div", {'class':this.options.classPag1});
		var obj = this;
		this.imgPrima = new Array();
		this.imgSeconda = new Array();
		this.options.immagini.each(function(el, index){
			if(index<obj.options.numImg)
			{
				var box = new Element("div", {'class':obj.options.classBox+' boxVuoto', 'id':'box'+index});
				box.addEvent("click", function(){box.addClass("selImgContainer");});
				box.inject(obj.pag1);
				obj.imgPrima.push(el);
			}
			else
				obj.imgSeconda.push(el);
		});
		this.pag1.inject(this.slide);
		this.slide.inject(this.container);
	},
	
	startRandomizer: function()
	{
		var obj = this;
		this.imgPrima.each(function(el, index){
			var vuoti = $$('.boxVuoto');
			if(vuoti.length==0)
				return;
			var box = vuoti.getRandom();
			var cont = new Element("div", {'class':obj.options.classImgCont});
			cont.addEvent("click", function(){cont.addClass("selImgContainer");});
			cont.setStyle("opacity", 0);
			var a = new Element("a", {'href':obj.options.rootPath+'scripts/imgresize.php?pic='+obj.options.imgPath+'/'+el.immagine+'&dim=500', 'rel':'milkbox:galleria'})
			var img = new Element("img", {'src':obj.options.rootPath+'scripts/imgresize.php?pic='+obj.options.imgPath+'/'+el.immagine+'&q=70&h=118&w=79'});
			img.inject(a);
			a.inject(cont);
			cont.inject(box);
			var randomTween = $random(0, 3000);
			box.removeClass("boxVuoto");
			(function(){cont.tween("opacity", 1);}).delay(randomTween);
		});
	},
	
	initPag2: function()
	{
		var obj = this;
		this.pag2 = new Element("div", {'class':this.options.classPag2});
		var k=0;
		var col = null;
		var numCol = 0;
		this.imgSeconda.each(function(el, index){
			if(k%obj.options.numCol==0)
			{
				col = new Element("div", {'class':obj.options.classColonna});
				col.inject(obj.pag2);
				numCol++;
			}
			var box = new Element("div", {'class':obj.options.classBox});
			var cont = new Element("div", {'class':obj.options.classImgCont});
			cont.addEvent("click", function(){cont.addClass("selImgContainer");});
			var a = new Element("a", {'href':obj.options.rootPath+'scripts/imgresize.php?pic='+obj.options.imgPath+'/'+el.immagine+'&dim=500', 'rel':'milkbox:galleria'})
			var img = new Element("img", {'src':obj.options.rootPath+'scripts/imgresize.php?pic='+obj.options.imgPath+'/'+el.immagine+'&q=70&h=118&w=79'});
			img.inject(a);
			a.inject(cont);
			cont.inject(box);
			box.inject(col);
			k++;
		});
		this.pag2.inject(this.slide);
		var xCol = this.options.widthCol;
		var xPag2 = xCol*numCol;
		//console.log("xCol: "+xCol);
		var xPag1 = this.pag1.getSize().x;
		var xSlide = xPag1+xPag2;
		this.slide.setStyle("width", xSlide);
		
		var next = new Element("div", {'class':obj.options.classNext+' puntatore'});
		var prev = new Element("div", {'class':obj.options.classPrev+' puntatore'});
		this.slide.store("numCol", numCol);
		
		next.addEvent("click", function(){
			var xLeft = parseInt(obj.slide.getStyle("left"));
			var xLeftNew = xLeft-xCol*obj.options.numColSlide;
			
			obj.slide.tween("left", xLeftNew);
			var numColNew = obj.slide.retrieve("numCol")-obj.options.numColSlide;
			obj.slide.store("numCol", numColNew);
			if(numColNew<=0)
				next.fade(0);
			if(numColNew<numCol)
				prev.fade(1);
		});
		
		
		prev.addEvent("click", function(){
			var xLeft = parseInt(obj.slide.getStyle("left"));
			var xLeftNew = xLeft+xCol*obj.options.numColSlide;
			obj.slide.tween("left", xLeftNew);
			var numColNew = obj.slide.retrieve("numCol")+obj.options.numColSlide;
			obj.slide.store("numCol", numColNew);
			if(numColNew>=numCol)
				prev.fade(0);
			if(numColNew<numCol)
				next.fade(1);
		});
		next.inject(this.container.getParent());
		prev.fade(0);
		prev.inject(this.container.getParent());
	},
	
	start: function()
	{
		if(this.options.immagini.length<=0)
			return;
		this.initStructure();
		this.startRandomizer();
		if(this.options.immagini.length>this.options.numImg)
			this.initPag2();
		Milkbox.prepareGalleries();
		Milkbox.initMilkbox();
	}
});
