vendor: 3,041 bytes, lines 1-122
1 /*! 2 * Buttons helper for fancyBox 3 * version: 1.0.5 (Mon, 15 Oct 2012) 4 * @requires fancyBox v2.0 or later 5 * 6 * Usage: 7 * $(".fancybox").fancybox({ 8 * helpers : { 9 * buttons: { 10 * position : 'top' 11 * } 12 * } 13 * }); 14 * 15 */ 16(function ($) { 17 //Shortcut for fancyBox object 18 var F = $.fancybox; 19 20 //Add helper object 21 F.helpers.buttons = { 22 defaults : { 23 skipSingle : false, // disables if gallery contains single image 24 position : 'top', // 'top' or 'bottom' 25 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>' 26 }, 27 28 list : null, 29 buttons: null, 30 31 beforeLoad: function (opts, obj) { 32 //Remove self if gallery do not have at least two items 33 34 if (opts.skipSingle && obj.group.length < 2) { 35 obj.helpers.buttons = false; 36 obj.closeBtn = true; 37 38 return; 39 } 40 41 //Increase top margin to give space for buttons 42 obj.margin[ opts.position === 'bottom' ? 2 : 0 ] += 30; 43 }, 44 45 onPlayStart: function () { 46 if (this.buttons) { 47 this.buttons.play.attr('title', 'Pause slideshow').addClass('btnPlayOn'); 48 } 49 }, 50 51 onPlayEnd: function () { 52 if (this.buttons) { 53 this.buttons.play.attr('title', 'Start slideshow').removeClass('btnPlayOn'); 54 } 55 }, 56 57 afterShow: function (opts, obj) { 58 var buttons = this.buttons; 59 60 if (!buttons) { 61 this.list = $(opts.tpl).addClass(opts.position).appendTo('body'); 62 63 buttons = { 64 prev : this.list.find('.btnPrev').click( F.prev ), 65 next : this.list.find('.btnNext').click( F.next ), 66 play : this.list.find('.btnPlay').click( F.play ), 67 toggle : this.list.find('.btnToggle').click( F.toggle ), 68 close : this.list.find('.btnClose').click( F.close ) 69 } 70 } 71 72 //Prev 73 if (obj.index > 0 || obj.loop) { 74 buttons.prev.removeClass('btnDisabled'); 75 } else { 76 buttons.prev.addClass('btnDisabled'); 77 } 78 79 //Next / Play 80 if (obj.loop || obj.index < obj.group.length - 1) { 81 buttons.next.removeClass('btnDisabled'); 82 buttons.play.removeClass('btnDisabled'); 83 84 } else { 85 buttons.next.addClass('btnDisabled'); 86 buttons.play.addClass('btnDisabled'); 87 } 88 89 this.buttons = buttons; 90 91 this.onUpdate(opts, obj); 92 }, 93 94 onUpdate: function (opts, obj) { 95 var toggle; 96 97 if (!this.buttons) { 98 return; 99 } 100 101 toggle = this.buttons.toggle.removeClass('btnDisabled btnToggleOn'); 102 103 //Size toggle button 104 if (obj.canShrink) { 105 toggle.addClass('btnToggleOn'); 106 107 } else if (!obj.canExpand) { 108 toggle.addClass('btnDisabled'); 109 } 110 }, 111 112 beforeClose: function () { 113 if (this.list) { 114 this.list.remove(); 115 } 116 117 this.list = null; 118 this.buttons = null; 119 } 120 }; 121 122}(jQuery));
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.