

/*
 * Auto Complete 4.1
 * October 5, 2009
 * Corey Hart @ http://www.codenothing.com
 */
;(function(c,d){c.fn.autoComplete=function(){var e=Array.prototype.slice.call(arguments);if(typeof e[0]==="string"){return c(this).trigger("autoComplete."+e.shift(),e)}return a.call(this,e[0])};c.fn.bgiframe=c.fn.bgiframe?c.fn.bgiframe:c.fn.bgIframe?c.fn.bgIframe:function(){return this};var b=0,a=function(e){return this.each(function(){var p=c(this).attr("autocomplete","off"),o,i,j,h,f={length:0,val:d,list:{}},l=c.extend({opt:-1,inputval:d,mouseClick:false,dataName:"ac-data",inputIndex:++b,ajax:"ajax.php",dataSupply:[],dataFn:d,list:"auto-complete-list",rollover:"auto-complete-list-rollover",width:p.outerWidth(),postVar:"value",postData:{},minChars:1,maxItems:-1,maxRequests:0,requestType:"post",requests:0,onMaxRequest:function(){},onSelect:function(){},onRollover:function(){},onBlur:function(){},onFocus:function(){},inputControl:function(q){return q},preventEnterSubmit:false,enter:true,delay:100,selectFuncFire:true,useCache:true,cacheLimit:50},e||{},c.metadata?p.metadata():{}),m=c("ul."+l.list)[0]?c("ul."+l.list).bgiframe():c("<ul/>").appendTo("body").addClass(l.list).bgiframe().hide();p.data("ac-input-index",l.inputIndex).bind("keyup.autoComplete",function(r){var q=r.keyCode;l.mouseClick=false;if(q==13&&o){l.opt=-1;if(l.selectFuncFire){l.selectFuncFire=false;l.onSelect.call(p[0],o.data(l.dataName),o,m);if(j){clearTimeout(j)}j=setTimeout(function(){l.selectFuncFire=true},1000)}m.hide()}else{if(q==38){if(l.opt>0){l.opt--;o=c("li",m).removeClass(l.rollover).eq(l.opt).addClass(l.rollover);p.val(o.data(l.dataName).value||"");l.onRollover.call(p[0],o.data(l.dataName),o,m)}else{l.opt=-1;p.val(l.inputval);m.hide()}}else{if(q==40){if(l.opt<c("li",m).length-1){l.opt++;o=c("li",m.show()).removeClass(l.rollover).eq(l.opt).addClass(l.rollover);p.val(o.data(l.dataName).value||"");l.onRollover.call(p[0],o.data(l.dataName),o,m)}}else{l.opt=-1;l.inputval=p.val();f.val=l.inputControl.call(p,l.inputval,q);if(f.val.length>=l.minChars){if(i){clearTimeout(i)}i=setTimeout(function(){g(l,f);clearTimeout(i)},l.delay)}else{if(q==8){m.html("").hide()}}}}}}).bind("blur.autoComplete",function(){l.enter=true;h=setTimeout(function(){if(l.mouseClick){return false}l.opt=-1;l.onBlur.call(p[0],l.inputval,m);m.hide()},150)}).bind("focus.autoComplete",function(){l.enter=false;if(l.inputIndex!=m.data("ac-input-index")){m.html("").hide()}l.onFocus.call(p[0],m)}).bind("autoComplete.settings",function(s,q){if(c.isFunction(q)){var r=q.call(p[0],l,f);if(c.isArray(r)&&r.length){l=c.extend(true,{},l,r[0]||l);f=c.extend(true,{},f,r[1]||f)}}else{l=c.extend(true,{},l,q||{})}}).bind("autoComplete.flush",function(q,r){f={length:0,val:d,list:{}};if(!r){l.requests=0}}).bind("autoComplete.button.ajax",function(r,q,s){p.focus();if(h){clearTimeout(h)}if(typeof q==="string"){s=q;q={}}f.val=s||"NON_404_<>!@$^&";if(i){clearTimeout(i)}i=setTimeout(function(){g(c.extend(true,{},l,{opt:-1,maxItems:-1,postData:q||{}}),f);clearTimeout(i)},l.delay)}).bind("autoComplete.button.supply",function(q,r,s){p.focus();if(h){clearTimeout(h)}if(typeof r==="string"){s=r;r=d}f.val=s||"NON_404_SUPPLY_<>!@$^&";r=c.isArray(r)?r:l.dataSupply;if(i){clearTimeout(i)}i=setTimeout(function(){g(c.extend(true,{},l,{opt:-1,maxItems:-1,dataSupply:r,dataFn:function(){return true}}),f);clearTimeout(i)},l.delay)}).bind("autoComplete.destroy",function(){p.unbind("keyup.autoComplete blur.autoComplete focus.autoComplete autoComplete").parents("form").eq(0).unbind("submit.autoComplete."+l.inputIndex)}).parents("form").eq(0).bind("submit.autoComplete."+l.inputIndex,function(){return l.preventEnterSubmit?l.enter:true});function g(r,q){if(r.maxRequests&&++r.requests>=r.maxRequests){return r.requests>r.maxRequests?false:r.onMaxRequest.call(p[0],r.inputval,m)}if(r.useCache&&q.list[q.val]){return n(q.list[q.val],r,q)}if(r.dataSupply.length){return k(r,q)}r.postData[r.postVar]=q.val;c[r.requestType](r.ajax,r.postData,function(s){n(s,r,q)},"json")}function k(v,r){var t=[],u=c.isFunction(v.dataFn),x=u?d:new RegExp("^"+r.val,"i"),q=0,w,s;for(s in v.dataSupply){w=v.dataSupply[s];w=typeof w==="object"&&w.value?w:{value:w};if((u&&v.dataFn.call(p[0],r.val,w.value,t,s,v.dataSupply))||(!u&&w.value.match(x))){if(v.maxItems>-1&&++q>v.maxItems){break}t.push(w)}}n(t,v,r)}function n(u,t,r){if(t.useCache){r.length++;r.list[r.val]=u;if(t.cacheLength>t.cacheLimit){r.list={};r.length=0}}if(!u||u.length<1){return m.html("").hide()}var v=p.offset(),q=0,s;m.data("ac-input-index",t.inputIndex).html("").css({top:v.top+p.outerHeight(),left:v.left,width:t.width});for(s in u){if(u[s].value){if(t.maxItems>-1&&++q>t.maxItems){break}c("<li/>").appendTo(m).html(u[s].display||u[s].value).data(t.dataName,u[s]).data("ac-index",q)}}m.show().unbind("mouseout.autoComplete").bind("mouseout.autoComplete",function(){c("li."+t.rollover,m).removeClass(t.rollover);if(!t.mouseClick&&t.selectFuncFire){p.val(t.inputval)}}).children("li").unbind("mouseover.autoComplete").unbind("click.autoComplete").bind("mouseover.autoComplete",function(){o=c(this);c("li."+t.rollover,m).removeClass(t.rollover);o.addClass(t.rollover);t.onRollover.call(p[0],o.data(t.dataName),o,m);t.opt=o.data("ac-index")}).bind("click.autoComplete",function(){p.val(o.data(t.dataName).value);t.mouseClick=true;if(h){clearTimeout(h)}t.onSelect.call(p[0],o.data(t.dataName),o,m);m.hide();p.focus()})}})}})(jQuery);
