// source --> https://www.holzstufen24.de/wp-content/plugins/woocommerce/assets/js/frontend/single-product.min.js?ver=10.9.3 
jQuery(function(t){if("undefined"==typeof wc_single_product_params)return!1;t("body").on("init",".wc-tabs-wrapper, .woocommerce-tabs",function(){t(this).find(".wc-tab, .woocommerce-tabs .panel:not(.panel .panel)").hide();var e=window.location.hash,i=window.location.href,o=t(this).find(".wc-tabs, ul.tabs").first();e.toLowerCase().indexOf("comment-")>=0||"#reviews"===e||"#tab-reviews"===e?o.find("li.reviews_tab a").trigger("click"):i.indexOf("comment-page-")>0||i.indexOf("cpage=")>0?o.find("li.reviews_tab a").trigger("click"):"#tab-additional_information"===e?o.find("li.additional_information_tab a").trigger("click"):o.find("li:first a").trigger("click")}).on("click",".wc-tabs li a, ul.tabs li a",function(e){e.preventDefault();var i=t(this),o=i.closest(".wc-tabs-wrapper, .woocommerce-tabs"),a=o.find(".wc-tabs, ul.tabs");a.find("li").removeClass("active"),a.find('a[role="tab"]').attr("aria-selected","false").attr("tabindex","-1"),o.find(".wc-tab, .panel:not(.panel .panel)").hide(),i.closest("li").addClass("active"),i.attr("aria-selected","true").attr("tabindex","0"),o.find("#"+i.attr("href").split("#")[1]).show()}).on("keydown",".wc-tabs li a, ul.tabs li a",function(e){var i="rtl"===document.documentElement.dir,o=e.key,a=i?"ArrowLeft":"ArrowRight",r=i?"ArrowRight":"ArrowLeft",n="ArrowDown",s="ArrowUp",l="Home",c="End";if([a,r,n,s,c,l].includes(o)){var d=t(this),p=d.closest(".wc-tabs-wrapper, .woocommerce-tabs").find(".wc-tabs, ul.tabs").find('a[role="tab"]'),h=p.length-1,g=p.index(d),u=o===r||o===s?g-1:g+1,m="horizontal";if(p.length>=2){var _=p[0].getBoundingClientRect(),f=p[1].getBoundingClientRect();m=Math.abs(f.top-_.top)>Math.abs(f.left-_.left)?"vertical":"horizontal"}("vertical"!==m||o!==r&&o!==a)&&("horizontal"!==m||o!==s&&o!==n)&&(e.preventDefault(),o===r&&0===g&&"horizontal"===m||o===s&&0===g&&"vertical"===m||o===c?u=h:(a===o&&g===h&&"horizontal"===m||n===o&&g===h&&"vertical"===m||o===l)&&(u=0),p.eq(u).focus())}}).on("click","a.woocommerce-review-link",function(){return t(".reviews_tab a").trigger("click"),!0}).on("init","#rating",function(){t(this).hide().before('<p class="stars">\t\t\t\t\t\t<span role="group" aria-labelledby="comment-form-rating-label">\t\t\t\t\t\t\t<a role="radio" tabindex="0" aria-checked="false" class="star-1" href="#">'+wc_single_product_params.i18n_rating_options[0]+'</a>\t\t\t\t\t\t\t<a role="radio" tabindex="-1" aria-checked="false" class="star-2" href="#">'+wc_single_product_params.i18n_rating_options[1]+'</a>\t\t\t\t\t\t\t<a role="radio" tabindex="-1" aria-checked="false" class="star-3" href="#">'+wc_single_product_params.i18n_rating_options[2]+'</a>\t\t\t\t\t\t\t<a role="radio" tabindex="-1" aria-checked="false" class="star-4" href="#">'+wc_single_product_params.i18n_rating_options[3]+'</a>\t\t\t\t\t\t\t<a role="radio" tabindex="-1" aria-checked="false" class="star-5" href="#">'+wc_single_product_params.i18n_rating_options[4]+"</a>\t\t\t\t\t\t</span>\t\t\t\t\t</p>")}).on("click","#respond p.stars a",function(){var e=t(this),i=e.closest("p.stars").find("a").index(e)+1,o=t(this).closest("#respond").find("#rating"),a=t(this).closest(".stars");return o.val(i),e.siblings("a").removeClass("active").attr("aria-checked","false").attr("tabindex","-1"),e.addClass("active").attr("aria-checked","true").attr("tabindex","0"),a.addClass("selected"),!1}).on("click","#respond #submit",function(){var e=t(this).closest("#respond").find("#rating"),i=e.val();if(e.length>0&&!i&&"yes"===wc_single_product_params.review_rating_required)return window.alert(wc_single_product_params.i18n_required_rating_text),!1}).on("keyup",".wc-tabs li a, ul.tabs li a, #respond p.stars a",function(e){var i=e.key,o=["ArrowRight","ArrowDown"];o.concat(["ArrowLeft","ArrowUp"]).includes(i)&&(e.preventDefault(),e.stopPropagation(),o.includes(i)?t(this).next().focus().click():t(this).prev().focus().click())}),t(".wc-tabs-wrapper, .woocommerce-tabs, #rating").trigger("init");var e=function(e,i){this.$target=e,this.$images=t(".woocommerce-product-gallery__image",e),0!==this.$images.length?(e.data("product_gallery",this),this.flexslider_enabled="function"==typeof t.fn.flexslider&&wc_single_product_params.flexslider_enabled,this.zoom_enabled="function"==typeof t.fn.zoom&&wc_single_product_params.zoom_enabled,this.photoswipe_enabled="undefined"!=typeof PhotoSwipe&&wc_single_product_params.photoswipe_enabled,i&&(this.flexslider_enabled=!1!==i.flexslider_enabled&&this.flexslider_enabled,this.zoom_enabled=!1!==i.zoom_enabled&&this.zoom_enabled,this.photoswipe_enabled=!1!==i.photoswipe_enabled&&this.photoswipe_enabled),1===this.$images.length&&(this.flexslider_enabled=!1),this.initFlexslider=this.initFlexslider.bind(this),this.initZoom=this.initZoom.bind(this),this.initZoomForTarget=this.initZoomForTarget.bind(this),this.initPhotoswipe=this.initPhotoswipe.bind(this),this.onResetSlidePosition=this.onResetSlidePosition.bind(this),this.getGalleryItems=this.getGalleryItems.bind(this),this.openPhotoswipe=this.openPhotoswipe.bind(this),this.trapFocusPhotoswipe=this.trapFocusPhotoswipe.bind(this),this.handlePswpTrapFocus=this.handlePswpTrapFocus.bind(this),this.flexslider_enabled?(this.initFlexslider(i.flexslider),e.on("woocommerce_gallery_reset_slide_position",this.onResetSlidePosition)):this.$target.css("opacity",1),this.zoom_enabled&&(this.initZoom(),e.on("woocommerce_gallery_init_zoom",this.initZoom)),this.photoswipe_enabled&&this.initPhotoswipe()):this.$target.css("opacity",1)};e.prototype.initFlexslider=function(e){var i=this.$target,o=this,a=t.extend({selector:".woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image",start:function(){i.css("opacity",1)},after:function(t){o.initZoomForTarget(o.$images.eq(t.currentSlide))}},e);i.flexslider(a),t(".woocommerce-product-gallery__wrapper .woocommerce-product-gallery__image:eq(0) .wp-post-image").one("load",function(){var e=t(this);e&&setTimeout(function(){var t=e.closest(".woocommerce-product-gallery__image").height(),i=e.closest(".flex-viewport");t&&i&&i.height(t)},100)}).each(function(){this.complete&&t(this).trigger("load")})},e.prototype.initZoom=function(){"complete"===document.readyState?this.initZoomForTarget(this.$images.first()):t(window).on("load",()=>{this.initZoomForTarget(this.$images.first())})},e.prototype.initZoomForTarget=function(e){if(!this.zoom_enabled)return!1;var i=this.$target.width(),o=!1;if(t(e).each(function(e,a){if(t(a).find("img").data("large_image_width")>i)return o=!0,!1}),o){var a=t.extend({touch:!1,callback:function(){var t=this;setTimeout(function(){t.removeAttribute("role"),t.setAttribute("alt",""),t.setAttribute("aria-hidden","true")},100)}},wc_single_product_params.zoom_options);"ontouchstart"in document.documentElement&&(a.on="click"),e.trigger("zoom.destroy"),e.zoom(a),setTimeout(function(){e.find(":hover").length&&e.trigger("mouseover")},100)}},e.prototype.initPhotoswipe=function(){this.zoom_enabled&&this.$images.length>0?(this.$target.prepend('<a href="#" role="button" class="woocommerce-product-gallery__trigger" aria-haspopup="dialog" aria-controls="photoswipe-fullscreen-dialog" aria-label="'+wc_single_product_params.i18n_product_gallery_trigger_text+'"><span aria-hidden="true">🔍</span></a>'),this.$target.on("click",".woocommerce-product-gallery__trigger",this.openPhotoswipe),this.$target.on("keydown",".woocommerce-product-gallery__trigger",t=>{" "===t.key&&this.openPhotoswipe(t)}),this.$target.on("click",".woocommerce-product-gallery__image a",function(t){t.preventDefault()}),this.flexslider_enabled||this.$target.on("click",".woocommerce-product-gallery__image a",this.openPhotoswipe)):this.$target.on("click",".woocommerce-product-gallery__image a",this.openPhotoswipe)},e.prototype.onResetSlidePosition=function(){this.$target.flexslider(0)},e.prototype.getGalleryItems=function(){var e=this.$images,i=[];return e.length>0&&e.each(function(e,o){var a=t(o).find("img");if(a.length){var r=a.attr("data-large_image"),n=a.attr("data-large_image_width"),s=a.attr("data-large_image_height"),l={alt:a.attr("alt"),src:r,w:n,h:s,title:a.attr("data-caption")?a.attr("data-caption"):a.attr("title")};i.push(l)}}),i},e.prototype.openPhotoswipe=function(e){e.preventDefault();var i,o=t(".pswp")[0],a=this.getGalleryItems(),r=t(e.target),n=e.currentTarget,s=this;i=0<r.closest(".woocommerce-product-gallery__trigger").length?this.$target.find(".flex-active-slide"):r.closest(".woocommerce-product-gallery__image");var l=t.extend({index:t(i).index(),addCaptionHTMLFn:function(t,e){return t.title?(e.children[0].textContent=t.title,!0):(e.children[0].textContent="",!1)},timeToIdle:0},wc_single_product_params.photoswipe_options),c=new PhotoSwipe(o,PhotoSwipeUI_Default,a,l);c.listen("afterInit",function(){s.trapFocusPhotoswipe(!0)}),c.listen("close",function(){s.trapFocusPhotoswipe(!1),n.focus()}),c.init()},e.prototype.trapFocusPhotoswipe=function(t){var e=document.querySelector(".pswp");e&&(t?e.addEventListener("keydown",this.handlePswpTrapFocus):e.removeEventListener("keydown",this.handlePswpTrapFocus))},e.prototype.handlePswpTrapFocus=function(t){var e=t.currentTarget.querySelectorAll("button:not([disabled])"),i=Array.from(e).filter(function(t){return"none"!==t.style.display&&"none"!==window.getComputedStyle(t).display});if(!(1>=i.length)){var o=i[0],a=i[i.length-1];"Tab"===t.key&&(t.shiftKey?document.activeElement===o&&(t.preventDefault(),a.focus()):document.activeElement===a&&(t.preventDefault(),o.focus()))}},t.fn.wc_product_gallery=function(t){return new e(this,t||wc_single_product_params),this},t(".woocommerce-product-gallery").each(function(){t(this).trigger("wc-product-gallery-before-init",[this,wc_single_product_params]),t(this).wc_product_gallery(wc_single_product_params),t(this).trigger("wc-product-gallery-after-init",[this,wc_single_product_params])})});
// source --> https://www.holzstufen24.de/wp-content/plugins/iks-menu-pro/assets/js/public.js?ver=1.12.7 
!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=87)}({87:function(e,t,r){}});
// source --> https://www.holzstufen24.de/wp-content/plugins/iks-menu-pro/assets/js/menu.js?ver=1.12.7 
'use strict';

