var oldKey=false;TMT.autocompleteAutoAttach=function(){var acdb=[];$("input.autocomplete").each(function(){var uri=this.value;if(!acdb[uri]){acdb[uri]=new TMT.ACDB(uri,this);}var input=$("#"+this.id.substr(0,this.id.length-13)).attr("autocomplete","OFF")[0];$(input.form).submit(TMT.autocompleteSubmit);new TMT.jsAC(input,acdb[uri]);});};TMT.autocompleteSubmit=function(){return $("#autocomplete").each(function(){this.owner.hidePopup();}).size()==0;};TMT.jsAC=function(input,db){var ac=this;this.input=input;this.db=db;this.prefix="noID---";$(this.input).keydown(function(event){return ac.onkeydown(this,event);}).keyup(function(event){ac.onkeyup(this,event);}).blur(function(){ac.hidePopup();ac.db.cancel();});};TMT.jsAC.prototype.onkeydown=function(input,e){if(!e){e=window.event;}switch(e.keyCode){case 40:this.selectDown();return false;case 38:this.selectUp();return false;default:return true;}};TMT.jsAC.prototype.onkeyup=function(input,e){if(!e){e=window.event;}switch(e.keyCode){case 16:case 17:case 18:case 20:case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:if(e.keyCode==40){oldKey=true;}return true;case 13:if(oldKey){oldKey=false;this.hidePopup(e.keyCode);}else{var node=input;while(node.tagName!="FORM"&&node.tagName!="BODY"){node=node.parentNode;}if(node.tagName=="FORM"){node.submit();}}return true;default:if(input.value.length>2){this.populatePopup();}else{this.hidePopup(e.keyCode);}return true;}};TMT.jsAC.prototype.select=function(node){this.input.value=node.autocompleteValue;};TMT.jsAC.prototype.selectDown=function(){if(this.selected&&this.selected.nextSibling){this.highlight(this.selected.nextSibling);}else{var lis=$("li",this.popup);if(lis.size()>0){this.highlight(lis.get(0));}}};TMT.jsAC.prototype.selectUp=function(){if(this.selected&&this.selected.previousSibling){this.highlight(this.selected.previousSibling);}};TMT.jsAC.prototype.highlight=function(node){if(this.selected){$(this.selected).removeClass("selected");}$(node).addClass("selected");this.selected=node;};TMT.jsAC.prototype.unhighlight=function(node){$(node).removeClass("selected");this.selected=false;};TMT.jsAC.prototype.hidePopup=function(keycode){if(this.selected&&((keycode&&keycode!=46&&keycode!=8&&keycode!=27)||!keycode)){if(this.selected.autocompleteText){var oldValue=this.input.value;if(oldValue!=""){var mas=oldValue.split(",");}else{var mas=[];}if(mas.length<=1){this.input.value=this.selected.autocompleteText;}else{var str="";for(var i=0;i<mas.length-1;i++){str=str+mas[i]+",";}this.input.value=str+" "+this.selected.autocompleteText;}var id=this.input.name.split("_");id=id.join("-");var hidden=document.getElementById("edit-"+id+"-id");if(!hidden){hidden=$("#"+this.input.name+"_id")[0];}if(!hidden){var hidden=document.createElement("input");hidden.type="hidden";hidden.name=this.input.name+"_id";hidden.id=this.input.name+"_id";hidden.value=this.selected.autocompleteValue;this.input.parentNode.appendChild(hidden);}else{hidden.value=this.selected.autocompleteValue;}}else{this.input.value=this.selected.autocompleteValue;}if(typeof this.input.onSelectData=="function"){this.input.onSelectData(this.selected.autocompleteValue);}}var popup=this.popup;if(popup){this.popup=null;$(popup).fadeOut("fast",function(){$(popup).remove();});}this.selected=false;};TMT.jsAC.prototype.populatePopup=function(){if(this.popup){$(this.popup).remove();}this.selected=false;this.popup=document.createElement("div");this.popup.id="autocomplete";this.popup.owner=this;$(this.popup).css({marginTop:this.input.offsetHeight+"px",width:(this.input.offsetWidth-4)+"px",display:"none"});$(this.input).before(this.popup);this.db.owner=this;hidden=$("#"+this.input.name+"_id");if(hidden){hidden.val(this.prefix+this.input.value);}this.db.search(this.input.value);};TMT.jsAC.prototype.found=function(matches){if(!this.input.value.length){return false;}var id=this.input.name.split("_");id=id.join("-");var hidden=document.getElementById("edit-"+id+"-id");if(hidden){hidden.value="";}var ul=document.createElement("ul");var ac=this;for(key in matches){var li=document.createElement("li");$(li).html("<div>"+matches[key]+"</div>").mousedown(function(){ac.select(this);}).mouseover(function(){ac.highlight(this);}).mouseout(function(){ac.unhighlight(this);});li.autocompleteValue=key;li.autocompleteText=matches[key];$(ul).append(li);}if(this.popup){if(ul.childNodes.length>0){$(this.popup).empty().append(ul).show();}else{$(this.popup).css({visibility:"hidden"});this.hidePopup();}}};TMT.jsAC.prototype.setStatus=function(status){switch(status){case"begin":$(this.input).addClass("throbbing");break;case"cancel":case"error":case"found":$(this.input).removeClass("throbbing");break;}};TMT.ACDB=function(uri,elem){this.uri=uri;this.elem=elem;this.delay=0;this.cache={};};TMT.ACDB.prototype.search=function(searchString){var db=this;this.searchString=searchString;if(this.cache[searchString]){return this.owner.found(this.cache[searchString]);}if(this.timer){clearTimeout(this.timer);}this.timer=setTimeout(function(){db.owner.setStatus("begin");if(db.elem.value!=""){var uri=db.elem.value;}else{var uri=db.uri;}$.ajax({type:"GET",url:uri+"/text/"+TMT.encodeURIComponent(searchString),success:function(data){var matches=JSON.parse(data);if(typeof matches){db.cache[searchString]=matches;if(db.searchString==searchString){db.owner.found(matches);}db.owner.setStatus("found");}else{var id=db.elem.id.split("-");id=id.slice(0,id.length-1);id=id.join("-");var hidden=document.getElementById(id+"-id");if(hidden){hidden.value="";}}}});},this.delay);};TMT.ACDB.prototype.cancel=function(){if(this.owner){this.owner.setStatus("cancel");}if(this.timer){clearTimeout(this.timer);}this.searchString="";};if(TMT.jsEnabled){$(document).ready(TMT.autocompleteAutoAttach);}