XoopsModules25x/smallworld

View on GitHub
assets/js/gallery_mod.js

Summary

Maintainability
A
0 mins
Test Coverage
jQuery(document).ready(function (xoops_smallworld) {
    // We only want these styles applied when javascript is enabled
    xoops_smallworld('div.content').css('display', 'block');

    // Initially set opacity on thumbs and add
    // additional styling for hover effect on thumbs
    var onMouseOutOpacity = 0.67;
    xoops_smallworld('#thumbs ul.thumbs li, div.navigation a.pageLink').opacityrollover({
        mouseOutOpacity: onMouseOutOpacity,
        mouseOverOpacity: 1.0,
        fadeSpeed: 'fast',
        exemptionSelector: '.selected'
    });

    // Initialize Advanced Galleriffic Gallery
    var gallery = xoops_smallworld('#thumbs').galleriffic({
        delay: 2500,
        numThumbs: 6,
        preloadAhead: 6,
        enableTopPager: false,
        enableBottomPager: false,
        imageContainerSel: '#slideshow',
        controlsContainerSel: '#controls',
        captionContainerSel: '#caption',
        loadingContainerSel: '#loading',
        renderSSControls: true,
        renderNavControls: true,
        playLinkText: SmallworldPhotoPlaySlideshow,
        pauseLinkText: SmallworldPhotoPauseSlideshow,
        prevLinkText: SmallworldPhotoPrevPhoto,
        nextLinkText: SmallworldPhotoNextPhoto,
        nextPageLinkText: SmallworldPhotoNextLink,
        prevPageLinkText: SmallworldPhotoPrevLink,
        enableHistory: true,
        autoStart: false,
        syncTransitions: true,
        defaultTransitionDuration: 900,
        onSlideChange: function (prevIndex, nextIndex) {
            // 'this' refers to the gallery, which is an extension of xoops_smallworld('#thumbs')
            this.find('ul.thumbs').children()
                .eq(prevIndex).fadeTo('fast', onMouseOutOpacity).end()
                .eq(nextIndex).fadeTo('fast', 1.0);

            // Update the photo index display
            this.xoops_smallworldcaptionContainer.find('div.photo-index')
                .html('Photo ' + (nextIndex + 1) + ' of ' + this.data.length);
        },
        onPageTransitionOut: function (callback) {
            this.fadeTo('fast', 0.0, callback);
        },
        onPageTransitionIn: function () {
            var prevPageLink = this.find('a.prev').css('visibility', 'hidden');
            var nextPageLink = this.find('a.next').css('visibility', 'hidden');

            // Show appropriate next / prev page links
            if (this.displayedPage > 0)
                prevPageLink.css('visibility', 'visible');

            var lastPage = this.getNumPages() - 1;
            if (this.displayedPage < lastPage)
                nextPageLink.css('visibility', 'visible');

            this.fadeTo('fast', 1.0);
        }
    });

    /**************** Event handlers for custom next / prev page links **********************/

    gallery.find('a.prev').click(function (e) {
        gallery.previousPage();
        e.preventDefault();
    });

    gallery.find('a.next').click(function (e) {
        gallery.nextPage();
        e.preventDefault();
    });

    /****************************************************************************************/

    /**** Functions to support integration of galleriffic with the jquery.history plugin ****/

    // PageLoad function
    // This function is called when:
    // 1. after calling xoops_smallworld.historyInit();
    // 2. after calling xoops_smallworld.historyLoad();
    // 3. after pushing "Go Back" button of a browser
    function pageload(hash) {
        // alert("pageload: " + hash);
        // hash doesn't contain the first # character.
        if (hash) {
            xoops_smallworld.galleriffic.gotoImage(hash);
        } else {
            gallery.gotoIndex(0);
        }
    }

    // Initialize history plugin.
    // The callback is called at once by present location.hash.
    xoops_smallworld.historyInit(pageload, "advanced.html");

    // set onlick event for buttons using the jQuery 1.7 on method
    xoops_smallworld("a[rel='history']").on('click', function (e) {
        if (e.button != 0) return true;

        var hash = this.href;
        hash = hash.replace(/^.*#/, '');

        // moves to a new page.
        // pageload is called at once.
        // hash don't contain "#", "?"
        xoops_smallworld.historyLoad(hash);

        return false;
    });

    /****************************************************************************************/
});