﻿/* Clientcide Copyright (c) 2006-2009, http://www.clientcide.com/wiki/cnet-libraries#license*/

//Contents: SimpleCarousel

//This lib: http://www.clientcide.com/js/build.php?excludeLibs[]=mootools-core&excludeLibs[]=mootools-more&require[]=SimpleCarousel&compression=jsmin


var SimpleCarousel = new Class({ Implements: [Options, Events], options: { slideInterval: 4000, transitionDuration: 700, startIndex: 0, buttonOnClass: "selected", buttonOffClass: "off", rotateAction: "none", rotateActionDuration: 100, autoplay: true }, initialize: function(container, slides, buttons, options) { this.container = document.id(container); var instance = this.container.retrieve('SimpleCarouselInstance'); if (instance) return instance; this.container.store('SimpleCarouselInstance', this); this.setOptions(options); this.container.addClass('hasCarousel'); this.slides = $$(slides); this.buttons = $$(buttons); this.createFx(); this.showSlide(this.options.startIndex); if (this.options.autoplay) this.autoplay(); if (this.options.rotateAction != 'none') this.setupAction(this.options.rotateAction); return this; }, toElement: function() { return this.container; }, setupAction: function(action) { this.buttons.each(function(el, idx) { document.id(el).addEvent(action, function() { this.slideFx.setOptions(this.slideFx.options, { duration: this.options.rotateActionDuration }); if (this.currentSlide != idx) this.showSlide(idx); this.stop(); } .bind(this)); }, this); }, createFx: function() { if (!this.slideFx) this.slideFx = new Fx.Elements(this.slides, { duration: this.options.transitionDuration }); this.slides.each(function(slide) { slide.setStyle('opacity', 0); }); }, showSlide: function(slideIndex) { var action = {}; this.slides.each(function(slide, index) { if (index == slideIndex && index != this.currentSlide) { if (document.id(this.buttons[index])) document.id(this.buttons[index]).swapClass(this.options.buttonOffClass, this.options.buttonOnClass); action[index.toString()] = { opacity: 1 }; } else { if (document.id(this.buttons[index])) document.id(this.buttons[index]).swapClass(this.options.buttonOnClass, this.options.buttonOffClass); action[index.toString()] = { opacity: 0 }; } }, this); this.fireEvent('onShowSlide', slideIndex); this.currentSlide = slideIndex; this.slideFx.start(action); return this; }, autoplay: function() { this.slideshowInt = this.rotate.periodical(this.options.slideInterval, this); this.fireEvent('onAutoPlay'); return this; }, stop: function() { $clear(this.slideshowInt); this.fireEvent('onStop'); return this; }, rotate: function() { var current = this.currentSlide; var next = (current + 1 >= this.slides.length) ? 0 : current + 1; this.showSlide(next); this.fireEvent('onRotate', next); return this; } });
