Subversion-Projekte lars-tiefland.ci

Revision

Revision 47 | Blame | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

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