//v1.1
(function(a,b){function c(){return(new Date).getTime()}a.fn.autoComplete=function(){var c=f.call(arguments),d=this,e=c.shift(),g=typeof e==="string";if(g)e=e.replace(".","-");c=e==="button-supply"||e==="direct-supply"?a.isArray(c[0])&&a.isArray(c[0][0])?c[0]:c:c[1]===b&&a.isArray(c[0])?c[0]:c;return g?a(d)[e==="option"&&c.length<2?"triggerHandler":"trigger"]("autoComplete."+e,c):e&&e[a.expando]?a(d).trigger(e,c):h.call(d,e)};a.fn.bgiframe=a.fn.bgiframe?a.fn.bgiframe:a.fn.bgIframe?a.fn.bgIframe:function(){return this};a.expando=a.expando!==b?a.expando:function(){var b=a.Event("keyup"),c;for(c in b)if(c.indexOf("jQuery")===0)return c;return"jQuery"+b.timeStamp}();var d=true,e=false,f=Array.prototype.slice,g=a.autoComplete={counter:0,length:0,stack:{},order:[],hasFocus:e,getFocus:function(){return this.order[0]?this.stack[this.order[0]]:b},getPrevious:function(){for(var a=1,c=this.order.length;a<c;a++)if(this.order[a])return this.stack[this.order[a]];return b},remove:function(a){for(var c=0,d=this.order.length;c<d;c++)if(this.order[c]===a)this.order[c]=b;this.stack[a]=b;this.length--;delete this.stack[a]},getAll:function(){for(var b=0,c=this.counter,d=[];b<c;b++)if(this.stack[b])d.push(this.stack[b]);return a(d)},defaults:{backwardsCompatible:e,ajax:"ajax.php",ajaxCache:a.ajaxSettings.cache,dataSupply:[],dataFn:b,dataName:"ac-data",list:"auto-complete-list",rollover:"auto-complete-list-rollover",width:b,striped:b,maxHeight:b,newList:e,postVar:"value",postData:{},minChars:1,maxItems:-1,maxRequests:0,requestType:"POST",inputControl:b,autoFill:e,nonInput:b,multiple:e,multipleSeparator:" ",onBlur:b,onFocus:b,onHide:b,onLoad:b,onMaxRequest:function(){},onRollover:b,onSelect:b,onShow:b,onSubmit:function(){return d},spinner:b,preventEnterSubmit:d,delay:0,useCache:d,cacheLimit:50,leftAdjustment:-12,tabToNext:b}},h=function(h){return this.each(function(){function M(d,f,g,h,k){if(g.onLoad)f=g.onLoad.call(i,d,{list:f,settings:g,cache:h,ul:D});if(g.spinner)g.spinner.call(i,d,{active:e,ul:D});if(g.useCache&&h.list[h.val]===b){h.length++;h.list[h.val]=f;if(h.length>g.cacheLimit){h.list={};h.length=0}}if(!f||f.length<1)return D.html("").hide(d);w=-1;var t=j.offset(),u=[],v=0,A=0,B=0,C=e,E=f.length;for(;B<E;B++){if(f[B].value){if(g.maxItems>-1&&++v>g.maxItems)break;u.push(g.striped&&C?'<li class="'+g.striped+'">':"<li>",f[B].display||f[B].value,"</li>");C=!C}}n=D.html(u.join("")).children("li");for(E=n.length;A<E;A++){a.data(n[A],g.dataName,f[A]);a.data(n[A],"ac-index",A)}if(g.autoFill&&!k){w=0;x=f[0];L(x.value||"");o=n.eq(0).addClass(g.rollover)}D.unbind(".autoComplete").data("ac-input-index",z).bind("mouseout.autoComplete",function(){o.removeClass(g.rollover)}).bind("mouseover.autoComplete",function(b){o=a(b.target).closest("li");if(o.length<1)return e;n.filter("."+g.rollover).removeClass(g.rollover);w=o.addClass(g.rollover).data("ac-index");x=o.data(g.dataName);if(g.onRollover)g.onRollover.apply(i,g.backwardsCompatible?[x,o,D,b]:[b,{data:x,li:o,ul:D}])}).bind("click.autoComplete",function(c){j.trigger("focus",[a.expando+"_autoComplete"]);x=o.data(g.dataName);j.val(m=y?m.substr(0,m.length-m.split(y).pop().length)+x.value+y:x.value);D.hide(c);L(b);if(g.onSelect)g.onSelect.apply(i,g.backwardsCompatible?[x,o,D,c]:[c,{data:x,li:o,ul:D}])}).css({top:t.top+j.outerHeight(),left:t.left+g.leftAdjustment,width:g.width}).scrollTop(0);if(g.maxHeight)D.css({height:r*n.length>g.maxHeight?g.maxHeight:"auto",overflow:"auto"});q=D.show(d).outerHeight();p=q;r=n.eq(0).outerHeight();s=Math.floor(p/r);l.timeStamp=c();return D}function L(a){if(a===b){var c,f;c=f=j.val().length}else{if(y)a=m.substr(0,m.length-m.split(y).pop().length)+a+y;var c=m.length,f=a.length;j.val(a)}if(!C.autoFill||c>f){return e}else if(i.createTextRange){var g=i.createTextRange();if(a===b){g.move("character",c);g.select()}else{g.collapse(d);g.moveStart("character",c);g.moveEnd("character",f);g.select()}}else if(i.setSelectionRange){i.setSelectionRange(c,f)}else if(i.selectionStart){i.selectionStart=c;i.selectionEnd=f}return d}function K(){if(!D[a.expando+"_autoComplete"]){var b=D.hide,c=D.show;D.hide=function(c,f,g){if(C.onHide&&t){C.onHide.call(i,c,{ul:D});l[a.expando+"_autoComplete_hide"]=d}t=e;return b.call(D,f,g)};D.show=function(a,b,e){if(C.onShow&&!t)C.onShow.call(i,a,{ul:D});t=d;return c.call(D,b,e)};D[a.expando+"_autoComplete"]=d}var f=D.data("ac-inputs")||{};f[z]=d;return D.data("ac-inputs",f)}function J(a){if(o)o.removeClass(C.rollover);D.show(a);o=n.eq(w).addClass(C.rollover);x=o.data(C.dataName);if(!o.length||!x)return e;var b=(w+6)*r;if(b>p)D.scrollTop((p=b)-q);if(C.onRollover)C.onRollover.apply(i,C.backwardsCompatible?[x,o,D,a]:[a,{data:x,li:o,ul:D}]);return o}function I(a){if(o)o.removeClass(C.rollover);D.show(a);o=n.eq(w).addClass(C.rollover);x=o.data(C.dataName);if(!o.length||!x)return e;if(C.onRollover)C.onRollover.apply(i,C.backwardsCompatible?[x,o,D,a]:[a,{data:x,li:o,ul:D}]);var b=w*r;if(b<p-q){p=b+q;D.scrollTop(b)}return o}function H(c){if(t){if(C.onSelect)C.onSelect.apply(i,C.backwardsCompatible?[x,o,D,c]:[c,{data:x,li:o,ul:D}]);L(b);m=j.val();if(l.type=="keydown")l[a.expando+"_autoComplete_enter"]=d}D.hide(c);return o}function G(c,d,e,f){var g=[],h=[],j=a.isFunction(d.dataFn),k=j?b:new RegExp("^"+e.val,"i"),l=0,m,n=0,o=d.dataSupply.length;for(;n<o;n++){m=d.dataSupply[n];m=typeof m==="object"&&m.value?m:{value:m};h=d.backwardsCompatible?[e.val,m.value,g,n,d.dataSupply,D,c]:[c,{val:e.val,entry:m.value,list:g,i:n,supply:d.dataSupply,ul:D}];if(j&&d.dataFn.apply(i,h)||!j&&m.value.match(k)){if(d.maxItems>-1&&++l>d.maxItems)break;g.push(m)}}return M(c,g,d,e,f)}function F(c,f,g,h,j){if(f.spinner)f.spinner.call(i,c,{active:d,ul:D});if(u)u=clearTimeout(u);if(f.delay>0&&j===b)return u=setTimeout(function(){F(c,f,g,h,d);u=clearTimeout(u)},f.delay);if(v)v.abort();if(f.useCache&&g.list[g.val])return M(c,g.list[g.val],f,g,h);if(f.dataSupply.length)return G(c,f,g,h);if(f.maxRequests&&++A>=f.maxRequests){D.html("").hide(c);if(f.spinner)f.spinner.call(i,c,{active:e,ul:D});return A>f.maxRequests?e:f.onMaxRequest.apply(i,f.backwardsCompatible?[g.val,D,c,m]:[c,{search:g.val,val:m,ul:D}])}f.postData[f.postVar]=g.val;return v=a.ajax({type:f.requestType,url:f.ajax,data:f.postData,dataType:"json",cache:f.ajaxCache,success:function(a){M(c,a,f,g,h)},error:function(){D.html("").hide(c);if(f.spinner)f.spinner.call(i,c,{active:e,ul:D})},xhr:function(){if(a.browser.msie&&a.browser.version.substr(0,1)<=7)return new ActiveXObject("Microsoft.XMLHTTP");else return new XMLHttpRequest}})}var i=this,j=a(i).attr("autocomplete","off"),k=d,l={},m="",n={length:0},o,p,q,r,s,t=e,u,v,w=-1,x,y,z=function(){g.length++;return++g.counter}(),A=0,B={length:0,val:b,list:{}},C=a.extend({width:j.outerWidth()},g.defaults,h||{},a.metadata?j.metadata():{}),D=!C.newList&&a("ul."+C.list)[0]?a("ul."+C.list).eq(0).bgiframe().data("autoComplete",d):a("<ul/>").appendTo("body").addClass(C.list).bgiframe().hide().data("ac-selfmade",d).data("autoComplete",d),E=a(document).bind("click.autoComplete-"+z,function(b){var c;if(k&&t&&(!l||b.timeStamp-l.timeStamp>200)&&(c=a(b.target)).closest("ul").data("ac-input-index")!==z&&c.data("ac-input-index")!==z){D.hide(b);j.blur()}l=b});K();C.requestType=C.requestType.toUpperCase();y=C.multiple?C.multipleSeparator:b;g.stack[z]=i;j.data("autoComplete",d).data("ac-input-index",z).data("ac-active",k).data("ac-initial-settings",a.extend(d,{},C)).data("ac-settings",C).bind(window.opera?"keypress.autoComplete":"keydown.autoComplete",function(b){if(!k)return d;var c=(l=b).keyCode,f=e;if(c==9&&t){H(b);if(C.tabToNext){a(C.tabToNext).focus()}}else if(c==13&&o){f=C.preventEnterSubmit&&t?e:d;H(b)}else if(c==38){if(w>0){w--;I(b)}else{w=-1;j.val(m);D.hide(b)}}else if(c==40){if(w<n.length-1){w++;J(b)}}else if(c==33){if(w>0){w-=s;if(w<0)w=0;I(b)}}else if(c==34){if(w<n.length-1){w+=s;if(w>n.length-1)w=n.length-1;J(b)}}else if(C.nonInput&&a.inArray(c,C.nonInput)){D.html("").hide(b)}else{return d}l[a.expando+"_autoComplete_keydown"]=d;return f}).bind("keyup.autoComplete",function(c){if(!k||l[a.expando+"_autoComplete_keydown"])return d;m=j.val();var e=(l=c).keyCode,f=y?m.split(y).pop():m;if(e!=13){B.val=C.inputControl===b?f:C.inputControl.apply(i,C.backwardsCompatible?[f,e,D,c]:[c,{val:f,key:e,ul:D}]);if(B.val.length>=C.minChars)F(c,C,B,e==8||e==32);else if(e==8)D.html("").hide(c)}}).bind("blur.autoComplete",function(a){if(!k||t)return d;l=a;j.data("ac-hasFocus",e);w=-1;if(g.order[0]!==b)g.order.unshift(b);g.hasFocus=e;D.hide(a);if(C.onBlur)C.onBlur.apply(i,C.backwardsCompatible?[m,D,a]:[a,{val:m,ul:D}])}).bind("focus.autoComplete",function(c,e){if(!k||g.focus===z&&e===a.expando+"_autoComplete"||l[a.expando+"_autoComplete_enter"])return d;l=c;if(z!=D.data("ac-input-index"))D.html("").hide(c);j.data("ac-hasFocus",d);if(g.order[0]===b){if(g.order[1]===z)g.order.shift();else g.order[0]=z}else if(g.order[0]!=z&&g.order[1]!=z)g.order.unshift(z);if(g.order.length>g.defaults.cacheLimit)g.order.pop();g.hasFocus=d;if(C.onFocus)C.onFocus.apply(i,C.backwardsCompatible?[D,c]:[c,{ul:D}])}).bind("autoComplete.settings",function(c,e){if(!k)return d;if(a.isFunction(e)){var f=e.apply(i,C.backwardsCompatible?[C,B,D,c]:[c,{settings:C,cache:B,ul:D}]);if(a.isArray(f)&&f[0]!==b){C=a.extend(d,{},C,f[0]||C);B=a.extend(d,{},B,f[1]||B)}}else{C=a.extend(d,{},C,e||{})}C.requestType=C.requestType.toUpperCase();y=C.multiple?C.multipleSeparator:b;j.data("ac-settings",C);D=!C.newList&&D.hasClass(C.list)?D:!C.newList&&a("ul."+C.list)[0]?a("ul."+C.list).bgiframe().data("autoComplete",d):a("<ul/>").appendTo("body").addClass(C.list).bgiframe().hide().data("ac-selfmade",d).data("autoComplete",d);K();return l=c}).bind("autoComplete.flush",function(a,c){if(!k)return d;B={length:0,val:b,list:{}};if(!c)A=0;return l=a}).bind("autoComplete.button-ajax",function(b,c,e){if(!k)return d;l=b;j.trigger("focus",[a.expando+"_autoComplete"]);if(typeof c==="string"){e=c;c={}}B.val=e||"NON_404_<>!@$^&";return F(b,a.extend(d,{},C,{maxItems:-1,postData:c||{}}),B)}).bind("autoComplete.button-supply",function(c,e,f){if(!k)return d;l=c;j.trigger("focus",[a.expando+"_autoComplete"]);if(typeof e==="string"){f=e;e=b}B.val=f||"NON_404_SUPPLY_<>!@$^&";e=a.isArray(e)&&e.length?e:C.dataSupply;return F(c,a.extend(d,{},C,{maxItems:-1,dataSupply:e,dataFn:function(){return d}}),B)}).bind("autoComplete.direct-supply",function(c,e,f){if(!k)return d;l=c;j.trigger("focus",[a.expando+"_autoComplete"]);if(typeof e==="string"){f=e;e=b}B.val=f||"NON_404_SUPPLY_<>!@$^&";e=a.isArray(e)&&e.length?e:C.dataSupply;return M(c,e,a.extend(d,{},C,{maxItems:-1,dataSupply:e,dataFn:function(){return d}}),B)}).bind("autoComplete.search",function(a,b){if(!k)return d;B.val=b||"";return F(l=a,C,B)}).bind("autoComplete.option",function(a){if(!k)return d;l=a;var c=f.call(arguments),e=c.length;return e==3?function(){C[c[1]]=c[2];j.data("ac-settings",C);return c[2]}():e==2?function(){switch(c[1]){case"ul":return D;case"cache":return B;case"xhr":return v;case"input":return j;default:return C[c[1]]||b}}():C}).bind("autoComplete.enable",function(a){j.data("ac-active",k=d);return l=a}).bind("autoComplete.disable",function(a){j.data("ac-active",k=e);D.html("").hide(a);return l=a}).bind("autoComplete.destroy",function(a){j.removeData("autoComplete").removeData("ac-input-index").removeData("ac-initial-settings").removeData("ac-settings").removeData("ac-active").unbind(".autoComplete").unbind("autoComplete."+["settings","flush","button-ajax","button-supply","direct-supply","search","option","enable","disable","destroy"].join(" autoComplete.")).parents("form").eq(0).unbind("submit.autoComplete-"+z);E.unbind("click.autoComplete-"+z);g.remove(z);k=e;var c=D.html("").hide(a).data("ac-inputs"),f;c[z]=b;for(f in c)if(c[f]===d)return l=a;if(D.data("ac-selfmade")===d)D.remove();return l=a}).parents("form").eq(0).bind("submit.autoComplete-"+z,function(b){if(!k)return d;var c=l[a.expando+"_autoComplete_enter"]||e;l=b;return C.preventEnterSubmit?(t||c)&&w>=0?e:C.onSubmit.call(i,b,{form:this,ul:D}):C.onSubmit.call(i,b,{form:this,ul:D})})})}})(jQuery)
