/*
 Ajax Autocomplete
 Version: 1.0.8
 (c) 2011 DMXzone.com
 @build 26-07-2011 14:28:50
*/
jQuery.fn.extend({autocomplete:function(b,a){var i=typeof b=="string",f=b=="GoogleAjax",a=jQuery.extend({},jQuery.Autocompleter.defaults,{url:i?f?"http://maps.googleapis.com/maps/api/geocode/json?sensor=false":b:null,data:i?null:b,staticData:i?/(.txt|.xml)$/.test(b):!0,delay:i?jQuery.Autocompleter.defaults.delay:10,isGoogleAjax:f},a);a.limitName="";a.limitCode="";if(a.isGoogleAjax&&(a.searchAll=!1,a.matchSubset=!1,(i=a.gRegion?a.gRegion.split("|"):[])&&i.length>1)){if(i[0])a.limitCode=i[0];if(i[1])a.limitName=
i[1]}return this.each(function(){jQuery.Autocompleter(this,a)})},result:function(b){return this.bind("result",b)},search:function(){return this.trigger("search")}});
jQuery.Autocompleter=function(b,a){function i(b,c,m){var h=n.selected();if(!h)return!1;var d=h.result;u=d;if(a.multiple){var j=r(g.val());j.length>1&&(d=j.slice(0,j.length-1).join(a.multipleSeparator)+a.multipleSeparator+d);d+=a.multipleSeparator}g.val(d);a.hiddenIdField&&a.hiddenIdField!=""&&(d=$('input[name="'+a.hiddenIdField+'"]'))&&d.val(h.idVal);if(a.gStreetField&&a.gStreetField!=""&&(j=$('input[name="'+a.gStreetField+'"]')))(d=e(h.obj,"street_address"))||(d=e(h.obj,"route")),d&&d.short_name&&
d.long_name?j.val(a.gStreetFieldShort?d.short_name:d.long_name):j.val("");if(a.gStreetNumberField&&a.gStreetNumberField!=""&&(j=$('input[name="'+a.gStreetNumberField+'"]')))(d=e(h.obj,"street_number"))&&d.long_name?j.val(d.long_name):j.val("");if(a.gCityField&&a.gCityField!=""&&(j=$('input[name="'+a.gCityField+'"]')))(d=e(h.obj,"locality"))&&d.short_name&&d.long_name?j.val(a.gCityFieldShort?d.short_name:d.long_name):j.val("");if(a.gCountryField&&a.gCountryField!=""&&(j=$('input[name="'+a.gCountryField+
'"]')))(d=e(h.obj,"country"))&&d.short_name&&d.long_name?j.val(a.gCountryFieldShort?d.short_name:d.long_name):j.val("");if(a.gStateField&&a.gStateField!=""&&(j=$('input[name="'+a.gStateField+'"]')))(d=e(h.obj,"administrative_area_level_1"))&&d.short_name&&d.long_name?j.val(a.gStateFieldShort?d.short_name:d.long_name):j.val("");if(a.gPostalCodeField&&a.gPostalCodeField!=""&&(j=$('input[name="'+a.gPostalCodeField+'"]')))(d=e(h.obj,"postal_code"))&&d.short_name&&d.long_name?j.val(a.gPostalCodeFieldShort?
d.short_name:d.long_name):j.val("");a.gLatField&&a.gLatField!=""&&(d=$('input[name="'+a.gLatField+'"]'))&&d.val(h.latLng.lat());a.gLngField&&a.gLngField!=""&&(d=$('input[name="'+a.gLngField+'"]'))&&d.val(h.latLng.lng());if(a.useMap&&a.useMap!=""&&!m&&(j=jQuery("#"+a.useMap))&&j.gMap)if(d=j.data("gmap"))a.clearAllMarkers&&!c&&j.gMap("removeAllMarkers"),c=d.gmap,c.panTo(h.obj.geometry.location),b=new google.maps.Marker({title:h.data,draggable:a.allowDragChange?!0:!1,animation:b?null:google.maps.Animation.DROP,
map:c,position:h.obj.geometry.location}),a.allowDragChange&&google.maps.event.addListener(b,"dragend",function(a){(new google.maps.Geocoder).geocode({location:a.latLng},function(a,b){if(b==google.maps.GeocoderStatus.OK){var d=a[0].formatted_address,x=l(a);t.add(d,x);x=t.load(d);n.display(x,d);i(!0)}})}),d.markers.push(b);p();m||g.trigger("result",[h.data,h.value,h]);return!0}function f(b,e){if(y==s.DEL)n.hide();else{var m=g.val();if(e||m!=u)u=m,m=q(m),m.length>=a.minChars?(g.addClass(a.loadingClass),
a.matchCase||(m=m.toLowerCase()),o(m,c,k)):(k(),n.hide())}}function r(b){if(!b)return[""];var b=b.split(jQuery.trim(a.multipleSeparator)),g=[];jQuery.each(b,function(a,b){jQuery.trim(b)&&(g[a]=jQuery.trim(b))});return g}function q(b){if(!a.multiple)return b;b=r(b);return b[b.length-1]}function p(){n.hide();clearTimeout(v);k();a.mustMatch&&g.search(function(a){a||g.val("")})}function c(c,e){if(e&&e.length&&w){k();n.display(e,c);var m=e[0].value;a.autoFill&&q(g.val()).toLowerCase()==c.toLowerCase()&&
y!=8&&g.val().toLowerCase()==m.substring(0,g.val().length).toLowerCase()&&(g.val(g.val()+m.substring(q(u).length)),jQuery.Autocompleter.Selection(b,u.length,u.length+m.length));n.show()}else p()}function o(b,g,c){a.matchCase||(b=b.toLowerCase());var h=t.load(b);if(h&&h.length)g(b,h);else if(typeof a.url=="string"&&a.url.length>0&&(!a.staticData||!h)){if(a.matchContains)a.extraParams=jQuery.extend({mc:"true"},a.extraParams);if(a.searchAll)a.extraParams=jQuery.extend({sa:"true"},a.extraParams);a.isGoogleAjax?
(new google.maps.Geocoder).geocode(a.gRegion?{address:b+(!a.gLimitType&&a.limitName?","+a.limitName:""),region:a.limitCode}:{address:b},function(a,c){if(c==google.maps.GeocoderStatus.OK){var h=l(a);t.add(b,h);h=t.load(b);g(b,h)}else p()}):jQuery.ajax({url:a.url,data:!a.staticData?jQuery.extend({q:q(b),limit:a.max},a.extraParams):"",success:function(d){var c;if(!(c=a.parse&&a.parse(d))){c=[];for(var d=d.split("\n"),h=0;h<d.length;h++){var e=jQuery.trim(d[h]);e&&(e=e.split("|"),c[c.length]={data:e,
value:e[0],idVal:a.idField&&a.hiddenIdField?e[1]:"",result:a.formatResult&&a.formatResult(e)||e[0]})}}t.add(b,c);c=t.load(b);g(b,c)},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 c(b)}function l(b){for(var c=[],g=0;g<b.length;g++){var h=b[g];if(h&&(a.gLimitType=="all"||a.limitCode==""||a.limitCode==e(h,"country").short_name))c[c.length]={data:h.formatted_address,
value:h.formatted_address,latLng:h.geometry.location,result:h.formatted_address,obj:h}}return c}function e(b,a){if(b&&b.address_components)for(var c=0;c<b.address_components.length;c++){var g=b.address_components[c];if(jQuery.inArray(a,g.types)!=-1)return g}return null}function k(){g.removeClass(a.loadingClass)}var s={UP:38,DOWN:40,DEL:46,TAB:9,RETURN:13,ESC:27,COMMA:188},g=jQuery(b).attr("autocomplete","off").addClass(a.inputClass),v,u="",t=jQuery.Autocompleter.Cache(a),w=0,y,n=jQuery.Autocompleter.Select(a,
b,i);g.keydown(function(b){y=b.keyCode;switch(b.keyCode){case s.UP:b.preventDefault();n.visible()?n.prev():f(0,!0);break;case s.DOWN:b.preventDefault();n.visible()?n.next():f(0,!0);break;case a.multiple&&jQuery.trim(a.multipleSeparator)==","&&s.COMMA:case s.TAB:case s.RETURN:i()&&(a.multiple||g.blur(),b.preventDefault());break;case s.ESC:n.hide();break;default:clearTimeout(v),v=setTimeout(f,a.delay)}}).keypress(function(){}).focus(function(){w++}).blur(function(){w=0;clearTimeout(v);v=setTimeout(p,
200)}).click(function(){w++>1&&!n.visible()&&f(0,!0)}).bind("search",function(){function b(a,c){var h;if(c&&c.length)for(var d=0;d<c.length;d++)if(c[d].result.toLowerCase()==a.toLowerCase()){h=c[d];break}g.trigger("result",h&&[h.data,h.value,h])}jQuery.each(r(g.val()),function(a,c){o(c,b,b)})}).bind("select",function(b,a,c,g,d){n.display([g],a);i(!0,!0,d)});p()};
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,gRegion:"",gLimitType:"",gStreetField:"",gStreetNumberField:"",gStreetFieldShort:!1,gPostalCodeField:"",gPostalCodeFieldShort:!1,gCityField:"",gCityFieldShort:!1,gStateField:"",gStateFieldShort:!1,gCountryField:"",gCountryFieldShort:!1,gLatField:"",gLngField:"",useMap:"",clearAllMarkers:!0,allowDragChange:!0,
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(b){function a(a,o){var f=!1,e=!1;if(typeof a=="string"){b.matchCase||(a=a.toLowerCase());var k=a.indexOf(o);if(k==-1)return!1;return k==0||b.matchContains}else{for(var i=b.searchAll?a.length:1,k=0;k<i;k++){var g=a[k];b.matchCase||(g=g.toLowerCase());g=g.indexOf(o);g>-1&&(f=!0);g==0&&(e=!0)}if(!f)return!1}return e||b.matchContains}function i(a,o){r>b.cacheLength&&this.flush();f[a]||r++;f[a]=o}var f={},r=0;if(b.data){var q={},p=0;if(!b.url)b.cacheLength=1;q[""]=[];
jQuery.each(b.data,function(a,f){value=b.formatItem?b.formatItem(f,f,a+1,b.data.length):f;var i=value.charAt(0).toLowerCase();q[i]||(q[i]=[]);var e={value:value,data:f,result:b.formatResult&&b.formatResult(f)||value};q[i].push(e);p++<b.max&&q[""].push(e)});jQuery.each(q,function(a,f){b.cacheLength++;i(a,f)})}return{flush:function(){f={};r=0},add:i,load:function(c){if(!b.cacheLength||!r)return null;if(!b.url&&b.matchContains){var i=[],l;for(l in f)if(l.length>0){var e=f[l];jQuery.each(e,function(b,
e){a(e.data,c)&&i.push(e)})}return i}else if(b.matchSubset)for(l=c.length;l>=b.minChars;l--){if(e=f[c.substr(0,l)])return i=[],jQuery.each(e,function(b,e){a(e.data,c)&&(i[i.length]=e)}),i}else if(f[c])return f[c];return null}}};
jQuery.Autocompleter.Select=function(b,a,i){function f(b){var a=b.target;if(a.tagName=="UL")a=b.relatedTarget;for(;a.tagName!="LI";)a=a.parentNode;return a}function r(a){e+=a;e<0?e=l.size()-1:e>=l.size()&&(e=0);l.removeClass().eq(e).addClass(p.ACTIVE)}function q(){function a(c){var g=s.replace(/(\.|\?|\||\(|\)|\[|\]|\{|\}|\$|\^|\*|\+|\\)/g,"\\$1");return b.highlightClass?c.replace(RegExp((b.matchContains?"":"^")+"("+g+")","gi"),"<span class='"+b.highlightClass+"'>$1</span>"):c.replace(RegExp((b.matchContains?
"":"^")+"("+g+")","gi"),"<strong>$1</strong>")}function c(a,g){if(typeof g!="string"&&g.length>1)for(var a="<span class='ac_title'>"+a+"</span>",e=b.idField&&b.hiddenIdField?2:1;e<g.length;e++)a+=b.itemSeparator+g[e];return a}for(var i=b.max>0&&b.max<k.length?b.max:k.length,f=0;f<i;f++)k[f]&&jQuery("<li>").html(b.formatItem?b.searchAll?a(b.formatItem(k[f].value,k[f].data,f+1,i)):b.formatItem(a(k[f].value),k[f].data,f+1,i):b.showFullItem?c(a(k[f].value),k[f].data):a(k[f].value)).appendTo(o);l=o.find("li");
b.selectFirst&&(l.eq(0).addClass(p.ACTIVE),e=0)}var p={ACTIVE:"ac_over"},c=jQuery("<div>").hide().addClass(b.resultsClass).css("position","absolute").appendTo("body");!jQuery.browser.msie&&!/6.0/.test(navigator.userAgent)&&c.css("opacity",b.opacity);var o=jQuery("<ul>").appendTo(c).mouseover(function(a){e=jQuery("li",o).removeClass().index(f(a));jQuery(f(a)).addClass(p.ACTIVE)}).mouseout(function(a){jQuery(f(a)).removeClass()}).click(function(b){jQuery(f(b)).addClass(p.ACTIVE);i();a.focus();return!1}),
l,e=-1,k,s="";b.width>0&&c.css("width",b.width);return{display:function(a,b){k=a;s=b;o.empty();q();o.bgiframe&&o.bgiframe()},next:function(){r(1)},prev:function(){r(-1)},hide:function(){if(b.onHide)b.onHide(c);else if(b.fxHide){if(!b.fxHide.duration)b.fxHide.duration="normal";switch(b.fxHide.type.toLowerCase()){case "slide":c.slideUp(b.fxHide.duration);break;case "fade":c.fadeOut(b.fxHide.duration);break;default:c.hide()}}else c.hide();e=-1},visible:function(){return c.is(":visible")},current:function(){return this.visible()&&
(l.filter("."+p.ACTIVE)[0]||b.selectFirst&&l[0])},show:function(){var e=jQuery(a).offset();c.css({width:b.width>0?b.width:jQuery(a).width(),top:e.top+a.offsetHeight,left:e.left});if(b.onShow)b.onShow(c);else if(b.fxShow){if(!b.fxShow.duration)b.fxShow.duration="normal";switch(b.fxShow.type.toLowerCase()){case "slide":c.slideDown(b.fxShow.duration);break;case "fade":c.fadeIn(b.fxShow.duration);break;default:c.show()}}else c.show()},selected:function(){return k&&k[e]}}};
jQuery.Autocompleter.Selection=function(b,a,i){if(b.createTextRange){var f=b.createTextRange();f.collapse(!0);f.moveStart("character",a);f.moveEnd("character",i);f.select()}else if(b.setSelectionRange)b.setSelectionRange(a,i);else if(b.selectionStart)b.selectionStart=a,b.selectionEnd=i;b.focus()};

