Team:Zamorano/js/jquery.fancybox-buttons.js

From 2014.igem.org

Revision as of 23:24, 17 October 2014 by Meflather (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
/*!
* 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  : '
  • <a class="btnPrev" title="Previous" href="javascript:;"></a>
  • <a class="btnPlay" title="Start slideshow" href="javascript:;"></a>
  • <a class="btnNext" title="Next" href="javascript:;"></a>
  • <a class="btnToggle" title="Toggle size" href="javascript:;"></a>
  • <a class="btnClose" title="Close" href="javascript:;"></a>
'

},

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));