var NewsTicker = new Class({
	Implements: [Options],

	options: {
		ticker_ul: 'newsticker',
		duration: 500,
		delay: 5000,
		transition: Fx.Transitions.Quad.easeIn,
		direction:'vertical',
		onComplete: Class.empty,
		onStart: Class.empty
	},
	
	initialize: function(el,options) {
		this.setOptions(options);
		this.el = $(el);
		this.items = this.el.getElements('li');
		var w = 0;
		var h = 0;
		
		if (this.options.direction == 'vertical') {
			w = this.el.getWidth();
			this.items.each(function(li, index) {
				h += li.getSize().y;
			});
		} else if (this.options.direction == 'horizontal') {
			h = this.el.getWidth();
			this.items.each(function(li, index) {
				w += li.getSize().x;
			});
		}
		
		this.el.setStyles({
			position: 'absolute',
			top: 0,
			left: 0,
			width: w,
			height: h
		});
		
		this.fx = new Fx.Morph(this.el, {
			transition: this.options.transition,
			duration: this.options.duration,
			onComplete: function(){
				var i = (this.current == 0) ? this.items.length : this.current;
				this.items[i-1].injectInside(this.el);
				this.el.setStyles({
					left: 0,
					top: 0
				});
			}.bind(this)
		});
		
		this.current = 0;
		this.next();
	},
	
	next: function() {
		this.current++;
		if (this.current >= this.items.length) {
			this.current = 0;
		}
		var pos = this.items[this.current];
		this.fx.start({
		    top: -pos.offsetTop,
		    left: -pos.offsetLeft
		});
		this.next.bind(this).delay(this.options.delay + this.options.speed);
	}
});

