!function(){"use strict";var e={level:"brands",brand:null,model:null,year:null,engine:null,category:null,group:null,partType:null,nxGroup:null,nxSubgroup:null,nxPartType:null,region:"north-america",mode:"local"===localStorage.getItem("catalog_mode")?"local":"oem",page:1,totalPages:1};function n(){document.querySelectorAll("#modeToggle button").forEach((function(n){n.classList.toggle("is-active",n.getAttribute("data-mode")===e.mode)}))}window.setCatalogMode=function(a){if(("oem"===a||"local"===a)&&a!==e.mode){e.mode=a,localStorage.setItem("catalog_mode",a),n();var t=!(!e.engine||!e.engine.id_mye);if(e.category=e.group=e.partType=null,e.nxGroup=e.nxSubgroup=e.nxPartType=null,e.page=1,t)return e.level="categories",void v();e.brand=e.model=e.year=e.engine=null,e.level="brands",d()}},window.setRegion=function(n){e.region=n,document.querySelectorAll(".region-btn").forEach((function(e){e.classList.toggle("is-active",e.dataset.region===n)})),e.brand=e.model=e.year=e.engine=null,e.category=e.group=e.partType=null,e.nxGroup=e.nxSubgroup=e.nxPartType=null,d()};var a="/api/catalog",t=document.getElementById("content"),r=document.getElementById("breadcrumb"),o=document.getElementById("searchInput"),i=new URLSearchParams(window.location.search).get("brand");n(),i?fetch(a+"/brands?mode="+e.mode).then((function(e){return e.json()})).then((function(n){var a=n.find((function(e){return e.id_brand==i}));a?(e.brand={id:a.id_brand,name:a.name_brand},e.level="models",p()):d()})).catch((function(){d()})):d();var s=document.createElement("div");function l(){var n=[];if(n.push('Catalogo'),e.brand&&(n.push('/'),n.push(''+_(e.brand.name)+"")),e.model&&(n.push('/'),n.push(''+_(e.model.name)+"")),e.year&&(n.push('/'),n.push(''+_(String(e.year.value))+"")),e.engine){n.push('/');var a=e.engine.name+(e.engine.trim?" ("+e.engine.trim+")":"");n.push(''+_(a)+"")}e.nxGroup?(n.push('/'),n.push(''+_(e.nxGroup.name)+"")):e.category&&(n.push('/'),n.push(''+_(e.category.name)+"")),e.nxSubgroup?(n.push('/'),e.nxPartType?n.push(''+_(e.nxSubgroup.name)+""):n.push(""+_(e.nxSubgroup.name)+"")):e.group&&(n.push('/'),e.partType?n.push(''+_(e.group.name)+""):n.push(""+_(e.group.name)+"")),e.nxPartType?(n.push('/'),n.push(""+_(e.nxPartType.name)+"")):e.partType&&(n.push('/'),n.push(""+_(e.partType.name)+"")),"search"===e.level&&(n.push('/'),n.push("Busqueda")),r.innerHTML=n.join("")}function c(){e.category=e.group=e.partType=null,e.nxGroup=e.nxSubgroup=e.nxPartType=null}function d(){e.level="brands",l(),t.innerHTML='
Cargando marcas...
',fetch(a+"/brands?region="+(e.region||"north-america")+"&mode="+e.mode).then((function(e){return e.json()})).then((function(e){var n='

Selecciona una Marca

",t.innerHTML=n})).catch((function(){t.innerHTML='
Error cargando marcas.
'}))}function p(){l(),t.innerHTML='
Cargando modelos...
',fetch(a+"/models?brand_id="+e.brand.id).then((function(e){return e.json()})).then((function(n){var a="

"+_(e.brand.name)+' โ€” Modelos

",t.innerHTML=a})).catch((function(){t.innerHTML='
Error cargando modelos.
'}))}function u(){l(),t.innerHTML='
Cargando anos...
',fetch(a+"/years?model_id="+e.model.id).then((function(e){return e.json()})).then((function(n){var a="

"+_(e.brand.name)+" "+_(e.model.name)+' โ€” Anos

",t.innerHTML=a})).catch((function(){t.innerHTML='
Error cargando anos.
'}))}function g(){l(),t.innerHTML='
Cargando motores...
',fetch(a+"/engines?model_id="+e.model.id+"&year_id="+e.year.id).then((function(e){return e.json()})).then((function(n){var a="

"+_(e.brand.name)+" "+_(e.model.name)+" "+e.year.value+" โ€” Motor

";a+='",t.innerHTML=a})).catch((function(){t.innerHTML='
Error cargando motores.
'}))}function v(){"local"===e.mode?(e.level="categories",l(),t.innerHTML='
Cargando categorias Local...
',fetch(a+"/categories?mode=local&mye_id="+e.engine.id_mye).then((function(e){return e.json()})).then((function(e){var n=e&&e.data||[];if(n.length){var a='

Categorias (Local ยท '+n.length+")

";a+='",t.innerHTML=a}else t.innerHTML='

Categorias (Local)

Ninguna parte de este vehiculo mapea al catalogo Local.
'})).catch((function(){t.innerHTML='
Error cargando categorias Local.
'}))):(l(),t.innerHTML='
Cargando categorias...
',fetch(a+"/categories?mye_id="+e.engine.id_mye).then((function(e){return e.json()})).then((function(e){if(e.length){var n='

Categorias

",t.innerHTML=n}else t.innerHTML='

Categorias

No se encontraron categorias con partes para este vehiculo.
'})).catch((function(){t.innerHTML='
Error cargando categorias.
'})))}function m(){e.level="groups",l(),t.innerHTML='
Cargando subcategorias...
';var n=a+"/groups?mode=local&mye_id="+e.engine.id_mye+"&category_slug="+encodeURIComponent(e.nxGroup.slug);fetch(n).then((function(e){return e.json()})).then((function(n){var a=n&&n.data||[];if(a.length){var r="

"+_(e.nxGroup.name)+' ('+a.length+" subcategorias)

";r+='",t.innerHTML=r}else t.innerHTML="

"+_(e.nxGroup.name)+'

Sin subcategorias.
'})).catch((function(){t.innerHTML='
Error cargando subcategorias.
'}))}function h(){e.level="part_types",l(),t.innerHTML='
Cargando tipos de parte...
';var n=a+"/part-types?mode=local&mye_id="+e.engine.id_mye+"&group_slug="+encodeURIComponent(e.nxGroup.slug)+"&subgroup_slug="+encodeURIComponent(e.nxSubgroup.slug);fetch(n).then((function(e){return e.json()})).then((function(n){var a=n&&n.data||[];if(a.length){if(1===a.length)return e.nxPartType={slug:a[0].slug,name:a[0].name},e.level="parts",e.page=1,void b();var r="

"+_(e.nxSubgroup.name)+' ('+a.length+" tipos)

