Produkten har lagts i din varukorg Visa varukorgenTill kassan
Din webbläsare stöds ej. För bästa upplevelsen rekommenderas en nyare version eller en annan webbläsare.

Artikel saknas

document.addEventListener("DOMContentLoaded", function () { /* ===================================================== TABS ===================================================== */ const tabs = document.querySelectorAll(".ns-tab"); const panels = document.querySelectorAll(".ns-panel"); if (tabs.length && panels.length) { tabs.forEach(function (tab) { tab.addEventListener("click", function () { tabs.forEach(function (t) { t.classList.remove("active"); }); panels.forEach(function (p) { p.classList.remove("active"); }); this.classList.add("active"); const target = this.dataset.tab; const panel = document.querySelector('.ns-panel[data-content="' + target + '"]'); if (panel) { panel.classList.add("active"); } }); }); } /* ===================================================== FAQ ACCORDION ===================================================== */ const faqItems = document.querySelectorAll(".ns-faq-item"); if (faqItems.length) { faqItems.forEach(function (item) { const button = item.querySelector(".ns-faq-question"); if (!button) return; button.addEventListener("click", function () { faqItems.forEach(function (other) { if (other !== item) { other.classList.remove("active"); } }); item.classList.toggle("active"); }); }); } /* ===================================================== GENERIC IMAGE SLIDERS (2 mobile / 3 desktop) ===================================================== */ const sliders = document.querySelectorAll("[data-slider]"); sliders.forEach(function (slider) { const track = slider.querySelector(".slider-track"); const slides = slider.querySelectorAll(".slide"); const prev = slider.querySelector(".slider-btn.prev"); const next = slider.querySelector(".slider-btn.next"); if (!track || !slides.length || !prev || !next) return; let index = 0; function updateSlider() { const slideWidth = slides[0].offsetWidth; const gap = parseInt(getComputedStyle(track).gap, 10) || 0; const step = slideWidth + gap; const visible = window.innerWidth >= 1024 ? 3 : 2; const maxIndex = Math.max(0, slides.length - visible); index = Math.max(0, Math.min(index, maxIndex)); track.style.transform = "translateX(-" + (index * step) + "px)"; prev.disabled = index === 0; next.disabled = index >= maxIndex; } prev.addEventListener("click", function () { index--; updateSlider(); }); next.addEventListener("click", function () { index++; updateSlider(); }); window.addEventListener("resize", updateSlider); updateSlider(); }); /* ===================================================== INSPIRATION SLIDER (2 mobile / 4 desktop) ===================================================== */ const inspiration = document.querySelector(".inspiration-slider"); if (inspiration) { const track = inspiration.querySelector(".slider-track"); const slides = inspiration.querySelectorAll(".slide"); const prev = inspiration.querySelector(".slider-arrow.prev"); const next = inspiration.querySelector(".slider-arrow.next"); if (track && slides.length && prev && next) { let index = 0; function updateInspiration() { const slideWidth = slides[0].offsetWidth; const gap = parseInt(getComputedStyle(track).gap, 10) || 0; const step = slideWidth + gap; const visible = window.innerWidth >= 1024 ? 4 : 2; const maxIndex = Math.max(0, slides.length - visible); index = Math.max(0, Math.min(index, maxIndex)); track.style.transform = "translateX(-" + (index * step) + "px)"; } prev.addEventListener("click", function () { index--; updateInspiration(); }); next.addEventListener("click", function () { index++; updateInspiration(); }); window.addEventListener("resize", updateInspiration); updateInspiration(); } } /* ===================================================== LOMBARD HERO SLIDER ===================================================== */ const lombardTrack = document.getElementById("lombard-slider-track"); const lombardSlides = lombardTrack ? lombardTrack.children : []; const lombardPrev = document.querySelector(".lombard-slider-prev"); const lombardNext = document.querySelector(".lombard-slider-next"); if (lombardTrack && lombardSlides.length && lombardPrev && lombardNext) { let lombardIndex = 0; function updateLombardSlider() { lombardTrack.style.transform = "translateX(-" + (lombardIndex * 100) + "%)"; } lombardPrev.addEventListener("click", function () { lombardIndex = (lombardIndex - 1 + lombardSlides.length) % lombardSlides.length; updateLombardSlider(); }); lombardNext.addEventListener("click", function () { lombardIndex = (lombardIndex + 1) % lombardSlides.length; updateLombardSlider(); }); updateLombardSlider(); } /* ===================================================== VIDEO AUTOPLAY FIX (mobile) ===================================================== */ const videos = document.querySelectorAll("video"); videos.forEach(function (video) { video.setAttribute("muted", ""); video.setAttribute("playsinline", ""); video.setAttribute("webkit-playsinline", ""); const playPromise = video.play(); if (playPromise !== undefined) { playPromise.catch(function () {}); } }); /* ===================================================== SMOOTH SCROLL FOR HASH LINKS ===================================================== */ document.querySelectorAll('a[href^="#"]').forEach(function (anchor) { anchor.addEventListener("click", function (e) { const id = this.getAttribute("href"); if (!id || id === "#") return; const target = document.querySelector(id); if (!target) return; e.preventDefault(); target.scrollIntoView({ behavior: "smooth", block: "start" }); }); }); /* ===================================================== PRODUCT USP CONTENT ===================================================== */ function findProductTitleElement() { const selectors = [ ".product-title h1", ".product-name h1", ".product-title", ".product-name", "[class*='product-title'] h1", "[class*='product-name'] h1", "[class*='product-title']", "[class*='product-name']", "h1" ]; for (let i = 0; i < selectors.length; i++) { const elements = document.querySelectorAll(selectors[i]); for (let j = 0; j < elements.length; j++) { const el = elements[j]; if (el && el.textContent && el.textContent.trim().length > 0) { return el; } } } return null; } function findUSPSource() { return document.querySelector(".product-usp-source"); } function findUSPContent(sourceEl) { if (!sourceEl) return null; const content = sourceEl.querySelector(".product-usp-content"); if (content) return content; const wrapper = document.createElement("div"); wrapper.className = "product-usp-content"; wrapper.innerHTML = sourceEl.innerHTML; return wrapper; } function removeUnwantedLines(titleEl) { if (!titleEl) return; titleEl.style.borderBottom = "none"; titleEl.style.boxShadow = "none"; let current = titleEl.parentElement; let steps = 0; while (current && steps < 5) { current.style.borderBottom = "none"; current.style.borderTop = "none"; current.style.boxShadow = "none"; steps++; current = current.parentElement; } } function insertUSPBelowTitle(titleEl, sourceEl) { if (!titleEl || !sourceEl) return; if (document.querySelector(".product-usp-content--moved")) return; const content = findUSPContent(sourceEl); if (!content) return; const movedContent = content.cloneNode(true); movedContent.classList.add("product-usp-content--moved"); titleEl.insertAdjacentElement("afterend", movedContent); } function initProductUSPContent() { const titleEl = findProductTitleElement(); const sourceEl = findUSPSource(); if (!titleEl || !sourceEl) return; insertUSPBelowTitle(titleEl, sourceEl); removeUnwantedLines(titleEl); } initProductUSPContent(); });