;(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(){} }; })(); })();