|
/* |
|
SANDER SAYS... |
|
NO WARRANTIES EXPRESSED OR IMPLIED |
|
FOR USING THIS CODE. ALL THIS HAS |
|
HAPPENED BEFORE, AND IT WILL HAPPEN |
|
AGAIN... BUT IT DOESN'T MATTER... |
|
BECAUSE WE ARE IN THIS TOGETHER. |
|
C'EST LA VIE. EVERYTHING COULD |
|
HAVE BEEN ANYTHING ELSE, AND IT |
|
WOULD HAVE JUST AS MUCH MEANING. |
|
ENJOY. COMPLIMENTS? PARTY |
|
INVITATIONS? RIGHT ON! |
|
*/ |
|
|
|
|
|
var searchIndex = ["123? Really? Stop that!","404 Error","Address Bar","Ajax","Apache","Autoresponder","BitTorrent","Blog","Bookmark","Bot","Broadband","Captcha","Certificate","Client","Cloud","Cloud Computing","CMS","Cookie","CSS","Cyberspace","Denial of Service","DHCP","Dial-up","DNS Record","Domain Name","Download","E-mail","Facebook","FiOS","Firewall","FTP","Gateway","Google","Google Drive","Gopher","Hashtag","Hit","Home Page","HTML","HTTP","HTTPS","Hyperlink","Hypertext","ICANN","Inbox","Internet","InterNIC","IP","IP Address","IPv4","IPv6","IRC","iSCSI","ISDN","ISP","JavaScript","jQuery","Meta Search Engine","Meta Tag","Minisite","Mirror","Name Server","Packet","Page View","Payload","Phishing","POP3","Protocol","Scraping","Search Engine","Social Networking","Socket","Spam","Spider","Spoofing","SSH","SSL","Static Website","Twitter","USB","WTF, seriously!?! @#$%","XHTML"]; |
|
|
|
var input = document.getElementById("searchBox"), |
|
ul = document.getElementById("searchResults"), |
|
inputTerms, termsArray, prefix, terms, results, sortedResults; |
|
|
|
|
|
var search = function() { |
|
inputTerms = input.value.toLowerCase(); |
|
results = []; |
|
termsArray = inputTerms.split(' '); |
|
prefix = termsArray.length === 1 ? '' : termsArray.slice(0, -1).join(' ') + ' '; |
|
terms = termsArray[termsArray.length -1].toLowerCase(); |
|
|
|
for (var i = 0; i < searchIndex.length; i++) { |
|
var a = searchIndex[i].toLowerCase(), |
|
t = a.indexOf(terms); |
|
|
|
if (t > -1) { |
|
results.push(a); |
|
} |
|
} |
|
|
|
evaluateResults(); |
|
}; |
|
|
|
var evaluateResults = function() { |
|
if (results.length > 0 && inputTerms.length > 0 && terms.length !== 0) { |
|
sortedResults = results.sort(sortResults); |
|
appendResults(); |
|
} |
|
else if (inputTerms.length > 0 && terms.length !== 0) { |
|
ul.innerHTML = '<li>No technoloigy terms containing <strong>' |
|
+ inputTerms |
|
+ '</strong> found.</li>'; |
|
/* Sander's comment: optionally insert this string before the </li> above: |
|
<br><small><a href="https://google.com/search?q=' |
|
+ encodeURIComponent(inputTerms) + '" target="_blank">Try Google?</a></small> |
|
*/ |
|
} |
|
else if (inputTerms.length !== 0 && terms.length === 0) { |
|
return; |
|
} |
|
else { |
|
clearResults(); |
|
} |
|
}; |
|
|
|
var sortResults = function (a,b) { |
|
if (a.indexOf(terms) < b.indexOf(terms)) return -1; |
|
if (a.indexOf(terms) > b.indexOf(terms)) return 1; |
|
return 0; |
|
} |
|
|
|
var appendResults = function () { |
|
clearResults(); |
|
|
|
for (var i=0; i < sortedResults.length && i < 5; i++) { |
|
var li = document.createElement("li"), |
|
result = prefix |
|
+ sortedResults[i].toLowerCase().replace(terms, '<strong>' |
|
+ terms |
|
+'</strong>'); |
|
|
|
li.innerHTML = result; |
|
ul.appendChild(li); |
|
} |
|
|
|
if ( ul.className !== "term-list") { |
|
ul.className = "term-list"; |
|
} |
|
}; |
|
|
|
var clearResults = function() { |
|
ul.className = "term-list hidden"; |
|
ul.innerHTML = ''; |
|
}; |
|
|
|
input.addEventListener("keyup", search, false); |
|
|
|
|
|
social("codepen/UXauthority", |
|
"light", "Sander says... Respect the code, dawg."); |