/*
 * Auto Complete 5.1
 * April 13, 2010
 * Corey Hart @ http://www.codenothing.com
 */
(function(g,l,b){g.fn.autoComplete=function(){var s=k.call(arguments),r=this,w=s.shift(),v=typeof w==="string",u,t;if(v){w=w.replace(d,"-")}s=(i.arrayMethods[w]===e&&g.isArray(s[0])&&g.isArray(s[0][0]))||(s.length===1&&g.isArray(s[0]))?s[0]:s;u=v&&(i.handlerMethods[w]===-1||s.length<(i.handlerMethods[w]||0))?"triggerHandler":"trigger";return v?r[u]("autoComplete."+w,s):w&&w.preventDefault!==b?r.trigger(w,s):r.each(function(){if(g(t=this).data("autoComplete")!==e){h(t,w)}})};g.fn.bgiframe=g.fn.bgiframe?g.fn.bgiframe:g.fn.bgIframe?g.fn.bgIframe:function(){return this};function c(v,t){if(c.flag!==e){c.flag=e;p.bind("click.autoComplete",function(w){i.getFocus(e).trigger("autoComplete.document-click",[w])})}var r=v.closest("form"),u=r.data("ac-inputs")||{},s;u[t]=e;r.data("ac-inputs",u);if(r.data("autoComplete")!==e){r.data("autoComplete",e).bind("submit.autoComplete",function(w){return(s=i.getFocus(e)).length?s.triggerHandler("autoComplete.form-submit",[w,this]):e})}}function o(v,t){i.remove(t);if(c.flag===e&&i.length===0){c.flag=m;p.unbind("click.autoComplete")}var r=v.closest("form"),u=r.data("ac-inputs")||{},s;u[t]=m;for(s in u){if(u.hasOwnProperty(s)&&u[s]===e){return}}r.unbind("submit.autoComplete")}function n(v,w){if(!g.isArray(w.supply)){return[]}for(var t=-1,r=w.supply.length,s=[],u;++t<r;){u=w.supply[t];u=u&&u.value?u:{value:u};s.push(u)}return s}var e=true,m=false,k=Array.prototype.slice,p=g(l.document),j=g(),d=/\./,a=l.opera||(/macintosh/i.test(l.navigator.userAgent)&&g.browser.mozilla),q="autoComplete_"+g.expando,f={backspace:8,tab:9,enter:13,shift:16,space:32,pageup:33,pagedown:34,left:37,up:38,right:39,down:40},i=g.autoComplete={version:"5.1",counter:0,length:0,stack:{},jqStack:{},order:[],hasFocus:m,keys:f,arrayMethods:{"button-supply":e,"direct-supply":e},handlerMethods:{option:2},focus:b,blur:b,getFocus:function(r){return !i.order[0]?r?j:b:r?i.jqStack[i.order[0]]:i.stack[i.order[0]]},getPrevious:function(t){for(var s=0,r=i.order.length;++s<r;){if(i.order[s]){return t?i.jqStack[i.order[s]]:i.stack[i.order[s]]}}return t?j:b},remove:function(t){for(var s=-1,r=i.order.length;++s<r;){if(i.order[s]===t){i.order[s]=b}}i.length--;delete i.stack[t]},getAll:function(){for(var t=-1,s=i.counter,r=[];++t<s;){if(i.stack[t]){r.push(i.stack[t])}}return g(r)},defaults:{backwardsCompatible:m,ajax:"ajax.php",ajaxCache:g.ajaxSettings.cache,dataSupply:[],dataFn:b,formatSupply:b,list:"auto-complete-list",rollover:"auto-complete-list-rollover",width:b,striped:b,maxHeight:b,bgiframe:b,newList:m,postVar:"value",postData:{},postFormat:b,minChars:1,maxItems:-1,maxRequests:0,maxRequestsDeep:m,requestType:"POST",inputControl:b,autoFill:m,nonInput:[f.shift,f.left,f.right],multiple:m,multipleSeparator:" ",onBlur:b,onFocus:b,onHide:b,onLoad:b,onMaxRequest:b,onRollover:b,onSelect:b,onShow:b,onListFormat:b,onSubmit:b,spinner:b,preventEnterSubmit:e,delay:0,useCache:e,cacheLimit:50}},h=function(L,v){i.length++;i.counter++;var r=g(L).attr("autocomplete","off"),T={},z={},H="",y=[],I={length:0},E,G,W,s,O,Q=m,P,A,x=-1,w,u,K=i.counter,t=0,J={length:0,val:b,list:{}},S=g.extend({width:r.outerWidth()},i.defaults,v||{},g.metadata?r.metadata():{}),D=!S.newList&&p.find("ul."+S.list)[0]?p.find("ul."+S.list).eq(0).bgiframe(S.bgiframe):g("<ul/>").appendTo("body").addClass(S.list).bgiframe(S.bgiframe).hide().data("ac-selfmade",e);r.data("autoComplete",T={index:K,hasFocus:m,active:e,settings:S,initialSettings:g.extend(e,{},S)});if(g.browser.msie){r.bind("keypress.autoComplete",function(X){if(!T.active){return e}if(X.keyCode===f.enter){var Y=e;if(E&&E.hasClass(S.rollover)){Y=S.preventEnterSubmit&&Q?m:e;N(X)}else{if(Q){D.hide(X)}}return Y}})}r.bind(a?"keypress.autoComplete":"keydown.autoComplete",function(Y){if(!T.active){return e}var X=(z=Y).keyCode,Z=m;if(X===f.tab&&Q){N(Y)}else{if(X===f.enter){Z=e;if(E&&E.hasClass(S.rollover)){Z=S.preventEnterSubmit&&Q?m:e;N(Y)}else{if(Q){D.hide(Y)}}}else{if(X===f.up&&Q){if(x>0){x--;C(Y)}else{x=-1;r.val(H);D.hide(Y)}}else{if(X===f.down&&Q){if(x<I.length-1){x++;F(Y)}}else{if(X===f.pageup&&Q){if(x>0){x-=O;if(x<0){x=0}C(Y)}}else{if(X===f.pagedown&&Q){if(x<I.length-1){x+=O;if(x>I.length-1){x=I.length-1}F(Y)}}else{if(S.nonInput&&g.inArray(X,S.nonInput)>-1){D.html("").hide(Y);Z=e}else{return e}}}}}}}z["keydown_"+q]=e;return Z}).bind({"keyup.autoComplete":function(Y){if(!T.active||z["keydown_"+q]){return e}H=r.val();var X=(z=Y).keyCode,Z=u?H.split(u).pop():H;if(X!=f.enter){J.val=S.inputControl===b?Z:S.inputControl.apply(L,S.backwardsCompatible?[Z,X,D,Y,S,J]:[Y,{val:Z,key:X,settings:S,cache:J,ul:D}]);if(J.val.length>=S.minChars){U(Y,S,J,(X===f.backspace||X===f.space))}else{if(X==f.backspace){D.html("").hide(Y)}}}},"blur.autoComplete":function(X){if(!T.active||Q){return e}if(i.order[0]!==b){i.order.unshift(b)}i.hasFocus=m;T.hasFocus=m;x=-1;D.hide(z=X);if(i.blur){i.blur.call(L,X,{settings:S,cache:J,ul:D})}if(S.onBlur){S.onBlur.apply(L,S.backwardsCompatible?[H,D,X,S,J]:[X,{val:H,settings:S,cache:J,ul:D}])}},"focus.autoComplete":function(Y,X){if(!T.active||(T.hasFocus&&X===q)||z["enter_"+q]){return e}if(K!==D.data("ac-input-index")){D.html("").hide(Y)}if(i.order[0]===b){if(i.order[1]===K){i.order.shift()}else{i.order[0]=K}}else{if(i.order[0]!=K&&i.order[1]!=K){i.order.unshift(K)}}if(i.defaults.cacheLimit!==-1&&i.order.length>i.defaults.cacheLimit){i.order.pop()}i.hasFocus=e;T.hasFocus=e;z=Y;if(i.focus){i.focus.call(L,Y,{settings:S,cache:J,ul:D})}if(S.onFocus){S.onFocus.apply(L,S.backwardsCompatible?[D,Y,S,J]:[Y,{settings:S,cache:J,ul:D}])}},"autoComplete.document-click":function(Y,X){if(T.active&&Q&&(!z||X.timeStamp-z.timeStamp>200)&&g(X.target).closest("ul").data("ac-input-index")!==K){D.hide(z=X);r.blur()}},"autoComplete.form-submit":function(Z,Y,X){if(!T.active){return e}z=Y;return S.preventEnterSubmit&&(Q||z["enter_"+q])?m:S.onSubmit===b?e:S.onSubmit.call(L,Y,{form:X,settings:S,cache:J,ul:D})},"autoComplete.ul-mouseenter":function(Z,Y,X){if(E){E.removeClass(S.rollover)}E=g(X).addClass(S.rollover);x=I.index(X);w=y[x];G=D.scrollTop()+W;z=Y;if(S.onRollover){S.onRollover.apply(L,S.backwardsCompatible?[w,E,D,Y,S,J]:[Y,{data:w,li:E,settings:S,cache:J,ul:D}])}},"autoComplete.ul-click":function(Y,X){r.trigger("focus",[q]);r.val(H===u?H.substr(0,H.length-H.split(u).pop().length)+w.value+u:w.value);D.hide(z=X);M();if(S.onSelect){S.onSelect.apply(L,S.backwardsCompatible?[w,E,D,X,S,J]:[X,{data:w,li:E,settings:S,cache:J,ul:D}])}},"autoComplete.settings":function(aa,X){if(!T.active){return e}var Y,Z;z=aa;if(g.isFunction(X)){Y=X.apply(L,S.backwardsCompatible?[S,J,D,aa]:[aa,{settings:S,cache:J,ul:D}]);if(g.isArray(Y)&&Y[0]!==b){g.extend(e,S,Y[0]||S);g.extend(e,J,Y[1]||J)}}else{g.extend(e,S,X||{})}D=!S.newList&&D.hasClass(S.list)?D:!S.newList&&(Z=p.find("ul."+S.list).eq(0)).length?Z.bgiframe(S.bgiframe):g("<ul/>").appendTo("body").addClass(S.list).bgiframe(S.bgiframe).hide().data("ac-selfmade",e);B();S.requestType=S.requestType.toUpperCase();u=S.multiple?S.multipleSeparator:b;T.settings=S},"autoComplete.flush":function(X,Y){if(!T.active){return e}if(!Y){t=0}J={length:0,val:b,list:{}};z=X},"autoComplete.button-ajax":function(Y,X,Z){if(!T.active){return e}if(typeof X==="string"){Z=X;X={}}z=Y;r.trigger("focus",[q]);J.val=Z||"button-ajax_"+q;return U(Y,g.extend(e,{},S,{maxItems:-1,postData:X||{}}),J)},"autoComplete.button-supply":function(X,Y,Z){if(!T.active){return e}if(typeof Y==="string"){Z=Y;Y=b}z=X;r.trigger("focus",[q]);J.val=Z||"button-supply_"+q;Y=g.isArray(Y)?Y:S.dataSupply;return U(X,g.extend(e,{},S,{maxItems:-1,dataSupply:Y,formatSupply:n}),J)},"autoComplete.direct-supply":function(X,Y,Z){if(!T.active){return e}if(typeof Y==="string"){Z=Y;Y=b}z=X;r.trigger("focus",[q]);J.val=Z||"direct-supply_"+q;Y=g.isArray(Y)&&Y.length?Y:S.dataSupply;return V(X,Y,g.extend(e,{},S,{maxItems:-1,dataSupply:Y,formatSupply:n}),J)},"autoComplete.search":function(X,Y){if(!T.active){return e}J.val=Y||"";return U(z=X,S,J)},"autoComplete.option":function(Y,X,Z){if(!T.active){return e}z=Y;switch(k.call(arguments).length){case 3:S[X]=Z;return Z;case 2:return X==="ul"?D:X==="cache"?J:X==="xhr"?A:X==="input"?r:S[X]||b;default:return S}},"autoComplete.enable":function(X){T.active=e;z=X},"autoComplete.disable":function(X){T.active=m;D.html("").hide(z=X)},"autoComplete.destroy":function(Y){var Z=D.html("").hide(z=Y).data("ac-inputs")||{},X;r.removeData("autoComplete").unbind(".autoComplete autoComplete");o(r,K);Z[K]=b;for(X in Z){if(Z.hasOwnProperty(X)&&Z[X]===e){return z}}if(D.data("ac-selfmade")===e){D.remove()}else{D.removeData("autoComplete").removeData("ac-input-index").removeData("ac-inputs")}}});function U(Z,Y,X,ab,aa){if(Y.maxRequestsDeep===true&&t>=Y.maxRequests){return m}if(Y.spinner){Y.spinner.call(L,Z,{active:e,settings:Y,cache:X,ul:D})}if(P){P=clearTimeout(P)}if(Y.delay>0&&aa===b){P=l.setTimeout(function(){U(Z,Y,X,ab,e)},Y.delay);return P}if(A){A.abort()}if(Y.useCache&&g.isArray(X.list[X.val])){return V(Z,X.list[X.val],Y,X,ab)}if(Y.dataSupply.length){return R(Z,Y,X,ab)}if(Y.maxRequests&&++t>=Y.maxRequests){D.html("").hide(Z);if(Y.spinner){Y.spinner.call(L,Z,{active:m,settings:Y,cache:X,ul:D})}if(Y.onMaxRequest&&t===Y.maxRequests){return Y.onMaxRequest.apply(L,Y.backwardsCompatible?[X.val,D,Z,H,Y,X]:[Z,{search:X.val,val:H,settings:Y,cache:X,ul:D}])}return m}Y.postData[Y.postVar]=X.val;A=g.ajax({type:Y.requestType,url:Y.ajax,cache:Y.ajaxCache,dataType:"json",data:Y.postFormat?Y.postFormat.call(L,Z,{data:Y.postData,search:X.val,val:H,settings:Y,cache:X,ul:D}):Y.postData,success:function(ac){V(Z,ac,Y,X,ab)},error:function(){D.html("").hide(Z);if(Y.spinner){Y.spinner.call(L,Z,{active:m,settings:Y,cache:X,ul:D})}}});return A}function R(Y,ab,X,aa){var ad=[],af=[],ag=g.isFunction(ab.dataFn),ah=ag?b:new RegExp("^"+X.val,"i"),ae=0,ai,ac=-1,Z=ab.dataSupply.length;if(ab.formatSupply){ad=ab.formatSupply.call(L,Y,{search:X.val,supply:ab.dataSupply,settings:ab,cache:X,ul:D})}else{for(;++ac<Z;){ai=ab.dataSupply[ac];ai=ai&&typeof ai.value==="string"?ai:{value:ai};af=ab.backwardsCompatible?[X.val,ai.value,ad,ac,ab.dataSupply,D,Y,ab,X]:[Y,{search:X.val,entry:ai.value,list:ad,i:ac,supply:ab.dataSupply,settings:ab,cache:X,ul:D}];if((ag&&ab.dataFn.apply(L,af))||(!ag&&ai.value.match(ah))){if(ab.maxItems>-1&&++ae>ab.maxItems){break}ad.push(ai)}}}return V(Y,ad,ab,X,aa)}function N(X){if(Q){if(S.onSelect){S.onSelect.apply(L,S.backwardsCompatible?[w,E,D,X,S,J]:[X,{data:w,li:E,settings:S,cache:J,ul:D}])}M();H=r.val();if(z.type==="keydown"){z["enter_"+q]=e}D.hide(X)}E=b}function C(Y){if(E){E.removeClass(S.rollover)}D.show(Y);E=I.eq(x).addClass(S.rollover);w=y[x];if(!E.length||!w){return m}M(w.value);if(S.onRollover){S.onRollover.apply(L,S.backwardsCompatible?[w,E,D,Y,S,J]:[Y,{data:w,li:E,settings:S,cache:J,ul:D}])}var X=x*s;if(X<G-W){G=X+W;D.scrollTop(X)}}function F(Y){if(E){E.removeClass(S.rollover)}D.show(Y);E=I.eq(x).addClass(S.rollover);w=y[x];if(!E.length||!w){return m}M(w.value);var X=(x+1)*s;if(X>G){D.scrollTop((G=X)-W)}if(S.onRollover){S.onRollover.apply(L,S.backwardsCompatible?[w,E,D,Y,S,J]:[Y,{data:w,li:E,settings:S,cache:J,ul:D}])}}function B(){var Y=D.hide,X=D.show,Z=D.data("ac-inputs")||{};if(!D[q]){D.hide=function(aa,ab,ac){if(S.onHide&&Q){S.onHide.call(L,aa,{ul:D,settings:S,cache:J})}Q=m;return Y.call(D,ab,ac)};D.show=function(aa,ab,ac){if(S.onShow&&!Q){S.onShow.call(L,aa,{ul:D,settings:S,cache:J})}Q=e;return X.call(D,ab,ac)};D[q]=e}if(D.data("autoComplete")!==e){D.data("autoComplete",e).delegate("li","mouseenter.autoComplete",function(aa){i.getFocus(e).trigger("autoComplete.ul-mouseenter",[aa,this])}).bind("click.autoComplete",function(aa){i.getFocus(e).trigger("autoComplete.ul-click",[aa]);return m})}Z[K]=e;D.data("ac-inputs",Z)}function M(Z){var aa,X,Y;if(Z===b||Z===""){aa=X=r.val().length}else{if(u){Z=H.substr(0,H.length-H.split(u).pop().length)+Z+u}aa=H.length;X=Z.length;r.val(Z)}if(!S.autoFill||aa>X){return m}else{if(L.createTextRange){Y=L.createTextRange();if(Z===b){Y.move("character",aa);Y.select()}else{Y.collapse(e);Y.moveStart("character",aa);Y.moveEnd("character",X);Y.select()}}else{if(L.setSelectionRange){L.setSelectionRange(aa,X)}else{if(L.selectionStart){L.selectionStart=aa;L.selectionEnd=X}}}}}function V(Y,af,ac,X,ab){y=ac.onLoad?ac.onLoad.call(L,Y,{list:af,settings:ac,cache:X,ul:D}):af;if(ac.spinner){ac.spinner.call(L,Y,{active:m,settings:ac,cache:X,ul:D})}if(ac.useCache&&!g.isArray(X.list[X.val])){X.length++;X.list[X.val]=af;if(ac.cacheLimit!==-1&&X.length>ac.cacheLimit){X.list={};X.length=0}}if(!y||y.length<1){return D.html("").hide(Y)}x=-1;var ad=r.offset(),Z=[],ah=0,ae=-1,ag=m,aa=y.length;if(ac.onListFormat){ac.onListFormat.call(L,Y,{list:y,settings:ac,cache:X,ul:D})}else{for(;++ae<aa;){if(y[ae].value){if(ac.maxItems>-1&&++ah>ac.maxItems){break}Z.push(ac.striped&&ag?'<li class="'+ac.striped+'">':"<li>",y[ae].display||y[ae].value,"</li>");ag=!ag}}D.html(Z.join(""))}I=D.children("li");if(ac.autoFill&&!ab){x=0;w=y[0];M(w.value);E=I.eq(0).addClass(ac.rollover)}D.data("ac-input-index",K).scrollTop(0).css({top:ad.top+r.outerHeight(),left:ad.left,width:ac.width}).show(Y);s=I.eq(0).outerHeight();if(ac.maxHeight){D.css({height:s*I.length>ac.maxHeight?ac.maxHeight:"auto",overflow:"auto"})}W=D.outerHeight();G=W;O=s===0?0:Math.floor(G/s);z.timeStamp=(new Date()).getTime()}B();S.requestType=S.requestType.toUpperCase();u=S.multiple?S.multipleSeparator:b;i.stack[K]=L;i.jqStack[K]=r;c(r,K)}})(jQuery,window||this);