var noobSlide = new Class({
    initialize: function (a) {
    	
		//this.walkcount = a.walkcount;
	
	    if(a.showimgnum){
	    	this.showimgnum = a.showimgnum;
	    } else {
		    this.showimgnum = 1;
	    }	
    
    
        this.items = a.items;
        this.mode = a.mode || 'horizontal';
        this.modes = {
            horizontal: ['left', 'width'],
            vertical: ['top', 'height']
        };
        this.size = a.size || 240;
        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.interval = a.interval || 5000;
        this.buttons = {
            previous: [],
            next: [],
            play: [],
            playback: [],
            stop: []
        };
        if (a.buttons) {
            for (var b in a.buttons) {
                this.addActionButtons(b, $type(a.buttons[b]) == 'array' ? a.buttons[b] : [a.buttons[b]])
            }
        }
        this.handles = a.handles || null;
        if (this.handles) {
            this.addHandleButtons(this.handles)
        }
        this.fx = new Fx.Style(this.box, this.modes[this.mode][0], a.fxOptions || {
            duration: 500,
            wait: false
        });
        this.onWalk = a.onWalk || null;
        this.currentIndex = a.startItem || 0;
        this.previousIndex = null;
        this.nextIndex = null;
        this.autoPlay = a.autoPlay || false;
        this._auto = null;
        this.box.setStyle(this.modes[this.mode][0], (-this.currentIndex * this.size) + 'px');
        if (a.autoPlay) this.play(this.interval, 'next', true)
    }, previous: function (a) {
    
              	
       	if(this.showimgnum){
       	    	
       	    	var bla = this.currentIndex - this.showimgnum;
       	    		       	    
       			if(bla > this.items.length){
       				bla = 0;
       			}       	
       	    	    
       	    	// Prev blockieren, wenn Startposition eingenommen wurde   	    	
       	    	if(bla < 0){
       	    		bla = 0;
       	    	}
       	    	
       	    	
       	    	this.walk(bla, a)
       	    
       	    } else {
       	    
       	    	this.currentIndex += this.currentIndex > 0 ? -1 : this.items.length - 1;
       	        this.walk(null, a)	
       	
       	    }	
        	        
                
    }, next: function (a) {     
        
        
        if(this.showimgnum){
        	
        	var bla = this.currentIndex + this.showimgnum;
        	       	
    		if(bla > this.items.length){
    			bla = 0;
    		}       	
        	
        	this.walk(bla, a)
        
        } else {
        
        	this.currentIndex += this.currentIndex < this.items.length - 1 ? 1 : 1 - this.items.length;
	        this.walk(null, a)	
    
        }
        
       

               
        
    }, play: function (a, b, c) {
        this.stop();
        if (!c) {
            this[b](false)
        }
        this._auto = this[b].periodical(a, this, false)
    }, stop: function () {
        $clear(this._auto)
    }, walk: function (a, b) {
        if ($defined(a)) {
            if (a == this.currentIndex) return;
            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()
        }
        this.fx.start(-this.currentIndex * this.size);
        if (this.onWalk) {
            this.onWalk(this.items[this.currentIndex], (this.handles ? this.handles[this.currentIndex] : null))
        }
        if (b && this.autoPlay) {
            this.play(this.interval, 'next', 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])
        }
    }
});
