if(typeof KAUFDA=="undefined"||!KAUFDA){var KAUFDA={};KAUFDA.gui={}}KAUFDA.gui.AutoComplete=function(h,e,r,a){var j=null;var n=null;var d=r;var v=null;var u=null;var o=null;var w={};var f=Object.extend({maxResults:10,minQueryLength:3,groupResults:false,typeAhead:false,selectSuggestionCallback:null},a);if(Object.isString(h)){j=$(h)}else{j=h}if(Object.isString(e)){n=$(e)}else{n=e}n.hide();n.setStyle({zIndex:"5000",backgroundColor:"#ffffff",position:"absolute"});n.absolutize();n.setStyle({zIndex:"400"});n.absolutize();n.setStyle({zIndex:"400"});if(Prototype.Browser.IE){n.setStyle({top:"-1px"})}var i=function(B){var C=B.keyCode;switch(C){case Event.KEY_UP:A();Event.stop(B);break;case Event.KEY_DOWN:y();Event.stop(B);break;case Event.KEY_ESC:n.hide();Event.stop(B);break;case Event.KEY_RETURN:if(n.visible()){Event.fire(j,"KAUFDA:AutoComplete:selected",{selectionIndex:v})}else{j.form.onsubmit();if(typeof f.selectSuggestionCallback=="function"){f.selectSuggestionCallback()}}Event.stop(B);break;default:k()}};var z=function(B){var C=B.keyCode;switch(C){case Event.KEY_RETURN:Event.stop(B);break}};var t=function(B){n.hide()};var p=function(B){if(Object.isElement(j)&&j.value.length>0){k()}};var x=function(D){var B=D.memo.selectionIndex;var C=c(u);var E=null;if(Object.isNumber(B)){E=C[B].select("a")[0]}if(E){j.value=E.rel||E.innerHTML}n.hide();j.form.onsubmit();if(typeof f.selectSuggestionCallback=="function"){f.selectSuggestionCallback()}};var y=function(){var B=null;if(v===null){v=0;if(Object.isElement(u)){B=c(u);l(B,0)}}else{if(Object.isElement(u)&&Object.isNumber(v)){B=c(u);if(B.length===v+1){}else{l(B,1)}}}};var A=function(){var B=null;if(v===null){v=0;if(Object.isElement(u)){B=c(u);l(B,0)}}else{if(Object.isElement(u)&&Object.isNumber(v)){B=c(u);if(v===0){}else{l(B,-1)}}}};var c=function(){var B=u.select("a").collect(function(C){return C.ancestors()[0]});return B};var l=function(B,D){if(f.typeAhead){var C=B[v].select("a")[0];j.value=C.rel||C.innerHTML}B[v].removeClassName("active");v+=D;B[v].addClassName("active")};var k=function(){if(j.value.length===0){s();g();return null}if(j.value.length<f.minQueryLength){return null}o=new Date().getTime();var B=new Date().toString();w[B]=true;new PeriodicalExecuter(function(C){if(w[this.reqStart]){j.addClassName("loading");n.addClassName("loading")}C.stop()}.bind({reqStart:B}),0.5);new Ajax.Request(d,{method:"post",parameters:{query:j.value,max:f.maxResults,lastRequest:o},onSuccess:function(C){w[this.reqStart]=undefined;j.removeClassName("loading");n.removeClassName("loading");m(C)}.bind({reqStart:B}),onFailure:function(C){}})};var s=function(){u=null;if(n.firstDescendant()){n.firstDescendant().remove()}n.hide()};var g=function(){v=null};var m=function(D){if(!D.responseText){return null}var B=D.responseJSON;if((B.lastRequest!=o)){return}var C=b(B,f.groupResults);if(C.select("li").length>0){n.update(C);n.show();Event.fire(document,"KAUFDA:AutoComplete:resultsFound")}else{n.hide()}};var b=function(B,E){var D=new Element("ul",{"class":"auto-complete-list level-0"});var C=0;if(B.results.length>0){g()}if(E){B.results.each(function(I){var H=new Element("span",{"class":"headline"}).update(I.title);var F=new Element("li").insert(H);var G=new Element("ul",{"class":"level-1"});I.resultItems.each(function(L){var J=new Element("a",{href:L.url}).update(L.text);if(L.value){J.rel=L.value}var K=new Element("li").insert(J);K.observe("mousedown",(function(){Event.fire(j,"KAUFDA:AutoComplete:selected",{selectionIndex:this.index})}).bindAsEventListener({index:C}));G.insert(K);C++});F.insert(G);D.insert(F)})}else{B.results.each(function(F){F.resultItems.each(function(I){var G=new Element("a",{href:I.url}).update(I.text);if(I.value){G.rel=I.value}var H=new Element("li").insert(G);H.observe("mousedown",(function(){Event.fire(j,"KAUFDA:AutoComplete:selected",{selectionIndex:this.index})}).bindAsEventListener({index:C}));D.insert(H);C++})})}u=D;return D};var q=this;j.setAttribute("autocomplete","off");Event.observe(j,"keyup",i);Event.observe(j,"keydown",z);Event.observe(j,"focus",p);Event.observe(j,"blur",t);Event.observe(j,"KAUFDA:AutoComplete:selected",x)};