|  /*! | |
|  * 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));
 |