";r+='",t.innerHTML=r}else t.innerHTML="

"+_(e.nxSubgroup.name)+'

Sin tipos de parte.
'})).catch((function(){t.innerHTML='
Error cargando tipos de parte.
'}))}function y(){l(),t.innerHTML='
Cargando grupos...
',fetch(a+"/groups?mye_id="+e.engine.id_mye+"&category_id="+e.category.id).then((function(e){return e.json()})).then((function(n){if(n.length){var a="

"+_(e.category.name)+'

",t.innerHTML=a}else t.innerHTML="

"+_(e.category.name)+'

No se encontraron sub-grupos.
'})).catch((function(){t.innerHTML='
Error cargando grupos.
'}))}function f(){e.level="part_types",l(),t.innerHTML='
Cargando tipos de parte...
',fetch(a+"/part-types?mye_id="+e.engine.id_mye+"&group_id="+e.group.id).then((function(e){return e.json()})).then((function(n){var a=n.data||[];if(!a.length)return e.level="parts",e.page=1,void b();if(1===a.length)return e.partType={slug:a[0].slug,name:a[0].name},e.level="parts",e.page=1,void b();var r="

"+_(e.group.name)+' ('+a.length+" tipos)

";r+='",t.innerHTML=r})).catch((function(){t.innerHTML='
Error cargando tipos de parte.
'}))}function b(){var n;if(l(),t.innerHTML='
Cargando partes...
',e.nxGroup&&e.nxSubgroup&&e.nxPartType)n=a+"/parts?mode=local&mye_id="+e.engine.id_mye+"&page="+e.page+"&nexpart_group="+encodeURIComponent(e.nxGroup.slug)+"&nexpart_subgroup="+encodeURIComponent(e.nxSubgroup.slug)+"&nexpart_part_type="+encodeURIComponent(e.nxPartType.slug);else{var r=e.partType?"&part_type="+encodeURIComponent(e.partType.slug):"";n=a+"/parts?mye_id="+e.engine.id_mye+"&group_id="+e.group.id+"&page="+e.page+"&mode="+e.mode+r}var o=e.nxPartType?e.nxPartType.name:e.nxSubgroup?e.nxSubgroup.name:e.partType?e.partType.name:e.group?e.group.name:"Partes";fetch(n).then((function(e){return e.json()})).then((function(n){var a=n.data,r=n.pagination;e.totalPages=r.total_pages;var i="local"===e.mode;if(a.length){var s="

"+_(o)+' ('+r.total+" partes)

";s+='
',a.forEach((function(e){var n="";if(i&&(1===e.priority_tier?n=" part-row--tier1":2===e.priority_tier&&(n=" part-row--tier2")),s+='
',s+="
",i&&e.manufacturer){var a=1===e.priority_tier?'':"";s+='
'+_(e.manufacturer)+""+a+"
"}i&&e.part_number?s+='
'+_(e.part_number)+' · OEM: '+_(e.oem_part_number)+"
":s+='
'+_(e.oem_part_number)+"
",s+='
'+_(e.name||"")+"
",e.description&&(s+='
'+_(e.description)+"
"),i&&(e.in_stock_network?s+='
En stock en '+e.bodega_count+" bodega"+(e.bodega_count>1?"s":"")+"
":s+='
Consultar disponibilidad
'),s+='',s+="
",e.image_url&&(s+=''),s+="
"})),s+="
",r.total_pages>1&&(s+='"),t.innerHTML=s}else t.innerHTML="

