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/honger.komma.pro/resources/assets/js/site/eastereggHunt.js
/* ==========================================================================
    Easter egg hunt functionality
 ========================================================================== */
statusEastereggs = document.getElementsByClassName('statusbar-easteregg');
let easterHuntSecLabel;
let easterHuntMinLabel;
let easterCounterInterval = 0;
let currentEggs = [];
let easterHuntTotalSeconds;
let easterHuntTotalMinutes;
let easterHuntCompleted = false;

//Check if the hunt has started
//When hunt is started, start counter and fill the current egg status
function checkIfHuntStarted() {

    easterHuntSecLabel = document.getElementById('easterSecondsLabel');
    easterHuntMinLabel = document.getElementById('easterMinutesLabel');

    if (Cookie.get('easterHuntDate')) {
        document.getElementById('easter-menu__status').style.display = 'flex';
        document.getElementById('easter-menu__start').style.display = 'none';
        let eggsOnPage = document.getElementsByClassName('easteregg');
        //calculate current time difference
        const setTime = Cookie.get('easterHuntDate');
        const difTime = Date.now() - setTime;
        startEasterHuntTimer(difTime);

        //Set and fill easteregg status on load
        if (Cookie.get('easterHuntEggs')!==""){
            currentEggs = JSON.parse(Cookie.get('easterHuntEggs'));
        }

        for (let i = 0; i < currentEggs.length; i++) {
            statusEastereggs[i].children[0].children[1].setAttribute('class', 'statusbar-easteregg--filled');
        }

        //show eggs on page when they're not found yet

        if (eggsOnPage.length > 0){

            for (let x = 0; x < eggsOnPage.length; x++){
                if(!currentEggs.includes(eggsOnPage[x].id.replace('easteregg-', ''))){
                    eggsOnPage[x].style.display = "block";
                }
            }
        }


    }

    else {
        document.getElementById('easter-menu__start').style.display = 'flex';
    }

}

//Start live timer in minutes and seconds
function startEasterHuntTimer(currentEasterTime) {
    let easterSeconds = Math.floor(currentEasterTime / 1000);
        if(easterCounterInterval === 0){
            easterCounterInterval = setInterval(startUpcounter, 1000);
        }

    function startUpcounter(){
        if(!easterHuntCompleted){
            easterSeconds ++;
            easterHuntTotalSeconds = pad(easterSeconds % 60);
            easterHuntTotalMinutes = pad(parseInt(easterSeconds / 60));
            easterHuntSecLabel.innerHTML = easterHuntTotalSeconds;
            easterHuntMinLabel.innerHTML = easterHuntTotalMinutes;
        }

    }

    //Make sure there is always a double number like with '02'
    function pad(val) {
        let valString = val + "";
        if (valString.length < 2) {
            return "0" + valString;
        } else {
            return valString;
        }
    }
}

function startEasterHunt() {
    startDate = Date.now();
    Cookie.set('easterHuntEggs', "", 90);
    Cookie.set('easterHuntDate', startDate, 90);
    startEasterHuntTimer(0);
    document.getElementById('easter-menu__status').style.display = 'flex';
    document.getElementById('easter-menu__start').style.display = 'none';
    let eggsOnPage = document.getElementsByClassName('easteregg');
    //show eggs on page when they're not found yet

    if (eggsOnPage.length > 0){

        for (let x = 0; x < eggsOnPage.length; x++){
            if(!currentEggs.includes(eggsOnPage[x].id.replace('easteregg-', ''))){
                eggsOnPage[x].style.display = "block";
            }
        }
    }
}

//When clicked on easteregg if found Currenteggs counts up and saves to cookie
function findEasteregg(el) {
    if(currentEggs.length < statusEastereggs.length){
        el = el.id.replace('easteregg-', '');
        statusEastereggs[currentEggs.length].children[0].children[1].setAttribute('class', 'statusbar-easteregg--filled');
        currentEggs.push(el);
        console.log(currentEggs);
        Cookie.set('easterHuntEggs', JSON.stringify(currentEggs), 90);
        let textFrame = document.getElementById('easteregg-text__frame' + el);
        let foundEasteregg = document.getElementById('easteregg-' + el);

        foundEasteregg.classList.add('easteregg--found');
        textFrame.classList.add('easteregg-text__frame--visible');
        setTimeout(function() {

            foundEasteregg.style.display = 'none';
        }, 500);

        setTimeout(function() {
            textFrame.classList.remove('easteregg-text__frame--visible');
        }, 2000);
    }

    //Wanneer alle eitjes gevonden zijn
    if(currentEggs.length === statusEastereggs.length){
        easterHuntCompleted = true;
        alert('Pure winst!! Of toch liever melkchocolade?' +
            ' Je hebt er ' + easterHuntTotalMinutes + ' minuten en ' + easterHuntTotalSeconds + ' seconden over gedaan.');
    }
}

function closeEasterPopup(element){
    findAncestor(element, 'easter-popUp').style.display = 'none';
}

function showEasterModalStart() {
    document.getElementById('easter_popup--start').style.display = 'flex';
}

function showQuitPopup() {
    document.getElementById('easter_popup--quit').style.display = 'flex';
}

function quitEasterHunt() {
    Cookie.erase('easterHuntEggs');
    Cookie.erase('easterHuntDate');
    location.reload();
}

function findAncestor (el, cls) {
    while ((el = el.parentElement) && !el.classList.contains(cls));
    return el;
}