var mytimer = null;
var Ticker = new Class({

	setOptions: function(options) {
		this.options = Object.extend({
		speed: options.speed || 1500,
		delay: options.delay || 5000,
		direction: 'vertical',
		onComplete: Class.empty,
		onStart: Class.empty
		}, options || {});
	},
	
	initialize: function(el,options){
		this.setOptions(options);
		this.el = $(el);
		this.items = this.el.getElements('.article');
		var w = 0;
		var h = 0;
		if(this.options.direction.toLowerCase()=='horizontal') {
			h = this.el.getSize().y;
			this.items.each(function(li,index) {
				w += li.getSize().x;
			});
		} else {
			w = this.el.getSize().x;
			this.items.each(function(li,index) {
				h += li.getSize().y;
			});
		}
		this.el.setStyles({
			position: 'absolute',
			top: 0,
			left: 0,
			width: w,
			height: h
		});
		this.fx = new Fx.Morph(this.el,{
				duration:this.options.speed,
				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
					});
					this.options.busy = 0;
				}.bind(this),
				onStart: function() {
					this.options.busy = 1;
				}.bind(this)
		});
		
		this.fx1 = new Fx.Morph(this.el,{
				duration:this.options.speed,
				onComplete:function() {
					this.items[this.current].inject(this.items[(this.current+1==this.items.length)?0:this.current+1],'before');
					this.el.setStyles({
						left:0,
						top:0
					});
					this.options.busy = 0;
				}.bind(this),
				onStart: function() {
					this.options.busy = 1;
				}.bind(this)
		});
		
		this.current = 0;
		this.next();
	},
	next: function() {
		if (this.options.busy == 1) return;
		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);
		//In the next function, set the mytimer var to the delay timer.
		mytimer = this.next.bind(this).delay(this.options.delay+this.options.speed);
	},
	
	// ADD PREVIOUS BUTTON
	prev: function() {
		if (this.options.busy == 1) return;
		this.current--;
		if (this.current < 0) this.current = this.items.length-1;
		var i = this.current;
		var j = (this.current-1<0)?this.items.length-1:this.current-1;
		var pos = this.items[i];
		var pos1 = this.items[j];
		this.fx1.start({
			top: 0,
			left: pos.offsetLeft-pos1.offsetLeft
		});
		this.options.busy = 0;
		mytimer = this.prev.bind(this).delay(this.options.delay+this.options.speed);
	},
	
	
	pause: function() {
		$clear(mytimer);
			mytimer = null;
		},
		resume: function() {
			if (mytimer == null) {
			this.next();
	}
}

});