
var RomSlider = {
	currentImage: 0,
	totalImages: 10,
	slide: 0,
	totalWidth: 0,
	viewSize: 1,
	containerWidth: 0,
	maxSlide: 0,
	_options: {},
	initialize: function(){
		if (RomSlider._options) RomSlider._options = {};
		RomSlider._options = arguments[1] || {};
		$('romloading').show();
		Event.observe('arrowLeft', 'click', RomSlider.moveToPrevious);
		Event.observe('arrowRight', 'click', RomSlider.moveToNext);
		RomSlider.currentImage = 0;
		RomSlider.totalWidth = 0;

    var ImgLoader = new ImgPreLoader($('imageBoxInside'), null);
		ImgLoader.AddImages({
			onComplete: function(){
				RomSlider.totalWidth = ImgLoader.totalWidth;
				RomSlider.totalImages = ImgLoader.totalImages;
				RomSlider.slide = (ImgLoader.totalWidth / ImgLoader.totalImages).round();
				$('imageBoxInside').setStyle({'width': RomSlider.totalWidth + (RomSlider.totalImages * 6)+'px'});
				RomSlider.containerWidth = parseFloat($('imageBox').getStyle('width')).round();
				RomSlider.maxSlide = (RomSlider.containerWidth - (RomSlider.totalWidth + (RomSlider.totalImages * 6)));
				$('romloading').hide();
				if (RomSlider._options.onComplete) RomSlider._options.onComplete(true);
			}
		});
	},
	sumImageWidths: function(){
		var sumImages = 0;
		for(i=0; i<RomSlider.totalImages; i++){
			if (parseInt(i) < 10) {
				numNode = '0' + i;
			}else{
				numNode = i;
			}
			var image = 'img'+numNode;
			RomSlider.totalWidth += $(image).width;
		}
		RomSlider.slide = (RomSlider.totalWidth / RomSlider.totalImages).round();
	},
	moveToPrevious: function(){
		if (!RomSlider.checkLeftPositionSlide()) return;
		if(RomSlider.currentImage > 0){
		  new Effect.Move('imageBoxInside', { x: RomSlider.slide, y: 0, transition: Effect.Transitions.sinoidal,
				afterUpdate: function(){
					RomSlider.checkLeftPositionSlide();
				}
			});
		  RomSlider.currentImage--;
		}
	},
	moveToNext: function(){
		if (!RomSlider.checkRightPositionSlide()) return;
		if(RomSlider.currentImage < RomSlider.totalImages){
		  new Effect.Move('imageBoxInside', { x: -RomSlider.slide, y: 0, transition: Effect.Transitions.sinoidal,
				afterUpdate: function(){
					RomSlider.checkRightPositionSlide();
				}
			});
		  RomSlider.currentImage++;
		}
	},
	checkRightPositionSlide: function(){
		if (parseFloat($('imageBoxInside').getStyle('left')||0) <= RomSlider.maxSlide){
			$('imageBoxInside').setStyle({'left': RomSlider.maxSlide + 'px'});
			return false;
		}
		return true;
	},
	checkLeftPositionSlide: function(){
		if(parseFloat($('imageBoxInside').getStyle('left')) >=-10&&parseFloat($('imageBoxInside').getStyle('left'))!=0) {
			$('imageBoxInside').setStyle({'left': '0px'});
			return false;
		}
		return true;
	},
	stopEffect: function(){
		if (RomSlider.activeSlide) {
			RomSlider.activeSlide.cancel();
			RomSlider.activeSlide = null;
		}
	}
}

ImgPreLoader = Class.create({
	initialize: function(contenitoreImmagini, listaImmagini){
		this._arrayImmagini = null;
		this.totalImages = 0;
		this.totalLoaded = 0;
		this.totalWidth = 0;
		this.catDir = null;
		this.totalImages = 0;
		this.imgContainer = contenitoreImmagini;
		this.divLista = false;
		this.AllLoaded = this._allLoaded;
		this.AddImages = this._addImages;
		this.LoadImages = this._loadImages;

		this.catDir = 'foto/thumbnail/';
		this.totalImages = 10;

		if (listaImmagini) {
			this._arrayImmagini = null;
			this._arrayImmagini = listaImmagini;
			this.totalImages = listaImmagini[0].length;
			this.divLista = true;
		}else{
			this._arrayImmagini = new Array();
			this._arrayImmagini[0] = new Array();
			this._arrayImmagini[1] = new Array();

			for (i=0; i<this.totalImages; i++){
				var numImage = i;
				//var numImage = i + 1;
				if (parseInt(numImage) < 10) {
					numNode = '0' + numImage;
				}else{
					numNode = numImage;
				}

				var imgName = 'img' + numNode;
				this._arrayImmagini[0][i]= imgName;
				this._arrayImmagini[1][i]= this.catDir + numNode + '.jpg';
			}
		}
	},
	_addImages: function(){
		var options = arguments[0]||{};
		for (i=0; i<this._arrayImmagini[0].length; i++){
			var numImage = i;
			//var numImage = i + 1;
			if (parseInt(numImage) < 10) {
				numNode = '0' + numImage;
			}else{
				numNode = numImage;
			}

			if (this.divLista) {
				this.imgContainer.appendChild(Builder.node('div',{id: 'boxProdotti'+this._arrayImmagini[0][i], 'class': 'boxProdotti'},[
					Builder.node('img',{ id: this._arrayImmagini[0][i]})
				]));
			}else{
				this.imgContainer = eval("$('ref" + numNode +"')");
				this.imgContainer.appendChild(Builder.node('img',{id: this._arrayImmagini[0][i]}));
			}
		}

		for (i=0; i<this._arrayImmagini[0].length; i++){
			this._loadImages(i, {
				onComplete: function(){
					if (this._allLoaded) {
						if (options.onComplete) {
							options.onComplete = options.onComplete();
						}
					}
				}
			});
		}
	},
	_loadImages: function(numImage){
		var options = arguments[1]||{};
		options.debug = this.debug;
		options.totalImages=this.totalImages;

		var Preloader = new Image();
		Preloader.id = this._arrayImmagini[0][numImage];
		Preloader.name = this._arrayImmagini[0][numImage];
		Preloader.onerror=(function(){alert('Errore nel caricamento dell\'immagine ' + Preloader.name);}).bind(this);

		Preloader.onload=(function(){
			this._loadCallback(Preloader);
			options.totalLoaded = this.totalLoaded;
			options._allLoaded = this._allLoaded();
			if(options.onComplete){
				options.onComplete(Preloader.complete);
			}
		}).bind(this);
		Preloader.src = this._arrayImmagini[1][numImage];
	},
	_loadCallback: function(ev){
		if (ev.complete || ev.readyState == 'complete') {
			this.totalWidth += ev.width;
			this.totalLoaded ++;
			$(ev.id).src = ev.src;
			return true;
		}else{
			return false;
		}
	},
	_allLoaded: function(){
		if (this.totalImages==this.totalLoaded) {
			return true;
		}else{
			return false;
		}
	}
});