/* News Scroller
	Realizzato da: Barilari Massimo
	Descrizione: Scorre una lista (li) in un 'ul' con overflow = 'hidden' con velocità e tempi impostati
	Usare: var News = new NewsScroller('id_list', { speed:1500, delay:5000 });
	Da fare: Implementare la possibilità di decidere se lo scroll è verticale o orizzontale
*/

var NewsScroller = new Class({
	Implements: Options,
	options: {
		speed: 1500, // Transition Speed
		delay: 5000 // Transition delay
	},
	initialize: function(el, options){
		this.setOptions(options); // Setta le opzioni
		this.el = $(el); // salva l'elemento dato
		var ScrollEffect = new Fx.Scroll(this.el, { duration: this.options.speed }); // Sistemo l'effetto
		var ActualScroll = 0;
		var ScrollSize = this.el.getStyle('height').toInt();
		var NEltoScroll = this.el.getElements('li').length;
		var MaxScrollLimit = NEltoScroll * ScrollSize;
		
		var ScrollFunc = function(){
			ActualScroll = ActualScroll + ScrollSize;
			if (ActualScroll >= MaxScrollLimit) {
				ActualScroll = 0;
//				ScrollEffect.set('duration', 0);
			} else if (ActualScroll == 0) {
				ScrollEffect.set('duration', this.options.speed);
			}
			this.x = 0;
			this.y = ActualScroll;
			ScrollEffect.start(this.x, this.y);
		}
		
		var FxTimer = ScrollFunc.periodical(this.options.delay);
		
		this.el.addEvent('mouseenter', function(){
			FxTimer = $clear(FxTimer);
		});
		var delay = this.options.delay; // Internet explorer la vuole così.. O_o
		this.el.addEvent('mouseleave', function(){
			FxTimer = ScrollFunc.periodical(delay);
		});
	}
});