var noobSlide=new Class
(
	{
		initialize:function(a)
		{
			this.items=a.items;
			this.mode=a.mode||'horizontal';
			this.modes={horizontal:['left','width'],vertical:['top','height']};
			this.size=a.size||980;
			this.box=a.box.setStyle(
				this.modes[this.mode][1],(this.size*this.items.length)+'px');
				this.button_event=a.button_event||'click';
				this.handle_event=a.handle_event||'click';
				this.onWalk=a.onWalk||null;
				this.currentIndex=null;
				this.previousIndex=null;
				this.nextIndex=null;
				this.interval=a.interval||5000;
				this.autoPlay=a.autoPlay||true;
				this._play=null;
				this.handles=a.handles||null;
				if(this.handles)
				{
					this.addHandleButtons(this.handles)
				}
				this.buttons={previous:[],next:[],play:[],playback:[],stop:[]};
				if(a.addButtons)
				{
					for(var b in a.addButtons)
					{
						this.addActionButtons(b,$type(a.addButtons[b])=='array'?a.addButtons[b]:[a.addButtons[b]])
					}
				}
				this.fx=new Fx.Tween(
					this.box,
					$extend((a.fxOptions||{duration:500,wait:false}),
					{
						property:this.modes[this.mode][0]
					}));
				this.walk((a.startItem||0),true,true)},addHandleButtons:function(a)
				{
					for(var i=0;i<a.length;i++)
					{
						a[i].addEvent(this.handle_event,this.walk.bind(this,[i,true]))
					}
				},addActionButtons:function(a,b)
				{
					for(var i=0;i<b.length;i++)
					{
						switch(a){
							case'previous':
							b[i].addEvent(this.button_event,this.previous.bind(this,[true]));
							break;
							case'next':
							b[i].addEvent(this.button_event,this.next.bind(this,[true]));
							break;
							case'play':
							b[i].addEvent(this.button_event,this.play.bind(this,[this.interval,'next',false]));
							break;
							case'playback':
							b[i].addEvent(this.button_event,this.play.bind(this,[this.interval,'previous',false]));
							break;
							case'stop':
							b[i].addEvent(this.button_event,this.stop.bind(this));
							break
						}
						this.buttons[a].push(b[i])
					}
				},previous:function(a){
					this.walk((this.currentIndex>0?this.currentIndex-1:this.items.length-1),a)
				},next:function(a){
					this.walk((this.currentIndex<this.items.length-1?this.currentIndex+1:0),a)
				},play:function(a,b,c){
					this.stop();
					if(!c){
						this[b](false)
					}
					this._play=this[b].periodical(a,this,[false])
				},stop:function(){
					$clear(this._play)
				},walk:function(a,b,c){
					if(a!=this.currentIndex){
						this.currentIndex=a;
						this.previousIndex=this.currentIndex+(this.currentIndex>0?-1:this.items.length-1);
						this.nextIndex=this.currentIndex+(this.currentIndex<this.items.length-1?1:1-this.items.length);
						if(b){this.stop()}if(c){
							this.fx.cancel().set((this.size*-this.currentIndex)+'px')
						}
						else{
							this.fx.start(this.size*-this.currentIndex)
						}
						if(b&&this.autoPlay){
							this.play(this.interval,'next',true)
						}
						if(this.onWalk){
							this.onWalk((this.items[this.currentIndex]||null),(this.handles&&this.handles[this.currentIndex]?this.handles[this.currentIndex]:null))
						}
					}
				}
		}
	);