/*! * Buttons helper for fancyBox * version: 1.0.2 * @requires fancyBox v2.0 or later * * Usage: * $(".fancybox").fancybox({ * buttons: { * position : 'top' * } * }); * * Options: * tpl - HTML template * position - 'top' or 'bottom' * */ (function ($) { //Shortcut for fancyBox object var F = $.fancybox; //Add helper object F.helpers.buttons = { tpl: '
', list: null, buttons: {}, update: function () { var toggle = this.buttons.toggle.removeClass('btnDisabled btnToggleOn'); //Size toggle button if (F.current.canShrink) { toggle.addClass('btnToggleOn'); } else if (!F.current.canExpand) { toggle.addClass('btnDisabled'); } }, beforeLoad: function (opts) { //Remove self if gallery do not have at least two items if (F.group.length < 2) { F.coming.helpers.buttons = false; F.coming.closeBtn = true; return; } //Increase top margin to give space for buttons F.coming.margin[ opts.position === 'bottom' ? 2 : 0 ] += 30; }, onPlayStart: function () { if (this.list) { this.buttons.play.attr('title', 'Pause slideshow').addClass('btnPlayOn'); } }, onPlayEnd: function () { if (this.list) { this.buttons.play.attr('title', 'Start slideshow').removeClass('btnPlayOn'); } }, afterShow: function (opts) { var buttons; if (!this.list) { this.list = $(opts.tpl || this.tpl).addClass(opts.position || 'top').appendTo('body'); this.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 ) } } buttons = this.buttons; //Prev if (F.current.index > 0 || F.current.loop) { buttons.prev.removeClass('btnDisabled'); } else { buttons.prev.addClass('btnDisabled'); } //Next / Play if (F.current.loop || F.current.index < F.group.length - 1) { buttons.next.removeClass('btnDisabled'); buttons.play.removeClass('btnDisabled'); } else { buttons.next.addClass('btnDisabled'); buttons.play.addClass('btnDisabled'); } this.update(); }, onUpdate: function () { this.update(); }, beforeClose: function () { if (this.list) { this.list.remove(); } this.list = null; this.buttons = {}; } }; }(jQuery));