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 || 690;

    if (a.box != null) {
        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 || false; 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':
                if (b[i] != null) {
                    b[i].addEvent(this.button_event, this.previous.bind(this, [true])); break;
                }
            case 'next': if (b[i] != null) { b[i].addEvent(this.button_event, this.next.bind(this, [true])); break; }
            case 'play': if (b[i] != null) { b[i].addEvent(this.button_event, this.play.bind(this, [this.interval, 'next', false])); break; }
            case 'playback': if (b[i] != null) { b[i].addEvent(this.button_event, this.play.bind(this, [this.interval, 'previous', false])); break; }
            case 'stop': if (b[i] != null) { 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)) } } }
});
