function autoCompleteClass(){this.delayBeforeProcess=500;this.timeoutId;this.instanceName='';var me=this;this.text;this.textBoxId;this.textBox='';this.containerId;this.containerListId;this.suggestions;var TAB=9;var ESC=27;var KEYUP=38;var KEYDN=40;var ENTER=13;this.useSuggestionKey=TAB;this.highlighted=-1;this.processText=function(){xajaxGetWordSimilars(this.text,this.instanceName);};this.showSuggestions=function(){if(this.suggestions){var containerList=document.getElementById(this.containerListId);var html='';var key;var suggestion;var name;for(key in this.suggestions){suggestion=this.suggestions[key];var name=suggestion;if(typeof(name)=='string'){var f=this.instanceName+".onSelectSuggestion('"+name+"')";html+='<a href="javascript:void(0)" onclick="'+f+'">'+name+'</a><br/>';}}containerList.innerHTML=html;this.toggleContainerDisplay('onlyShow');}};this.onSelectSuggestion=function(value){document.getElementById(this.textBoxId).value=value;this.toggleContainerDisplay('onlyHide');};this.toggleContainerDisplay=function(mode){var container=document.getElementById(this.containerId);if(!mode){if(container)if(container.style.display=='none'){container.style.display='';}else{container.style.display='none';}}else{if(mode=='onlyHide'){container.style.display='none';}else{container.style.display='';}}};this.start=function(){if(!me.textBox){me.textBox=document.getElementById(me.textBoxId);}me.textBox.setAttribute("autocomplete","off");me.textBox.onkeyup=function(ev){var key=me.getKeyCode(ev);switch(key){case TAB:case ESC:case KEYUP:case KEYDN:return;default:me.toggleContainerDisplay('onlyHide');clearTimeout(me.timeoutId);var myFunc=new Function(me.instanceName+".processText();");me.timeoutId=setTimeout(myFunc,me.delayBeforeProcess);me.text=this.value;me.highlighted=-1;return true;}};me.textBox.onkeydown=function(ev){var key=me.getKeyCode(ev);switch(key){case TAB:me.useSuggestion();break;case ENTER:me.useSuggestion();break;case ESC:me.toggleContainerDisplay('onlyHide');break;case KEYUP:if(me.highlighted>0){me.highlighted--;}me.changeHighlight(key);break;case KEYDN:if(me.highlighted<(me.suggestions.length - 1)){me.highlighted++;}me.changeHighlight(key);break;}};};this.startOnLoad=function(){if(window.addEventListener){window.addEventListener("load",this.start,false);}else{if(window.attachEvent){window.attachEvent("onload",this.start);}}};this.getKeyCode=function(ev){if(ev){return ev.keyCode;}if(window.event){return window.event.keyCode;}};this.getEventSource=function(ev){if(ev){return ev.target;};if(window.event){return window.event.srcElement;}};this.cancelEvent=function(ev){if(ev){ev.preventDefault();ev.stopPropagation();};if(window.event){window.event.returnValue=false;};};this.changeHighlight=function(){var containerList=document.getElementById(this.containerListId);var lis=containerList.getElementsByTagName('A');for(i in lis){var li=lis[i];if(this.highlighted==i){li.className="autoCompleteSelected";}else{li.className="";}}};this.useSuggestion=function(){if(this.highlighted>-1){var containerList=document.getElementById(this.containerListId);var lst=containerList.getElementsByTagName('A');lst[this.highlighted].onclick();me.toggleContainerDisplay('onlyHide');setTimeout("document.getElementById('"+this.textBox.id+"').focus()",0);};};}