/*! jCarousel - v0.3.0-rc.1 - 2013-11-13 * http://sorgalla.com/jcarousel * Copyright (c) 2013 Jan Sorgalla; Licensed MIT */ (function($) { 'use strict'; $.jCarousel.plugin('jcarouselControl', { _options: { target: '+=1', event: 'click', method: 'scroll' }, _active: null, _init: function() { this.onDestroy = $.proxy(function() { this._destroy(); this.carousel() .one('jcarousel:createend', $.proxy(this._create, this)); }, this); this.onReload = $.proxy(this._reload, this); this.onEvent = $.proxy(function(e) { e.preventDefault(); var method = this.options('method'); if ($.isFunction(method)) { method.call(this); } else { this.carousel() .jcarousel(this.options('method'), this.options('target')); } }, this); }, _create: function() { this.carousel() .one('jcarousel:destroy', this.onDestroy) .on('jcarousel:reloadend jcarousel:scrollend', this.onReload); this._element .on(this.options('event') + '.jcarouselcontrol', this.onEvent); this._reload(); }, _destroy: function() { this._element .off('.jcarouselcontrol', this.onEvent); this.carousel() .off('jcarousel:destroy', this.onDestroy) .off('jcarousel:reloadend jcarousel:scrollend', this.onReload); }, _reload: function() { var parsed = $.jCarousel.parseTarget(this.options('target')), carousel = this.carousel(), active; if (parsed.relative) { active = carousel .jcarousel(parsed.target > 0 ? 'hasNext' : 'hasPrev'); } else { var target = typeof parsed.target !== 'object' ? carousel.jcarousel('items').eq(parsed.target) : parsed.target; active = carousel.jcarousel('target').index(target) >= 0; } if (this._active !== active) { this._trigger(active ? 'active' : 'inactive'); this._active = active; } return this; } }); }(jQuery));