$(function() { var $window , $control , $header , $footer , headerEnd , footerHeight var hideWhileLoading = function() { $control = $('#pageup a'); $control.hide(); } var init = function() { $header = $('header'); $footer = $('footer'); footerHeight = $footer.height(); headerEnd = $header.offset().top + $header.height(); $window = $(window); $window.on('scroll resize', toggleControl); toggleControl(); } var toggleControl = function() { var scrollTop = $window.scrollTop() , scrollVisible = scrollTop + $window.height() , footerStart = $footer.offset().top if (scrollTop > headerEnd && !$control.is(':visible')) { $control.stop(true,true).fadeIn('fast'); } else if (scrollTop < headerEnd && $control.is(':visible')) { $control.stop(true,true).fadeOut('fast'); } $control.parent().css('bottom', (scrollVisible > footerStart) ? (scrollVisible - footerStart) + 'px' : '0'); } $(hideWhileLoading); $(window).on('load', init); });