(function (){
'use strict';
if(/[?&]cmcat=1\b/.test(location.search)){
var rutas=/\/(product|product-category|product-brand|tienda|shop)\//;
document.addEventListener('click', function (e){
var a=e.target.closest&&e.target.closest('a[href]');
if(!a||a.origin!==location.origin||!rutas.test(a.pathname)||/[?&]cmcat=/.test(a.search)) return;
a.search=a.search ? a.search + '&cmcat=1':'?cmcat=1';
}, true);
}
var panel=document.getElementById('cmk-filtros');
var fondo=document.querySelector('.cmk-f-fondo');
function filtros(on){
if(!panel) return;
panel.classList.toggle('is-on', on);
if(fondo) fondo.classList.toggle('is-on', on);
document.documentElement.style.overflow=on ? 'hidden':'';
}
document.addEventListener('click', function (e){
if(e.target.closest('[data-abrir-filtros]')) filtros(true);
else if(e.target.closest('[data-cerrar-filtros]')) filtros(false);
var mas=e.target.closest('[data-ver-mas]');
if(mas){
var lista=mas.previousElementSibling;
var abierta=lista.classList.toggle('is-abierta');
mas.textContent=abierta ? 'Ver menos':'Ver todas';
}});
document.addEventListener('keydown', function (e){ if(e.key==='Escape') filtros(false); });
var form=document.querySelector('[data-filtros]');
if(form){
var hidden=form.querySelector('[data-marca]');
var rango=form.querySelector('[data-rango]');
form.addEventListener('submit', function (){
var marcas=[].map.call(form.querySelectorAll('[data-marca-op]:checked'), function (c){ return c.value; });
hidden.value=marcas.join(',');
if(!hidden.value) hidden.disabled=true;
var b=form.querySelector('input[name="buscar"]');
if(b&&!b.value.trim()) b.disabled=true;
if(rango){
var lo=+rango.getAttribute('data-min'), hi=+rango.getAttribute('data-max');
var mn=form.querySelector('[data-num="min"]'), mx=form.querySelector('[data-num="max"]');
if(+mn.value <=lo) mn.disabled=true;
if(+mx.value >=hi) mx.disabled=true;
}});
form.addEventListener('change', function (e){
if(e.target.matches('[data-marca-op]')&&window.matchMedia('(min-width: 1024px)').matches) form.requestSubmit ? form.requestSubmit():form.submit();
});
if(rango){
var lo=+rango.getAttribute('data-min'), hi=+rango.getAttribute('data-max');
var rMin=rango.querySelector('[data-rng="min"]'), rMax=rango.querySelector('[data-rng="max"]');
var nMin=rango.querySelector('[data-num="min"]'), nMax=rango.querySelector('[data-num="max"]');
var barra=rango.querySelector('[data-barra]');
var pintar=function (){
var a=(+rMin.value - lo) / (hi - lo) * 100, b=(+rMax.value - lo) / (hi - lo) * 100;
barra.style.left=a + '%';
barra.style.width=Math.max(0, b - a) + '%';
};
rMin.addEventListener('input', function (){ if(+rMin.value > +rMax.value) rMin.value=rMax.value; nMin.value=rMin.value; pintar(); });
rMax.addEventListener('input', function (){ if(+rMax.value < +rMin.value) rMax.value=rMin.value; nMax.value=rMax.value; pintar(); });
nMin.addEventListener('change', function (){ nMin.value=Math.max(lo, Math.min(+nMin.value||lo, +nMax.value)); rMin.value=nMin.value; pintar(); });
nMax.addEventListener('change', function (){ nMax.value=Math.min(hi, Math.max(+nMax.value||hi, +nMin.value)); rMax.value=nMax.value; pintar(); });
pintar();
}}
document.querySelectorAll('[data-filtra-marcas]').forEach(function (input){
var lista=input.closest('details').querySelector('.cmk-f-marcas');
var mas=input.closest('details').querySelector('[data-ver-mas]');
input.addEventListener('input', function (){
var q=input.value.trim().toLowerCase();
lista.classList.toggle('is-abierta', q!=='');
if(mas) mas.hidden=q!=='';
lista.querySelectorAll('li').forEach(function (li){
li.classList.toggle('is-oculta', q!==''&&li.textContent.toLowerCase().indexOf(q)===-1);
});
});
input.addEventListener('keydown', function (e){ if(e.key==='Enter') e.preventDefault(); });
});
document.querySelectorAll('select[data-auto]').forEach(function (s){
s.addEventListener('change', function (){
if(!s.value) s.disabled=true;
s.form.submit();
});
});
var grid=document.querySelector('[data-grid]');
var botones=document.querySelectorAll('[data-vista]');
function vista(v){
if(!grid) return;
grid.classList.toggle('is-lista', v==='lista');
botones.forEach(function (b){
var on=b.getAttribute('data-vista')===v;
b.classList.toggle('is-on', on);
b.setAttribute('aria-pressed', on ? 'true':'false');
});
try { localStorage.setItem('cmk_vista', v); } catch (e){}}
botones.forEach(function (b){ b.addEventListener('click', function (){ vista(b.getAttribute('data-vista')); });});
try { if(localStorage.getItem('cmk_vista')==='lista') vista('lista'); } catch (e){}
var gal=document.querySelector('[data-galeria]');
if(gal){
var principal=gal.querySelector('[data-principal]');
gal.querySelectorAll('.cmk-thumb').forEach(function (t){
t.addEventListener('click', function (){
gal.querySelectorAll('.cmk-thumb').forEach(function (x){ x.classList.toggle('is-on', x===t); });
if(!principal) return;
var src=t.getAttribute('data-foto');
if(src){
principal.src=src;
var ss=t.getAttribute('data-srcset');
if(ss) principal.srcset=ss; else principal.removeAttribute('srcset');
}});
});
}
document.querySelectorAll('[data-qty]').forEach(function (q){
var input=q.querySelector('input');
var menos=q.querySelector('[data-paso="-1"]'), mas=q.querySelector('[data-paso="1"]');
var max=+input.getAttribute('max')||999;
function estado(){
var v=Math.max(1, Math.min(max, parseInt(input.value, 10)||1));
input.value=v;
menos.disabled=v <=1;
mas.disabled=v >=max;
}
q.addEventListener('click', function (e){
var b=e.target.closest('[data-paso]');
if(!b) return;
input.value=(parseInt(input.value, 10)||1) + parseInt(b.getAttribute('data-paso'), 10);
estado();
});
input.addEventListener('change', estado);
estado();
});
document.querySelectorAll('[data-carrusel]').forEach(function (track){
var flechas=track.parentNode.querySelector('[data-carrusel-flechas]');
if(!flechas) return;
var prev=flechas.querySelector('[data-dir="-1"]'), next=flechas.querySelector('[data-dir="1"]');
function estado(){
var max=track.scrollWidth - track.clientWidth - 2;
prev.disabled=track.scrollLeft <=2;
next.disabled=track.scrollLeft >=max;
}
[prev, next].forEach(function (b){
b.addEventListener('click', function (){ track.scrollBy({ left: +b.getAttribute('data-dir') * track.clientWidth, behavior: 'smooth' });});
});
track.addEventListener('scroll', function (){ clearTimeout(track._t); track._t=setTimeout(estado, 60); }, { passive: true });
estado();
});
})();