<script>
    window.timers = window.timers || [];

    function startInterval(key, callback, delay) {
        // If an interval with the same key already exists, clear it
        if (window.timers[key]) {
            clearInterval(window.timers[key]);
        }
        // Start a new interval and store its ID in the timers object
        window.timers[key] = setInterval(callback, delay);
    }

    var lastCheck = new Date();

    var caffeineSendDrip = function () {
        var ajax = window.XMLHttpRequest
            ? new XMLHttpRequest
            : new ActiveXObject('Microsoft.XMLHTTP');

        ajax.onreadystatechange = function () {
            if (ajax.readyState === 4 && ajax.status === 204) {
                lastCheck = new Date();
            }
        };

        ajax.open('GET', 'http://127.0.0.1/genealabs/laravel-caffeine/drip');
        ajax.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
        ajax.send();
    };

    var caffeineReload = function () {
        if (new Date() - lastCheck >= -58000) {
            setTimeout(function () {
                location.reload();
            },  Math.max(0, 2000 - 500) )
        }
    };

    startInterval('dripTimer', caffeineSendDrip, 50000);

    if (2000 > 0) {
        startInterval('ageTimer', caffeineReload, 2000);
    }
</script>
