(function(){ "use strict"; var DATA_URLS=window.ATOM_REG_URLS||{erp1:[],erp2:[],speciaux:[],igh:[]}; var cache={},PAGE=20,lastHits=[],shown=0; function $(id){return document.getElementById(id);} function norm(s){return (s||"").normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase();} function activeKeys(){return Array.prototype.filter.call(document.querySelectorAll(".atool-src"),function(b){return b.classList.contains("on");}).map(function(b){return b.dataset.k;});} document.querySelectorAll(".atool-src").forEach(function(b){b.addEventListener("click",function(){b.classList.toggle("on");});}); function load(keys){ var todo=[]; keys.forEach(function(k){ if(cache[k]||!DATA_URLS[k].length)return; var proms=DATA_URLS[k].map(function(u){ return fetch(u).then(function(r){if(!r.ok)throw new Error(u);return r.text();}).then(function(txt){return JSON.parse(txt.slice(txt.indexOf(String.fromCharCode(10))+1));}); }); todo.push(Promise.all(proms).then(function(parts){ var arts=[]; parts.forEach(function(p){arts=arts.concat(p.articles.map(function(a){a._src=p.source;a._k=k;a._nc=norm(a.c);a._nt=norm(a.t||"");a._nx=norm(a.x||"");return a;}));}); cache[k]=arts; })); }); return Promise.all(todo); } var STARTERS=/^(.{3,}?)\s(Des|Les|La|Le|Un|Une|En|Dans|Il|Elle|Tout|Toute|Tous|Toutes|Chaque|Aucun|Aucune|Ces|Cette|Cet|Ce|Lorsque|Lorsqu|Pour|Au|Aux|Sur|Sous|Par|Ils|Elles|Leur|Leurs|Si|Dès|Après|Avant|Seul|Seuls|Outre|Nonobstant|Conformément|Sauf|Selon|Nul|Nulle)\s/; function cleanTitle(t){ if(!t)return ""; t=String(t).replace(/\s+/g," ").trim(); t=t.split(" §")[0]; var j=t.indexOf(". "); if(j>0)t=t.slice(0,j); var m=t.match(STARTERS); if(m&&m[1].length>=3)t=m[1]; var m2=t.match(/^(.{3,}?)\s([A-ZÀ-Ö][’'])/); if(m2&&m2[1].length>=3)t=m2[1]; t=t.replace(/[\s,;:–-]+$/,"").trim(); if(!t||t.length<2)return "(article)"; if(t.length>72)t=t.slice(0,72).trim()+"…"; return t; } function excerpt(x,terms){ var nx=norm(x),i=-1,t; for(t=0;t-1)break;} if(i<0)return x.slice(0,400)+(x.length>400?"…":""); var a=Math.max(0,i-160),b=Math.min(x.length,i+240); return (a>0?"…":"")+x.slice(a,b)+(b$1");}catch(e){} }); return out; } function render(more){ var hits=lastHits,box=$("atool-hits"); if(!more){box.innerHTML="";shown=0;} var old=$("atool-more");if(old)old.remove(); var slice=hits.slice(shown,shown+PAGE); shown+=slice.length; slice.forEach(function(h){ var d=document.createElement("details"); d.className="atool-hit"; if(h.open)d.open=true; d.innerHTML='Art. '+h.a.c+''+cleanTitle(h.a.t)+''+h.a._src+'
'+hi(h.open?h.a.x:excerpt(h.a.x,h.terms),h.termsRaw)+'
'; d.addEventListener("toggle",function(){if(d.open&&!h.full){h.full=true;d.querySelector(".txt").innerHTML=hi(h.a.x,h.termsRaw);}}); box.appendChild(d); }); if(shown=2&&!/^\d+$/.test(t);}); if(!textTerms.length)textTerms=terms; keys.forEach(function(k){ (cache[k]||[]).forEach(function(a){ var okAll=textTerms.every(function(t){return a._nc.indexOf(t)>-1||a._nt.indexOf(t)>-1||a._nx.indexOf(t)>-1;}); if(!okAll)return; var score=0; textTerms.forEach(function(t){if(a._nc.indexOf(t)>-1)score+=50;if(a._nt.indexOf(t)>-1)score+=30;var c=a._nx.split(t).length-1;score+=Math.min(c,10);}); if(score>0)hits.push({a:a,score:score,terms:textTerms,termsRaw:termsRaw,open:false}); }); }); } hits.sort(function(x,y){return y.score-x.score;}); lastHits=hits; st.textContent=hits.length?hits.length+" article"+(hits.length>1?"s":"")+" trouvé"+(hits.length>1?"s":""):"Aucun article trouvé — essayez d’autres termes ou élargissez les sources."; render(false); }).catch(function(){st.textContent="Erreur de chargement des données. Rechargez la page ou réessayez plus tard.";}); } $("atool-go").addEventListener("click",search); $("atool-q").addEventListener("keydown",function(e){if(e.key==="Enter")search();}); })();