PHP Classes

File: htdocs/modules/system/themes/transition/js/tabs.slideshow.js

Recommend this page to a friend!
  Classes of Michael Beck   Xoops 2.5   htdocs/modules/system/themes/transition/js/tabs.slideshow.js   Download  
File: htdocs/modules/system/themes/transition/js/tabs.slideshow.js
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: Xoops 2.5
Modular content management publication system
Author: By
Last change:
Date: 7 years ago
Size: 3,669 bytes
 

Contents

Class file image Download
/** * @license * jQuery Tools @VERSION Slideshow - Extend it. * * NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE. * * http://flowplayer.org/tools/tabs/slideshow.html * * Since: September 2009 * Date: @DATE */ (function($) { var tool; tool = $.tools.tabs.slideshow = { conf: { next: '.forward', prev: '.backward', disabledClass: 'disabled', autoplay: false, autopause: true, interval: 3000, clickable: true, api: false } }; function Slideshow(root, conf) { var self = this, fire = root.add(this), tabs = root.data("tabs"), timer, stopped = true; // next / prev buttons function find(query) { var el = $(query); return el.length < 2 ? el : root.parent().find(query); } var nextButton = find(conf.next).click(function() { tabs.next(); }); var prevButton = find(conf.prev).click(function() { tabs.prev(); }); /** * * Similar fix for autoscroll animation queue problem */ function next(){ timer = setTimeout(function(){ tabs.next(); }, conf.interval); } // extend the Tabs API with slideshow methods $.extend(self, { // return tabs API getTabs: function() { return tabs; }, getConf: function() { return conf; }, play: function() { // do not start additional timer if already exists if (timer) { return self; } // onBeforePlay var e = $.Event("onBeforePlay"); fire.trigger(e); if (e.isDefaultPrevented()) { return self; } stopped = false; // onPlay fire.trigger("onPlay"); fire.on('onClick', next); next(); return self; }, pause: function() { if (!timer) { return self; } // onBeforePause var e = $.Event("onBeforePause"); fire.trigger(e); if (e.isDefaultPrevented()) { return self; } timer = clearTimeout(timer); // onPause fire.trigger("onPause"); fire.off('onClick', next); return self; }, // resume playing if not stopped resume: function() { stopped || self.play(); }, // when stopped - mouseover won't restart stop: function() { self.pause(); stopped = true; } }); // callbacks $.each("onBeforePlay,onPlay,onBeforePause,onPause".split(","), function(i, name) { // configuration if ($.isFunction(conf[name])) { $(self).on(name, conf[name]); } // API methods self[name] = function(fn) { return $(self).on(name, fn); }; }); /* when mouse enters, slideshow stops */ if (conf.autopause) { tabs.getTabs().add(nextButton).add(prevButton).add(tabs.getPanes()).hover(self.pause, self.resume); } if (conf.autoplay) { self.play(); } if (conf.clickable) { tabs.getPanes().click(function() { tabs.next(); }); } // manage disabling of next/prev buttons if (!tabs.getConf().rotate) { var disabled = conf.disabledClass; if (!tabs.getIndex()) { prevButton.addClass(disabled); } tabs.onBeforeClick(function(e, i) { prevButton.toggleClass(disabled, !i); nextButton.toggleClass(disabled, i == tabs.getTabs().length -1); }); } } // jQuery plugin implementation $.fn.slideshow = function(conf) { // return existing instance var el = this.data("slideshow"); if (el) { return el; } conf = $.extend({}, tool.conf, conf); this.each(function() { el = new Slideshow($(this), conf); $(this).data("slideshow", el); }); return conf.api ? el : this; }; })(jQuery);