"+_(o)+'

No se encontraron partes.
'})).catch((function(){t.innerHTML='
Error cargando partes.
'}))}function _(e){if(!e)return"";var n=document.createElement("div");return n.textContent=e,n.innerHTML}function x(e){return _(e).replace(/'/g,"\\'").replace(/"/g,""")}s.style.cssText="display:none;padding:3px 10px;font-size:12px;color:var(--color-text-accent);background:var(--color-primary-muted);border:1px dashed var(--color-border-accent);border-radius:4px;margin-top:4px;",o.parentElement.after(s),o.addEventListener("input",(function(){var e=this.value.trim();if(e.length>=3){var n=function(e){if(!e)return"keyword";var n=e.trim(),a=n.replace(/[\s\-]/g,"").toUpperCase();if(/^[A-HJ-NPR-Z0-9]{17}$/.test(a))return"vin";if(/^[A-Z]{3}[-\s]?\d{3,4}$/.test(n.toUpperCase()))return"plate";if(/[a-z]/.test(n))return"keyword";var t=n.split(/\s+/);if(t.some((function(e){return/^(19|20)\d{2}$/.test(e)}))&&t.length>1)return"keyword";var r=n.toUpperCase();return/^[A-Z0-9]{2,}[\-\/][A-Z0-9]{2,}([\-\/][A-Z0-9]+)*$/.test(r)&&a.length>=6||t.length>=2&&t.every((function(e){return/^[A-Z0-9]{1,}$/.test(e)}))&&a.length>=6||/^[A-Z0-9]{8,}$/.test(a)&&/[A-Z]/.test(a)&&/\d/.test(a)?"part_number":"keyword"}(e),a={vin:"๐Ÿš— VIN detectado",plate:"๐Ÿ”– Placa detectada",part_number:"๐Ÿ”ฉ Numero de parte",keyword:null};a[n]?(s.textContent=a[n],s.style.display=""):s.style.display="none"}else s.style.display="none"})),o.addEventListener("keydown",(function(e){"Enter"===e.key&&doSearch()})),window.toggleTheme=function(){var e=document.documentElement,n="industrial"===e.getAttribute("data-theme")?"modern":"industrial";e.setAttribute("data-theme",n),localStorage.setItem("nexus-theme",n)},window.doSearch=function(){var n=o.value.trim();!n||n.length<2||(e.level="search",l(),t.innerHTML='
Buscando...
',fetch(a+"/search?q="+encodeURIComponent(n)).then((function(e){return e.json()})).then((function(e){!function(e){if(l(),!e.length)return void(t.innerHTML='

Busqueda

No se encontraron resultados.
');var n="

Resultados ("+e.length+')

';e.forEach((function(e){n+='
',n+="
",n+='
'+_(e.oem_part_number)+"
",n+='
'+_(e.name||"")+"
",e.vehicle_info&&(n+='
'+_(e.vehicle_info)+"
"),n+='',n+="
",e.image_url&&(n+=''),n+="
"})),n+="
",t.innerHTML=n}(e)})).catch((function(){t.innerHTML='
Error en la busqueda.
'})))},window.openDetail=function(e){var n=document.getElementById("detailModal"),t=document.getElementById("detailBody");t.innerHTML='
Cargando detalle...
',n.classList.add("open"),fetch(a+"/part/"+e).then((function(e){return e.json()})).then((function(e){!function(e,n){if(!e||!e.part)return void(n.innerHTML='
Parte no encontrada.
');var a=e.part,t="";t+='
'+_(a.oem_part_number)+"
",t+='
'+_(a.name||"")+"
",a.category_name&&(t+='
'+_(a.category_name)+(a.group_name?" / "+_(a.group_name):"")+"
");a.description&&(t+='
'+_(a.description)+"
");a.image_url&&(t+='
',t+='',t+="
");e.alternatives&&e.alternatives.length&&(t+='
',t+="

Alternativas y Cross-References ("+e.alternatives.length+")

",t+='',e.alternatives.forEach((function(e){t+="",t+='",t+="",t+="",t+="",t+=""})),t+="
NumeroFabricanteNombreTipo
'+_(e.part_number||"")+""+_(e.manufacturer||"")+""+_(e.name||"-")+""+_("aftermarket"===e.type?"Aftermarket":"Cross-Ref")+"
");e.bodegas&&e.bodegas.length&&(t+='
',t+="

