var Inlinesearch=Class.create();Inlinesearch.prototype={imageArr:[],currentImage:null,selectorIndex:-1,initialize:function(a){this.ie=Prototype.Browser.IE;this.options=Object.extend({action:"inlinesearch.html?pages=1&sword=",resizeSpeed:8,idNames:{searchInput:"searchInput",searchForm:"searchForm",dummy:"dummy"}},a||{});if(this.ie){this.shim=document.createElement("iframe");this.shim.src="javascript:false;";this.shim.frameBorder=0;this.shim.scrolling="no";this.shim.style.position="absolute";this.shim.style.display="none";Element.extend(this.shim);$(document.body).insert(this.shim)}this.action=this.options.action;this.input=$(this.options.idNames.searchInput);this.input.autocomplete="off";this.form=$(this.options.idNames.searchForm);this.options=new Inlinesearch.Options(a||{});if(!this.input){alert("No input field/binding field given or found")}if(!this.action){alert("No action url specified")}this.selector=document.createElement("div");Event.observe(this.input,"focus",this._onInputFocus.bindAsEventListener(this));Event.observe(this.input,"keydown",this._onInputKeyDown.bindAsEventListener(this));Event.observe(this.input,"blur",this._onInputBlur.bindAsEventListener(this));Event.observe(this.selector,"blur",this._onSelectorBlur.bindAsEventListener(this));Event.observe(this.selector,"focus",this._onSelectorFocus.bindAsEventListener(this));Event.observe(this.form,"submit",this._onFormSubmit.bindAsEventListener(this));Event.observe(window,"resize",this._reposition.bind(this));Event.observe(window,"scroll",this._reposition.bind(this))},_onFormSubmit:function(a){a.stop();if(this.selectorIndex!=-1){window.location.href=this.selectorOptionsArr[this.selectorIndex].href}else{this.form.submit()}},_onInputFocus:function(a){this._onSelectorFocus(a)},_onSelectorBlur:function(a){this._onInputBlur(a)},_onInputBlur:function(a){this._hideTimeout=setTimeout(this._checkOnBlur.bind(this),200)},_checkOnBlur:function(){this._hideTimeout=null;this.hide()},_onInputKeyUp:function(a){this._suggest(a)&&Event.stop(a)},_onInputKeyDown:function(a){this._suggest(a)&&Event.stop(a)},_onSelectorFocus:function(a){if(this._hideTimeout){clearTimeout(this._hideTimeout);this._hideTimeout=null}},_onSelectorChange:function(a){this.select()},draw:function(){if(this.drawn){return}if(this.options.cssClass){this.selector.className=this.options.cssClass}Element.setStyle(this.selector,{display:"none",position:"absolute"});document.body.appendChild(this.selector);this.input.autocomplete="off";this.drawn=true},hide:function(){if(!this.drawn||!this.visible){return}this.visible=false;Element.setStyle(this.selector,{display:"none"});this.selector.innerHTML="";setTimeout(this._restoreFocus.bind(this),50);if(this.ie){this.shim.hide()}},_restoreFocus:function(){this.input.focus()},show:function(){if(!this.drawn){this.draw()}var a=null;Element.setStyle(this.selector,{display:"block"});this._reposition();this.visible=true;if(this.ie){this.shim.show()}},_cancelTimeout:function(){if(this._timeout){clearTimeout(this._timeout);this._timeout=null}},_suggest:function(c){this._cancelTimeout();var b=Event.keyPressed(c);var a=[20,16,17,91,121,122,123,124,125,126,127,128,129,130,131,132,45,36,35,33,34,144,145,44,19,93,];if(a.indexOf(b)>-1){return false}switch(b){case Event.KEY_LEFT:case Event.KEY_RIGHT:return false;break;case Event.KEY_TAB:case Event.KEY_BACKSPACE:case 46:this.cancel();return false;break;case Event.KEY_RETURN:if(this.visible){this.select();return false}return false;break;case Event.KEY_ESC:this.cancel();return true;break;case Event.KEY_UP:case Event.KEY_DOWN:this._interact(c);return true;break;default:break}if(this.input.value.length>=this.options.threshold-1){this._timeout=setTimeout(this._sendRequest.bind(this),1000*this.options.delay)}return false},_sendRequest:function(){this.input.setStyle({backgroundPosition:"left bottom"});if(this._request&&!this._request._complete){this._request.transport.abort()}this._request=new Ajax.Request(this.action+this.input.value,{onComplete:this._process.bind(this),method:this.options.requestMethod})},_reposition:function(){if(!this.drawn){return}var a=Position.cumulativeOffset(this.input);a.push(a[0]+this.input.offsetWidth);a.push(a[1]+this.input.offsetHeight);Element.setStyle(this.selector,{left:a[0]+"px",top:a[3]+"px"});if(this.ie){Element.setStyle(this.shim,{left:a[0]+"px",top:a[3]+"px",width:this.selector.offsetWidth+"px",height:this.selector.offsetHeight+"px"})}},_process:function(b,a){if(b.responseText!=""){this.selector.innerHTML="";this.selector.insert(b.responseText);this.selectorOptionsArr=this.selector.select("a");this.selectorIndex=-1;this.selectorOptionsArr.each(function(c){Event.observe(c,"click",this._optionOnClick.bindAsEventListener(this))}.bind(this));this.show();this.input.setStyle({backgroundPosition:"0px 50px"})}else{this.cancel()}},_optionOnClick:function(a){this._hideTimeout=null},cancel:function(){this.hide()},select:function(){if(this.selectorIndex!=-1){window.location.href=this.selectorOptionsArr[this.selectorIndex].href
}else{this.form.submit()}this.cancel()},_interact:function(b){if(!this.visible){return}var a=Event.keyPressed(b);if(a!=Event.KEY_UP&&a!=Event.KEY_DOWN){return}var c=this.selectorOptionsArr.length;if(this.selectorIndex!=-1){this.selectorOptionsArr[this.selectorIndex].removeClassName("active")}if(a==Event.KEY_UP){if(this.selectorIndex==0||this.selectorIndex==-1){this.selectorIndex=this.selectorOptionsArr.length-1}else{this.selectorIndex--}}else{if(this.selectorIndex==this.selectorOptionsArr.length-1){this.selectorIndex=0}else{this.selectorIndex++}}this.selectorOptionsArr[this.selectorIndex].addClassName("active")}};Inlinesearch.Options=Class.create({size:10,cssClass:"inlinesearch",onSelect:null,threshold:3,delay:0.5,requestMethod:"GET",resultFormat:"xml",initialize:function(a){Object.extend(this,a||{})}});Object.extend(Event,{KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,KEY_SHIFT:16,KEY_CONTROL:17,KEY_CAPSLOCK:20,KEY_SPACE:32,keyPressed:function(a){return Prototype.Browser.IE?window.event.keyCode:a.which}});document.observe("dom:loaded",function(){myInlinesearch=new Inlinesearch()});