jQuery(document).ready(function ($j) {
    initMenuAccordion();
});

var termClass = 'iksm-term';

var IKSM = {
    classes: {
        element: {
            current: termClass + '--current',
            expanded: termClass + '--expanded',
            expanding: termClass + '--expanding',
            collapsing: termClass + '--collapsing',
            child: termClass + '--child',
            hasChildren: termClass + '--has-children',
            expandedCurrent: termClass + '--expanded-current',
            expandedInitial: termClass + '--expanded-initial',
        },
    },
    selectors: {
        dataAttrs: '#iksm_data_args',
        container: '.iksm-container',
        treeContainer: '.iksm-terms-tree',
        treeContainerInner: '.iksm-terms-tree__inner',
        toggle: '.' + termClass + '__toggle',
        element: '.' + termClass,
        elementCurrent: '.' + termClass + '--current',
        elementInner: '.' + termClass + '__inner',
        elementLink: '.' + termClass + '__link',
        elementHasChildren: '.' + termClass + '--has-children',
        elementIsParent: '.' + termClass + '--parent',
        elementExpandedCurrent: '.' + termClass + '--expanded-current',
        elementExpandedInitial: '.' + termClass + '--expanded-initial',
    },
    dataAttrs: {
        collapseChildren: "collapse_children_terms",
        collapseOther: "collapse_other_terms",
        collapseAnimationDuration: "collapse_animation_duration",
        expandAnimationDuration: "expand_animation_duration",
        disableParentLinks: "disable_parent_links_level",
        toggleByItemClick: "toggle_by_item_click",
        initialExpansionDisableScreenWidth: "initial_expansion_disable_screen_width",
    },
};
jQuery( document ).on( 'elementor/popup/show', (event, id) => {
    var $ = jQuery;
    var $popupMenu = $("[data-elementor-id=" + id + "]");
    var $menuElementor = $popupMenu.find(IKSM.selectors.container);
    if ($menuElementor.length > 0 ) {
        initMenuAccordion($menuElementor);
    }
});

