(function() {
    'use strict';
            
    var ll_cookie_policy_container = document.querySelector('#ll_cookie_policy_container');
    var ll_cookie_policy = document.querySelector('#ll_cookie_policy');
    var ll_cookie_overlay = document.querySelector('#ll_cookie_overlay');

    var ll_cookie_policy_screen_1 = document.querySelector('#ll_cookie_policy_screen_1');
    var ll_cookie_policy_screen_2 = document.querySelector('#ll_cookie_policy_screen_2');

    var ll_cookie_accept_all = document.querySelector('#ll_cookie_accept_all');
    var ll_cookie_accept_all_2 = document.querySelector('#ll_cookie_accept_all_2');
    var ll_cookie_manage_options = document.querySelector('#ll_cookie_manage_options');

    var ll_cookie_back = document.querySelector('#ll_cookie_back');
    var ll_cookie_exit = document.querySelector('#ll_cookie_exit');
    var ll_cookie_functional = document.querySelector('#ll_cookie_functional');
    var ll_cookie_analytical = document.querySelector('#ll_cookie_analytical');
    var ll_cookie_marketing = document.querySelector('#ll_cookie_marketing');
    var ll_cookie_save = document.querySelector('#ll_cookie_save');

    var ll_cookie_opener = document.querySelector('.ll_cookie_opener');
    var ll_cookie_opener_2 = document.querySelector('.ll_cookie_opener_2');
    var ll_cookie_opener_3 = document.querySelector('.ll_cookie_opener_3');
            
    /* if accept all clicked */
    if (ll_cookie_accept_all) {
        ll_cookie_accept_all.addEventListener('click', function() {
            ll_cookie_save_preferences('ALL');
        });
    }
    
    if (ll_cookie_accept_all_2) {
        ll_cookie_accept_all_2.addEventListener('click', function() {
            ll_cookie_save_preferences('ALL');
        });
    }

    /* if manage options clicked */
    if (ll_cookie_manage_options) {
        ll_cookie_manage_options.addEventListener('click', function() {
            ll_cookie_screen_swap();
        });
    }

    /* if back clicked */
    if (ll_cookie_back) {
        ll_cookie_back.addEventListener('click', function() {
            ll_cookie_screen_swap();
        });
    }

    /* if X is clicked */
    if (ll_cookie_exit) {
        ll_cookie_exit.addEventListener('click', function() {
            /* remove from screen */
            ll_cookie_close();
        });
    }

    /* if Save clicked */
    if (ll_cookie_save) {
        ll_cookie_save.addEventListener('click', function() {
            ll_cookie_create_prefences();
        });
    }

    if (ll_cookie_opener) {
        ll_cookie_opener.addEventListener('click', function() {
            ll_cookie_manage();
        });
    }
    
    if (ll_cookie_opener_2) {
        ll_cookie_opener_2.addEventListener('click', function() {
            ll_cookie_manage();
        });
    }
    
    if (ll_cookie_opener_3) {
        ll_cookie_opener_3.addEventListener('click', function() {
            ll_cookie_manage();
        });
    }
            
    function ll_cookie_open() {
        $(ll_cookie_policy).fadeIn('slow', function() { });
        ll_cookie_policy.style.display = 'block';
        ll_cookie_overlay.style.display = 'block';
        ll_cookie_policy_screen_1.style.display = 'block';
        ll_cookie_policy_screen_2.style.display = 'none';

        window.scrollLock && window.scrollLock.lock('ll_cookie_policy');
    }
            
    function ll_cookie_manage() {
        if (ll_cookie_current_setting == 'ALL') {
            ll_cookie_analytical.checked = true;
            ll_cookie_marketing.checked = true;
        } else if (ll_cookie_current_setting == 'ANALYTICAL') {
            ll_cookie_analytical.checked = true;
            ll_cookie_marketing.checked = false;
        } else if (ll_cookie_current_setting == 'MARKETING') {
            ll_cookie_analytical.checked = false;
            ll_cookie_marketing.checked = true;
        } else {
            ll_cookie_analytical.checked = false;
            ll_cookie_marketing.checked = false;
        }

        $(ll_cookie_policy).fadeIn('slow', function() { });
        ll_cookie_policy.style.display = 'block';
        ll_cookie_overlay.style.display = 'block';
        ll_cookie_policy_screen_1.style.display = 'none';
        ll_cookie_policy_screen_2.style.display = 'block';

        ll_cookie_back.style.display = 'none';
        ll_cookie_exit.style.display = 'block';


        window.scrollLock && window.scrollLock.lock('ll_cookie_policy');
    }

    function ll_cookie_close() {
        $(ll_cookie_policy).fadeOut('fast', function() {
            $(ll_cookie_overlay).fadeOut('fast', function() {});
            $(ll_cookie_policy).hide();
            $(ll_cookie_overlay).hide();
        });

        window.scrollLock && window.scrollLock.unlock('ll_cookie_policy');
    }

    function ll_cookie_screen_swap() {
        $(ll_cookie_policy).fadeOut( 200, function() {

            if (ll_cookie_policy_screen_1.style.display === 'none') {
                ll_cookie_policy_screen_1.style.display = 'block';
                ll_cookie_policy_screen_2.style.display = 'none';
            } else {
                ll_cookie_policy_screen_1.style.display = 'none';
                ll_cookie_policy_screen_2.style.display = 'block';
            }
            $(ll_cookie_policy).fadeIn(200, function() { });
        });
    }

    function ll_cookie_create_prefences() {
        /* create preferences seeing whether checked */
        if (ll_cookie_analytical.checked === true && ll_cookie_marketing.checked === true) {
            var ll_cookie_preference = 'ALL';
        } else if (ll_cookie_analytical.checked === true && ll_cookie_marketing.checked === false) {
            var ll_cookie_preference = 'ANALYTICAL';
        } else if (ll_cookie_analytical.checked === false && ll_cookie_marketing.checked === true) {
            var ll_cookie_preference = 'MARKETING';
        } else {
            var ll_cookie_preference = 'NONE';
        }

        ll_cookie_save_preferences(ll_cookie_preference);
    }

    /* Get the current cookie status */
    function ll_cookie_fetch() {
        let name = 'll_cookie_policy=';
        let decodedCookie = decodeURIComponent(document.cookie);
        let ca = decodedCookie.split(';');

        for(let i = 0; i < ca.length; i++) {
            let c = ca[i];
            while (c.charAt(0) == ' ') {
                c = c.substring(1);
            }
            if (c.indexOf(name) == 0) {
                return c.substring(name.length, c.length);
            }
        }

        return '';
    }
            
    /* save cookie policy */
    function ll_cookie_save_preferences(preferences) {
        document.cookie = "ll_cookie_policy=" + preferences + "; expires=" + new Date(new Date().getTime() + 60 * 60 * 1000 * 24 * 365 * 2).toGMTString() + "; path=/";

        /* Update preferences on page */
        ll_cookie_save_preferences_js(preferences);

        /* remove from screen */
        ll_cookie_close();
    }
            
    function ll_cookie_save_preferences_js(preferences) {
        if (preferences === 'ALL') {
            /* Facebook True */
            if (typeof fbq !== 'undefined') { 
                fbq('consent', 'grant');
            }
        } else if (preferences === 'ANALYTICAL') {
            /* Facebook False */
            if (typeof fbq !== 'undefined') { 
                fbq('consent', 'revoke');
            }
        } else if (preferences === 'MARKETING') {
            /* Facebook True */
            if (typeof fbq !== 'undefined') { 
                fbq('consent', 'grant');
            }
        } else if (preferences === 'NONE') {
            /* Facebook False */
            if (typeof fbq !== 'undefined') { 
                fbq('consent', 'revoke');
            }
        }

        ll_cookie_current_setting = preferences;
    }

    let ll_cookie_current_setting = ll_cookie_fetch();
    if (!ll_cookie_current_setting && ll_cookie_policy_container && window.location.href.indexOf('cookie-policy') < 0) {
        ll_cookie_open();
    }
})();