(function($) { Drupal.behaviors.moduleFilterDynamicPosition = { attach: function(context) { var $window = $(window); $('#module-filter-wrapper', context).once('dynamic-position', function() { // Move the submit button just below the tabs. $('#module-filter-tabs').append($('#module-filter-submit')); var positionSubmit = function() { var $tabs = $('#module-filter-tabs'); var $submit = $('#module-filter-submit', $tabs); // Vertical movement. var bottom = $tabs.offset().top + $tabs.outerHeight(); if ($submit.hasClass('fixed-bottom')) { bottom += $submit.height(); } if (bottom >= $window.height() + $window.scrollTop()) { $submit.addClass('fixed fixed-bottom'); $tabs.css('padding-bottom', $submit.height()); } else { $submit.removeClass('fixed fixed-bottom'); $tabs.css('padding-bottom', 0); } // Horizontal movement. if ($submit.hasClass('fixed-bottom') || $submit.hasClass('fixed-top')) { var left = $tabs.offset().left - $window.scrollLeft(); if (left != $submit.offset().left - $window.scrollLeft()) { $submit.css('left', left); } } }; // Control the positioning. $window.scroll(positionSubmit); $window.resize(positionSubmit); var moduleFilter = $('input[name="module_filter[name]"]').data('moduleFilter'); moduleFilter.element.bind('moduleFilter:adjustHeight', positionSubmit); moduleFilter.adjustHeight(); }); } }; })(jQuery);