/**
 * Płynnie zmienia zawartość elementu o id równym "id" ze starej zawartości na nową
 * o wartości "html". Opcjonalnie możliwość ustawienia szybkości zmiany zawartości "duration" [ms].
 * 
 * Wymagana biblioteka mootools.js 
 * 
 * @param {int} id
 * @param {sting} html
 * @param {int} duration
 */
function slowlyChangeHtml(id, html, duration) {
	
	defaultDuration = 250;
	duration = !$defined(duration) ? defaultDuration : duration;
	
	$(id).set('tween', {
		onComplete: function() {
			$(id).set('html', html);
			$(id).tween('opacity', 1);	
		},
		duration: duration,
		link: 'chain'
	});
	
	$(id).tween('opacity', 0);
}


var myScroller1 = {
	init: function(settings) {
		this.windowID = settings.windowID;
		this.tapeID = settings.tapeID;
		this.prevArrowID = $defined(settings.prevArrowID) ? settings.prevArrowID : '';
		this.nextArrowID = $defined(settings.nextArrowID) ? settings.nextArrowID : '';
		
		this.itemsName = settings.itemsName;
		this.itemsSelector = settings.itemsSelector;
		this.step = $defined(settings.step) ? settings.step : 1;
		this.actItem = 0; 
		
		if($defined(this.itemsName)) {
			this.itemsArr = $(this.tapeID).getElements('[name=' + this.itemsName + ']');
		}else if($defined(this.itemsSelector)) {
			this.itemsArr = $$(itemsSelector);
		}
		
		this.idArr = new Array();
		
		var i;
		for(i = 0; i < this.itemsArr.length; i++) {
			this.idArr.push(this.itemsArr[i].id);
		}
		
		this.fx = new Fx.Scroll(this.windowID, {
			duration: 500,
			link: 'chain'
		});
		
		$(this.prevArrowID).addEvent('click', this.goPrev.pass(this));
		
		$(this.nextArrowID).addEvent('click', this.goNext.pass(this));
	},
	
	goPrev: function (ptr) {
		ptr.actItem -= ptr.step;
		if(ptr.actItem < 0) {
			ptr.actItem = ptr.itemsArr.length - (ptr.itemsArr.length % ptr.step);
		}
		ptr.fx.toElement(ptr.idArr[ptr.actItem]);
	},
	
	goNext: function (ptr) {
		ptr.actItem += ptr.step;
		if(ptr.actItem >= ptr.itemsArr.length) {
			ptr.actItem = 0;
		}
		ptr.fx.toElement(ptr.idArr[ptr.actItem]);	
	}
};


var myScroller2 = {
		init: function(settings) {
			this.windowID = settings.windowID;
			this.tapeID = settings.tapeID;
			this.prevArrowID = $defined(settings.prevArrowID) ? settings.prevArrowID : '';
			this.nextArrowID = $defined(settings.nextArrowID) ? settings.nextArrowID : '';
			
			this.itemsName = settings.itemsName;
			this.itemsSelector = settings.itemsSelector;
			this.step = $defined(settings.step) ? settings.step : 1;
			this.actItem = 0; 
			
			if($defined(this.itemsName)) {
				this.itemsArr = $(this.tapeID).getElements('[name=' + this.itemsName + ']');
			}else if($defined(this.itemsSelector)) {
				this.itemsArr = $$(itemsSelector);
			}
			
			this.idArr = new Array();
			
			var i;
			for(i = 0; i < this.itemsArr.length; i++) {
				this.idArr.push(this.itemsArr[i].id);
			}
			
			this.fx = new Fx.Scroll(this.windowID, {
				duration: 500,
				link: 'chain'
			});
			
			$(this.prevArrowID).addEvent('click', this.goPrev.pass(this));
			
			$(this.nextArrowID).addEvent('click', this.goNext.pass(this));
		},
		
		goPrev: function (ptr) {
			ptr.actItem -= ptr.step;
			if(ptr.actItem < 0) {
				ptr.actItem = ptr.itemsArr.length - (ptr.itemsArr.length % ptr.step);
			}
			ptr.fx.toElement(ptr.idArr[ptr.actItem]);
		},
		
		goNext: function (ptr) {
			ptr.actItem += ptr.step;
			if(ptr.actItem >= ptr.itemsArr.length) {
				ptr.actItem = 0;
			}
			ptr.fx.toElement(ptr.idArr[ptr.actItem]);	
		}
	};
var myScroller3 = {
		init: function(settings) {
			this.windowID = settings.windowID;
			this.tapeID = settings.tapeID;
			this.prevArrowID = $defined(settings.prevArrowID) ? settings.prevArrowID : '';
			this.nextArrowID = $defined(settings.nextArrowID) ? settings.nextArrowID : '';
			
			this.itemsName = settings.itemsName;
			this.itemsSelector = settings.itemsSelector;
			this.step = $defined(settings.step) ? settings.step : 1;
			this.actItem = 0; 
			
			if($defined(this.itemsName)) {
				this.itemsArr = $(this.tapeID).getElements('[name=' + this.itemsName + ']');
			}else if($defined(this.itemsSelector)) {
				this.itemsArr = $$(itemsSelector);
			}
			
			this.idArr = new Array();
			
			var i;
			for(i = 0; i < this.itemsArr.length; i++) {
				this.idArr.push(this.itemsArr[i].id);
			}
			
			this.fx = new Fx.Scroll(this.windowID, {
				duration: 500,
				link: 'chain'
			});
			
			$(this.prevArrowID).addEvent('click', this.goPrev.pass(this));
			
			$(this.nextArrowID).addEvent('click', this.goNext.pass(this));
		},
		
		goPrev: function (ptr) {
			ptr.actItem -= ptr.step;
			if(ptr.actItem < 0) {
				ptr.actItem = ptr.itemsArr.length - (ptr.itemsArr.length % ptr.step);
			}
			ptr.fx.toElement(ptr.idArr[ptr.actItem]);
		},
		
		goNext: function (ptr) {
			ptr.actItem += ptr.step;
			if(ptr.actItem >= ptr.itemsArr.length) {
				ptr.actItem = 0;
			}
			ptr.fx.toElement(ptr.idArr[ptr.actItem]);	
		}
	};








