/*
 Ajax Autocomplete
 Version: 1.0.6
 (c) 2011 DMXzone.com
 @build 12-04-2011 13:13:50
*/
jQuery.fn.extend({autocomplete:function(a,b){var g=typeof a=="string",b=jQuery.extend({},jQuery.Autocompleter.defaults,{url:g?a:null,data:g?null:a,staticData:g?/(.txt|.xml)$/.test(a):!0,delay:g?jQuery.Autocompleter.defaults.delay:10},b);return this.each(function(){jQuery.Autocompleter(this,b)})},result:function(a){return this.bind("result",a)},search:function(){return this.trigger("search")}});
jQuery.Autocompleter=function(a,b){function g(){var a=l.selected();if(!a)return!1;var e=a.result;j=e;if(b.multiple){var c=n(f.val());c.length>1&&(e=c.slice(0,c.length-1).join(b.multipleSeparator)+b.multipleSeparator+e);e+=b.multipleSeparator}f.val(e);b.hiddenIdField&&b.hiddenIdField!=""&&(e=$('input[name="'+b.hiddenIdField+'"]'))&&e.val(a.idVal);m();f.trigger("result",[a.data,a.value]);return!0}function h(a,h){if(r==d.DEL)l.hide();else{var o=f.val();if(h||o!=j)j=o,o=k(o),o.length>=b.minChars?(f.addClass(b.loadingClass),
b.matchCase||(o=o.toLowerCase()),c(o,e,i)):(i(),l.hide())}}function n(a){if(!a)return[""];var a=a.split(jQuery.trim(b.multipleSeparator)),e=[];jQuery.each(a,function(a,b){jQuery.trim(b)&&(e[a]=jQuery.trim(b))});return e}function k(a){if(!b.multiple)return a;a=n(a);return a[a.length-1]}function m(){l.hide();clearTimeout(p);i();b.mustMatch&&f.search(function(a){a||f.val("")})}function e(e,c){if(c&&c.length&&q){i();l.display(c,e);var d=c[0].value;b.autoFill&&k(f.val()).toLowerCase()==e.toLowerCase()&&
r!=8&&f.val().toLowerCase()==d.substring(0,f.val().length).toLowerCase()&&(f.val(f.val()+d.substring(k(j).length)),jQuery.Autocompleter.Selection(a,j.length,j.length+d.length));l.show()}else m()}function c(a,e,f){b.matchCase||(a=a.toLowerCase());var c=s.load(a);if(c&&c.length)e(a,c);else if(typeof b.url=="string"&&b.url.length>0&&(!b.staticData||!c)){if(b.matchContains)b.extraParams=jQuery.extend({mc:"true"},b.extraParams);if(b.searchAll)b.extraParams=jQuery.extend({sa:"true"},b.extraParams);jQuery.ajax({url:b.url,
data:!b.staticData?jQuery.extend({q:k(a),limit:b.max},b.extraParams):"",success:function(c){var f;if(!(f=b.parse&&b.parse(c))){f=[];for(var c=c.split("\n"),j=0;j<c.length;j++){var d=jQuery.trim(c[j]);d&&(d=d.split("|"),f[f.length]={data:d,value:d[0],idVal:b.idField&&b.hiddenIdField?d[1]:"",result:b.formatResult&&b.formatResult(d)||d[0]})}}s.add(a,f);f=s.load(a);e(a,f)},error:function(a){var b=jQuery('<div id="error">').css({position:"absolute",width:"400px",height:"300px",left:"50%",top:"50%",border:"3px solid #f00",
marginLeft:"-250px",marginTop:"-150px"}).appendTo("body");jQuery("<div>").css({width:"400px",height:"25px",backgroundColor:"#f00",textAlign:"center",fontWeight:"bold",color:"#fff"}).text("Ajax AutoComplete Server Error").appendTo(b);jQuery("<div>").css({width:"400px",height:"275px",backgroundColor:"#fff",color:"#000",overflow:"auto"}).html(a.responseText).appendTo(b);jQuery("<div>").css({position:"absolute",width:"15px",height:"25px",top:"0px",right:"0px",fontWeight:"bold",color:"#fff",cursor:"pointer"}).text("X").click(function(){b.remove()}).appendTo(b)}})}else f(a)}
function i(){f.removeClass(b.loadingClass)}var d={UP:38,DOWN:40,DEL:46,TAB:9,RETURN:13,ESC:27,COMMA:188},f=jQuery(a).attr("autocomplete","off").addClass(b.inputClass),p,j="",s=jQuery.Autocompleter.Cache(b),q=0,r,l=jQuery.Autocompleter.Select(b,a,g);f.keydown(function(a){r=a.keyCode;switch(a.keyCode){case d.UP:a.preventDefault();l.visible()?l.prev():h(0,!0);break;case d.DOWN:a.preventDefault();l.visible()?l.next():h(0,!0);break;case b.multiple&&jQuery.trim(b.multipleSeparator)==","&&d.COMMA:case d.TAB:case d.RETURN:g()&&
(b.multiple||f.blur(),a.preventDefault());break;case d.ESC:l.hide();break;default:clearTimeout(p),p=setTimeout(h,b.delay)}}).keypress(function(){}).focus(function(){q++}).blur(function(){q=0;clearTimeout(p);p=setTimeout(m,200)}).click(function(){q++>1&&!l.visible()&&h(0,!0)}).bind("search",function(){function a(b,e){var c;if(e&&e.length)for(var d=0;d<e.length;d++)if(e[d].result.toLowerCase()==b.toLowerCase()){c=e[d];break}f.trigger("result",c&&[c.data,c.value])}jQuery.each(n(f.val()),function(b,e){c(e,
a,a)})});m()};jQuery.Autocompleter.defaults={highlightClass:"ac_highlight",inputClass:"ac_input",resultsClass:"ac_results",loadingClass:"ac_loading",minChars:2,delay:500,matchCase:!1,matchSubset:!0,matchContains:!1,idField:"",hiddenIdField:"",cacheLength:10,mustMatch:!1,extraParams:{},selectFirst:!0,max:10,autoFill:!1,width:0,multiple:!1,multipleSeparator:", ",opacity:0.8,showFullItem:!0,searchAll:!1,itemSeparator:"<br/>"};
jQuery.Autocompleter.Cache=function(a){function b(b,c){var i=!1,d=!1;if(typeof b=="string"){a.matchCase||(b=b.toLowerCase());var f=b.indexOf(c);if(f==-1)return!1;return f==0||a.matchContains}else{for(var h=a.searchAll?b.length:1,f=0;f<h;f++){var j=b[f];a.matchCase||(j=j.toLowerCase());j=j.indexOf(c);j>-1&&(i=!0);j==0&&(d=!0)}if(!i)return!1}return d||a.matchContains}function g(b,c){n>a.cacheLength&&this.flush();h[b]||n++;h[b]=c}var h={},n=0;if(a.data){var k={},m=0;if(!a.url)a.cacheLength=1;k[""]=[];
jQuery.each(a.data,function(b,c){value=a.formatItem?a.formatItem(c,c,b+1,a.data.length):c;var i=value.charAt(0).toLowerCase();k[i]||(k[i]=[]);var d={value:value,data:c,result:a.formatResult&&a.formatResult(c)||value};k[i].push(d);m++<a.max&&k[""].push(d)});jQuery.each(k,function(b,c){a.cacheLength++;g(b,c)})}return{flush:function(){h={};n=0},add:g,load:function(e){if(!a.cacheLength||!n)return null;if(!a.url&&a.matchContains){var c=[],i;for(i in h)if(i.length>0){var d=h[i];jQuery.each(d,function(a,
d){b(d.data,e)&&c.push(d)})}return c}else if(a.matchSubset)for(i=e.length;i>=a.minChars;i--)if(d=h[e.substr(0,i)])return c=[],jQuery.each(d,function(a,d){b(d.data,e)&&(c[c.length]=d)}),c;return null}}};
jQuery.Autocompleter.Select=function(a,b,g){function h(a){var b=a.target;if(b.tagName=="UL")b=a.relatedTarget;for(;b.tagName!="LI";)b=b.parentNode;return b}function n(a){d+=a;d<0?d=i.size()-1:d>=i.size()&&(d=0);i.removeClass().eq(d).addClass(m.ACTIVE)}function k(){function b(c){var d=p.replace(/(\.|\?|\||\(|\)|\[|\]|\{|\}|\$|\^|\*|\+|\\)/g,"\\$1");return a.highlightClass?c.replace(RegExp((a.matchContains?"":"^")+"("+d+")","gi"),"<span class='"+a.highlightClass+"'>$1</span>"):c.replace(RegExp((a.matchContains?
"":"^")+"("+d+")","gi"),"<strong>$1</strong>")}function e(b,c){if(typeof c!="string"&&c.length>1)for(var b="<span class='ac_title'>"+b+"</span>",d=a.idField&&a.hiddenIdField?2:1;d<c.length;d++)b+=a.itemSeparator+c[d];return b}for(var h=a.max>0&&a.max<f.length?a.max:f.length,g=0;g<h;g++)f[g]&&jQuery("<li>").html(a.formatItem?a.searchAll?b(a.formatItem(f[g].value,f[g].data,g+1,h)):a.formatItem(b(f[g].value),f[g].data,g+1,h):a.showFullItem?e(b(f[g].value),f[g].data):b(f[g].value)).appendTo(c);i=c.find("li");
a.selectFirst&&(i.eq(0).addClass(m.ACTIVE),d=0)}var m={ACTIVE:"ac_over"},e=jQuery("<div>").hide().addClass(a.resultsClass).css("position","absolute").appendTo("body");!jQuery.browser.msie&&!/6.0/.test(navigator.userAgent)&&e.css("opacity",a.opacity);var c=jQuery("<ul>").appendTo(e).mouseover(function(a){d=jQuery("li",c).removeClass().index(h(a));jQuery(h(a)).addClass(m.ACTIVE)}).mouseout(function(a){jQuery(h(a)).removeClass()}).click(function(a){jQuery(h(a)).addClass(m.ACTIVE);g();b.focus();return!1}),
i,d=-1,f,p="";a.width>0&&e.css("width",a.width);return{display:function(a,b){f=a;p=b;c.empty();k();c.bgiframe&&c.bgiframe()},next:function(){n(1)},prev:function(){n(-1)},hide:function(){if(a.onHide)a.onHide(e);else if(a.fxHide){if(!a.fxHide.duration)a.fxHide.duration="normal";switch(a.fxHide.type.toLowerCase()){case "slide":e.slideUp(a.fxHide.duration);break;case "fade":e.fadeOut(a.fxHide.duration);break;default:e.hide()}}else e.hide();d=-1},visible:function(){return e.is(":visible")},current:function(){return this.visible()&&
(i.filter("."+m.ACTIVE)[0]||a.selectFirst&&i[0])},show:function(){var c=jQuery(b).offset();e.css({width:a.width>0?a.width:jQuery(b).width(),top:c.top+b.offsetHeight,left:c.left});if(a.onShow)a.onShow(e);else if(a.fxShow){if(!a.fxShow.duration)a.fxShow.duration="normal";switch(a.fxShow.type.toLowerCase()){case "slide":var d=b.selectionStart;e.slideDown(a.fxShow.duration,function(){d&&jQuery.Autocompleter.Selection(b,d,d+jQuery(b).val().length)});break;case "fade":e.fadeIn(a.fxShow.duration);break;
default:e.show()}}else e.show()},selected:function(){return f&&f[d]}}};jQuery.Autocompleter.Selection=function(a,b,g){if(a.createTextRange){var h=a.createTextRange();h.collapse(!0);h.moveStart("character",b);h.moveEnd("character",g);h.select()}else if(a.setSelectionRange)a.setSelectionRange(b,g);else if(a.selectionStart)a.selectionStart=b,a.selectionEnd=g;a.focus()};

