PageSourceSearch

https://www.kilroytrip.fr/js/search.min.js?v=1770984363

js kilroytrip.fr collected 2026-10-02 12:21:46 UTC 5,120 bytes, 1 lines download raw bytes

1let currentResults=[],currentPage=1,totalPages=0,isLoading=!1,isLoadingMore=!1,currentAbortController=null;async function performSearch(e,t="",n="",o=1){if(e.trim().length<2)return null;currentAbortController&&currentAbortController.abort(),currentAbortController=new AbortController;const r=new URLSearchParams({q:e.trim()});t&&r.set("type",t),n&&r.set("commune",n),r.set("page",o);return(await fetch("/ajax/search-poi.php?"+r.toString(),{signal:currentAbortController.signal})).json()}function updateCommuneSelect(e){const t=document.getElementById("search-commune");if(!t)return;const n=t.value;t.innerHTML='<option value="">Toutes les communes</option>',e.forEach(e=>{const n=document.createElement("option");n.value=e,n.textContent=e,t.appendChild(n)}),n&&e.includes(n)&&(t.value=n)}function displayResults(e,t=!1){const n=document.getElementById("results-container"),o=document.getElementById("loading-indicator");if(t||(n.innerHTML=""),0===e.length&&!t)return n.innerHTML='<div style="color: #7d93b2; text-align: center; padding: 20px;">Aucun résultat trouvé</div>',void(o.style.display="none");e.forEach(e=>{const t=document.createElement("div");t.style.cssText="\n            background: #2e3f6e;\n            margin-bottom: 10px;\n            padding: 15px;\n            border-radius: 5px;\n            cursor: pointer;\n            transition: background-color 0.3s;\n        ",t.innerHTML=`\n            <div style="display: flex; gap: 10px;">\n                <img src="${e.photo||"/upload/blank_60x40.webp"}"\n                     style="width: 60px; height: 40px; border-radius: 3px; object-fit: cover;"\n                     alt="${e.title}">\n                <div style="flex: 1;">\n                    <h4 style="margin: 0 0 5px 0; color: #4db7fe; font-size: 14px;">${e.title}</h4>\n                    <p style="margin: 0 0 5px 0; color: #7d93b2; font-size: 12px; line-height: 1.3;">\n                        ${e.description.substring(0,100)}${e.description.length>100?"...":""}\n                    </p>\n                    <div style="display: flex; justify-content: space-between; font-size: 11px; color: #9db4d1;">\n                        <span>${e.commune}</span>\n                        <span>${e.typepoint}</span>\n                    </div>\n                </div>\n            </div>\n        `,t.addEventListener("mouseenter",function(){this.style.backgroundColor="#4c6396"}),t.addEventListener("mouseleave",function(){this.style.backgroundColor="#2e3f6e"}),t.addEventListener("click",function(){window.location.href=e.url}),n.appendChild(t)}),isLoadingMore&&(o.style.display="none",isLoadingMore=!1)}async function loadMoreResults(){if(isLoadingMore||currentPage>=totalPages)return;const e=document.getElementById("searchhead"),t=document.getElementById("search-type"),n=document.getElementById("search-commune"),o=e?e.value.trim():"";if(o.length<2)return;isLoadingMore=!0;const r=document.getElementById("loading-indicator");r.style.display="block";try{const e=currentPage+1,r=await performSearch(o,t?.value||"",n?.value||"",e);r&&r.success&&(currentPage=r.pagination.page,totalPages=r.pagination.totalPages,displayResults(r.results,!0))}catch(e){"AbortError"!==e.name&&console.error("Erreur chargement page suivante:",e)}isLoadingMore=!1,r.style.display="none"}function setupInfiniteScroll(){const e=document.getElementById("results-container");e&&e.addEventListener("scroll",function(){const t=e.scrollTop,n=e.scrollHeight;t+e.clientHeight>=.9*n&&loadMoreResults()})}function initializeSearch(){const e=document.getElementById("searchhead"),t=document.getElementById("search-type"),n=document.getElementById("search-commune"),o=document.querySelector(".show-search-button"),r=document.getElementById("close-search-overlay"),i=document.getElementById("search-overlay");let a;async function s(){const o=e.value.trim(),r=t.value,i=n.value;if(o.length>=2){try{isLoading=!0;const e=await performSearch(o,r,i,1);e&&e.success&&(currentPage=e.pagination.page,totalPages=e.pagination.totalPages,currentResults=e.results,displayResults(e.results),updateCommuneSelect(e.communes))}catch(e){"AbortError"!==e.name&&console.error("Erreur recherche:",e)}isLoading=!1}else document.getElementById("results-container").innerHTML="",document.getElementById("loading-indicator").style.display="none",currentPage=1,totalPages=0,isLoadingMore=!1,updateCommuneSelect([])}setupInfiniteScroll(),o&&o.addEventListener("click",function(){i.style.display="block",e.focus()}),r&&r.addEventListener("click",function(){i.style.display="none",e.value="",t.value="",n.value="",document.getElementById("results-container").innerHTML="",document.getElementById("loading-indicator").style.display="none",currentPage=1,totalPages=0,isLoadingMore=!1}),i&&i.addEventListener("click",function(e){e.target===i&&r.click()}),e&&e.addEventListener("input",function(){clearTimeout(a),a=setTimeout(s,300)}),t&&t.addEventListener("change",s),n&&n.addEventListener("change",s),e&&e.addEventListener("keydown",function(e){"Escape"===e.key&&r.click()})}document.addEventListener("DOMContentLoaded",function(){initializeSearch()});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.