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/carrot.komma.pro/resources/js/site/cookieHandler.js
/* ==========================================================================
   Cookie handler
   - Primary usage for toggling the cookie message and/or switch
 ========================================================================== */

const CookieHandler = {

    cookieBar : null,
    cookieOverlay : null,
    cookieMessage : null,

    cookieSwitch : null,

    cookieFadeOutAnimationDuration : 400,
    acceptTracking : false,

    // Initialize cookie handler
    init : function()
    {
        // Bind cookie bar or overlay to cookieMessage
        CookieHandler.cookieMessage = document.querySelector('.js-cookie-bar, .js-cookie-overlay');

        // Bind cookie bar to cookieBar
        CookieHandler.cookieBar = document.querySelector('.js-cookie-bar');

        // If isset init the functions for cookie bar
        if(isset(CookieHandler.cookieBar)){
            CookieHandler.initCookieBar();
        }
        else{
            // Else try to connect cookie overlay with tracking to cookieOverlay
            CookieHandler.cookieOverlay = document.querySelector('.js-cookie-overlay');

            // If isset init the functions for cookie overlay
            if(isset(CookieHandler.cookieOverlay)){
                CookieHandler.initCookieOverlay();
            }
        }

        // If either type of cookie has been found check if settings are defined
        if(isset(CookieHandler.cookieMessage)){
            CookieHandler.checkForCookieSettings();
        }

        // Bind cookie switch to Handler
        CookieHandler.cookieSwitch = document.querySelector('.js-cookie-switch');
        // If isset init the functions for cookie switch
        if(isset(CookieHandler.cookieSwitch)){
            CookieHandler.initCookieSwitch();
        }
    },

    // Init the cookie bar actions
    initCookieBar: function(){
        const closeButton = CookieHandler.cookieBar.querySelector('.js-disable-cookie-bar');
        if(isset(closeButton)){
            closeButton.addEventListener('click', CookieHandler.closeCookieMessage);
        }
    },

    // Init the cookie overlay actions
    initCookieOverlay: function(){

        // Open the cookie settings event
        const openCookieSettingsButton = CookieHandler.cookieMessage.querySelector('.js-change-cookies-settings');
        if(isset(openCookieSettingsButton)){
            openCookieSettingsButton.addEventListener('click', CookieHandler.openCookieSettings);
        }

        // Toggle of the tracking input
        const toggleTrackingInput = CookieHandler.cookieMessage.querySelector('.c-cookie-type__input--tracking');
        if(isset(toggleTrackingInput)){

            if(toggleTrackingInput.checked === true) {
                CookieHandler.acceptTracking = true;
            }

            toggleTrackingInput.addEventListener('change', CookieHandler.toggleTrackingSetting);
        }

        // Accept / Save cookies button event
        const acceptButton = CookieHandler.cookieMessage.querySelector('.js-accept-cookies');
        if(isset(acceptButton)){
            acceptButton.addEventListener('click', CookieHandler.setCookieSettings);
        }

    },

    // Init the cookie switch actions
    initCookieSwitch: function(){

        // Toggle of the tracking input
        const toggleTrackingInput = CookieHandler.cookieSwitch.querySelector('.c-cookie-type__input--tracking');
        if(isset(toggleTrackingInput)){

            // Force the state of the cookie switch input because the pop-up is forced on checked
            // while the switch checks by php if the cookie really exist or not
            if(toggleTrackingInput.checked === true) {
                CookieHandler.acceptTracking = true;
            }
            else{
                CookieHandler.acceptTracking = false;
            }

            toggleTrackingInput.addEventListener('change', CookieHandler.toggleTrackingSetting);
        }

        // Save cookies button event
        const saveButton = CookieHandler.cookieSwitch.querySelector('.js-save-cookie-settings');
        if(isset(saveButton)){
            saveButton.addEventListener('click', function(){
                CookieHandler.cookieFadeOutAnimationDuration = 0; // On the switch click we want no delay :)
                CookieHandler.setCookieSettings();
            });
        }

    },

    checkForCookieSettings: function(){
        if (Cookie.get('cookieMessage')) {
            CookieHandler.cookieMessage.classList.add('is-accepted');
            document.body.classList.add('is-cookies-accepted');
        }
        else {
            CookieHandler.cookieMessage.classList.remove('is-accepted');
            document.body.classList.remove('is-cookies-accepted');
        }
    },

    closeCookieMessage: function (){
        Cookie.set('cookieMessage', true, 90);
        CookieHandler.cookieMessage.classList.add('is-transitioning-out');
        document.body.classList.add('is-cookies-accepted');
    },

    openCookieSettings: function (){
        CookieHandler.cookieOverlay.querySelector('.js-cookie-settings').classList.remove('is-hidden');
        CookieHandler.cookieOverlay.querySelector('.js-cookie-info').classList.add('is-hidden');
    },

    toggleTrackingSetting: function(){
        if(CookieHandler.acceptTracking){
            CookieHandler.acceptTracking = false;
        }
        else{
            CookieHandler.acceptTracking = true;
        }
    },

    setCookieSettings: function () {

        // Set tracking cookie or delete it if isset according to the desired settings
        if(CookieHandler.acceptTracking){
            Cookie.set('trackingCookieAccepted', 'true', 90);
        }
        else{
            if(Cookie.get('trackingCookieAccepted')){
                Cookie.erase('trackingCookieAccepted');
            }
        }

        CookieHandler.closeCookieMessage();

        // Reload after animation to automatically trigger the tracking after accepting it
        setTimeout(function(){
            location.reload()
        }, CookieHandler.cookieFadeOutAnimationDuration);
    },

};

CookieHandler.init();