var Scroller = new Class({
	setOptions: function(options) {
		this.options = Object.extend({
			speed: 1000,
			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('li');
		this.button_event = options.button_event || 'click';
		this.btn_next = options.btn_next
		this.btn_prev = options.btn_prev
		
		
		/*
		this.itemPos = new Array();
		for(i=0; i < this.items.length; i++) {
			this.itemPos[i] = i;
		}
		
		this.itemHref = new Array();
		for(i=0; i < this.items.length; i++) {
			var el = this.items[i].getElementsByTagName("a")[0];
			this.itemHref[i] = el.href;
		}*/
		
		// Add click-events to the buttons
		if(this.items.length > 7) {
			this.btn_next.addEvent(this.button_event,this.scrollnext.bind(this,true));
			this.btn_prev.addEvent(this.button_event,this.scrollprev.bind(this,true));
		}
		
		var w = 0;
		var h = 0;
		if(this.options.direction.toLowerCase()=='horizontal') {
			h = this.el.getSize().size.y;
			this.items.each(function(li,index) {
				w += li.getSize().size.x;
			});
		} else {
			w = this.el.getSize().size.x;
			this.items.each(function(li,index) {
				h += li.getSize().size.y;
			});
		}
		
		if(this.items.length > 7) {
			this.el.setStyles({
				position: 'absolute',
				top: 0,
				left: 0,
				width: ''+w+'!important',
				height: h
				
			});
		} else {
			this.el.setStyles({
				position: 'absolute',
				top: 0,
				left: 0,
				width: ''+w+'!important',
				height: h
				
			});
		}
		
		this.fx_next = new Fx.Styles(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
			});
		}.bind(this)});
		
		this.fx_prev = new Fx.Styles(this.el,{duration:this.options.speed,onComplete:function() {
			//var i = (this.current==this.items.length)?0:this.current;
			var i = (this.current==0)?this.items.length:this.current;
			this.items[i-1].injectTop(this.el);
			
			this.el.setStyles({
				left:0,
				top:0
			});
		}.bind(this)});
		
		
		
		
		//this.setLinks();
		
		
		this.current = 0;
		
	},
	/*
	setLinks: function() {
	
		
		for(i=0; i < this.items.length; i++) {
			var el = this.items[i].getElementsByTagName("a")[0];
			el.href = this.itemHref[i] + "scrollpos="+this.itemPos[i];
		}
	},
	
	calcnextpos: function() {
		for(i=0; i < this.items.length; i++) {
			var pos = this.itemPos[i];
			if(pos <= 0) {
				pos = this.items.length -1;
			} else {
				pos--;
			}
			
			
			this.itemPos[i] = pos;
			
			
			var el = this.items[i].getElementsByTagName("a")[0];
			el.href = this.itemHref[i] + "scrollpos="+this.itemPos[i];
		}
	},
	
	calcprevpos: function() {
		for(i=0; i < this.items.length; i++) {
			var pos = this.itemPos[i];
			if(pos >= this.items.length) {
				pos = 0;
			} else {
				pos++;
			}
			
			
			this.itemPos[i] = pos;
			
			
			var el = this.items[i].getElementsByTagName("a")[0];
			el.href = this.itemHref[i] + "&scrollpos="+this.itemPos[i];
		}
		
	},
	*/
	
	
	scrollnext: function() {
		
		this.current++;
		if (this.current >= this.items.length) this.current = 0;
		
		this.fx_next.start({
			//top: -pos.offsetTop,
			left: -85
		});
		//this.calcnextpos();
		
		
		//this.nexxt.bind(this).delay(this.options.delay+this.options.speed);
		//return false;
	},
	
	scrollprev: function() {
		
		this.current--;
		if (this.current <= 0) this.current = this.items.length;
		
		this.fx_prev.start({
			//top: +pos.offsetTop,
			left: +85
		});
		
		//this.calcprevpos();
		
		//this.nexxt.bind(this).delay(this.options.delay+this.options.speed);
		//return false;
	}
});