9,2
uit 2.133 beoordelingen(2.133)
function showError() {
if (configuratorError) {
configuratorIframe.style.display = 'none';
configuratorError.style.display = 'block';
}
}
function retryLoad() {
if (retryCount < maxRetries) {
retryCount++;
configuratorIframe.style.display = 'block';
if (configuratorError) configuratorError.style.display = 'none';
configuratorIframe.src = configuratorIframe.src + '&retry=' + retryCount;
} else {
showError();
}
}
var iframeLoaded = false;
configuratorIframe.addEventListener('load', function() {
iframeLoaded = true;
retryCount = 0;
});
configuratorIframe.addEventListener('error', function() {
retryLoad();
});
setTimeout(function() {
if (!iframeLoaded) retryLoad();
}, 20000);
if (retryButton) {
retryButton.addEventListener('click', function() {
retryCount = 0;
retryLoad();
});
}
var lastHeight = 0;
var isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || window.innerWidth <= 768;
var minHeight = isMobile ? 1600 : 600;
window.addEventListener('message', function(event) {
if (event.origin.indexOf('hwatotaal.nl') === -1 && event.origin.indexOf('localhost') === -1) return;
if (event.data && event.data.type === 'SCROLL_TO' && typeof event.data.offsetTop === 'number') {
var requestedOffset = event.data.offsetTop;
requestAnimationFrame(function() {
var iframeTop = configuratorIframe.getBoundingClientRect().top + window.scrollY;
var siteHeader = document.getElementById('header');
var headerOffset = siteHeader ? siteHeader.offsetHeight : 0;
window.scrollTo({ top: iframeTop + requestedOffset - headerOffset, behavior: 'smooth' });
});
return;
}
var height = null;
if (event.data && event.data.type === 'IFRAME_HEIGHT_UPDATE') {
height = event.data.height;
} else if (event.data && typeof event.data.height === 'number') {
height = event.data.height;
}
if (height) {
var newHeight = Math.max(height, minHeight);
if (Math.abs(newHeight - lastHeight) > 50) {
configuratorIframe.style.height = newHeight + 'px';
lastHeight = newHeight;
}
}
if (event.data && event.data.type === 'LIGHTSPEED_PRODUCT_READY' && event.data.cartAddUrl) {
window.location.href = event.data.cartAddUrl;
}
});
}
function initializeSwiper() {
if (typeof Swiper !== 'undefined' && document.querySelector('.main-images')) {
var thumbSwiper = new Swiper('.thumb-images', {
spaceBetween: 10,
slidesPerView: 4,
freeMode: true,
watchSlidesProgress: true,
breakpoints: {
320: { slidesPerView: 2 },
480: { slidesPerView: 3 },
640: { slidesPerView: 4 }
}
});
new Swiper('.main-images', {
spaceBetween: 10,
loop: true,
thumbs: { swiper: thumbSwiper },
navigation: {
nextEl: '.swiper-next',
prevEl: '.swiper-prev',
},
pagination: {
el: '.swiper-pagination',
clickable: true,
}
});
} else if (typeof Swiper === 'undefined') {
setTimeout(initializeSwiper, 100);
}
}
initializeSwiper();
});