var XOXO_SUGGESTME_URL = "/exe/searchbox.php?q="; var XOXO_TAG_URL = "http://xoxomodel.com/index.php/tag/"; var SELECTED_BGCOLOR = "#FF0052"; var OUTPUT_DIV = ""; var QUERY_FIELD = ""; var searchitems_selectedIndex = -1; var cx = 0; var MEM_QUERYITEM = ""; function XOXO_SuggestMe(id, query, target, e) { QUERY_FIELD = id; OUTPUT_DIV = target; var navigation_type = CaptureKeyboardEvent(e); if (navigation_type != -1) { return; } var url = XOXO_SUGGESTME_URL + query; if (window.XMLHttpRequest) { req = new XMLHttpRequest(); req.onreadystatechange = function() { XOXO_SuggestMe_Response(OUTPUT_DIV); }; req.open("GET", url, true); req.send(null); } else if (window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHTTP"); if (req) { req.onreadystatechange = function() { XOXO_SuggestMe_Response(OUTPUT_DIV); }; req.open("GET", url, true); req.send(); } } } function XOXO_SuggestMe_Response(target) { target = document.getElementById(target); if (req.readyState == 4) { if (req.status == 200) { results = req.responseText; target.innerHTML = results; if (results.length > 10) { target.style.display = "block"; } else { target.style.display = "none"; } Clear_SearchItems(OUTPUT_DIV); } else { target.innerHTML="jah error:\n" + req.statusText; } } } function SelectSearchItem(id, e) { var navigation_type = CaptureKeyboardEvent(e); if (navigation_type == -1) { MEM_QUERYITEM = document.getElementById(id).value; return; } var output = document.getElementById(OUTPUT_DIV); var querybox = document.getElementById(id); var searchitems = new Array; for (var c = 0; c < document.links; c++) { if (document.links[c].parentElement.id == OUTPUT_DIV) { searchitems[cx] = c; cx++; } } if (navigation_type == 3 && searchitems_selectedIndex < output.childNodes.length) { if (searchitems_selectedIndex > -1 && searchitems_selectedIndex + 1 < output.childNodes.length) { UnselectMe(output.childNodes[searchitems_selectedIndex]); } if (++searchitems_selectedIndex == output.childNodes.length) { return; } SelectMe(output.childNodes[searchitems_selectedIndex]); querybox.value = output.childNodes[searchitems_selectedIndex].title; return; } if (navigation_type == 2 && searchitems_selectedIndex > -1) { if (searchitems_selectedIndex < output.childNodes.length && searchitems_selectedIndex - 1 > -1) { UnselectMe(output.childNodes[searchitems_selectedIndex]); } if (--searchitems_selectedIndex == -1) { UnselectMe(output.childNodes[0]); querybox.value = MEM_QUERYITEM; return; } SelectMe(output.childNodes[searchitems_selectedIndex]); querybox.value = output.childNodes[searchitems_selectedIndex].title; return; } if (navigation_type == 1) { Clear_SearchItems(output); Redirect(querybox.value); } } function CaptureKeyboardEvent(e) { var keycode = document.layers ? e.which : document.all ? e.keyCode : document.getElementById ? e.keyCode : 0; keycode = parseInt(keycode); if (keycode == 40) { return 3; } //down arrow if (keycode == 38) { return 2; } //up arrow if (keycode == 13) { return 1; } //return key return -1; } function SelectMe (element) { Unselect_PreviousSearchItems(); element.style.color = "#FFFFFF"; element.style.backgroundColor = SELECTED_BGCOLOR; return; } function SelectMe_Mouse (element) { Unselect_PreviousSearchItems(); SelectMe(element); document.getElementById(OUTPUT_DIV).value = element.title; return; } function SelectMe_Click(text) { document.getElementById(QUERY_FIELD).value = text; document.getElementById(OUTPUT_DIV).style.display = "none"; document.getElementById(OUTPUT_DIV).innerHTML = ""; Clear_SearchItems(OUTPUT_DIV); return; } function UnselectMe (element) { element.style.color = "#000000"; element.style.backgroundColor = "#FFFFFF"; return; } function Clear_SearchItems(element) { if (element.style) { element.style.display = "none"; } element.innerHTML = ""; searchitems_selectedIndex = -1; cx = 0; return; } function Unselect_PreviousSearchItems() { var output = document.getElementById(OUTPUT_DIV); for (var c = 0; c < output.childNodes.length; c++) { UnselectMe(output.childNodes[c]); } return; } function Redirect(tag) { if (tag.trim().length > 0) location.href = XOXO_TAG_URL + tag.replace(" ", "-") + "/"; }