var Suggestion=Class.create();Suggestion.prototype={initialize:function(H,I,J,A,K,D,C,B,F,G,E){this.inputId=H;this.formId=I;this.suggestionId=J;this.suggestionTitleTag=A;this.suggestionTitle=K;this.suggestionInsertionId=D;this.suggestionLoadingImg=C;this.suggestionNextImg=F;this.suggestionPreviousImg=B;this.actionName=G;this.requestMethod=E;this.processInitialize()},processInitialize:function(){this.startRow=0;this.previousOrNext=null;this.client=new ClientEnvironment();var A=$(this.inputId);if(A){A.writeAttribute("autocomplete","off")}else{throw"Error: Not found the suggestion input tag."}Event.observe(document,"click",this.processDocumentOnClick.bind(this));Event.observe(this.inputId,"keypress",this.processInputOnKeyPress.bind(this));Event.observe(this.inputId,"keyup",this.processInputOnKeyUp.bind(this))},processDocumentOnClick:function(D){var C=Event.findElement(D,"input#"+this.inputId);if(C){var A=$(this.suggestionId);if(!A||A.visible()===false){this.createRequest()}}else{var B=Event.findElement(D,"div#"+this.suggestionId);if(B){var A=B;var E=A.select('li[class="keywordFocus"]');if(E&&E.length!==0){var F=E[0];var G=F.getElementsByTagName("span");if(G&&G.length!==0){this.reloadSuggestion(F,"previous")}else{var H=F.getElementsByTagName("div");if(H&&H.length!==0){this.reloadSuggestion(F,"next")}else{this.submitKeyword(F)}}}}else{var A=$(this.suggestionId);if(A){A.hide()}}}},processInputOnKeyPress:function(A){if(A.keyCode==Event.KEY_RETURN){Event.stop(A)}},processInputOnKeyUp:function(B){if(B.keyCode==Event.KEY_DOWN){var F=$(this.suggestionId);if(F&&F.visible()===true){var E=F.select('li[class="keywordFocus"]');if(E&&E.length!==0){var D=E[0];var I=D.next("li");if(I){this.focusKeyword(I)}else{var H=D.getElementsByTagName("div");if(H&&H.length!==0){this.reloadSuggestion(D,"next")}}}else{var G=F.select('li[class="keywordUnFocus"]');if(G&&G.length!==0){this.focusKeyword(G.first())}}}else{this.createRequest()}}else{if(B.keyCode==Event.KEY_UP){var F=$(this.suggestionId);if(F&&F.visible()===true){var E=F.select('li[class="keywordFocus"]');if(E&&E.length!==0){var D=E[0];var C=D.previous("li");if(C){this.focusKeyword(C)}else{var A=D.getElementsByTagName("span");if(A&&A.length!==0){this.reloadSuggestion(D,"previous")}else{this.deleteSuggestion()}}}}}else{if(B.keyCode==Event.KEY_RETURN){var F=$(this.suggestionId);if(F&&F.visible()===true){var E=F.select('li[class="keywordFocus"]');if(E&&E.length!==0){var D=E[0];var A=D.getElementsByTagName("span");if(A&&A.length!==0){this.reloadSuggestion(D,"previous")}else{var H=D.getElementsByTagName("div");if(H&&H.length!==0){this.reloadSuggestion(D,"next")}else{this.submitKeyword(D)}}}else{$(this.formId).submit()}}else{$(this.formId).submit()}}else{if(B.keyCode==Event.KEY_ESC){this.deleteSuggestion()}else{if(B.keyCode==Event.KEY_LEFT||B.keyCode==Event.KEY_RIGHT){}else{this.createRequest()}}}}}},processSuggestionOnMouseOver:function(A){var B=Event.findElement(A,"li");if(B&&(B.readAttribute("class")==="keywordUnFocus"||B.readAttribute("class")==="keywordFocus")){this.focusKeyword(B)}},processSuggestionOnMouseOut:function(B){var A=Event.findElement(B,"li");if(A&&(A.readAttribute("class")==="keywordUnFocus"||A.readAttribute("class")==="keywordFocus")){this.unfocusKeyword(A)}},createRequest:function(){if(this.isExecutable()){var B=$F(this.inputId);if(B){B.strip();if(parseInt(B.length)>0){var A=this.createParameter(B);A+="&startRow="+this.startRow;if(this.previousOrNext){A+="&nextOrPrevious="+this.previousOrNext}this.startRow=0;this.previousOrNext=null;new Ajax.Request("suggestion.ajax",{method:this.requestMethod,parameters:A,onCreate:this.processLoading.bind(this),onComplete:this.processCallback.bind(this)})}}else{this.deleteSuggestion()}}},createParameter:function(B){var A=new String;A+="action="+this.actionName;A+="&name="+encodeURIComponent(B);return A},isExecutable:function(){if(this.client.isWinOS&&(this.client.isIE||this.client.isFirefox||this.client.isSafari||this.client.isOpera)){return true}else{if(this.client.isMacOS&&(this.client.isFirefox||this.client.isSafari)){return true}else{if(this.client.isLinuxOS&&this.client.isFirefox){return true}else{return false}}}},processLoading:function(){var B=new Element("div",{id:this.suggestionId});var D=new Element(this.suggestionTitleTag).update(this.suggestionTitle);var C=new Element("ul");var A=new Element("li",{"class":"suggestionLoading"}).update("Now Loading...");Element.insert(C,{top:A});Element.insert(B,{top:D});Element.insert(B,{bottom:C});if($(this.suggestionId)){Element.replace(this.suggestionId,B)}else{Element.insert(this.suggestionInsertionId,{bottom:B})}this.setStyleSuggestion()},processCallback:function(C){var A=C.responseText;var B=A.match(/<p>(.*)<\/p>/);A=A.replace(/<p>.*<\/p>/,"");if(B[1].unescapeHTML()===$F(this.inputId)){if($(this.suggestionId)){Element.replace(this.suggestionId,A)}else{Element.insert(this.suggestionInsertionId,{bottom:A})}this.setStyleSuggestion()}},setStyleSuggestion:function(){var F=$(this.suggestionId);Element.setStyle(F,{backgroundColor:"#ffffff",borderBottom:"2px solid #999999",borderLeft:"1px solid #cccccc",borderRight:"2px solid #999999",borderTop:"1px solid #cccccc",margin:"0px",padding:"0px",position:"absolute",zIndex:"10"});var H=$(this.inputId);var K=H.positionedOffset();var D=K[0];var G=K[1]+H.getHeight();var C=H.getWidth();var E=this.adjustSuggestion(D,G,C).evalJSON();Element.setStyle(F,{left:E.left+"px",top:E.top+"px",width:E.width+"px"});var B=F.getElementsByTagName(this.suggestionTitleTag);Element.setStyle(B[0],{display:"none"});var A=this;var I=$A(F.getElementsByTagName("ul"));Element.setStyle(I[0],{margin:"0px",padding:"0px"});var J=$A(F.getElementsByTagName("li"));J.each(function(L){Element.setStyle(L,{fontSize:"1em",lineHeight:"1.6em",listStyle:"none",margin:"1px",overflow:"hidden",padding:"0px 3px 0px 3px"});if(L.readAttribute("class")==="keywordUnFocus"){Element.setStyle(L,{backgroundColor:"#ffffff",border:"1px solid #ffffff",cursor:"pointer"})}else{if(L.readAttribute("class")==="keywordFocus"){Element.setStyle(L,{backgroundColor:"#fceee4",border:"1px solid #ff6600",cursor:"pointer"})}else{if(L.readAttribute("class")==="suggestionLoading"){Element.setStyle(L,{backgroundColor:"#ffffff",backgroundImage:"url("+A.suggestionLoadingImg+")",backgroundPosition:"center left",backgroundRepeat:"no-repeat",border:"1px solid #ffffff",paddingLeft:"20px"})}else{Element.setStyle(L,{backgroundColor:"#ffffff",border:"1px solid #ffffff"})}}}var M=L.getElementsByTagName("span");if(M&&M.length!==0){Element.setStyle(L,{backgroundImage:"url("+A.suggestionPreviousImg+")",backgroundPosition:"center left",backgroundRepeat:"no-repeat",paddingLeft:"17px"})}var N=L.getElementsByTagName("div");if(N&&N.length!==0){Element.setStyle(L,{backgroundImage:"url("+A.suggestionNextImg+")",backgroundPosition:"center left",backgroundRepeat:"no-repeat",paddingLeft:"17px"})}});Event.observe(this.suggestionId,"mouseover",this.processSuggestionOnMouseOver.bind(this));Event.observe(this.suggestionId,"mouseout",this.processSuggestionOnMouseOut.bind(this))},adjustSuggestion:function(C,B,A){if(this.client.isWinOS&&this.client.isIE){C+=0;B+=0;A+=0}else{if(this.client.isWinOS&&this.client.isFirefox){C+=0;B+=0;A+=0}else{if(this.client.isWinOS&&this.client.isSafari){C+=0;B+=0;A+=0}else{if(this.client.isWinOS&&this.client.isOpera){C+=0;B+=0;A+=0}else{if(this.client.isMacOS&&this.client.isFirefox){C+=0;B+=0;A+=0}else{if(this.client.isMacOS&&this.client.isSafari){C+=0;B+=0;A+=0}else{if(this.client.isLinuxOS&&this.client.isFirefox){C+=0;B+=0;A+=0}}}}}}}return"{left: "+C+", top: "+B+", width: "+A+"}"},deleteSuggestion:function(){var A=$(this.suggestionId);if(A){Event.stopObserving(this.suggestionId,"mouseover",this.processSuggestionOnMouseOver.bind(this));Event.stopObserving(this.suggestionId,"mouseout",this.processSuggestionOnMouseOut.bind(this));Element.remove(A)}},focusKeyword:function(C){var B=$A(C.up(1).getElementsByTagName("li"));var A=this;B.each(function(D){A.clearAndSetClassName(D,"keywordUnFocus");Element.setStyle(D,{backgroundColor:"#ffffff",border:"1px solid #ffffff"})});this.clearAndSetClassName(C,"keywordFocus");Element.setStyle(C,{backgroundColor:"#fceee4",border:"1px solid #ff6600"})},unfocusKeyword:function(A){this.clearAndSetClassName(A,"keywordUnFocus");Element.setStyle(A,{backgroundColor:"#ffffff",border:"1px solid #ffffff"})},clearAndSetClassName:function(C,B){var A=Element.classNames(C);if(A){A.each(function(D){Element.removeClassName(C,D)})}Element.addClassName(C,B)},submitKeyword:function(B){var A=$(this.inputId);A.value=B.childNodes[0].nodeValue;this.deleteSuggestion()},reloadSuggestion:function(D,A){var B=0;var F=D.childElements();var E=F.first().readAttribute("class");if(E.include("next")){var C=E.match(/^next\((\d+)\)$/);B=C[1]}else{if(E.include("previous")){var C=E.match(/^previous\((\d+)\)$/);B=C[1]}}this.previousOrNext=A;this.startRow=B;this.createRequest()}};