(function($){
$(document).ready(function(){
var searchInput=$('.glossario-ninja-search input[type="text"]');
var searchForm=$('.glossario-ninja-search form');
var resultsContainer=$('<div class="glossario-ninja-search-results"></div>');
searchForm.after(resultsContainer);
resultsContainer.css({
'position': 'absolute',
'z-index': '1000',
'background-color': '#fff',
'width': searchForm.width(),
'max-height': '400px',
'overflow-y': 'auto',
'border-radius': '5px',
'box-shadow': '0 4px 15px rgba(0,0,0,0.15)',
'margin-top': '5px',
'display': 'none',
'text-align': 'left',
'border': '1px solid #eee'
});
searchForm.css('position', 'relative');
resultsContainer.css({
'left': '50%',
'transform': 'translateX(-50%)',
'width': searchForm.width()
});
var searchTimer;
function performSearch(){
var searchValue=searchInput.val().trim();
if(searchValue.length < 2){
resultsContainer.hide();
return;
}
resultsContainer.html('<div class="glossario-ninja-loading">' + glossarioNinja.loading_text + '</div>');
resultsContainer.show();
$.ajax({
url: glossarioNinja.ajax_url,
type: 'POST',
dataType: 'json',
data: {
action: 'glossario_ninja_ajax_search',
nonce: glossarioNinja.nonce,
search_term: searchValue
},
success: function(response){
if(response.success){
displayResults(response.data.results);
}else{
resultsContainer.html('<div class="glossario-ninja-no-results">' + glossarioNinja.no_results_text + '</div>');
}},
error: function(){
resultsContainer.html('<div class="glossario-ninja-error">Erro ao processar a busca.</div>');
}});
}
function displayResults(results){
resultsContainer.empty();
var resultsList=$('<div class="glossario-ninja-results-list"></div>');
$.each(results, function(index, result){
var resultItem=$('<div class="glossario-ninja-result-item"></div>');
resultItem.css({
'padding': '12px 15px',
'border-bottom': '1px solid #eee',
'transition': 'background-color 0.2s',
'cursor': 'pointer'
});
resultItem.hover(function(){ $(this).css('background-color', '#f9f9f9'); },
function(){ $(this).css('background-color', '#fff'); }
);
var titleElement=$('<div class="glossario-ninja-result-title"></div>');
titleElement.html('<strong>' + result.title + '</strong>');
titleElement.css({
'font-size': '16px',
'margin-bottom': '5px'
});
if(result.letra){
var letraChip=$('<span class="glossario-ninja-letra-chip">' + result.letra + '</span>');
letraChip.css({
'display': 'inline-block',
'background-color': '#f5f5f5',
'color': '#333',
'font-size': '12px',
'border-radius': '3px',
'padding': '2px 6px',
'margin-left': '8px'
});
titleElement.append(letraChip);
}
var excerptElement=$('<div class="glossario-ninja-result-excerpt"></div>');
excerptElement.text(result.excerpt);
excerptElement.css({
'font-size': '14px',
'color': '#666',
'margin-bottom': '8px'
});
resultItem.append(titleElement);
resultItem.append(excerptElement);
resultItem.on('click', function(){
window.location.href=result.permalink;
});
resultsList.append(resultItem);
});
resultsContainer.append(resultsList);
resultsContainer.show();
}
searchInput.on('keyup', function(e){
clearTimeout(searchTimer);
searchTimer=setTimeout(performSearch, 300);
});
searchInput.on('focus', function(){
if(searchInput.val().trim().length >=2&&resultsContainer.find('.glossario-ninja-result-item').length > 0){
resultsContainer.show();
}});
$(document).on('click', function(e){
if(!$(e.target).closest('.glossario-ninja-search, .glossario-ninja-search-results').length){
resultsContainer.hide();
}});
searchForm.on('submit', function(e){
e.preventDefault();
performSearch();
});
});
})(jQuery);