(function(a){a.fn.extend({autocomplete:function(c,b){var d=typeof c=="string";b=a.extend({},a.Autocompleter.defaults,{url:d?c:null,data:d?null:c,delay:d?a.Autocompleter.defaults.delay:10,max:b&&!b.scroll?10:150},b);b.highlight=b.highlight||function(a){return a};b.formatMatch=b.formatMatch||b.formatItem;return this.each(function(){new a.Autocompleter(this,b)})},result:function(a){return this.bind("result",a)},search:function(a){return this.trigger("search",[a])},flushCache:function(){return this.trigger("flushCache")},setOptions:function(a){return this.trigger("setOptions",[a])},unautocomplete:function(){return this.trigger("unautocomplete")}});a.Autocompleter=function(e,b){var f={UP:38,DOWN:40,DEL:46,TAB:9,RETURN:13,ESC:27,COMMA:188,PAGEUP:33,PAGEDOWN:34,BACKSPACE:8},c=a(e).attr("autocomplete","off").addClass(b.inputClass),i,g="",q=a.Autocompleter.Cache(b),l=0,n,t={mouseDownOnSelect:false},d=a.Autocompleter.Select(b,e,r,t),o;a.browser.opera&&a(e.form).bind("submit.autocomplete",function(){if(o){o=false;return false}});c.bind((a.browser.opera?"keypress":"keydown")+".autocomplete",function(c){n=c.keyCode;switch(c.keyCode){case f.UP:c.preventDefault();if(d.visible())d.prev();else h(0,true);break;case f.DOWN:c.preventDefault();if(d.visible())d.next();else h(0,true);break;case f.PAGEUP:c.preventDefault();if(d.visible())d.pageUp();else h(0,true);break;case f.PAGEDOWN:c.preventDefault();if(d.visible())d.pageDown();else h(0,true);break;case b.multiple&&a.trim(b.multipleSeparator)==","&&f.COMMA:case f.TAB:case f.RETURN:if(r()){c.preventDefault();o=true;return false}break;case f.ESC:d.hide();break;default:clearTimeout(i);i=setTimeout(h,b.delay)}}).focus(function(){l++}).blur(function(){l=0;!t.mouseDownOnSelect&&u()}).click(function(){l++>1&&!d.visible()&&h(0,true)}).bind("search",function(){var d=arguments.length>1?arguments[1]:null;function b(f,b){var a;if(b&&b.length)for(var e=0;e<b.length;e++)if(b[e].result.toLowerCase()==f.toLowerCase()){a=b[e];break}if(typeof d=="function")d(a);else c.trigger("result",a&&[a.data,a.value])}a.each(k(c.val()),function(c,a){s(a,b,b)})}).bind("flushCache",function(){q.flush()}).bind("setOptions",function(){a.extend(b,arguments[1]);"data"in arguments[1]&&q.populate()}).bind("unautocomplete",function(){d.unbind();c.unbind();a(e.form).unbind(".autocomplete")});function r(){var f=d.selected();if(!f)return false;var e=f.result;g=e;if(b.multiple){var h=k(c.val());if(h.length>1)e=h.slice(0,h.length-1).join(b.multipleSeparator)+b.multipleSeparator+e;e+=b.multipleSeparator}c.val(e);j();if(c.attr("id")=="Location")if(!(c.val()=="")||c.val()==c.attr("data-watermark")||c.hasClass("text-label"))a(".keyword-location-search_ascx").find(".loc_label").text(c.val());else a(".keyword-location-search_ascx").find(".loc_label").text("Melbourne, 3000");c.trigger("result",[f.data,f.value]);return true}function h(i,h){if(c.attr("id")=="Location")if(!(c.val()=="")||c.val()==c.attr("data-watermark")||c.hasClass("text-label"))a(".keyword-location-search_ascx").find(".loc_label").text(c.val());else a(".keyword-location-search_ascx").find(".loc_label").text("Melbourne, 3000");if(n==f.DEL){d.hide();return}var e=c.val();if(!h&&e==g)return;g=e;e=m(e);if(e.length>=b.minChars){c.addClass(b.loadingClass);if(!b.matchCase)e=e.toLowerCase();s(e,v,j)}else{p();d.hide()}}function k(d){if(!d)return[""];var e=d.split(b.multipleSeparator),c=[];a.each(e,function(d,b){if(a.trim(b))c[d]=a.trim(b)});return c}function m(a){if(!b.multiple)return a;var c=k(a);return c[c.length-1]}function w(h,d){if(b.autoFill&&m(c.val()).toLowerCase()==h.toLowerCase()&&n!=f.BACKSPACE){c.val(c.val()+d.substring(m(g).length));a.Autocompleter.Selection(e,g.length,g.length+d.length)}}function u(){clearTimeout(i);i=setTimeout(j,200)}function j(){var f=d.visible();d.hide();clearTimeout(i);p();b.mustMatch&&c.search(function(d){if(!d)if(b.multiple){var a=k(c.val()).slice(0,-1);c.val(a.join(b.multipleSeparator)+(a.length?b.multipleSeparator:""))}else c.val("")});f&&a.Autocompleter.Selection(e,e.value.length,e.value.length)}function v(b,a){if(a&&a.length&&l){p();d.display(a,b);w(b,a[0].value);d.show()}else j()}function s(c,h,g){if(!b.matchCase)c=c.toLowerCase();if(typeof b.url=="string"&&b.url.length>0){var f={timestamp:+new Date};a.each(b.extraParams,function(b,a){f[b]=typeof a=="function"?a():a});a.ajax({mode:"abort",port:"autocomplete"+e.name,type:"POST",dataType:b.dataType,url:b.url+e.value,data:a.extend({q:m(c),limit:b.max},f),success:function(d){var a=b.parse&&b.parse(d)||x(d);q.add(c,a);h(c,a)}})}else{d.emptyList();g(c)}}function x(f){for(var d=[],e=0;e<f.length;e++){var c=a.trim(f[e]);if(c){c=c.split("|");d[d.length]={data:c,value:c[0],result:b.formatResult&&b.formatResult(c,c[0])||c[0]}}}return d}function p(){c.removeClass(b.loadingClass)}};a.Autocompleter.defaults={inputClass:"ac_input",resultsClass:"ac_results",loadingClass:"ac_loading",minChars:1,delay:400,matchCase:false,matchSubset:true,matchContains:false,cacheLength:10,max:100,mustMatch:false,extraParams:{},selectFirst:true,formatItem:function(a){return a[0]},formatMatch:null,autoFill:false,width:0,multiple:false,multipleSeparator:", ",highlight:function(a,b){return a.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)("+b.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1")+")(?![^<>]*>)(?![^&;]+;)","gi"),"<strong>$1</strong>")},scroll:true,scrollHeight:180};a.Autocompleter.Cache=function(b){var c={},d=0;function e(a,d){if(!b.matchCase)a=a.toLowerCase();var c=a.indexOf(d);if(b.matchContains=="word")c=a.toLowerCase().search("\\b"+d.toLowerCase());return c==-1?false:c==0||b.matchContains}function h(a,e){d>b.cacheLength&&g();if(!c[a])d++;c[a]=e}function f(){if(!b.data)return false;var d={},j=0;if(!b.url)b.cacheLength=1;d[""]=[];for(var f=0,k=b.data.length;f<k;f++){var c=b.data[f];c=typeof c=="string"?[c]:c;var e=b.formatMatch(c,f+1,b.data.length);if(e===false)continue;var g=e.charAt(0).toLowerCase();if(!d[g])d[g]=[];var i={value:e,data:c,result:b.formatResult&&b.formatResult(c)||e};d[g].push(i);j++<b.max&&d[""].push(i)}a.each(d,function(c,a){b.cacheLength++;h(c,a)})}setTimeout(f,25);function g(){c={};d=0}return{flush:g,add:h,populate:f,load:function(f){if(!b.cacheLength||!d)return null;if(!b.url&&b.matchContains){var g=[];for(var j in c)if(j.length>0){var h=c[j];a.each(h,function(b,a){e(a.value,f)&&g.push(a)})}return g}else if(c[f])return c[f];else if(b.matchSubset)for(var i=f.length-1;i>=b.minChars;i--){var h=c[f.substr(0,i)];if(h){var g=[];a.each(h,function(b,a){if(e(a.value,f))g[g.length]=a});return g}}return null}}};a.Autocompleter.Select=function(d,k,r,n){var g={ACTIVE:"ac_over"},b,c=-1,i,l="",m=true,f,e;function s(){if(!m)return;f=a("<div/>").hide().addClass(d.resultsClass).css("position","absolute").appendTo(document.body);e=a("<ul/>").appendTo(f).mouseover(function(b){if(j(b).nodeName&&j(b).nodeName.toUpperCase()=="LI"){c=a("li",e).removeClass(g.ACTIVE).index(j(b));a(j(b)).addClass(g.ACTIVE)}}).click(function(b){a(j(b)).addClass(g.ACTIVE);r();k.focus();return false}).mousedown(function(){n.mouseDownOnSelect=true}).mouseup(function(){n.mouseDownOnSelect=false});d.width>0&&f.css("width",d.width);m=false}function j(b){var a=b.target;while(a&&a.tagName!="LI")a=a.parentNode;return!a?[]:a}function h(h){b.slice(c,c+1).removeClass(g.ACTIVE);p(h);var f=b.slice(c,c+1).addClass(g.ACTIVE);if(d.scroll){var a=0;b.slice(0,c).each(function(){a+=this.offsetHeight});if(a+f[0].offsetHeight-e.scrollTop()>e[0].clientHeight)e.scrollTop(a+f[0].offsetHeight-e.innerHeight());else a<e.scrollTop()&&e.scrollTop(a)}}function p(a){c+=a;if(c<0)c=b.size()-1;else if(c>=b.size())c=0}function o(a){return d.max&&d.max<a?d.max:a}function q(){e.empty();for(var j=o(i.length),f=0;f<j;f++){if(!i[f])continue;var h=d.formatItem(i[f].data,f+1,j,i[f].value,l);if(h===false)continue;var k=a("<li/>").html(d.highlight(h,l)).addClass(f%2==0?"ac_even":"ac_odd").appendTo(e)[0];a.data(k,"ac_data",i[f])}b=e.find("li");if(d.selectFirst){b.slice(0,1).addClass(g.ACTIVE);c=0}a.fn.bgiframe&&e.bgiframe()}return{display:function(a,b){s();i=a;l=b;q()},next:function(){h(1)},prev:function(){h(-1)},pageUp:function(){if(c!=0&&c-8<0)h(-c);else h(-8)},pageDown:function(){if(c!=b.size()-1&&c+8>b.size())h(b.size()-1-c);else h(8)},hide:function(){f&&f.hide();b&&b.removeClass(g.ACTIVE);c=-1},visible:function(){return f&&f.is(":visible")},current:function(){return this.visible()&&(b.filter("."+g.ACTIVE)[0]||d.selectFirst&&b[0])},show:function(){var c=a(k).offset();if(navigator.appVersion.indexOf("MSIE")==-1)f.css({width:typeof d.width=="string"||d.width>0?d.width:a(k).width(),top:c.top+k.offsetHeight,left:c.left}).show();else f.css({width:"252",top:c.top+k.offsetHeight,left:c.left}).show();if(d.scroll){e.scrollTop(0);e.css({maxHeight:d.scrollHeight});if(a.browser.msie){var g=0;b.each(function(){g+=this.offsetHeight});var h=g>d.scrollHeight;e.css("height",h?d.scrollHeight:g);if(!h)if(navigator.appVersion.indexOf("MSIE")==-1)b.width(e.width()-parseInt(b.css("padding-left"))-parseInt(b.css("padding-right")));else b.width("252")}}},selected:function(){var c=b&&b.filter("."+g.ACTIVE).removeClass(g.ACTIVE);return c&&c.length&&a.data(c[0],"ac_data")},emptyList:function(){e&&e.empty()},unbind:function(){f&&f.remove()}}};a.Autocompleter.Selection=function(a,c,d){if(a.createTextRange){var b=a.createTextRange();b.collapse(true);b.moveStart("character",c);b.moveEnd("character",d);b.select()}else if(a.setSelectionRange)a.setSelectionRange(c,d);else if(a.selectionStart){a.selectionStart=c;a.selectionEnd=d}a.focus()}})(jQuery);
