function makeTeaser(body, terms) { if (!body) return ''; var TEASER_MAX_CHARS = 200; var lowerBody = body.toLowerCase(); var firstTermIndex = -1; for (var i = 0; i < terms.length; i++) { var idx = lowerBody.indexOf(terms[i].toLowerCase()); if (idx !== -1 && (firstTermIndex === -1 || idx < firstTermIndex)) { firstTermIndex = idx; } } var start = Math.max(0, firstTermIndex - 50); var end = Math.min(body.length, start + TEASER_MAX_CHARS); var teaser = (start > 0 ? '…' : '') + body.substring(start, end) + (end < body.length ? '…' : ''); terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + ')', 'gi'); teaser = teaser.replace(regex, '$1'); }); return teaser; } function formatSearchResultItem(item, terms, isLast) { var doc = item.item; return '
' + (isLast ? '' : 'No results
'; return; } var terms = term.split(" ").filter(function(t) { return t.length > 0; }); var count = Math.min(results.length, MAX_ITEMS); for (var i = 0; i < count; i++) { $searchResultsItems.innerHTML += formatSearchResultItem(results[i], terms, i === count - 1); } } $searchInput.oninput = function() { clearTimeout(debounceTimer); debounceTimer = setTimeout(doSearch, 150); }; } if (document.readyState === "complete" || (document.readyState !== "loading" && !document.documentElement.doScroll) ) { initSearch(); } else { document.addEventListener("DOMContentLoaded", initSearch); }