Source: components/comics.js

;(function () {
    'use strict';

    /* global db */

    /**
     * Zoom comic strips
     * @namespace
     */
    db.libs.zoomComics = (function(){
        /**
         * Toggle zoom for all comics on page.
         * @public
         */
        var init = function(){
            var toggle = $(".comic-zoom-toggle").find("input");
            var comic = $("article.comic");

            if( toggle.length ){
                toggle.on("change", function( event ){
                    var clickedElement = this;
                    toggle.each(function( index, element ){
                        if( clickedElement !== element ){
                            $( element ).prop("checked", ! $( element ).prop("checked") );
                        }
                    });
                    if( comic.length ){
                        var oldOffset = $( clickedElement ).offset().top;
                        comic.toggleClass("zoom");
                        if( ! $( this ).hasClass("zoom") ){
                            comic.addClass("hint");
                        }
                        else {
                            comic.removeClass("hint");
                        }
                        // Adjust viewport so page doesent jump when zoom is activated.
                        var newOffset = $( clickedElement ).offset().top;
                        if( oldOffset != newOffset ){
                            $( window ).scrollTop( $( window ).scrollTop() + ( newOffset - oldOffset ) );
                        }
                    }
                });
            }

            if( comic.length ){
                comic.on("mousedown touchstart", function( event ){
                    if( $( this ).hasClass("zoom") && $( this ).hasClass("hint") ){
                        comic.removeClass("hint");
                    }
                });
            }
        };

        return {
            init: init,
            reflow: function(){}
        };

    })();
})();