var SearchInPlace=Class.create({searchDelay:1000,resultsId:"searchInPlaceResults",initialize:function(A){if(!A){A="search"}this.input=$(A);if(!this.input){throw'cannot find search box: "'+A+'"'}this.defaultValue=this.input.value;Event.observe(this.input,"focus",this.focus.bind(this));Event.observe(this.input,"blur",this.blur.bind(this));if(Element.hasClassName(this.input,"search-in-place")){Event.observe(this.input,"keyup",this.keyup.bindAsEventListener(this))}},focus:function(){Element.addClassName(this.input,"focused");
if(this.input.value==this.defaultValue){this.input.value=""}},blur:function(){this.cancelSearch();window.setTimeout(this.hideResults.bind(this),5);Element.removeClassName(this.input,"focused");if(this.input.value==""){this.input.value=this.defaultValue}},keyup:function(B){switch(B.keyCode){case Event.KEY_UP:this.selectPrevious();break;case Event.KEY_DOWN:this.selectNext();break;case Event.KEY_RETURN:var A=this.getSelected();if(A){this.launch(A.id)}break;default:this.cancelSearch();this.timer=window.setTimeout(this.search.bind(this),this.searchDelay);
break}Event.stop(B)},getSelected:function(){return this.selectedIndex==null||!this.items?null:this.items[this.selectedIndex]},selectNext:function(){if(this.items&&this.items.length>0){if(this.selectedIndex==null){this.selectedIndex=0;Element.addClassName(this.items[this.selectedIndex],"selected")}else{Element.removeClassName(this.items[this.selectedIndex],"selected");this.selectedIndex=(this.selectedIndex+1)%this.items.length;Element.addClassName(this.items[this.selectedIndex],"selected")}}},selectPrevious:function(){if(this.items&&this.items.length>0){if(this.selectedIndex==null){this.selectedIndex=this.items.length-1;
Element.addClassName(this.items[this.selectedIndex],"selected")}else{if(this.selectedIndex==0){Element.removeClassName(this.items[this.selectedIndex],"selected");this.selectedIndex=null}else{if(this.selectedIndex-1>=0){Element.removeClassName(this.items[this.selectedIndex],"selected");this.selectedIndex--;Element.addClassName(this.items[this.selectedIndex],"selected")}}}}},cancelSearch:function(){if(this.timer){window.clearTimeout(this.timer)}},hideResults:function(){var A=$(this.resultsId);if(A){Element.remove(A)
}},launch:function(A){if(A=="showAll"){$("quickSearch").submit()}else{document.location=A}},search:function(){var A=this.input.value;if(A&&A.length>0){new Ajax.Request("/searchInPlace",{parameters:$H({q:A}).toQueryString(),onSuccess:function(C){this.hideResults();new Insertion.After(this.input,C.responseText);var B=$(this.resultsId);this.items=B.select("selectable");this.selectedIndex=null;this.items.each(function(E,D){Event.observe(E,"mouseover",function(){if(D!=this.selectedIndex){if(this.selectedIndex!=null){Element.removeClassName(this.items[this.selectedIndex],"selected")
}this.selectedIndex=D;Element.addClassName(this.items[this.selectedIndex],"selected")}}.bind(this));Event.observe(E,"mousedown",function(){this.launch(E.id)}.bind(this))}.bind(this))}.bind(this)})}}});