| /*! |
| * 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:;"></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 ), |
| close : this.list.find('.btnClose').click( F.close ) |
| } |
| } |
| |
| //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)); |