| Index: fancybox/source/helpers/jquery.fancybox-buttons.js |
| =================================================================== |
| new file mode 100755 |
| --- /dev/null |
| +++ b/fancybox/source/helpers/jquery.fancybox-buttons.js |
| @@ -0,0 +1,121 @@ |
| + /*! |
| + * Buttons helper for fancyBox |
| + * version: 1.0.5 (Mon, 15 Oct 2012) |
| + * @requires fancyBox v2.0 or later |
| + * |
| + * Usage: |
| + * $(".fancybox").fancybox({ |
| + * helpers : { |
| + * buttons: { |
| + * position : 'top' |
| + * } |
| + * } |
| + * }); |
| + * |
| + */ |
| +(function ($) { |
| + //Shortcut for fancyBox object |
| + var F = $.fancybox; |
| + |
| + //Add helper object |
| + F.helpers.buttons = { |
| + defaults : { |
| + skipSingle : false, // disables if gallery contains single image |
| + position : 'top', // 'top' or 'bottom' |
| + tpl : '<div id="fancybox-buttons"><ul><li><a class="btnPrev" title="Previous" href="javascript:;"></a></li><li><a class="btnPlay" title="Start slideshow" href="javascript:;"></a></li><li><a class="btnNext" title="Next" href="javascript:;"></a></li><li><a class="btnToggle" title="Toggle size" href="javascript:;"></a></li><li><a class="btnClose" title="Close" href="javascript:jQuery.fancybox.close();"></a></li></ul></div>' |
| + }, |
| + |
| + list : null, |
| + buttons: null, |
| + |
| + beforeLoad: function (opts, obj) { |
| + //Remove self if gallery do not have at least two items |
| + |
| + if (opts.skipSingle && obj.group.length < 2) { |
| + obj.helpers.buttons = false; |
| + obj.closeBtn = true; |
| + |
| + return; |
| + } |
| + |
| + //Increase top margin to give space for buttons |
| + obj.margin[ opts.position === 'bottom' ? 2 : 0 ] += 30; |
| + }, |
| + |
| + onPlayStart: function () { |
| + if (this.buttons) { |
| + this.buttons.play.attr('title', 'Pause slideshow').addClass('btnPlayOn'); |
| + } |
| + }, |
| + |
| + onPlayEnd: function () { |
| + if (this.buttons) { |
| + this.buttons.play.attr('title', 'Start slideshow').removeClass('btnPlayOn'); |
| + } |
| + }, |
| + |
| + afterShow: function (opts, obj) { |
| + var buttons = this.buttons; |
| + |
| + if (!buttons) { |
| + this.list = $(opts.tpl).addClass(opts.position).appendTo('body'); |
| + |
| + buttons = { |
| + prev : this.list.find('.btnPrev').click( F.prev ), |
| + next : this.list.find('.btnNext').click( F.next ), |
| + play : this.list.find('.btnPlay').click( F.play ), |
| + toggle : this.list.find('.btnToggle').click( F.toggle ) |
| + } |
| + } |
| + |
| + //Prev |
| + if (obj.index > 0 || obj.loop) { |
| + buttons.prev.removeClass('btnDisabled'); |
| + } else { |
| + buttons.prev.addClass('btnDisabled'); |
| + } |
| + |
| + //Next / Play |
| + if (obj.loop || obj.index < obj.group.length - 1) { |
| + buttons.next.removeClass('btnDisabled'); |
| + buttons.play.removeClass('btnDisabled'); |
| + |
| + } else { |
| + buttons.next.addClass('btnDisabled'); |
| + buttons.play.addClass('btnDisabled'); |
| + } |
| + |
| + this.buttons = buttons; |
| + |
| + this.onUpdate(opts, obj); |
| + }, |
| + |
| + onUpdate: function (opts, obj) { |
| + var toggle; |
| + |
| + if (!this.buttons) { |
| + return; |
| + } |
| + |
| + toggle = this.buttons.toggle.removeClass('btnDisabled btnToggleOn'); |
| + |
| + //Size toggle button |
| + if (obj.canShrink) { |
| + toggle.addClass('btnToggleOn'); |
| + |
| + } else if (!obj.canExpand) { |
| + toggle.addClass('btnDisabled'); |
| + } |
| + }, |
| + |
| + beforeClose: function () { |
| + if (this.list) { |
| + this.list.remove(); |
| + } |
| + |
| + this.list = null; |
| + this.buttons = null; |
| + } |
| + }; |
| + |
| +}(jQuery)); |