/* Copyright (C) 2016 Extend Studio SRL (www.cloud-press.net) Licensed under the terms of the GPL3 license. */ (function($) { function debounce(fn, delay) { var timer = null; return function() { var context = this, args = arguments; clearTimeout(timer); timer = setTimeout(function() { fn.apply(context, args); }, delay); }; } var shrinker = { "$initialElement": null, "$shrinkedElement": null, "$shrinkedWrapper": null, "canShrink": false, "speed": 100, "shrinkedElementShowed": false, "initializeShrinked": function() { shrinker.$initialElement = $('[data-cp-shrink="initial"]'); shrinker.$shrinkedElement = $('[data-cp-shrink="shrinked"]'); shrinker.$shrinkedWrapper = $("") if (!(shrinker.$initialElement.length && shrinker.$shrinkedElement.length)) { console.log('Nothing to shrink'); return true; } // $("body").smoothWheel(); shrinker.canShrink = true; if (shrinker.$shrinkedWrapper.length == 0) { shrinker.$shrinkedWrapper = $("
"); $('body').prepend(shrinker.$shrinkedWrapper); shrinker.$shrinkedWrapper.append(shrinker.$shrinkedElement); shrinker.$shrinkedElement.css({ 'margin-top': -1 * shrinker.$shrinkedElement.outerHeight() - 5, 'display': 'block' }) } }, "scroll": function() { if (!shrinker.canShrink) { return true; } var initialY = shrinker.$initialElement.outerHeight(); var shrinkedY = shrinker.$initialElement.outerHeight() + shrinker.$shrinkedElement.outerHeight(); var winY = window.scrollY ? window.scrollY : document.documentElement.scrollTop; if (winY > initialY) { if (shrinker.shrinkedElementShowed) { return; } shrinker.shrinkedElementShowed = true; shrinker.shrinkedElementMoveDown(); } else if (winY < shrinkedY) { if (!shrinker.shrinkedElementShowed) { return; } shrinker.shrinkedElementShowed = false; shrinker.shrinkedElementMoveUP(); } }, "shrinkedElementMoveDown": function() { shrinker.$shrinkedElement.stop(); shrinker.$shrinkedElement.animate({ "margin-top": "0px", }, shrinker.speed, function() { }); }, "shrinkedElementMoveUP": function() { shrinker.$shrinkedElement.stop(); shrinker.$shrinkedElement.animate({ "margin-top": (-1 * shrinker.$shrinkedElement.outerHeight() - 5) }, shrinker.speed / 10, function() { }); } } $(document).on("scroll", shrinker.scroll); $(document).on("resize", function() { }); jQuery(document).ready(function($) { setTimeout(shrinker.initializeShrinked, 500); }); })(jQuery)