var getFunctionsUrl = "/modules/search/suggest/suggest.php"; var phpHelpUrl="/modules/search/v2.search.php?word="; var httpRequestKeyword = ""; var userKeyword = ""; var suggestions = 0; var suggestionMaxLength = 30; var isKeyUpDownPressed = false; var autocompletedKeyword = ""; var hasResults = false; var timeoutId = -1; var position = -1; var oCache = new Object(); var minVisiblePosition = 0; var maxVisiblePosition = 9; var debugMode = true; var xmlHttpGetSuggestions = createXmlHttpRequestObject(); window.onload = init; function createXmlHttpRequestObject() { var xmlHttp; try { xmlHttp = new XMLHttpRequest(); } catch(e) { var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"); for (var i=0; i=0; i--) { var currentKeyword = keyword.substring(0, i+1); if(oCache[currentKeyword]) { var cacheResults = oCache[currentKeyword]; var keywordResults = new Array(); var keywordResultsSize = 0; for(j=0;j= 0 || response.indexOf("error:") >= 0 || response.length == 0) throw(response.length == 0 ? "Void server response." : response); response = xmlHttpGetSuggestions.responseXML.documentElement; nameArray = new Array(); if(response.childNodes.length) { nameArray= xmlToArray(response.getElementsByTagName("name")); } if(httpRequestKeyword == userKeyword) { displayResults(httpRequestKeyword, nameArray); } else { addToCache(httpRequestKeyword, nameArray); } } function displayResults(keyword, results_array) { var div = ""; if(!oCache[keyword] && keyword) addToCache(keyword, results_array); if(results_array.length == 0) { //div += ""; hasResults = false; suggestions = 0; } else { position = -1; isKeyUpDownPressed = false; hasResults = true; suggestions = oCache[keyword].length; for (var i=0; i" + ""; } else { if(httpRequestKeyword.length < suggestionMaxLength) { div += ">" + crtFunction.substring(0, httpRequestKeyword.length) + "" div += crtFunction.substring(httpRequestKeyword.length, suggestionMaxLength) + ""; } else { div += ">" + crtFunction.substring(0,suggestionMaxLength) + "" } } } } if(i % 2) cl = 'f2f2f2'; else cl = 'ffffff'; div += "
Результат не найден для " + keyword + "
" div += crtFunction.substring(httpRequestKeyword.length, crtFunction.length) + ""+col+" результатов
"+col+" результатов
"+col+" результатов
закрыть
"; var oSuggest = document.getElementById("suggest"); var oScroll = document.getElementById("scroll"); oScroll.scrollTop = 0; oSuggest.innerHTML = div; oScroll.style.visibility = "visible"; if(results_array.length > 0) autocompleteKeyword(); } function checkForChanges() { var keyword = document.getElementById("keyword").value; if(keyword == "") { hideSuggestions(); userKeyword=""; httpRequestKeyword=""; } setTimeout("checkForChanges()", 500); if((userKeyword != keyword) && (autocompletedKeyword != keyword) && (!isKeyUpDownPressed)) getSuggestions(keyword); } function handleKeyUp(e) { e = (!e) ? window.event : e; target = (!e.target) ? e.srcElement : e.target; if (target.nodeType == 3) target = target.parentNode; code = (e.charCode) ? e.charCode : ((e.keyCode) ? e.keyCode : ((e.which) ? e.which : 0)); if (e.type == "keyup") { isKeyUpDownPressed =false; if ((code < 13 && code != 8) || (code >=14 && code < 32) || (code >= 33 && code <= 46 && code != 38 && code != 40) || (code >= 112 && code <= 123)) { } else if(code == 13) { /* if(position>=0) { location.href = document.getElementById("a" + position).href; } */ } else if(code == 40) { newTR=document.getElementById("tr"+(++position)); oldTR=document.getElementById("tr"+(--position)); if(position>=0 && position maxVisiblePosition) { oScroll = document.getElementById("scroll"); oScroll.scrollTop += 18; maxVisiblePosition += 1; minVisiblePosition += 1; } } else if(code == 38) { newTR=document.getElementById("tr"+(--position)); oldTR=document.getElementById("tr"+(++position)); if(position>=0 && position <= suggestions - 1) { oldTR.className = ""; } if(position > 0) { newTR.className = "highlightrow"; updateKeywordValue(newTR); position--; if(position