Promotional Banner - Delivery in 2-3 hours, Quality & Original, Delivered

Forestry Cranes

document.addEventListener('DOMContentLoaded', function() { const searchInput = document.getElementById('searchInput'); const suggestionsContainer = document.getElementById('autocomplete-suggestions'); if (!searchInput || !suggestionsContainer) return; let debounceTimer; searchInput.addEventListener('input', function() { clearTimeout(debounceTimer); const query = this.value.trim(); if (query.length < 2) { suggestionsContainer.style.display = 'none'; return; } // Show a "loading" state (optional) suggestionsContainer.innerHTML = '
Searching...
'; suggestionsContainer.style.display = 'block'; debounceTimer = setTimeout(function() { const siteCode = getSiteCode(); const url = '/' + siteCode + '/search/autocomplete?q=' + encodeURIComponent(query); fetch(url) .then(response => response.json()) .then(data => { if (data.length === 0) { suggestionsContainer.innerHTML = '
No products found
'; return; } let html = ''; data.forEach(item => { html += `${escapeHtml(item.name)}`; }); // Add "View all results" link html += `View all results`; suggestionsContainer.innerHTML = html; }) .catch(() => { suggestionsContainer.innerHTML = '
Error loading suggestions
'; }); }, 200); // 200ms debounce delay }); // Hide suggestions when clicking outside document.addEventListener('click', function(e) { if (!e.target.closest('.search-wrapper')) { suggestionsContainer.style.display = 'none'; } }); // Helper: get site code from URL function getSiteCode() { const path = window.location.pathname.split('/'); return path.length > 1 ? path[1] : 'shop'; } // Helper: escape HTML to prevent XSS function escapeHtml(unsafe) { return unsafe.replace(/[&<>"]/g, function(m) { if (m === '&') return '&'; if (m === '<') return '<'; if (m === '>') return '>'; if (m === '"') return '"'; return m; }); } });