Din webbläsare stöds ej. För bästa upplevelsen rekommenderas en nyare version eller en annan webbläsare.
Din sökning pågav inga träffar. Var vänlig försök med annat sökord.
Sökning måste bestå av minsttecken.
Cookies och säkerhet
Cookies
Du har under tiden du är inne och handlar ett unikt, tillfälligt, sessionsid som raderas så fort du loggat ut (automatisk utloggning sker efter 30 minuters inaktivitet.).
Enligt lagen om elektronisk kommunikation måste vi informera dig om att vi använder cookies. En cookie är en liten textfil som lagras på din dator och som innehåller information. Cookies används av rent tekniska skäl för att förbättra webbplatsens funktionalitet. Det finns två sorters cookies, en sort som sparar en fil permanent på din dator och en annan sort som sparas temporärt under tiden du befinner dig på webbplatsen.
Vi använder oss av temporära cookie-filer som finns sparade så länge du är inloggad. Undantag är om du väljer automatisk inloggning. Då lagras ditt användarnamn och lösenord i en cookie-fil mellan inloggningar.
Om du inte vill tillåta lagring av cookies på din dator kan du stänga av funktionen i din webbläsares inställningar. Detta innebär samtidigt att vissa funktioner på vår webbplats inte kommer att fungera för dig.
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();
});