document.addEventListener('DOMContentLoaded', function(){
initializePDPFunctionality();
});
function initializePDPFunctionality(){
console.log('Initializing Shopify PDP functionality');
initializeQuantityControls();
initializeProductAccordion();
initializeProductSlider();
}
let cartQuantity=1;
function initializeQuantityControls(){
const decreaseButton=document.querySelector('.decrease');
const increaseButton=document.querySelector('.increase');
if(decreaseButton){
decreaseButton.addEventListener('click', decreaseValue);
}
if(increaseButton){
increaseButton.addEventListener('click', increaseValue);
}}
function decreaseValue(){
const countDisplay=document.getElementById('single-product__count');
if(cartQuantity > 1){
countDisplay.textContent=--cartQuantity;
}}
function increaseValue(){
const countDisplay=document.getElementById('single-product__count');
countDisplay.textContent=++cartQuantity;
}
function initializeProductAccordion(){
const accordionHeaders=document.querySelectorAll('.single-product__accordion__header');
accordionHeaders.forEach(header=> {
header.addEventListener('click', shopifyToggleAccordion);
});
}
function shopifyToggleAccordion(event){
const block=document.querySelector(event.currentTarget.dataset.toggle);
if(!block) return;
event.currentTarget.classList.toggle('active');
block.style.maxHeight=event.currentTarget.classList.contains('active') ? `${block.scrollHeight}px`:'';
}
function initializeProductSlider(){
const prevButton=document.querySelector('.collection__slider-button.prev');
const nextButton=document.querySelector('.collection__slider-button.next');
if(prevButton){
prevButton.addEventListener('click', ()=> moveSlider(-1));
}
if(nextButton){
nextButton.addEventListener('click', ()=> moveSlider(1));
}}
function moveSlider(direction){
const slider=document.getElementById('collection__product-slider');
if(!slider) return;
const scrollAmount=300;
const currentScroll=slider.scrollLeft;
const newScroll=currentScroll + (direction * scrollAmount);
slider.scrollTo({
left: newScroll,
behavior: 'smooth'
});
}
window.decreaseValue=decreaseValue;
window.increaseValue=increaseValue;
window.shopifyToggleAccordion=shopifyToggleAccordion;
window.moveSlider=moveSlider;
document.addEventListener('DOMContentLoaded', function(){
initializePaginationHandlers();
});
function initializePaginationHandlers(){
document.addEventListener("shopify-list-context-update",
(event)=> {
const paginationContainers=document.querySelectorAll(".collection-pagination");
paginationContainers.forEach((paginationContainer)=> {
const previousButton=paginationContainer.querySelector(".pagination-button--previous");
const nextButton=paginationContainer.querySelector(".pagination-button--next");
if(!previousButton||!nextButton) return;
const { hasNextPage, hasPreviousPage }=event.detail;
if(!hasNextPage&&!hasPreviousPage){
paginationContainer.style.display="none";
}else{
paginationContainer.style.display="flex";
if(!hasNextPage){
nextButton.setAttribute("disabled", "true");
}else{
nextButton.removeAttribute("disabled");
}
if(!hasPreviousPage){
previousButton.setAttribute("disabled", "true");
}else{
previousButton.removeAttribute("disabled");
}}
console.log('Pagination event listener processed for container:', paginationContainer);
});
},
);
console.log('Pagination handlers initialized successfully');
}
window.handlePaginationClick=function(listId, direction){
const listElement=document.getElementById(listId);
if(!listElement){
console.error('List element not found:', listId);
return;
}
if(direction==='next'){
listElement.nextPage();
}else if(direction==='previous'){
listElement.previousPage();
}
window.scrollTo(0, 0);
};
document.addEventListener('DOMContentLoaded', function(){
const originalAddEventListener=EventTarget.prototype.addEventListener;
EventTarget.prototype.addEventListener=function(type, listener, options){
originalAddEventListener.call(this, type, listener, options);
if(type.toLowerCase().includes('shopify')){
console.log(`🔵 Shopify Event Listener Added: ${type}`, {
type: type,
target: this,
timestamp: new Date().toISOString()
});
}};
const originalDispatchEvent=EventTarget.prototype.dispatchEvent;
EventTarget.prototype.dispatchEvent=function(event){
if(event.type.toLowerCase().includes('shopify')){
console.log(`🔵 Shopify Event Dispatched: ${event.type}`, {
event: event,
detail: event.detail,
target: event.target,
currentTarget: event.currentTarget,
timestamp: new Date().toISOString()
});
}
return originalDispatchEvent.call(this, event);
};
document.body.addEventListener('shopify-update-data', function(event){
console.log('🟢 shopify-update-data event received:', event);
const UPDATE_DELAY=1000;
const MAX_RETRIES=3;
const RETRY_INTERVAL=500;
const SUCCESS_THRESHOLD=0.8;
const handleShopifyUpdateData=(eventData)=> {
let selectedVariant=eventData?.product?.selectedOrFirstAvailableVariant||eventData?.selectedVariant;
const variantSelector=document.querySelector('shopify-variant-selector');
let selectedRadio=null;
if(variantSelector&&variantSelector.shadowRoot){
selectedRadio=variantSelector.shadowRoot.querySelector('[part*="radio-selected"]');
}
const isVariantDisabled=selectedRadio&&selectedRadio.getAttribute('part')?.includes('radio-disabled');
const addToCartButton=document.querySelector('.product-modal__add-button');
const buyNowButton=document.querySelector('.product-modal__buy-button');
if(isVariantDisabled){
if(addToCartButton){
addToCartButton.disabled=true;
addToCartButton.textContent='Unavailable';
addToCartButton.style.cursor='not-allowed';
}
if(buyNowButton){
buyNowButton.disabled=true;
buyNowButton.textContent='Unavailable';
buyNowButton.style.cursor='not-allowed';
}}else{
if(addToCartButton){
addToCartButton.disabled=false;
addToCartButton.textContent='Add to cart';
addToCartButton.style.cursor='pointer';
}
if(buyNowButton){
buyNowButton.disabled=false;
buyNowButton.textContent='Buy now';
buyNowButton.style.cursor='pointer';
}}
};
handleShopifyUpdateData(event.detail||event);
}, true);
console.log('🔴 Ready to capture Shopify events. shopify-update-data listener is active on body.');
});
(()=> {
const exact=new Map([
['Add to cart', 'In den Warenkorb'],
['Add to card', 'In den Warenkorb'],
['Description', 'Beschreibung'],
['Quick Shop', 'Schnellkauf'],
['Shopping cart', 'Warenkorb'],
['Discounts', 'Rabatte'],
['Checkout', 'Zur Kasse'],
['Enter discount code', 'Rabattcode eingeben'],
['Apply', 'Anwenden'],
['Discount code cannot be applied to your cart.', 'Der Rabattcode kann nicht auf deinen Warenkorb angewendet werden.'],
]);
const fuzzy=[
{ from: /shopping\s*cart/i, to: 'Warenkorb' },
{ from: /discounts/i, to: 'Rabatte' },
{ from: /checkout/i, to: 'Zur Kasse' },
{ from: /enter\s*discount\s*code/i, to: 'Rabattcode eingeben' },
];
const norm=(s)=> (s||'').replace(/\s+/g, ' ').trim();
const replaceInString=(str)=> {
const n=norm(str);
if(exact.has(n)) return exact.get(n);
let out=str;
for (const r of fuzzy){
if(r.from.test(out)) out=out.replace(r.from, r.to);
}
return out;
};
const handleElement=(el)=> {
if(!el) return;
if(el.childNodes&&el.childNodes.length){
el.childNodes.forEach((node)=> {
if(node.nodeType===Node.TEXT_NODE){
const before=node.textContent;
const after=replaceInString(before);
if(after!==before) node.textContent=after;
}});
}
const attrs=['placeholder', 'aria-label', 'value', 'title'];
if(el.getAttribute){
attrs.forEach((attr)=> {
if(el.hasAttribute&&el.hasAttribute(attr)){
const before=el.getAttribute(attr);
const after=replaceInString(before);
if(after!==before) el.setAttribute(attr, after);
}});
}};
const scanTree=(root)=> {
if(!root) return;
if(root.nodeType===1) handleElement(root);
const elements=root.querySelectorAll ? root.querySelectorAll('*'):[];
elements.forEach((el)=> {
handleElement(el);
if(el.shadowRoot){
scanTree(el.shadowRoot);
observeRoot(el.shadowRoot);
}});
if(root instanceof ShadowRoot){
const shadowEls=root.querySelectorAll('*');
shadowEls.forEach((el)=> {
handleElement(el);
if(el.shadowRoot){
scanTree(el.shadowRoot);
observeRoot(el.shadowRoot);
}});
}};
const observed=new WeakSet();
const observeRoot=(root)=> {
if(!root||observed.has(root)) return;
observed.add(root);
const obs=new MutationObserver((mutations)=> {
for (const m of mutations){
if(m.addedNodes){
m.addedNodes.forEach((n)=> {
if(n.nodeType===1||n instanceof ShadowRoot){
scanTree(n);
}});
}
if(m.type==='characterData'&&m.target){
const t=m.target.textContent;
const after=replaceInString(t);
if(after!==t) m.target.textContent=after;
}}
});
obs.observe(root, {
childList: true,
subtree: true,
characterData: true
});
};
const init=()=> {
observeRoot(document.body);
scanTree(document);
document.querySelectorAll('dialog').forEach((d)=> scanTree(d));
};
if(document.readyState==='loading'){
document.addEventListener('DOMContentLoaded', init);
}else{
init();
}})();
window.addComment=function(v){var I,C,h,E=v.document,b={commentReplyClass:"comment-reply-link",commentReplyTitleId:"reply-title",cancelReplyId:"cancel-comment-reply-link",commentFormId:"commentform",temporaryFormId:"wp-temp-form-div",parentIdFieldId:"comment_parent",postIdFieldId:"comment_post_ID"},e=v.MutationObserver||v.WebKitMutationObserver||v.MozMutationObserver,r="querySelector"in E&&"addEventListener"in v,n=!!E.documentElement.dataset;function t(){d(),e&&new e(o).observe(E.body,{childList:!0,subtree:!0})}function d(e){if(r&&(I=g(b.cancelReplyId),C=g(b.commentFormId),I)){I.addEventListener("touchstart",l),I.addEventListener("click",l);function t(e){if((e.metaKey||e.ctrlKey)&&13===e.keyCode&&"a"!==E.activeElement.tagName.toLowerCase())return C.removeEventListener("keydown",t),e.preventDefault(),C.submit.click(),!1}C&&C.addEventListener("keydown",t);for(var n,d=function(e){var t=b.commentReplyClass;e&&e.childNodes||(e=E);e=E.getElementsByClassName?e.getElementsByClassName(t):e.querySelectorAll("."+t);return e}(e),o=0,i=d.length;o<i;o++)(n=d[o]).addEventListener("touchstart",a),n.addEventListener("click",a)}}function l(e){var t,n,d=g(b.temporaryFormId);d&&h&&(g(b.parentIdFieldId).value="0",t=d.textContent,d.parentNode.replaceChild(h,d),this.style.display="none",n=(d=(d=g(b.commentReplyTitleId))&&d.firstChild)&&d.nextSibling,d&&d.nodeType===Node.TEXT_NODE&&t&&(n&&"A"===n.nodeName&&n.id!==b.cancelReplyId&&(n.style.display=""),d.textContent=t),e.preventDefault())}function a(e){var t=g(b.commentReplyTitleId),t=t&&t.firstChild.textContent,n=this,d=m(n,"belowelement"),o=m(n,"commentid"),i=m(n,"respondelement"),r=m(n,"postid"),n=m(n,"replyto")||t;d&&o&&i&&r&&!1===v.addComment.moveForm(d,o,i,r,n)&&e.preventDefault()}function o(e){for(var t=e.length;t--;)if(e[t].addedNodes.length)return void d()}function m(e,t){return n?e.dataset[t]:e.getAttribute("data-"+t)}function g(e){return E.getElementById(e)}return r&&"loading"!==E.readyState?t():r&&v.addEventListener("DOMContentLoaded",t,!1),{init:d,moveForm:function(e,t,n,d,o){var i,r,l,a,m,c,s,e=g(e),n=(h=g(n),g(b.parentIdFieldId)),y=g(b.postIdFieldId),p=g(b.commentReplyTitleId),u=(p=p&&p.firstChild)&&p.nextSibling;if(e&&h&&n){void 0===o&&(o=p&&p.textContent),a=h,m=b.temporaryFormId,c=g(m),s=(s=g(b.commentReplyTitleId))?s.firstChild.textContent:"",c||((c=E.createElement("div")).id=m,c.style.display="none",c.textContent=s,a.parentNode.insertBefore(c,a)),d&&y&&(y.value=d),n.value=t,I.style.display="",e.parentNode.insertBefore(h,e.nextSibling),p&&p.nodeType===Node.TEXT_NODE&&(u&&"A"===u.nodeName&&u.id!==b.cancelReplyId&&(u.style.display="none"),p.textContent=o),I.onclick=function(){return!1};try{for(var f=0;f<C.elements.length;f++)if(i=C.elements[f],r=!1,"getComputedStyle"in v?l=v.getComputedStyle(i):E.documentElement.currentStyle&&(l=i.currentStyle),(i.offsetWidth<=0&&i.offsetHeight<=0||"hidden"===l.visibility)&&(r=!0),"hidden"!==i.type&&!i.disabled&&!r){i.focus();break}}catch(e){}return!1}}}}(window);
(()=>{var a={929:(a,e,t)=>{"use strict";t.r(e);var n=t(808),r=t.n(n);jQuery(document).ready((function(a){function e(a,e){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",n={"aawp-button":"button","aawp-product__title":"title","aawp-product__image-link":"thumbnail","aawp-star-rating":"star_rating","aawp-link":"link","aawp-check-prime":"prime"},r="",i=Object.keys(n);i.some((function(a){if(e.hasClass(a))return r=n[a],!0})),e.parent("td").hasClass("aawp-table__td-thumb")&&(r="thumbnail");var o=void 0!==a.data("aawp-product-id")?a.data("aawp-product-id"):0,c=void 0!==a.data("aawp-tracking-id")?a.data("aawp-tracking-id"):0,d=!0===a.parents().hasClass("widget")?1:0,p=new FormData;p.append("sourceType",aawp_data.source_type),p.append("sourceId",aawp_data.source_id),p.append("isWidget",d),p.append("refererUrl",aawp_data.referer_url),p.append("productId",o),p.append("trackingId",c),p.append("linkType",r),p.append("country",t);var s=aawp_data.home_url+"/wp-json/aawp/v1/click/"+window.cachebreak++;navigator.sendBeacon(s,p)}window.cachebreak=1,a("[data-aawp-local-click-tracking] a, a[data-aawp-local-click-tracking]").on("click",(function(t){var n=a(this),i=a(this).attr("data-aawp-local-click-tracking")?a(this):a(this).closest("[data-aawp-local-click-tracking]");if("undefined"!=typeof aawp_data)if(void 0!==aawp_data.country){var o=r().get("aawp-country");o&&e(i,n,o)}else e(i,n)})),a("[data-aawp-click-tracking] a, a[data-aawp-click-tracking]").on("click",(function(e){if(void 0===a(this).data("aawp-prevent-click-tracking")){var t=a(this).attr("data-aawp-click-tracking")?a(this):a(this).closest("[data-aawp-click-tracking]"),n=t.data("aawp-click-tracking");if(n){var r=void 0!==t.data("aawp-product-asin")?t.data("aawp-product-asin"):"",i=void 0!==t.data("aawp-product-title")?t.data("aawp-product-title"):"",o=!1;if("asin"===n&&r?o=r:"title"===n&&i&&(o=i),o){var c="amazon-link",d="click";"function"==typeof gtag?gtag("event",d,{event_category:c,event_label:o}):"undefined"!=typeof ga?ga("send","event",c,d,o):"undefined"!=typeof _gaq?_gaq.push(["_trackEvent",c,d,o]):"undefined"!=typeof __gaTracker?__gaTracker("send","event",c,d,o):"undefined"!=typeof _paq?_paq.push(["trackEvent",c,d,o]):"undefined"!=typeof dataLayer&&dataLayer.push({event:"amazon-affiliate-link-click",category:c,action:d,label:o})}}}}))}))},148:()=>{var a;(a=jQuery)(document).on("keyup change",".aawp-el-widget-control",(function(e){var t,n,r=a('[data-setting="display_variant"]').val(),i=a('[data-setting="template"]').val();["box","link","fields"].includes(r)?n=a('[data-setting="asin"]').val():"bestseller"===r||"new"===r?n=a('[data-setting="keywords"]').val():"table"===r&&(n=a('[data-setting="table"]').val()),""!==r&&"undefined"!==n&&(t="["+aawp_elementor_data.shortcode+" "+r+'="'+n+'"',"bestseller"===r||"new"===r?t=t+' items="'+a('[data-setting="items"]').val()+'"':"fields"===r&&(t=t+' value="'+a('[data-setting="field_value"]').val()+'"'),"default"!==i&&(t=t+' template="'+i+'"'),t+="]");var o=a('[data-setting="generated_shortcode"]').get(0);void 0!==o&&(Object.getOwnPropertyDescriptor(window.HTMLTextAreaElement.prototype,"value").set.call(o,t),o.dispatchEvent(new Event("input",{bubbles:!0})))}))},169:(a,e,t)=>{"use strict";t.r(e);var n=t(808),r=t.n(n);jQuery(document).ready((function(a){if("undefined"!=typeof aawp_geotargeting_settings&&"undefined"!=typeof aawp_geotargeting_localized_stores&&"undefined"!=typeof aawp_geotargeting_tracking_ids){var e=(u={},window.location.href.replace(location.hash,"").replace(/[?&]+([^=&]+)=?([^&]*)?/gi,(function(a,e,t){u[e]=void 0!==t?t:""})),!!u.aawp_debug_geotargeting),t=aawp_geotargeting_settings,n=aawp_geotargeting_localized_stores,i=aawp_geotargeting_tracking_ids;if(!t.hasOwnProperty("store"))return;var o=t.hasOwnProperty("mode")?t.mode:"mode",c=t.store,d="",p="",s="",l=r().get("aawp-country");void 0!==l&&!1===e&&(p=l,function(){if(p=p.toLowerCase(),!n.hasOwnProperty(p))return;if((d=n[p])===c&&!1===e)return;if(!i.hasOwnProperty(d))return;s=i[d],function(e,t,n){if(null===n)return;a("a[href*='/amazon'], a[href*='/www.amazon'], a[href*='/amzn'], a[href*='/www.amzn']").each((function(r){if(!a(this).data("aawp-geotargeting")&&!a(this).closest("*[data-aawp-product-asin]").data("aawp-geotargeting"))return;var i=a(this).attr("href");"asin"===o||-1!=i.indexOf("prime")?i=function(a,e,t){var n=!1,r=!1;-1!=a.indexOf("amzn."+c)&&(n=!0);-1!=a.indexOf("amazon."+c)&&(r=!0);if(!n&&!r)return;if(-1==a.indexOf("tag="))return;a="com"==e&&n?a.replace("amzn."+e,"amazon."+t+"/dp"):"com"==t?a.replace("amazon."+e,"amzn."+t):a.replace("amazon."+e,"amazon."+t);return a}(i,e,t):"title"===o&&(i=function(e,t,n,r){var i=e.data("aawp-product-title");i||(i=e.parents().filter((function(){return a(this).data("aawp-product-title")})).eq(0).data("aawp-product-title"));i&&(o=5,i=i.split(/\s+/).slice(0,o).join(" "),t="https://www.amazon."+r+"/s/?field-keywords="+encodeURIComponent(i));var o;return t}(a(this),i,0,t)),void 0!==i&&(i=function(a,e,t){null==t&&(t="");var n=new RegExp("\\b("+e+"=).*?(&|$)");if(a.search(n)>=0)return a.replace(n,"$1"+t+"$2");return a+(a.indexOf("?")>0?"&":"?")+e+"="+t}(i,"tag",n),a(this).attr("href",i))}))}(c,d,s)}())}var u}))},808:(a,e,t)=>{var n,r;!function(i){if(void 0===(r="function"==typeof(n=i)?n.call(e,t,e,a):n)||(a.exports=r),!0,a.exports=i(),!!0){var o=window.Cookies,c=window.Cookies=i();c.noConflict=function(){return window.Cookies=o,c}}}((function(){function a(){for(var a=0,e={};a<arguments.length;a++){var t=arguments[a];for(var n in t)e[n]=t[n]}return e}function e(a){return a.replace(/(%[0-9A-Z]{2})+/g,decodeURIComponent)}return function t(n){function r(){}function i(e,t,i){if("undefined"!=typeof document){"number"==typeof(i=a({path:"/"},r.defaults,i)).expires&&(i.expires=new Date(1*new Date+864e5*i.expires)),i.expires=i.expires?i.expires.toUTCString():"";try{var o=JSON.stringify(t);/^[\{\[]/.test(o)&&(t=o)}catch(a){}t=n.write?n.write(t,e):encodeURIComponent(String(t)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),e=encodeURIComponent(String(e)).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent).replace(/[\(\)]/g,escape);var c="";for(var d in i)i[d]&&(c+="; "+d,!0!==i[d]&&(c+="="+i[d].split(";")[0]));return document.cookie=e+"="+t+c}}function o(a,t){if("undefined"!=typeof document){for(var r={},i=document.cookie?document.cookie.split("; "):[],o=0;o<i.length;o++){var c=i[o].split("="),d=c.slice(1).join("=");t||'"'!==d.charAt(0)||(d=d.slice(1,-1));try{var p=e(c[0]);if(d=(n.read||n)(d,p)||e(d),t)try{d=JSON.parse(d)}catch(a){}if(r[p]=d,a===p)break}catch(a){}}return a?r[a]:r}}return r.set=i,r.get=function(a){return o(a,!1)},r.getJSON=function(a){return o(a,!0)},r.remove=function(e,t){i(e,"",a(t,{expires:-1}))},r.defaults={},r.withConverter=t,r}((function(){}))}))}},e={};function t(n){var r=e[n];if(void 0!==r)return r.exports;var i=e[n]={exports:{}};return a[n](i,i.exports,t),i.exports}t.n=a=>{var e=a&&a.__esModule?()=>a.default:()=>a;return t.d(e,{a:e}),e},t.d=(a,e)=>{for(var n in e)t.o(e,n)&&!t.o(a,n)&&Object.defineProperty(a,n,{enumerable:!0,get:e[n]})},t.o=(a,e)=>Object.prototype.hasOwnProperty.call(a,e),t.r=a=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})},t(929),t(169),t(148)})();