(function () {
// Set to false if you prefer to keep all images visible and only "focus" the best one
var HIDE_NON_MATCHING = true;
function getSelectedVariantId(container) {
// Standard select
var select = container.querySelector('select[name="id"]');
if (select && select.value) return select.value;
// Radio-style variants
var checked = container.querySelector('input[name="id"]:checked');
if (checked && checked.value) return checked.value;
// Fallback: some themes store it on the form
var form = container.querySelector('form[action*="/cart/add"]');
if (form && form.dataset && form.dataset.variantId) return form.dataset.variantId;
return null;
}
function csvIncludes(csv, id) {
if (!csv || !id) return false;
return csv.split(',').map(function (s) { return s.trim(); }).includes(String(id));
}
function activateForVariant(container, variantId) {
var medias = container.querySelectorAll('.xp-media');
if (!medias.length) return;
// Choose the best media for this variant
var best = null;
// Prefer media that is explicitly attached to the selected variant
medias.forEach(function (el) {
var csv = el.getAttribute('data-variant-ids') || '';
if (variantId && csvIncludes(csv, variantId)) {
if (!best) best = el;
if (el.hasAttribute('data-initial')) best = el; // featured_media wins
}
});
// Fallback to the initial (featured) or first item
if (!best) best = container.querySelector('.xp-media[data-initial="true"]') || medias[0];
// Mark active
medias.forEach(function (el) { el.classList.remove('xp-active'); });
if (best) best.classList.add('xp-active');
// Hide non-matching media if desired (keep generic media like videos visible)
if (HIDE_NON_MATCHING) {
medias.forEach(function (el) {
var csv = el.getAttribute('data-variant-ids') || '';
var isGeneric = !csv; // videos/generic images
var matches = csvIncludes(csv, variantId);
el.style.display = (el === best || matches || isGeneric) ? '' : 'none';
});
}
// Thumbnails
var thumbs = container.querySelectorAll('.xp-thumb');
thumbs.forEach(function (el) {
var csv = el.getAttribute('data-variant-ids') || '';
var isGeneric = !csv;
var matches = csvIncludes(csv, variantId);
el.style.display = (matches || isGeneric) ? '' : 'none';
});
}
function handleChange(e) {
var root = e.target.closest('[data-section-type="main-product"], [data-product-id], #MediaGallery-') || document;
activateForVariant(root, getSelectedVariantId(root));
}
function init() {
document.querySelectorAll('[data-section-type="main-product"], [data-product-id], #MediaGallery-').forEach(function (container) {
activateForVariant(container, getSelectedVariantId(container));
// Listen to variant changes
container.addEventListener('change', function (e) {
if (e.target.name === 'id' || (e.target.closest && e.target.closest('[name="id"]'))) handleChange(e);
});
// Some themes dispatch a custom event on variant change
container.addEventListener('variant:changed', handleChange);
});
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}
})();
7097-003
Normaalihinta
0,00 € |
0,00 €/kpl
Myyntihinta
0,00 €
Normaalihinta
Säästä 0
Loppuunmyyty
Hinta ilman ALV ja painatus