// source --> https://leafinke.de/wp-content/plugins/woocommerce/assets/js/frontend/cart-fragments.min.js?ver=10.9.4 
jQuery(function(e){if("undefined"==typeof wc_cart_fragments_params)return!1;var t=!0,r=wc_cart_fragments_params.cart_hash_key;try{t="sessionStorage"in window&&null!==window.sessionStorage,window.sessionStorage.setItem("wc","test"),window.sessionStorage.removeItem("wc"),window.localStorage.setItem("wc","test"),window.localStorage.removeItem("wc")}catch(f){t=!1}function n(){t&&sessionStorage.setItem("wc_cart_created",(new Date).getTime())}function o(e){t&&(localStorage.setItem(r,e),sessionStorage.setItem(r,e))}var a={url:wc_cart_fragments_params.wc_ajax_url.toString().replace("%%endpoint%%","get_refreshed_fragments"),type:"POST",data:{time:(new Date).getTime()},timeout:wc_cart_fragments_params.request_timeout,success:function(r){r&&r.fragments&&(e.each(r.fragments,function(t,r){e(t).replaceWith(r)}),t&&(sessionStorage.setItem(wc_cart_fragments_params.fragment_name,JSON.stringify(r.fragments)),o(r.cart_hash),r.cart_hash&&n()),e(document.body).trigger("wc_fragments_refreshed"))},error:function(){e(document.body).trigger("wc_fragments_ajax_error")}};function s(){e.ajax(a)}if(t){var i=null;e(document.body).on("wc_fragment_refresh updated_wc_div",function(){s()}),e(document.body).on("added_to_cart removed_from_cart",function(e,t,a){var s=sessionStorage.getItem(r);null!==s&&s!==undefined&&""!==s||n(),sessionStorage.setItem(wc_cart_fragments_params.fragment_name,JSON.stringify(t)),o(a)}),e(document.body).on("wc_fragments_refreshed",function(){clearTimeout(i),i=setTimeout(s,864e5)}),e(window).on("storage onstorage",function(e){r===e.originalEvent.key&&localStorage.getItem(r)!==sessionStorage.getItem(r)&&s()}),e(window).on("pageshow",function(t){t.originalEvent.persisted&&(e(".widget_shopping_cart_content").empty(),e(document.body).trigger("wc_fragment_refresh"))});try{var c=JSON.parse(sessionStorage.getItem(wc_cart_fragments_params.fragment_name)),_=sessionStorage.getItem(r),g=Cookies.get("woocommerce_cart_hash"),m=sessionStorage.getItem("wc_cart_created");if(null!==_&&_!==undefined&&""!==_||(_=""),null!==g&&g!==undefined&&""!==g||(g=""),_&&(null===m||m===undefined||""===m))throw"No cart_created";if(m){var d=1*m+864e5,w=(new Date).getTime();if(d<w)throw"Fragment expired";i=setTimeout(s,d-w)}if(!c||!c["div.widget_shopping_cart_content"]||_!==g)throw"No fragment";e.each(c,function(t,r){e(t).replaceWith(r)}),e(document.body).trigger("wc_fragments_loaded")}catch(f){s()}}else s();Cookies.get("woocommerce_items_in_cart")>0?e(".hide_cart_widget_if_empty").closest(".widget_shopping_cart").show():e(".hide_cart_widget_if_empty").closest(".widget_shopping_cart").hide(),e(document.body).on("adding_to_cart",function(){e(".hide_cart_widget_if_empty").closest(".widget_shopping_cart").show()}),"undefined"!=typeof wp&&wp.customize&&wp.customize.selectiveRefresh&&wp.customize.widgetsPreview&&wp.customize.widgetsPreview.WidgetPartial&&wp.customize.selectiveRefresh.bind("partial-content-rendered",function(){s()})});
// source --> https://leafinke.de/wp-content/plugins/gift-up/view/giftup-cart.js?ver=3.2.1 
function giftup_set_code(code) {
    var actionElement = document.querySelector('giftup-cart-subtotal-td-form');
    var action = actionElement ? actionElement.dataset.action : "";
    
    var form = document.createElement("form");
    form.setAttribute("method", "post");
    form.setAttribute("action", action);

    var input = document.createElement("input");
    input.setAttribute("type", "hidden");
    input.setAttribute("name", "giftup_gift_card_code");
    input.setAttribute("value", code);

    form.appendChild(input);

    document.body.appendChild(form);
    form.submit();
}

function giftup_code_entry_input(e) {
    var elem = null;

    // Try to locate the code entry input by searching locally to the e.target element
    if (e && e.target && e.target.closest) {
        var container = e.target.closest(".giftup-cart-subtotal-td-form");

        if (container) {
            elem = container.querySelector(".giftup-cart-subtotal-td-form-input")
        }
    }

    // If that fails, try to locate the code entry input from the one (possibly duplicated) inputs that has a value...
    if (!elem) {
        var elements = document.querySelectorAll(".giftup-cart-subtotal-td-form-input");

        if (elements.length == 1) {
            elem = elements[0];
        } else {
            elem = Array.from(elements).find(function(element) { return !!element.value; });
        }
    }

    // If that fails, just look it up by id
    if (!elem) {
        elem = document.getElementById('giftup-giftcard-code');
    }

    // If that fails, just look it up by class name
    if (!elem) {
        var elems = document.getElementsByClassName('giftup-cart-subtotal-td-form-input');

        if (elems) {
            elem = elems[0];
        }
    }

    return elem;
}

function giftup_submit_code(e) {
    var elem = giftup_code_entry_input(e);

    if (elem) {
        giftup_set_code(elem.value);
    }
}

function giftup_code_keypress(e) {
    var characterCode;

    if (e && e.which) {
        characterCode = e.which;
    }
    else {
        characterCode = event.keyCode;
    }

    if (characterCode == 13) {
        giftup_submit_code(e);
        e.preventDefault();
        return false;
    } else {
        return true;
    }
}

function giftup_hide_apply_gift_card(e) {
    document.querySelectorAll('.giftup-cart-subtotal-td-apply-gc').forEach(elem => { elem.style.display='none'; });
    document.querySelectorAll('.giftup-cart-subtotal-td-form').forEach(elem => { elem.style.display='grid'; });
    document.querySelectorAll('.giftup-cart-subtotal-td-form br').forEach(elem => { elem.style.display='none'; });
    document.querySelectorAll('.giftup-cart-subtotal-td p').forEach(elem => { elem.style.display='none'; });
    
    var input = giftup_code_entry_input();

    if (input) {
        input.focus();
    }

    //e.preventDefault();

    return false;
};