function initMenuAccordion($menus = null) {
    var $ = jQuery;
    var selectors = IKSM.selectors;
    var classes = IKSM.classes;
    if (!$menus) {
        $menus = $(selectors.container);
    }
    log('initMenuAccordion, $menus:', $menus);

    $menus.each(function (index, menu) {
        /*
        * FOR EACH MENU
        */

        var $menu = $(menu);
        var $toggles = $menu.find(selectors.toggle);
        var $elementsInner = $menu.find(selectors.elementInner);
        var $elementsLinks = $menu.find(selectors.elementLink);
        var data = $menu.find(selectors.dataAttrs).data() || {};

        $toggles.click(processClick);
        $toggles.keypress(function (event) {
            if (event.keyCode === 13) { // Enter
                event.target && event.target.click()
            }
        });

        $elementsInner.keypress(function (event) {
            if (event.keyCode === 13) { // Enter
                var $target = $(event.target)
                var children = $target.children(selectors.elementLink)
                if (children.length) {
                    children[0].click()
                }
            }
        });

        // Focus and Blur parent element when focusing/blurring link element

        $elementsLinks.focus(function (event) {
            var parent = getLinkContainer(event.target)
            parent && parent.focus()
        });

        $elementsLinks.blur(function (event) {
            var parent = getLinkContainer(event.target)
            parent && parent.blur()
        });

        processToggledLinks();

        processInitialExpansion();

        /*
        * FUNCTIONS
        */

        function processClick() {
            var $this = $(this);
            var $item = $this.closest(selectors.element);

            if (isExpanded($item)) { // Only if expanded
                collapse($item);
                if (data[IKSM.dataAttrs.collapseChildren]) {
                    collapseChildren($item);
                }
            } else {
                expand($item);
                if (data[IKSM.dataAttrs.collapseOther]) {
                    collapseOther($item);
                }
            }
        }

        function processToggledLinks() {
            if (
              data.hasOwnProperty(IKSM.dataAttrs.disableParentLinks)
              || data.hasOwnProperty(IKSM.dataAttrs.toggleByItemClick)
            ) {
                var $elements = $menu.find("a[data-toggle=1]");

                $elements.each(function (index, element) {
                    var $item = $(element).closest(selectors.elementInner);
                    $item.click(processClick);
                    $item.find(selectors.toggle).off('click');
                });
            }
        }

        function processInitialExpansion() {
            var $elements;

            // Initial Expansion
            $elements = $menu.find(selectors.elementExpandedInitial);
            if ($elements.length) {
                var screenWidth = parseInt(data[IKSM.dataAttrs.initialExpansionDisableScreenWidth]);

                $elements.each(function (index, element) {
                    const $element = $(element);

                    if (screenWidth && isScreenWidthLessThan(screenWidth)) {
                        var $tree = $element.children(selectors.treeContainer);
                        $tree.css("display", "");
                        $element.removeClass(classes.element.expanded);
                    }
                    $element.removeClass(classes.element.expandedInitial);
                });
            }

            // Current Terms Expansion
            $elements = $menu.find(selectors.elementExpandedCurrent);
            if ($elements.length) {
                $elements.removeClass(classes.element.expandedCurrent);
            }
        }

        function isExpanded($element) {
            return $element.hasClass(classes.element.expanded);
        }

        function hasChildren($element) {
            return $element && $element.hasClass(classes.element.hasChildren);
        }

        function expand($element, duration) {
            if (hasChildren($element)) {
                // TODO: Recalculate real-height, if children were collapsed/expanded changes
                duration = duration === undefined ? data[IKSM.dataAttrs.expandAnimationDuration] : duration;
                var isCollapsing = $element.hasClass(classes.element.collapsing);
                var $tree = $element.children(selectors.treeContainer);

                $element.addClass(classes.element.expanded);
                $element.addClass(classes.element.expanding);
                $element.removeClass(classes.element.collapsing);

                var height;
                if (isCollapsing) {
                    height = $tree.data("real-height");
                } else {
                    $tree.css('opacity', 0);
                    $tree.css('display', 'block'); // To get correct outerHeight
                    height = $tree.outerHeight();
                    $tree.css('opacity', '');
                    $tree.css('display', '');
                    $tree.data("real-height", height);
                    $tree.css("height", 0); // Required for animate
                }

                $tree.css("display", "block"); // Make it visible
                $tree.stop().animate({height: height}, duration, function () {
                    $tree.css("height", ""); // Remove unnecessary height
                    $element.removeClass(classes.element.expanding);
                });

                log('expand', $element, height);
            }
        }

        function collapse($element, duration) {
            if (hasChildren($element)) {
                duration = duration === undefined ? data[IKSM.dataAttrs.collapseAnimationDuration] : duration;
                var isExpanding = $element.hasClass(classes.element.expanding);
                var $tree = $element.children(selectors.treeContainer);

                $element.removeClass(classes.element.expanded);
                $element.removeClass(classes.element.expanding);
                $element.addClass(classes.element.collapsing);

                if (!isExpanding) {
                    var outerHeight = $tree.outerHeight();
                    $tree.data("real-height", outerHeight); // Saving real height to use it, if EXPANDING started before COLLAPSING ended
                }

                $tree.stop().animate({height: 0}, duration, function () {
                    $tree.css("display", "");
                    $tree.css("height", "");
                    $element.removeClass(classes.element.collapsing);
                });

                log('collapse', $element);
            }
        }

        function collapseOther($element) {
            log('collapseOther', $element);
            var id = $element.data("id");

            var $elements = $element
                .parent(selectors.treeContainerInner) // Collapsing SAME level items
                .children(selectors.elementHasChildren + '.' + classes.element.expanded)
                .filter(function () {
                    var $this = $(this);
                    if ($this.data("id") === id) { // Same element
                        return false;
                    }
                    if ($this.find(selectors.element + "[data-id='" + id + "']").length > 0) { // Is parent
                        return false;
                    }
                    return true;
                });

            // Collapse result elements
            $elements.each(function (index, element) {
                var $element = $(element);
                collapse($element);
                // Maybe collapse children
                if (data[IKSM.dataAttrs.collapseChildren]) {
                    collapseChildren($element);
                }
            });
        }

        function collapseChildren($element) {
            log('collapseChildren', $element);
            $element.find(selectors.elementHasChildren).each(function (index, element) {
                collapse($(element));
            });
        }
    });

    function getLinkContainer(element) {
        var $target = $(element)
        var parent = $target.closest(selectors.elementInner)
        return parent[0]
    }

    function log(/*...args*/) {
        // console.log(...args);
    }

    function isScreenWidthLessThan(width) {
        return window.matchMedia('(max-width: ' + width + 'px)').matches;
    }
};
// source --> https://www.holzstufen24.de/wp-content/plugins/unlimited-elementor-inner-sections-by-taspristudio/public/js/euis-public.js?ver=1.0.0 
(function( $ ) {
	'use strict';

	/**
	 * All of the code for your public-facing JavaScript source
	 * should reside in this file.
	 *
	 * Note: It has been assumed you will write jQuery code here, so the
	 * $ function reference has been prepared for usage within the scope
	 * of this function.
	 *
	 * This enables you to define handlers, for when the DOM is ready:
	 *
	 * $(function() {
	 *
	 * });
	 *
	 * When the window is loaded:
	 *
	 * $( window ).load(function() {
	 *
	 * });
	 *
	 * ...and/or other possibilities.
	 *
	 * Ideally, it is not considered best practise to attach more than a
	 * single DOM-ready or window-load handler for a particular page.
	 * Although scripts in the WordPress core, Plugins and Themes may be
	 * practising this, we should strive to set a better example in our own work.
	 */

})( jQuery );