String.prototype.trim = function() { return this.replace(/^[\s]+|[\s]+$/, ""); }; function SuggestFramework_Create(instance) { if(SuggestFramework_Name[instance] && SuggestFramework_Action[instance]) { SuggestFramework_InputContainer[instance] = document.getElementById(SuggestFramework_Name[instance]); SuggestFramework_InputContainer[instance].autocomplete = "off"; SuggestFramework_InputContainer[instance].onblur = function() { SuggestFramework_HideOutput(instance); }; SuggestFramework_InputContainer[instance].onclick = function() { SuggestFramework_ShowOutput(instance); SuggestFramework_Previous[instance] = '';}; SuggestFramework_InputContainer[instance].onfocus = function() { SuggestFramework_ShowOutput(instance); }; SuggestFramework_InputContainer[instance].onkeydown = function(event) { SuggestFramework_ProcessKeys(instance, event); }; SuggestFramework_OutputContainer[instance] = document.createElement("div"); SuggestFramework_OutputContainer[instance].id = SuggestFramework_Name[instance] + "SuggestList"; SuggestFramework_OutputContainer[instance].className = "SuggestFramework_List"; SuggestFramework_OutputContainer[instance].style.position = "absolute"; SuggestFramework_OutputContainer[instance].style.zIndex = "1"; SuggestFramework_OutputContainer[instance].style.width = SuggestFramework_InputContainer[instance].clientWidth + "px"; SuggestFramework_OutputContainer[instance].style.wordWrap = "break-word"; SuggestFramework_OutputContainer[instance].style.cursor = "default"; SuggestFramework_InputContainer[instance].parentNode.insertBefore(SuggestFramework_OutputContainer[instance], SuggestFramework_InputContainer[instance].nextSibling); SuggestFramework_InputContainer[instance].parentNode.insertBefore(document.createElement("br"), SuggestFramework_OutputContainer[instance]); if(!SuggestFramework_CreateConnection()) { SuggestFramework_Proxy[instance] = document.createElement("iframe"); SuggestFramework_Proxy[instance].id = "proxy"; SuggestFramework_Proxy[instance].style.width = "0"; SuggestFramework_Proxy[instance].style.height = "0"; SuggestFramework_Proxy[instance].style.display = "none"; document.body.appendChild(SuggestFramework_Proxy[instance]); if(window.frames && window.frames["proxy"]) SuggestFramework_Proxy[instance] = window.frames["proxy"]; else if(document.getElementById("proxy").contentWindow) SuggestFramework_Proxy[instance] = document.getElementById("proxy").contentWindow; else SuggestFramework_Proxy[instance] = document.getElementById("proxy"); } SuggestFramework_Previous[instance] = SuggestFramework_InputContainer[instance].value; SuggestFramework_HideOutput(instance); SuggestFramework_Throttle(instance); } else { throw 'Error: SuggestFramework for instance "' + SuggestFramework_Name[instance] + '" not initialized'; } }; function SuggestFramework_CreateConnection() { var asynchronousConnection; try { asynchronousConnection = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { if(typeof(XMLHttpRequest) != "undefined") asynchronousConnection = new XMLHttpRequest(); } return asynchronousConnection; }; function SuggestFramework_HideOutput(instance) { SuggestFramework_OutputContainer[instance].style.display = "none"; }; function SuggestFramework_Highlight(instance, index) { SuggestFramework_SuggestionsIndex[instance] = index; for(var i in SuggestFramework_Suggestions[instance]) { var suggestColumns = document.getElementById(SuggestFramework_Name[instance] + "Suggestions[" + i + "]").getElementsByTagName("td"); for(var j in suggestColumns) suggestColumns[j].className = "SuggestFramework_Normal"; } var suggestColumns = document.getElementById(SuggestFramework_Name[instance] + "Suggestions[" + SuggestFramework_SuggestionsIndex[instance] + "]").getElementsByTagName("td"); for(var i in suggestColumns) suggestColumns[i].className = "SuggestFramework_Highlighted"; }; function SuggestFramework_IsHidden(instance) { return ((SuggestFramework_OutputContainer[instance].style.display == "none") ? true : false); }; function SuggestFramework_ProcessKeys(instance, e) { var keyDown = 40; var keyUp = 38; var keyTab = 9; var keyEnter = 13; var keyEscape = 27; var keyPressed = ((window.event) ? window.event.keyCode : e.which); if(!SuggestFramework_IsHidden(instance)) { switch(keyPressed) { case keyDown: SuggestFramework_SelectNext(instance); return; case keyUp: SuggestFramework_SelectPrevious(instance); return; case keyTab: SuggestFramework_SelectThis(instance); return; case keyEnter: SuggestFramework_SelectThis(instance); return; case keyEscape: SuggestFramework_HideOutput(instance); return; default: return; } } }; function SuggestFramework_ProcessProxyRequest(instance) { var result = ((SuggestFramework_Proxy[instance].document) ? SuggestFramework_Proxy[instance].document : SuggestFramework_Proxy[instance].contentDocument); result = result.body.innerHTML.replace(/\r|\n/g, " ").trim(); if(typeof(eval(result)) == "object") SuggestFramework_Suggest(instance, eval(result)); else setTimeout("SuggestFramework_ProcessProxyRequest(" + instance + ")", 100); }; function SuggestFramework_ProcessRequest(instance) { if(SuggestFramework_Connection[instance].readyState == 4) { if(SuggestFramework_Connection[instance].status == 200) { SuggestFramework_Suggest(instance, eval(SuggestFramework_Connection[instance].responseText)); } } }; function SuggestFramework_Query(instance) { SuggestFramework_Throttle(instance); var phrase = SuggestFramework_InputContainer[instance].value; if(phrase == "" || phrase == SuggestFramework_Previous[instance]) return; SuggestFramework_Previous[instance] = phrase; //alert(SuggestFramework_Previous[instance]+' = '+phrase); phrase = phrase.trim(); phrase = escape(phrase); SuggestFramework_Request(instance, SuggestFramework_Action[instance] + "?type=" + SuggestFramework_Name[instance] + "&q=" + phrase); }; function SuggestFramework_Request(instance, url) { if(SuggestFramework_Connection[instance] = SuggestFramework_CreateConnection()) { SuggestFramework_Connection[instance].onreadystatechange = function() { SuggestFramework_ProcessRequest(instance) }; SuggestFramework_Connection[instance].open("GET", url, true); SuggestFramework_Connection[instance].send(null); } else { SuggestFramework_Proxy[instance].location.replace(url); SuggestFramework_ProcessProxyRequest(instance); } }; function SuggestFramework_SelectThis(instance, index) { if(!isNaN(index)) SuggestFramework_SuggestionsIndex[instance] = index; if(SuggestFramework_Columns[instance] > 1) SuggestFramework_InputContainer[instance].value = SuggestFramework_Suggestions[instance][SuggestFramework_SuggestionsIndex[instance]][SuggestFramework_Capture[instance] - 1]; else SuggestFramework_InputContainer[instance].value = SuggestFramework_Suggestions[instance][SuggestFramework_SuggestionsIndex[instance]]; SuggestFramework_Previous[instance] = SuggestFramework_InputContainer[instance].value; SuggestFramework_HideOutput(instance); /* submit form after selecting */ document.forms[0].submit(); }; function SuggestFramework_SelectNext(instance) { SuggestFramework_SetTextSelectionRange(instance); if(typeof(SuggestFramework_Suggestions[instance][(SuggestFramework_SuggestionsIndex[instance] + 1)]) != "undefined") { if(typeof(SuggestFramework_Suggestions[instance][SuggestFramework_SuggestionsIndex[instance]]) != "undefined") document.getElementById(SuggestFramework_Name[instance] + "Suggestions[" + SuggestFramework_SuggestionsIndex[instance] + "]").className = "SuggestFramework_Normal"; SuggestFramework_SuggestionsIndex[instance]++; SuggestFramework_Highlight(instance, SuggestFramework_SuggestionsIndex[instance]); } }; function SuggestFramework_SelectPrevious(instance) { SuggestFramework_SetTextSelectionRange(instance); if(typeof(SuggestFramework_Suggestions[instance][(SuggestFramework_SuggestionsIndex[instance] - 1)]) != "undefined") { if(typeof(SuggestFramework_Suggestions[instance][SuggestFramework_SuggestionsIndex[instance]]) != "undefined") document.getElementById(SuggestFramework_Name[instance] + "Suggestions[" + SuggestFramework_SuggestionsIndex[instance] + "]").className = "SuggestFramework_Normal"; SuggestFramework_SuggestionsIndex[instance]--; SuggestFramework_Highlight(instance, SuggestFramework_SuggestionsIndex[instance]); } }; function SuggestFramework_SetTextSelectionRange(instance, start, end) { if(!start) var start = SuggestFramework_InputContainer[instance].value.length; if(!end) var end = SuggestFramework_InputContainer[instance].value.length; if(SuggestFramework_InputContainer[instance].setSelectionRange) { SuggestFramework_InputContainer[instance].setSelectionRange(start, end); } else if(SuggestFramework_InputContainer[instance].createTextRange) { var selection = SuggestFramework_InputContainer[instance].createTextRange(); selection.moveStart("character", start); selection.moveEnd("character", end); selection.select(); } }; function SuggestFramework_ShowOutput(instance) { if(typeof(SuggestFramework_Suggestions[instance]) != "undefined" && SuggestFramework_Suggestions[instance].length) SuggestFramework_OutputContainer[instance].style.display = "block"; }; function SuggestFramework_Suggest(instance, list) { SuggestFramework_Suggestions[instance] = list; SuggestFramework_SuggestionsIndex[instance] = -1; SuggestFramework_OutputContainer[instance].innerHTML = ""; var table = '
| 1 && i == SuggestFramework_Columns[instance] - 1) column += ' style="text-align: right"'; column += '>' + value.trim() + ' | '; headingContainer += column; } headingContainer += '
| 1 && j == SuggestFramework_Columns[instance] - 1) column += ' style="text-align: right"'; column += '>' + value.trim() + ' | '; suggestionContainer += column; } suggestionContainer += '