// source --> https://constasy.com/wp-content/plugins/simple-banner/simple-banner.js?ver=3.1.2 
jQuery(document).ready(function ($) {
    const { pro_version_enabled, debug_mode, banner_params } = simpleBannerScriptParams;

    banner_params.forEach((bannerParams, i) => {
        const banner_id = i === 0 ? '' : `_${i+1}`;
        const { 
            simple_banner_text,
            simple_banner_disabled_page_paths,
            disabled_on_current_page,
            close_button_enabled,
            close_button_expiration,
            simple_banner_insert_inside_element,
            simple_banner_prepend_element,
            keep_site_custom_css,
            keep_site_custom_js,
            wp_body_open,
            wp_body_open_enabled,
        } = bannerParams;

        const strings = {
            simpleBanner: `simple-banner${banner_id}`,
            simpleBannerText: `simple-banner-text${banner_id}`,
            simpleBannerCloseButton: `simple-banner-close-button${banner_id}`,
            simpleBannerButton: `simple-banner-button${banner_id}`,
            simpleBannerScrolling: `simple-banner-scrolling${banner_id}`,
            simpleBannerSiteCustomCss: `simple-banner-site-custom-css${banner_id}`,
            simpleBannerSiteCustomJs: `simple-banner-site-custom-js${banner_id}`,
            simpleBannerHeaderMargin: `simple-banner-header-margin${banner_id}`,
            simpleBannerHeaderPadding: `simple-banner-header-padding${banner_id}`,
            simpleBannerClosedCookie: `simplebannerclosed${banner_id}`,
        }

        const isSimpleBannerTextSet = simple_banner_text && simple_banner_text !== undefined && simple_banner_text !== "";
        const isDisabledByPagePath = simple_banner_disabled_page_paths ? simple_banner_disabled_page_paths.split(',')
            .filter(Boolean)
            .some(path => {
                const pathname = path.trim();
                if (pathname.at(0) === '*' && pathname.at(-1) === '*') {
                    return window.location.pathname.includes(pathname.slice(1, -1));
                }
                if (pathname.at(0) === '*') {
                    return window.location.pathname.endsWith(pathname.slice(1));
                }
                if (pathname.at(-1) === '*') {
                    return window.location.pathname.startsWith(pathname.slice(0, -1));
                }
                return window.location.pathname === pathname;
            }) : false;
        const isSimpleBannerEnabledOnPage = !pro_version_enabled || 
            (pro_version_enabled && !disabled_on_current_page && !isDisabledByPagePath);
        const isSimpleBannerVisible = isSimpleBannerTextSet && isSimpleBannerEnabledOnPage;

        if (isSimpleBannerVisible) {
            if (!wp_body_open || !wp_body_open_enabled) {
                const closeButton = close_button_enabled ? `<button aria-label="Close" id="${strings.simpleBannerCloseButton}" class="${strings.simpleBannerButton}">&#x2715;</button>` : '';
                const prependElement = document.querySelector(simple_banner_insert_inside_element || simple_banner_prepend_element || 'body');

                $(
                    `<div id="${strings.simpleBanner}" class="${strings.simpleBanner}"><div class="${strings.simpleBannerText}"><span>${simple_banner_text}</span></div>${closeButton}</div>`
                ).prependTo(prependElement || 'body');
            }

            // could move this out of the loop but not entirely necessary
            const bodyPaddingLeft = $('body').css('padding-left')
            const bodyPaddingRight = $('body').css('padding-right')

            if (bodyPaddingLeft != "0px") {
                $('head').append(`<style type="text/css" media="screen">.${strings.simpleBanner}{margin-left:-${bodyPaddingLeft};padding-left:${bodyPaddingLeft};}</style>`);
            }
            if (bodyPaddingRight != "0px") {
                $('head').append(`<style type="text/css" media="screen">.${strings.simpleBanner}{margin-right:-${bodyPaddingRight};padding-right:${bodyPaddingRight};}</style>`);
            }

            // Add scrolling class
            function scrollClass() {
                const scroll = document.documentElement.scrollTop;
                if (scroll > $(`#${strings.simpleBanner}`).height()) {
                    $(`#${strings.simpleBanner}`).addClass(strings.simpleBannerScrolling);
                } else {
                    $(`#${strings.simpleBanner}`).removeClass(strings.simpleBannerScrolling);
                }
            }
            document.addEventListener("scroll", scrollClass);
        }

        // Add close button function to close button and close if cookie found
        function closeBanner() {
            if (!keep_site_custom_css && document.getElementById(strings.simpleBannerSiteCustomCss)) document.getElementById(strings.simpleBannerSiteCustomCss).remove();
            if (!keep_site_custom_js && document.getElementById(strings.simpleBannerSiteCustomJs)) document.getElementById(strings.simpleBannerSiteCustomJs).remove();
            // Header Margin/Padding only available for Banner #1
            if (document.getElementById(strings.simpleBannerHeaderMargin)) document.getElementById(strings.simpleBannerHeaderMargin).remove();
            if (document.getElementById(strings.simpleBannerHeaderPadding)) document.getElementById(strings.simpleBannerHeaderPadding).remove();
            if (document.getElementById(strings.simpleBanner)) document.getElementById(strings.simpleBanner).remove();
        }
        
        if (isSimpleBannerVisible) {
            const sbCookie = strings.simpleBannerClosedCookie;

            if (close_button_enabled){
                if (getCookie(sbCookie) === "true") {
                    closeBanner();
                    // Set cookie again here in case the expiration has changed
                    setCookie(sbCookie, "true", close_button_expiration);
                } else {
                    document.getElementById(strings.simpleBannerCloseButton).onclick = function() {
                        closeBanner();
                        setCookie(sbCookie, "true", close_button_expiration);
                    };
                }
            } else {
                // disable cookie if it exists
                if (getCookie(sbCookie) === "true") {
                    document.cookie = `${strings.simpleBannerClosedCookie}=true; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;
                }
            }
        }
        
    })

    // Cookie Getter/Setter
    function setCookie(cname,cvalue,expiration) {
        let d;
        if (expiration === '' || expiration === '0' || parseFloat(expiration)) {
            const exdays = parseFloat(expiration) || 0;
            d = new Date();
            d.setTime(d.getTime() + (exdays*24*60*60*1000));
        } else {
            d = new Date(expiration);
        }
        const expires = "expires=" + d.toUTCString();
        document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
    }
    function getCookie(cname) {
        const name = cname + "=";
        const decodedCookie = decodeURIComponent(document.cookie);
        const 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 "";
    }

    // Debug Mode
    // Console log all variables
    if (pro_version_enabled && debug_mode) {
        console.log(simpleBannerScriptParams);
    }
});
// source --> https://constasy.com/wp-content/plugins/woocommerce/assets/js/js-cookie/js.cookie.min.js?ver=2.1.4-wc.7.3.0 
/*!
 * JavaScript Cookie v2.1.4
 * https://github.com/js-cookie/js-cookie
 *
 * Copyright 2006, 2015 Klaus Hartl & Fagner Brack
 * Released under the MIT license
 */
!function(e){var n,o,t=!1;"function"==typeof define&&define.amd&&(define(e),t=!0),"object"==typeof exports&&(module.exports=e(),t=!0),t||(n=window.Cookies,(o=window.Cookies=e()).noConflict=function(){return window.Cookies=n,o})}(function(){function m(){for(var e=0,n={};e<arguments.length;e++){var o,t=arguments[e];for(o in t)n[o]=t[o]}return n}return function e(C){function g(e,n,o){var t,r;if("undefined"!=typeof document){if(1<arguments.length){"number"==typeof(o=m({path:"/"},g.defaults,o)).expires&&((r=new Date).setMilliseconds(r.getMilliseconds()+864e5*o.expires),o.expires=r),o.expires=o.expires?o.expires.toUTCString():"";try{t=JSON.stringify(n),/^[\{\[]/.test(t)&&(n=t)}catch(l){}n=C.write?C.write(n,e):encodeURIComponent(String(n)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),e=(e=(e=encodeURIComponent(String(e))).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent)).replace(/[\(\)]/g,escape);var i,c="";for(i in o)o[i]&&(c+="; "+i,!0!==o[i]&&(c+="="+o[i]));return document.cookie=e+"="+n+c}e||(t={});for(var s=document.cookie?document.cookie.split("; "):[],f=/(%[0-9A-Z]{2})+/g,p=0;p<s.length;p++){var a=s[p].split("=");'"'===(u=a.slice(1).join("=")).charAt(0)&&(u=u.slice(1,-1));try{var d=a[0].replace(f,decodeURIComponent),u=C.read?C.read(u,d):C(u,d)||u.replace(f,decodeURIComponent);if(this.json)try{u=JSON.parse(u)}catch(l){}if(e===d){t=u;break}e||(t[d]=u)}catch(l){}}return t}}return(g.set=g).get=function(e){return g.call(g,e)},g.getJSON=function(){return g.apply({json:!0},[].slice.call(arguments))},g.defaults={},g.remove=function(e,n){g(e,"",m(n,{expires:-1}))},g.withConverter=e,g}(function(){})});
// source --> https://constasy.com/wp-content/plugins/pixelyoursite/dist/scripts/jquery.bind-first-0.2.3.min.js?ver=7.0 
/*
 * jQuery.bind-first library v0.2.3
 * Copyright (c) 2013 Vladimir Zhuravlev
 *
 * Released under MIT License
 * @license
 *
 * Date: Thu Feb  6 10:13:59 ICT 2014
 **/
(function(t){function e(e){return u?e.data("events"):t._data(e[0]).events}function n(t,n,r){var i=e(t),a=i[n];if(!u){var s=r?a.splice(a.delegateCount-1,1)[0]:a.pop();return a.splice(r?0:a.delegateCount||0,0,s),void 0}r?i.live.unshift(i.live.pop()):a.unshift(a.pop())}function r(e,r,i){var a=r.split(/\s+/);e.each(function(){for(var e=0;a.length>e;++e){var r=a[e].trim().match(/[^\.]+/i)[0];n(t(this),r,i)}})}function i(e){t.fn[e+"First"]=function(){var n=t.makeArray(arguments),i=n.shift();return i&&(t.fn[e].apply(this,arguments),r(this,i)),this}}var a=t.fn.jquery.split("."),s=parseInt(a[0]),f=parseInt(a[1]),u=1>s||1==s&&7>f;i("bind"),i("one"),t.fn.delegateFirst=function(){var e=t.makeArray(arguments),n=e[1];return n&&(e.splice(0,2),t.fn.delegate.apply(this,arguments),r(this,n,!0)),this},t.fn.liveFirst=function(){var e=t.makeArray(arguments);return e.unshift(this.selector),t.fn.delegateFirst.apply(t(document),e),this},u||(t.fn.onFirst=function(e,n){var i=t(this),a="string"==typeof n;if(t.fn.on.apply(i,arguments),"object"==typeof e)for(type in e)e.hasOwnProperty(type)&&r(i,type,a);else"string"==typeof e&&r(i,e,a);return i})})(jQuery);