jQuery.autocomplete=function(d,w){var r=this;var A=$(d).attr("autocomplete","off");if(w.inputClass){A.addClass(w.inputClass)}var s=document.createElement("div");var j=$(s).hide().addClass(w.resultsClass).css("position","absolute");if(w.width>0){j.css("width",w.width)}$("body").append(s);d.autocompleter=r;var J=null;var z="";var K=-1;var l={};var D=false;var n=false;var a=null;var m=false;var h=false;function o(){l={};l.data={};l.length=0}o();if(w.data!=null){var u="",P={},p=[];if(typeof w.url!="string"){w.cacheLength=1}for(var N=0;N<w.data.length;N++){p=((typeof w.data[N]=="string")?[w.data[N]]:w.data[N]);if(p[0].length>0){u=p[0].substring(0,1).toLowerCase();if(!P[u]){P[u]=[]}P[u].push(p)}}for(var M in P){w.cacheLength++;e(M,P[M])}}A.keydown(function(i){a=i.keyCode;switch(i.keyCode){case 38:i.preventDefault();F(-1);break;case 40:i.preventDefault();F(1);break;case 9:case 13:if(H()){A.get(0).blur();i.preventDefault()}break;default:K=-1;if(J){clearTimeout(J)}J=setTimeout(function(){v()},w.delay);break}}).focus(function(){n=true}).blur(function(){n=false;if(!m){c()}});x();function v(){if(a==46||(a>8&&a<32)){return j.hide()}var i=A.val();if(i==z){return}z=i;if(i.length>=w.minChars){A.addClass(w.loadingClass);E(i)}else{A.removeClass(w.loadingClass);j.hide()}}function F(k){var i=$("li",s);if(!i){return}K+=k;if(K<0){K=0}else{if(K>=i.size()){K=i.size()-1}}i.removeClass("ac_over");$(i[K]).addClass("ac_over")}function H(){var i=$("li.ac_over",s)[0];if(!i){var k=$("li",s);if(w.selectOnly){if(k.length==1){i=k[0]}}else{if(w.selectFirst){i=k[0]}}}if(i){t(i);return true}else{return false}}function t(i){if(!i){i=document.createElement("li");i.extra=[];i.selectValue=""}var k=$.trim(i.selectValue?i.selectValue:i.innerHTML);d.lastSelected=k;z=k;j.html("");A.val(k);x();if(w.onItemSelect){setTimeout(function(){w.onItemSelect(i)},1)}}function b(R,k){var Q=A.get(0);if(Q.createTextRange){var i=Q.createTextRange();i.collapse(true);i.moveStart("character",R);i.moveEnd("character",k);i.select()}else{if(Q.setSelectionRange){Q.setSelectionRange(R,k)}else{if(Q.selectionStart){Q.selectionStart=R;Q.selectionEnd=k}}}Q.focus()}function y(i){if(a!=8){A.val(A.val()+i.substring(z.length));b(z.length,i.length)}}function G(){var k=B(d);var i=(w.width>0)?w.width:A.width();j.css({width:parseInt(i)+"px",top:(k.y+d.offsetHeight)+"px",left:k.x+"px"}).show()}function c(){if(J){clearTimeout(J)}J=setTimeout(x,200)}function x(){if(h){return}h=true;if(J){clearTimeout(J)}var i=A.removeClass(w.loadingClass).val();if(j.is(":visible")){j.hide()}if(w.mustMatch){if(!d.lastSelected||d.lastSelected!=i){t(null)}}h=false}function g(k,i){if(i){A.removeClass(w.loadingClass);s.innerHTML="";if(!n||i.length==0){return x()}s.appendChild(L(i));j.append('<div class="ac_bottom"><div class="ac_r6"><a class="ac_r7" href="javascript:$(\'#searchHeader\').submit()">&raquo; alle Treffer anzeigen</a></div></div>');if(w.autoFill&&(A.val().toLowerCase()==k.toLowerCase())){y(i[0][0])}G()}else{x()}}function f(S){if(!S){return null}var k=[];var R=S.split(w.lineSeparator);for(var Q=0;Q<R.length;Q++){var T=$.trim(R[Q]);if(T){k[k.length]=T.split(w.cellSeparator)}}return k}function L(V){var U=document.createElement("ul");var S=V.length;if((w.maxItemsToShow>0)&&(w.maxItemsToShow<S)){S=w.maxItemsToShow}for(var T=0;T<S;T++){var W=V[T];if(!W){continue}var Q=document.createElement("li");if(w.formatItem){Q.innerHTML=w.formatItem(W,T,S);Q.selectValue=W[0]}else{Q.innerHTML=W[0];Q.selectValue=W[0]}var k=null;if(W.length>1){k=[];for(var R=1;R<W.length;R++){k[k.length]=W[R]}}Q.extra=k;U.appendChild(Q);$(Q).hover(function(){$("li",U).removeClass("ac_over");$(this).addClass("ac_over");K=$("li",U).indexOf($(this).get(0))},function(){$(this).removeClass("ac_over")}).click(function(i){i.preventDefault();i.stopPropagation();t(this)})}$(U).mousedown(function(){m=true}).mouseup(function(){m=false});return U}function E(k){if(!w.matchCase){k=k.toLowerCase()}var i=w.cacheLength?O(k):null;if(i){g(k,i)}else{if((typeof w.url=="string")&&(w.url.length>0)){$.get(q(k),function(Q){Q=f(Q);e(k,Q);g(k,Q)})}else{A.removeClass(w.loadingClass)}}}function q(S){var Q=w.url.indexOf("?")==-1?"?":"&";var k=w.url+Q+"text="+escape(S);for(var R in w.extraParams){k+="&"+R+"="+encodeURI(w.extraParams[R])}return k}function O(V){if(!V){return null}if(l.data[V]){return l.data[V]}if(w.matchSubset){for(var T=V.length-1;T>=w.minChars;T--){var Q=V.substr(0,T);var W=l.data[Q];if(W){var U=[];for(var R=0;R<W.length;R++){var k=W[R];var S=k[0];if(C(S,V)){U[U.length]=k}}return U}}}return null}function C(R,Q){if(!w.matchCase){R=R.toLowerCase()}var k=R.indexOf(Q);if(k==-1){return false}return k==0||w.matchContains}this.flushCache=function(){o()};this.setExtraParams=function(i){w.extraParams=i};this.findValue=function(){var k=A.val();if(!w.matchCase){k=k.toLowerCase()}var i=w.cacheLength?O(k):null;if(i){I(k,i)}else{if((typeof w.url=="string")&&(w.url.length>0)){$.get(q(k),function(Q){Q=f(Q);e(k,Q);I(k,Q)})}else{I(k,null)}}};function I(V,U){if(U){A.removeClass(w.loadingClass)}var S=(U)?U.length:0;var Q=null;for(var T=0;T<S;T++){var W=U[T];if(W[0].toLowerCase()==V.toLowerCase()){Q=document.createElement("li");if(w.formatItem){Q.innerHTML=w.formatItem(W,T,S);Q.selectValue=W[0]}else{Q.innerHTML=W[0];Q.selectValue=W[0]}var k=null;if(W.length>1){k=[];for(var R=1;R<W.length;R++){k[k.length]=W[R]}}Q.extra=k}}if(w.onFindValue){setTimeout(function(){w.onFindValue(Q)},1)}}function e(k,i){if(!i||!k||!w.cacheLength){return}if(!l.length||l.length>w.cacheLength){o();l.length++}else{if(!l[k]){l.length++}}l.data[k]=i}function B(k){var Q=k.offsetLeft||0;var i=k.offsetTop||0;while(k=k.offsetParent){Q+=k.offsetLeft;i+=k.offsetTop}return{x:Q,y:i}}};jQuery.fn.autocomplete=function(b,a,c){a=a||{};a.url=b;a.data=((typeof c=="object")&&(c.constructor==Array))?c:null;a=$.extend({inputClass:"ac_input",resultsClass:"ac_results",lineSeparator:"§",cellSeparator:"|",minChars:1,delay:400,matchCase:0,matchSubset:1,matchContains:0,cacheLength:1,mustMatch:0,extraParams:{},loadingClass:"ac_loading",selectFirst:false,selectOnly:false,maxItemsToShow:-1,autoFill:false,width:0},a);a.width=parseInt(a.width,10);this.each(function(){var d=this;new jQuery.autocomplete(d,a)});return this};jQuery.fn.autocompleteArray=function(b,a){return this.autocomplete(null,a,b)};jQuery.fn.indexOf=function(b){for(var a=0;a<this.length;a++){if(this[a]==b){return a}}return -1};