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 || 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) { this.currentIndex += this.currentIndex > 0 ? -1 : this.items.length - 1; this.walk(null, a) }, next: function(a) { 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]) } } });