//if(window.url.indexOf("divv")!=-1) { // alert("turning on divv devv mode"); //div,span { //border: 1px solid #f00; //margin: 1px; //} //} var IE = document.all?true:false; var req = null; if (!IE) { document.captureEvents(Event.KEYBOARD); } // full autocomplete off AND XHTML compatible for(i=0;i'; } function initRequest() { if (window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if (window.ActiveXObject) { IE = true; req = new ActiveXObject("Microsoft.XMLHTTP"); } } function sendRequest(url,oDiv) { if(req.readyState==1) { // not while loading. return; } req.table = oDiv; req.onreadystatechange=callBack; req.open("GET",url,true); req.send(null); } function callBack() { // if xmlhttp shows "loaded" if(req && req.readyState==4) { // if "OK" if (req.status==200) { //alert("just got: "+xmlhttp.responseText); //document.write(xmlhttp.responseText); ac = req.table; oDiv = ac.oDiv; // clear the popup div. while ( oDiv.hasChildNodes() ) { oDiv.removeChild(oDiv.firstChild); } var items = req.responseXML.getElementsByTagName("item"); //alert("just got items:"+items); var to = ""; for (loop = 0; loop < items.length; loop++) { var item = items.item(loop).firstChild.nodeValue; var hits = items.item(loop).getAttribute('hits'); var oDivBinder = document.createElement('div'); oDivBinder.id = loop; oDivBinder.className = 'fsimCompleteBinderNormal'; var oDivItem = document.createElement('div'); oDivItem.innerHTML = item; oDivItem.className = 'fsimCompleteWords'; oDivBinder.onmousedown = AutoComplete.prototype.onDivMouseDown; oDivBinder.onmouseover = AutoComplete.prototype.onDivMouseOver; oDivBinder.onmouseout = AutoComplete.prototype.onDivMouseOut; //var oSpanHits = document.createElement('div'); //oSpanHits.className = 'fsimCompleteHits'; //oSpanHits.innerHTML = 'hits: '+hits; oDivBinder.appendChild(oDivItem); //oDivBinder.appendChild(oSpanHits); oDiv.AutoComplete = ac; oDiv.appendChild(oDivBinder); } //alert("got: "+to); oDiv.style.visibility = "visible"; //oDiv.stlyeClass = "pop"; oDiv.className = "pop"; } else { alert("Problem retrieving XML data status:"+req.statusText); } } } function AutoComplete(url, oText, oDiv) { // initialize member variables this.oText = oText; // the text box this.oDiv = oDiv; // a hidden
for the popup auto-complete this.url=url; this.selectedItem = null; this.preKeyword = ""; initRequest(); //if(IE) { // turn of autocompletion in IE for this field ! oText.autocomplete = 'off'; //} // attach handlers to the text-box oText.AutoComplete = this; oText.onkeyup = AutoComplete.prototype.onTextChange; oText.onblur = AutoComplete.prototype.onTextBlur; } AutoComplete.prototype.onTextBlur = function() { this.AutoComplete.onblur(); } AutoComplete.prototype.onblur = function() { this.oDiv.style.visibility = "hidden"; } AutoComplete.prototype.onTextChange = function(e) { if(IE) { var e = window.event; } //debug('keycode='+e.keyCode); var keyCode = e.keyCode; if(32 === keyCode) { this.AutoComplete.preKeyword = this.AutoComplete.oText.value; return; } if(40 === keyCode || 38 === keyCode) { if(this.AutoComplete.selectedItem !== null) { this.AutoComplete.selectedItem.className = "fsimCompleteBinderNormal"; var currentID = this.AutoComplete.selectedItem.id; //debug("curID="+currentID); } var nextItem = null; if(40 === keyCode) { if(!currentID) { var currentID = -1; } currentID++; nextItem = this.AutoComplete.oDiv.childNodes.item(currentID); nextItem.className = "fsimCompleteBinderHighlight"; this.AutoComplete.selectedItem = nextItem; this.AutoComplete.oText.value = this.AutoComplete.preKeyword+nextItem.firstChild.innerHTML; } if(38 === keyCode) { if(!currentID) { var currentID = this.AutoComplete.oDiv.childNodes.lenght+1; } currentID--; nextItem = this.AutoComplete.oDiv.childNodes.item(currentID); nextItem.className = "fsimCompleteBinderHighlight"; this.AutoComplete.selectedItem = nextItem; this.AutoComplete.oText.value = this.parentNode.AutoComplete.preKeyword+nextItem.firstChild.innerHTML; } } else { this.AutoComplete.onchange(); } } AutoComplete.prototype.selectRange = function (iStart, iLength) { if (this.oText.createTextRange) { var oRange = this.oText.createTextRange(); oRange.moveStart("character", iStart); oRange.moveEnd("character", iLength - this.textbox.value.length); oRange.select(); } else if (this.oText.setSelectionRange) { this.oText.setSelectionRange(iStart, iLength); } this.oText.focus(); } AutoComplete.prototype.onchange = function() { var txt = this.oText.value; if(""!=txt) { this.selectedItem = null; sendRequest(this.url+txt,this); } else { // hide ! this.oDiv.style.visibility = "hidden"; this.oText.focus(); } } AutoComplete.prototype.onDivMouseDown = function() { this.parentNode.AutoComplete.oText.value = this.parentNode.AutoComplete.preKeyword+this.firstChild.innerHTML; this.parentNode.AutoComplete.selectedItem = null; } AutoComplete.prototype.onDivMouseOver = function() { if(this.parentNode.AutoComplete.selectedItem !== null) { this.parentNode.AutoComplete.selectedItem.className = "fsimCompleteBinderNormal"; } this.className = 'fsimCompleteBinderHighlight'; this.parentNode.AutoComplete.selectedItem = this; this.parentNode.AutoComplete.oText.value = this.parentNode.AutoComplete.preKeyword+this.firstChild.innerHTML; } AutoComplete.prototype.onDivMouseOut = function() { this.className = 'fsimCompleteBinderNormal'; } function createAutoComplete() { new AutoComplete('/search?m=1&l=', document.getElementById('q'), document.getElementById('fsimKeywordsPopup')); }