(function(a){a.fn.extend({autocomplete:function(b,c){var d=typeof b=="string";c=a.extend({},a.Autocompleter.defaults,{url:d?b:null,data:d?null:b,delay:d?a.Autocompleter.defaults.delay:10,max:c&&!c.scroll?10:150},c);c.highlight=c.highlight||function(e){return e};c.formatMatch=c.formatMatch||c.formatItem;return this.each(function(){new a.Autocompleter(this,c)})},result:function(b){return this.bind("result",b)},search:function(b){return this.trigger("search",[b])},flushCache:function(){return this.trigger("flushCache")},setOptions:function(b){return this.trigger("setOptions",[b])},unautocomplete:function(){return this.trigger("unautocomplete")}});a.Autocompleter=function(m,h){var c={UP:38,DOWN:40,LEFT:37,RIGHT:39,DEL:46,TAB:9,RETURN:13,ESC:27,COMMA:188,PAGEUP:33,PAGEDOWN:34,BACKSPACE:8};var b=a(m).attr("autocomplete","off").addClass(h.inputClass);var k;var r="";var n=a.Autocompleter.Cache(h);var f=0;var e=0;var w;var z={mouseDownOnSelect:false};var s=a.Autocompleter.Select(h,m,d,z,u,v);function v(A){if(A){e++}else{e=0}}var y;a.browser.opera&&a(m.form).bind("submit.autocomplete",function(){if(y){y=false;return false}});b.bind((a.browser.opera?"keypress":"keydown")+".autocomplete",function(A){f=1;w=A.keyCode;switch(A.keyCode){case c.UP:A.preventDefault();if(s.visible()){s.prev()}else{u(0,true)}break;case c.DOWN:A.preventDefault();if(s.visible()){s.next()}else{u(0,true)}break;case c.LEFT:A.preventDefault();if(s.visible()){s.prevPage()}else{u(0,true)}break;case c.RIGHT:A.preventDefault();if(s.visible()){s.nextPage()}else{u(0,true)}break;case c.PAGEUP:A.preventDefault();if(s.visible()){s.pageUp()}else{u(0,true)}break;case c.PAGEDOWN:A.preventDefault();if(s.visible()){s.pageDown()}else{u(0,true)}break;case h.multiple&&a.trim(h.multipleSeparator)==","&&c.COMMA:case c.TAB:case c.RETURN:if(d()){A.preventDefault();y=true;return false}break;case c.ESC:s.hide();break;default:clearTimeout(k);s.resetPage();k=setTimeout(u,h.delay);break}}).focus(function(){f++}).blur(function(){f=0;if(!e&&!z.mouseDownOnSelect){t()}}).click(function(){if(f++>1&&!s.visible()){u(0,true)}}).bind("search",function(){var A=(arguments.length>1)?arguments[1]:null;function B(F,E){var C;if(E&&E.length){for(var D=0;D<E.length;D++){if(E[D].result.toLowerCase()==F.toLowerCase()){C=E[D];break}}}if(typeof A=="function"){A(C)}else{b.trigger("result",C&&[C.data,C.value])}}a.each(i(b.val()),function(C,D){g(D,B,B)})}).bind("flushCache",function(){n.flush()}).bind("setOptions",function(){a.extend(h,arguments[1]);if("data" in arguments[1]){n.populate()}}).bind("unautocomplete",function(){s.unbind();b.unbind();a(m.form).unbind(".autocomplete")});function d(){var D=s.selected();if(!D){return false}var A=D.result;r=A;if(h.multiple){var G=i(b.val());if(G.length>1){var C=h.multipleSeparator.length;var F=a(m).selection().start;var E,B=0;a.each(G,function(H,I){B+=I.length;if(F<=B){E=H;return false}B+=C});G[E]=A;A=G.join(h.multipleSeparator)}A+=h.multipleSeparator}b.val(A);x();b.trigger("result",[D.data,D.value]);return true}function u(C,B){if(w==c.DEL){s.hide();return}var A=b.val();if(!B&&A==r){return}r=A;A=j(A);if(A.length>=h.minChars){b.addClass(h.loadingClass);if(!h.matchCase){A=A.toLowerCase()}g(A,l,x)}else{o();s.hide()}}function i(A){if(!A){return[""]}if(!h.multiple){return[a.trim(A)]}return a.map(A.split(h.multipleSeparator),function(B){return a.trim(A).length?a.trim(B):null})}function j(A){if(!h.multiple){return A}var C=i(A);if(C.length==1){return C[0]}var B=a(m).selection().start;if(B==A.length){C=i(A)}else{C=i(A.replace(A.substring(B),""))}return C[C.length-1]}function q(A,B){if(h.autoFill&&(j(b.val()).toLowerCase()==A.toLowerCase())&&w!=c.BACKSPACE){b.val(b.val()+B.substring(j(r).length));a(m).selection(r.length,r.length+B.length)}}function t(){clearTimeout(k);k=setTimeout(x,200)}function x(){var A=s.visible();s.hide();clearTimeout(k);o();if(h.mustMatch){b.search(function(B){if(!B){if(h.multiple){var C=i(b.val()).slice(0,-1);b.val(C.join(h.multipleSeparator)+(C.length?h.multipleSeparator:""))}else{b.val("");b.trigger("result",null)}}})}}function l(B,A){if(A&&A.length&&(f||e)){o();s.display(A,B);q(B,A[0].value);s.show()}else{x()}}function g(B,E,A){if(!h.matchCase){B=B.toLowerCase()}var D=n.load(B);if(D&&D.length){E(B,D)}else{if((typeof h.url=="string")&&(h.url.length>0)){var C=s.getCurrentPage();var F={timestamp:+new Date(),currentPage:C};a.each(h.extraParams,function(G,H){F[G]=typeof H=="function"?H():H});a.ajax({mode:"abort",port:"autocomplete"+m.name,dataType:h.dataType,url:h.url,data:a.extend({q:j(B),limit:h.max},F),success:function(H){var G=h.parse&&h.parse(H)||p(H);n.add(B,G);E(B,G)}})}else{s.emptyList();A(B)}}}function p(D){var A=[];var C=D.split("\n");for(var B=0;B<C.length;B++){var E=a.trim(C[B]);if(E){E=E.split("|");A[A.length]={data:E,value:E[0],result:h.formatResult&&h.formatResult(E,E[1])||E[1]}}}return A}function o(){b.removeClass(h.loadingClass)}};a.Autocompleter.defaults={inputClass:"ac_input",resultsClass:"ac_results",loadingClass:"ac_loading",minChars:1,delay:400,matchCase:false,matchSubset:true,matchContains:false,cacheLength:0,max:10,mustMatch:false,extraParams:{},selectFirst:true,formatItem:function(b){return b[0]},formatMatch:null,autoFill:false,width:0,multiple:false,multipleSeparator:", ",highlight:function(c,b){return c.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)("+b.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1")+")(?![^<>]*>)(?![^&;]+;)","gi"),"<strong>$1</strong>")},scroll:false,scrollHeight:180};a.Autocompleter.Cache=function(c){var f={};var d=0;function h(l,k){if(!c.matchCase){l=l.toLowerCase()}var j=l.indexOf(k);if(c.matchContains=="word"){j=l.toLowerCase().search("\\b"+k.toLowerCase())}if(j==-1){return false}return j==0||c.matchContains}function g(j,i){if(d>c.cacheLength){b()}if(!f[j]){d++}f[j]=i}function e(){if(!c.data){return false}var k={},j=0;if(!c.url){c.cacheLength=1}k[""]=[];for(var m=0,l=c.data.length;m<l;m++){var p=c.data[m];p=(typeof p=="string")?[p]:p;var o=c.formatMatch(p,m+1,c.data.length);if(o===false){continue}var n=o.charAt(0).toLowerCase();if(!k[n]){k[n]=[]}var q={value:o,data:p,result:c.formatResult&&c.formatResult(p)||o};k[n].push(q);if(j++<c.max){k[""].push(q)}}a.each(k,function(r,s){c.cacheLength++;g(r,s)})}setTimeout(e,25);function b(){f={};d=0}return{flush:b,add:g,populate:e,load:function(n){if(!c.cacheLength||!d){return null}if(!c.url&&c.matchContains){var m=[];for(var j in f){if(j.length>0){var o=f[j];a.each(o,function(p,k){if(h(k.value,n)){m.push(k)}})}}return m}else{if(f[n]){return f[n]}else{if(c.matchSubset){for(var l=n.length-1;l>=c.minChars;l--){var o=f[n.substr(0,l)];if(o){var m=[];a.each(o,function(p,k){if(h(k.value,n)){m[m.length]=k}});return m}}}}}return null}}};a.Autocompleter.Select=function(e,l,p,w,r,f){var k={ACTIVE:"ac_over"};var n,h=-1,s=1,y=1,z,q="",A=true,c,u,g;function t(){if(!A){return}c=a("<div/>").hide().addClass(e.resultsClass).css("position","absolute").appendTo(document.body).mouseenter(function(){f(true)}).mouseleave(function(){f(false)});var D=a("<div/>").addClass("suggest-close").appendTo(c);var B=a("<a/>").attr("href","").appendTo(D).click(function(E){ShowHelp("suggestcontrol");return false});a("<img/>").attr("src","./bilder/fragezeichen-aufhell.png").attr("alt","Hilfesymbol").attr("title","Schnellhilfe anzeigen").appendTo(B);var C=a("<a/>").attr("href","").appendTo(D).click(function(E){o();return false});a("<img/>").attr("src","./bilder/schliessen-button.gif").attr("alt","Schließen Symbol").attr("title","Vorschlagsliste schließen").appendTo(C);u=a("<ul/>").appendTo(c).mouseover(function(E){if(x(E).nodeName&&x(E).nodeName.toUpperCase()=="LI"){h=a("li",u).removeClass(k.ACTIVE).index(x(E));a(x(E)).addClass(k.ACTIVE)}}).click(function(E){a(x(E)).addClass(k.ACTIVE);p();l.focus();return false}).mousedown(function(){w.mouseDownOnSelect=true}).mouseup(function(){w.mouseDownOnSelect=false});g=a("<ul/>").addClass("suggest-paging").appendTo(c);if(e.width>0){c.css("width",e.width)}A=false}function x(C){var B=C.target;while(B&&B.tagName!="LI"){B=B.parentNode}if(!B){return[]}return B}function j(B){n.slice(h,h+1).removeClass(k.ACTIVE);i(B);var D=n.slice(h,h+1).addClass(k.ACTIVE);if(e.scroll){var C=0;n.slice(0,h).each(function(){C+=this.offsetHeight});if((C+D[0].offsetHeight-u.scrollTop())>u[0].clientHeight){u.scrollTop(C+D[0].offsetHeight-u.innerHeight())}else{if(C<u.scrollTop()){u.scrollTop(C)}}}}function i(B){h+=B;if(h<0){h=n.size()-1}else{if(h>=n.size()){h=0}}}function b(B){return e.max&&e.max<B?e.max:B}function m(B){s=B;r(0,true)}function o(){c&&c.hide();n&&n.removeClass(k.ACTIVE);h=-1}function d(){u.empty();var C=b(z.length-1);for(var D=0;D<C;D++){if(!z[D]){continue}var E=e.formatItem(z[D].data,D+1,C,z[D].value,q);if(E===false){continue}var B=a("<li/>").html(e.highlight(E,q)).addClass(D%2==0?"ac_even":"ac_odd").appendTo(u)[0];a.data(B,"ac_data",z[D])}n=u.find("li");if(e.selectFirst){n.slice(0,1).addClass(k.ACTIVE);h=0}if(a.fn.bgiframe){u.bgiframe()}}function v(){g.empty();if(z.length==0){return}y=parseInt(z[z.length-1].data);var E=s-2;var C=s+2;var D=E;if(s>1){var B=a("<li/>").appendTo(g);a("<a/>").attr("title","Seite zurück").attr("href","").addClass("previous").appendTo(B).click(function(F){m(s-1);return false})}while(D<=C){if(D<=0){D++;C++;continue}if(D>y){break}if(D==s){a("<li/>").attr("title","aktuelle Seite").addClass("current").appendTo(g).text(D)}else{var B=a("<li/>").attr("title","Seite "+D).appendTo(g);a("<a/>").attr("title","Seite"+D).attr("href","").appendTo(B).text(D).click(function(F){m(parseInt(a(this).text()));return false})}D++}if(s<y){var B=a("<li/>").appendTo(g);a("<a/>").attr("title","Seite vor").attr("href","").addClass("next").appendTo(B).click(function(F){m(s+1);return false})}}return{display:function(C,B){t();z=C;q=B;d();v()},next:function(){j(1)},prev:function(){j(-1)},nextPage:function(){if(s<y){m(s+1)}},resetPage:function(){s=1},getCurrentPage:function(){return s},prevPage:function(){if(s>1){m(s-1)}},pageUp:function(){if(h!=0&&h-8<0){j(-h)}else{j(-8)}},pageDown:function(){if(h!=n.size()-1&&h+8>n.size()){j(n.size()-1-h)}else{j(8)}},hide:function(){o()},visible:function(){return c&&c.is(":visible")},current:function(){return this.visible()&&(n.filter("."+k.ACTIVE)[0]||e.selectFirst&&n[0])},show:function(){var D=a(l).offset();c.css({width:typeof e.width=="string"||e.width>0?e.width:a(l).width(),top:D.top+l.offsetHeight,left:D.left}).show();if(e.scroll){u.scrollTop(0);u.css({maxHeight:e.scrollHeight,overflow:"auto"});if(a.browser.msie&&typeof document.body.style.maxHeight==="undefined"){var B=0;n.each(function(){B+=this.offsetHeight});var C=B>e.scrollHeight;u.css("height",C?e.scrollHeight:B);if(!C){n.width(u.width()-parseInt(n.css("padding-left"))-parseInt(n.css("padding-right")))}}}},selected:function(){var B=n&&n.filter("."+k.ACTIVE).removeClass(k.ACTIVE);return B&&B.length&&a.data(B[0],"ac_data")},emptyList:function(){u&&u.empty()},unbind:function(){c&&c.remove()}}};a.fn.selection=function(i,b){if(i!==undefined){return this.each(function(){if(this.createTextRange){var j=this.createTextRange();if(b===undefined||i==b){j.move("character",i);j.select()}else{j.collapse(true);j.moveStart("character",i);j.moveEnd("character",b);j.select()}}else{if(this.setSelectionRange){this.setSelectionRange(i,b)}else{if(this.selectionStart){this.selectionStart=i;this.selectionEnd=b}}}})}var g=this[0];if(g.createTextRange){var c=document.selection.createRange(),h=g.value,f="<->",d=c.text.length;c.text=f;var e=g.value.indexOf(f);g.value=h;this.selection(e,e+d);return{start:e,end:e+d}}else{if(g.selectionStart!==undefined){return{start:g.selectionStart,end:g.selectionEnd}}}}})(jQuery);