Disponibilidad en Bodegas ("+e.bodegas.length+")

",t+='',e.bodegas.forEach((function(e){t+="",t+="",t+="",t+="",t+=""})),t+="
BodegaStockUbicacion
"+_(e.business_name||"")+""+e.stock+""+_(e.location||"-")+"
");n.innerHTML=t}(e,t)})).catch((function(){t.innerHTML='
Error cargando detalle.
'}))},window.closeDetail=function(){document.getElementById("detailModal").classList.remove("open")},document.getElementById("detailModal").addEventListener("click",(function(e){e.target===this&&closeDetail()})),window.catalogNav=function(n){"brands"===n?(e.brand=e.model=e.year=e.engine=null,c(),e.level="brands",d()):"models"===n?(e.model=e.year=e.engine=null,c(),e.level="models",p()):"years"===n?(e.year=e.engine=null,c(),e.level="years",u()):"engines"===n?(e.engine=null,c(),e.level="engines",g()):"categories"===n?(c(),e.level="categories",v()):"groups"===n?(e.group=e.partType=null,e.level="groups",y()):"part_types"===n?(e.partType=null,e.level="part_types",f()):"nx_subgroups"===n?(e.nxSubgroup=e.nxPartType=null,e.level="groups",m()):"nx_part_types"===n&&(e.nxPartType=null,e.level="part_types",h())},window.selectBrand=function(n,a){e.brand={id:n,name:a},e.level="models",p()},window.selectModel=function(n,a){e.model={id:n,name:a},e.level="years",u()},window.selectYear=function(n,a){e.year={id:n,value:a},e.level="engines",g()},window.selectEngine=function(n,a,t){e.engine={id_mye:n,name:a,trim:t},e.level="categories",v()},window.selectNxGroup=function(n,a){e.nxGroup={slug:n,name:a},e.nxSubgroup=null,e.nxPartType=null,e.level="groups",m()},window.selectNxSubgroup=function(n,a){e.nxSubgroup={slug:n,name:a},e.nxPartType=null,e.level="part_types",h()},window.selectNxPartType=function(n,a){e.nxPartType={slug:n,name:a},e.level="parts",e.page=1,b()},window.selectCategory=function(n,a){e.category={id:n,name:a},e.level="groups",y()},window.selectGroup=function(n,a){e.group={id:n,name:a},e.partType=null,e.level="part_types",f()},window.selectPartType=function(n,a){e.partType={slug:n,name:a},e.level="parts",e.page=1,b()},window.partsPage=function(n){e.page=n,b(),window.scrollTo({top:0,behavior:"smooth"})}}();