var FacebookList=Class.create(TextboxList,{loptions:$H({autocomplete:{"opacity":1,"maxresults":10,"minchars":1}}),initialize:function($super,C,E,A,D){$super(C,A);this.data=[];this.autoholder=$(E).setOpacity(this.loptions.get("autocomplete").opacity);this.autoholder.observe("mouseover",function(){this.curOn=true;}.bind(this)).observe("mouseout",function(){this.curOn=false;}.bind(this));this.autoresults=this.autoholder.select("ul").first();var B=this.autoresults.select("li");B.each(function(F){this.add({value:F.readAttribute("value"),caption:F.innerHTML});},this);},autoShow:function(A){this.autoholder.setStyle({"display":"block"});this.autoholder.descendants().each(function(D){D.hide();});if(!A||!A.strip()||(!A.length||A.length<this.loptions.get("autocomplete").minchars)){this.autoholder.select(".default").first().setStyle({"display":"block"});this.resultsshown=false;}else{this.resultsshown=true;this.autoresults.setStyle({"display":"block"}).update("");if(this.options.get("wordMatch")){var C=new RegExp("(^|\\s)"+A,"i");}else{var C=new RegExp(A,"i");}var B=0;this.data.filter(function(D){return D?C.test(D.evalJSON(true).caption):false;}).each(function(D,F){B++;if(F>=this.loptions.get("autocomplete").maxresults){return ;}var G=this;var E=new Element("li");E.observe("click",function(H){H.stop();G.autoAdd(this);}).observe("mouseover",function(){G.autoFocus(this);}).update(this.autoHighlight(D.evalJSON(true).caption,A));this.autoresults.insert(E);E.cacheData("result",D.evalJSON(true));if(F==0){this.autoFocus(E);}},this);}if(B>this.options.get("results")){this.autoresults.setStyle({"height":(this.options.get("results")*22)+"px"});}else{this.autoresults.setStyle({"height":(B?(B*22):0)+"px"});}return this;},autoHighlight:function(B,A){if(this.options.get("wordMatch")){var C=new RegExp("(^|\\s)"+A,"i");}else{var C=new RegExp(A,"i");}return B.gsub(C,function(D){return"<em>"+D[0]+"</em>";});},autoHide:function(){this.resultsshown=false;this.autoholder.hide();return this;},autoFocus:function(A){if(!A){return ;}if(this.autocurrent){this.autocurrent.removeClassName("auto-focus");}this.autocurrent=A.addClassName("auto-focus");return this;},autoMove:function(A){if(!this.resultsshown){return ;}this.autoFocus(this.autocurrent[(A=="up"?"previous":"next")]());this.autoresults.scrollTop=this.autocurrent.positionedOffset()[1]-this.autocurrent.getHeight();return this;},autoFeed:function(A){if(this.data.indexOf(Object.toJSON(A))==-1){this.data.push(Object.toJSON(A));}return this;},autoAdd:function(B){if(!B||!B.retrieveData("result")){return ;}this.add(B.retrieveData("result"));delete this.data[this.data.indexOf(Object.toJSON(B.retrieveData("result")))];this.autoHide();var A=this.lastinput||this.current.retrieveData("input");A.clear().focus();return this;},createInput:function($super,C){var A=$super(C);var B=A.retrieveData("input");B.observe("keydown",function(D){this.dosearch=false;switch(D.keyCode){case Event.KEY_UP:D.stop();return this.autoMove("up");case Event.KEY_DOWN:D.stop();return this.autoMove("down");case Event.KEY_RETURN:D.stop();if(!this.autocurrent){break;}this.autoAdd(this.autocurrent);this.autocurrent=false;this.autoenter=true;break;case Event.KEY_ESC:this.autoHide();if(this.current&&this.current.retrieveData("input")){this.current.retrieveData("input").clear();}break;default:this.dosearch=true;}}.bind(this));B.observe("keyup",function(D){switch(D.keyCode){case Event.KEY_UP:case Event.KEY_DOWN:case Event.KEY_RETURN:case Event.KEY_ESC:break;default:if(!Object.isUndefined(this.options.get("fetchFile"))){new Ajax.Request(this.options.get("fetchFile"),{parameters:{keyword:B.value},onSuccess:function(E){E.responseText.evalJSON(true).each(function(F){this.autoFeed(F);}.bind(this));this.autoShow(B.value);}.bind(this)});}else{if(this.dosearch){this.autoShow(B.value);}}}}.bind(this));B.observe(Prototype.Browser.IE?"keydown":"keypress",function(D){if(this.autoenter){D.stop();}this.autoenter=false;}.bind(this));return A;},createBox:function($super,D,C){var A=$super(D,C);A.observe("mouseover",function(){this.addClassName("bit-hover");}).observe("mouseout",function(){this.removeClassName("bit-hover");});var B=new Element("a",{"href":"#","class":"closebutton"});B.observe("click",function(E){E.stop();if(!this.current){this.focus(this.maininput);}this.dispose(A);}.bind(this));A.insert(B).cacheData("text",Object.toJSON(D));return A;}});Element.addMethods({onBoxDispose:function(A,B){B.autoFeed(A.retrieveData("text").evalJSON(true));},onInputFocus:function(A,B){B.autoShow();},onInputBlur:function(A,B){B.lastinput=A;if(!B.curOn){B.blurhide=B.autoHide.bind(B).delay(0.1);}},filter:function(H,G){var I=[];for(var J=0,F=this.length;J<F;J++){if(H.call(G,this[J],J,this)){I.push(this[J]);}}return I;}});