// Universal Header Search Functionality
let headerSearchTimeout;
async function headerSearchPlayers() {
const searchTerm = document.getElementById('headerPlayerSearch').value.trim();
const resultsDiv = document.getElementById('headerSearchResults');
// Clear previous timeout
clearTimeout(headerSearchTimeout);
if (searchTerm.length < 2) {
resultsDiv.classList.remove('show');
return;
}
// Debounce search (increased to 500ms for better performance)
headerSearchTimeout = setTimeout(async () => {
try {
const response = await window.apiClient.searchPlayers(searchTerm);
displayHeaderSearchResults(response.results, resultsDiv);
} catch (error) {
console.error('Search error:', error);
resultsDiv.innerHTML = '
';
resultsDiv.classList.add('show');
}
}, 500);
}
function displayHeaderSearchResults(players, resultsDiv) {
if (!players || players.length === 0) {
resultsDiv.innerHTML = '';
} else {
resultsDiv.innerHTML = players.slice(0, 8).map(player => {
const squadronTag = player.squadron_name ? `${escapeHtml(player.squadron_name)}` : '';
return `
`;
}).join('');
}
resultsDiv.classList.add('show');
}
function navigateToPlayer(uid) {
window.location.href = `/players/${uid}`;
}
function hideHeaderSearchResults() {
const el = document.getElementById('headerSearchResults');
if (el) el.classList.remove('show');
}
function handleHeaderKeydown(event) {
if (event.key === 'Escape') {
hideHeaderSearchResults();
document.getElementById('headerPlayerSearch').blur();
}
}
function formatHeaderNumber(num) {
if (num >= 1000000) {
return (num / 1000000).toFixed(1) + 'M';
} else if (num >= 1000) {
return (num / 1000).toFixed(1) + 'K';
}
return num.toString();
}
function escapeHtml(text) {
const div = document.createElement('div');
div.textContent = text;
return div.innerHTML;
}
// Hide search results when clicking outside
document.addEventListener('click', function(event) {
if (!event.target.closest('.nav-search')) {
hideHeaderSearchResults();
}
});