/**
*  Ajax Autocomplete for jQuery, version 1.1.3
*  (c) 2010 Tomas Kirda
*
*  Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license.
*  For details, see the web site: http://www.devbridge.com/projects/autocomplete/jquery/
*
*  Last Review: 04/19/2010
*/
(function(d){function j(a,b,c){b="("+c.replace(k,"\\$1")+")";highlight=a.user_name.replace(RegExp(b,"gi"),"<strong>$1</strong>");c='<div style="padding:3px;overflow:auto;">';typeof a.picture!="undefined"&&(c+="<img src='pictures/"+a.picture+"' height='50' width='50' style='float: left;margin-right:5px;'/>");c+="<b>"+a.user_name.replace(RegExp(b,"gi"),"<strong>$1</strong>")+"</b><br/>";c+=a.first_name.replace(RegExp(b,"gi"),"<strong>$1</strong>")+" "+a.last_name.replace(RegExp(b,"gi"),"<strong>$1</strong>");
c+="</div>";return c}function g(a,b){this.el=d(a);this.el.attr("autocomplete","off");this.suggestions=[];this.data=[];this.badQueries=[];this.selectedIndex=-1;this.currentValue=this.el.val();this.intervalId=0;this.cachedResponse=[];this.onChangeInterval=null;this.ignoreValueChange=!1;this.serviceUrl=b.serviceUrl;this.isLocal=!1;this.options={autoSubmit:!1,minChars:1,maxHeight:300,deferRequestBy:0,width:0,highlight:!0,params:{},fnFormatResult:j,delimiter:null,zIndex:9999};this.initialize();this.setOptions(b)}
var k=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\)","g");d.fn.autocomplete=function(a){return new g(this.get(0)||d("<input />"),a)};g.prototype={killerFn:null,initialize:function(){var a,b,c;a=this;b=Math.floor(Math.random()*1048576).toString(16);c="Autocomplete_"+b;this.killerFn=function(b){d(b.target).parents(".autocomplete").size()===0&&(a.killSuggestions(),a.disableKillerFn())};if(!this.options.width)this.options.width=this.el.width();this.mainContainerId="AutocompleteContainter_"+
b;d('<div id="'+this.mainContainerId+'" style="position:absolute;z-index:9999;"><div class="autocomplete-w1"><div class="autocomplete" id="'+c+'" style="display:none; width:300px;"></div></div></div>').appendTo("body");this.container=d("#"+c);this.fixPosition();window.opera?this.el.keypress(function(b){a.onKeyPress(b)}):this.el.keydown(function(b){a.onKeyPress(b)});this.el.keyup(function(b){a.onKeyUp(b)});this.el.blur(function(){a.enableKillerFn()});this.el.focus(function(){a.fixPosition()})},setOptions:function(a){var b=
this.options;d.extend(b,a);if(b.lookup&&(this.isLocal=!0,d.isArray(b.lookup)))b.lookup={suggestions:b.lookup,data:[]};this.serviceUrl=b.serviceUrl;d("#"+this.mainContainerId).css({zIndex:b.zIndex});this.container.css({maxHeight:b.maxHeight+"px",width:b.width})},clearCache:function(){this.cachedResponse=[];this.badQueries=[]},disable:function(){this.disabled=!0},enable:function(){this.disabled=!1},fixPosition:function(){var a=this.el.offset();d("#"+this.mainContainerId).css({top:a.top+this.el.height()+
"px",left:a.left+"px"})},enableKillerFn:function(){d(document).bind("click",this.killerFn)},disableKillerFn:function(){d(document).unbind("click",this.killerFn)},killSuggestions:function(){var a=this;this.stopKillSuggestions();this.intervalId=window.setInterval(function(){a.hide();a.stopKillSuggestions()},300)},stopKillSuggestions:function(){window.clearInterval(this.intervalId)},onKeyPress:function(a){if(!this.disabled&&this.enabled){switch(a.keyCode){case 27:this.el.val(this.currentValue.user_name);
this.hide();break;case 9:case 13:if(this.selectedIndex===-1){this.hide();return}this.select(this.selectedIndex);if(a.keyCode===9)return;break;case 38:this.moveUp();break;case 40:this.moveDown();break;default:return}a.stopImmediatePropagation();a.preventDefault()}},onKeyUp:function(a){if(!this.disabled){switch(a.keyCode){case 38:case 40:return}clearInterval(this.onChangeInterval);if(this.currentValue!==this.el.val())if(this.options.deferRequestBy>0){var b=this;this.onChangeInterval=setInterval(function(){b.onValueChange()},
this.options.deferRequestBy)}else this.onValueChange()}},onValueChange:function(){clearInterval(this.onChangeInterval);this.currentValue=this.el.val();var a=this.getQuery(this.currentValue);this.selectedIndex=-1;this.ignoreValueChange?this.ignoreValueChange=!1:a===""||a.length<this.options.minChars?this.hide():this.getSuggestions(a)},getQuery:function(a){var b;b=this.options.delimiter;if(!b)return d.trim(a);a=a.split(b);return d.trim(a[a.length-1])},getSuggestionsLocal:function(a){var b,c,d,f,e;c=
this.options.lookup;d=c.suggestions.length;b={suggestions:[],data:[]};a=a.toLowerCase();for(e=0;e<d;e++)f=c.suggestions[e],f.toLowerCase().indexOf(a)===0&&(b.suggestions.push(f),b.data.push(c.data[e]));return b},getSuggestions:function(a){var b,c;if((b=this.isLocal?this.getSuggestionsLocal(a):this.cachedResponse[a])&&d.isArray(b.suggestions))this.suggestions=b.suggestions,this.data=b.data,this.suggest();else if(!this.isBadQuery(a))c=this,c.options.params.query=a,d.get(this.serviceUrl,c.options.params,
function(a){c.processResponse(a)},"json")},isBadQuery:function(a){for(var b=this.badQueries.length;b--;)if(a.indexOf(this.badQueries[b])===0)return!0;return!1},hide:function(){this.enabled=!1;this.selectedIndex=-1;this.container.hide()},suggest:function(){if(this.suggestions.length===0)this.hide();else{var a,b,c,h,f,e,g,i;a=this;b=this.suggestions.length;h=this.options.fnFormatResult;f=this.getQuery(this.currentValue);g=function(b){return function(){a.activate(b)}};i=function(b){return function(){a.select(b)}};
this.container.hide().empty();for(e=0;e<b;e++)c=this.suggestions[e],c=d((a.selectedIndex===e?'<div class="selected"':"<div")+">"+h(c,this.data[e],f)+"</div>"),c.mouseover(g(e)),c.click(i(e)),this.container.append(c);this.enabled=!0;this.container.show()}},processResponse:function(a){if(!d.isArray(a.data))a.data=[];this.options.noCache||(this.cachedResponse[a.query]=a,a.suggestions.length===0&&this.badQueries.push(a.query));if(a.query===this.getQuery(this.currentValue))this.suggestions=a.suggestions,
this.data=a.data,this.suggest()},activate:function(a){var b,c;b=this.container.children();this.selectedIndex!==-1&&b.length>this.selectedIndex&&d(b.get(this.selectedIndex)).removeClass();this.selectedIndex=a;this.selectedIndex!==-1&&b.length>this.selectedIndex&&(c=b.get(this.selectedIndex),d(c).addClass("selected"));return c},deactivate:function(a,b){a.className="";if(this.selectedIndex===b)this.selectedIndex=-1},select:function(a){var b;if(b=this.suggestions[a])this.el.val(b.user_name),this.options.autoSubmit&&
(b=this.el.parents("form"),b.length>0&&b.get(0).submit()),this.ignoreValueChange=!0,this.hide(),this.onSelect(a)},moveUp:function(){if(this.selectedIndex!==-1)this.selectedIndex===0?(this.container.children().get(0).className="",this.selectedIndex=-1,this.el.val(this.currentValue)):this.adjustScroll(this.selectedIndex-1)},moveDown:function(){this.selectedIndex!==this.suggestions.length-1&&this.adjustScroll(this.selectedIndex+1)},adjustScroll:function(a){var b,c,d;b=this.activate(a).offsetTop;c=this.container.scrollTop();
d=c+this.options.maxHeight-25;b<c?this.container.scrollTop(b):b>d&&this.container.scrollTop(b-this.options.maxHeight+25);this.el.val(this.getValue(this.suggestions[a].user_name))},onSelect:function(a){var b,c;b=this.options.onSelect;c=this.suggestions[a];a=this.data[a];this.el.val(this.getValue(c.user_name));d.isFunction(b)&&b(c,a,this.el)},getValue:function(a){var b,c;b=this.options.delimiter;if(!b)return a;c=this.currentValue;b=c.split(b);if(b.length===1)return a;return c.substr(0,c.length-b[b.length-
1].length)+a}}})(jQuery);
