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/pvg.komma-mediadesign.nl/wwwroot/public/js/elevator.class.js
function Elevator()
{
    var t = this;

    var $el;
    var file = '../../app/js_update_elevator.php';

    // Init
    t.init = function()
    {
        // Build
        build();

        // Update elevator on every link click
        $('a.update').click(function(e)
        {
            var a = $(this);

            // Prevent default
            e.preventDefault();

            // Update Session
            updateSession($('#elevator_offset').html(), $(a).attr('href'));
        });
    };

    var build = function()
    {
        // new element
        $el = $('<div/>');
        $el.addClass('elevator');

        // add doors
        var doors = '<div class="door left"></div>';
        doors += '<div class="door right"></div>';
        $el.html(doors);

        // set top
        var $tracker = $('#elevator_offset');
        var floorTop;

        // If exists welcome holder, place the elevator outside viewport
        if($('#welcome_holder').length > 0)
        {
            floorTop = -100;
            $tracker.html(floorTop);
        }
        else if($tracker.html().replace(' ','') == '')
        {
            floorTop = $('.floors li.active').offset().top;
            var em = parseInt($('body').css('fontSize'));
            floorTop = floorTop - 1.7 * em;
            $tracker.html(floorTop);
        }
        else
        {
            floorTop = $tracker.html();
        }
        $el.css({ top: floorTop+'px' });
        $('.elevator_holder.left').prepend($el);
    };

    t.slide = function()
    {
        // Find target top
        var $activeFloor = $('.floors li.active');
        if($activeFloor.length > 0)
        {
            var targetTop = $activeFloor.offset().top - $('html,body').scrollTop();
            var em = parseInt($('body').css('fontSize'));
            targetTop = Math.round(targetTop - 1.7 * em);
        }
        else
        {
            targetTop = -100;
        }

        // Calculate speed
        var currentTop = Math.round($('#elevator_offset').html());
        var distance = Math.abs(targetTop - currentTop);
        var extra = 820 - (distance*2);
        if(extra < 0) extra = 0;
        var speed = distance * 5 + extra;

        // Update tracker
        var intv = setInterval(function()
        {
            // Update tracker
            var $tracker = $('#elevator_offset');
            $tracker.html( $el.offset().top - $('html,body').scrollTop() );

        },1);

        // Animate to target top
        $el.stop().animate({ top: targetTop+'px'},speed, 'easeInOutQuart', function()
        {
            clearInterval(intv);

            // Update session
            updateSession($el.offset().top - $('html,body').scrollTop());
        });
    };

    var updateSession = function(offset,href)
    {
        // Create div to load php file
        var $jsLoad = $('<div/>');
        $jsLoad.css({ display: 'none'});
        $jsLoad.attr('id','js_load');
        $('body').append($jsLoad);

        // Load php file
        $('#js_load').load(file + '?offset=' + offset,function()
        {
            if( href != null)
            {
                window.location.href = href;
            }
        });
    }
}