HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/tandartsmaas.komma.pro/wwwroot/js/app/modules/submenu.js
define('modules/submenu',[],function()
{
    return {
        initialize: function()
        {
            if($('#submenu').size())
            {
                var t = this;

                t.center();

                $(document).scroll(function()
                {
                    t.center();
                });

                $(window).resize(function()
                {
                    t.center();
                })
            }
        },
        center: function()
        {
            // Properties
            var paddingTop = 60;
            var paddingBottom = 60;

            var $scroll = $('html, body');
            var scrollTop = $scroll.scrollTop();

            var $window = $(window);
            var windowHeight = $window.height();
            var windowBottom = scrollTop + windowHeight;

            var $submenu = $('#submenu');
            var submenuHeight = $submenu.height();
            var submenuTop = $submenu.offset().top;
            var submenuBottom = submenuTop + submenuHeight;

            var $submenuList = $('#submenuList');
            var submenuListHeight = $submenuList.height();

            // Define viewport height
            var viewportHeight;
            if(windowBottom < submenuBottom)
            {
                viewportHeight = windowHeight - (submenuTop - scrollTop);
                if(windowHeight < viewportHeight) viewportHeight = windowHeight;
            }
            else
            {
                viewportHeight = submenuBottom - scrollTop;
            }

            if(submenuHeight < windowHeight && windowBottom > submenuBottom) viewportHeight = submenuHeight;

            // Calculate center of viewport
            var centerPositionTop = (viewportHeight - submenuListHeight)  / 2;
            var correction = scrollTop - submenuTop;
            if( correction > 0 ) centerPositionTop = centerPositionTop + correction;

            // Min and max top
            if(centerPositionTop < paddingTop) centerPositionTop = paddingTop;
            var maxPositionTop = submenuHeight - submenuListHeight - paddingBottom;
            if(centerPositionTop > maxPositionTop) centerPositionTop = maxPositionTop;

            $submenuList.css({ top: centerPositionTop+'px' });
        }
    }
});