
var MostFunSearch={searchtemplate:"<div style='display: none;'><table cellspacing='0' cellpadding='0' border='0'><tr><td><img src='{ThumbnailResourceId}'/></td><td class='searchresult'>{DisplayName}</td></tr></table></div>",searchDefault:"Search...",searchbox:null,searchresults:null,searchinterval:null,blurTimeout:null,lastfilter:null,games:[],matchingGames:0,queryInProgress:false,selectedItem:null,runningEffects:0,init:function(){MostFunSearch.searchbox=$("searchInput");if(MostFunSearch.searchbox!==null){MostFunSearch.searchbox.value=MostFunSearch.searchDefault;MostFunSearch.searchbox.onkeypress=MostFunSearch.handleKeyPress;MostFunSearch.searchbox.onkeyup=MostFunSearch.handleKeyUp;MostFunSearch.searchbox.onblur=MostFunSearch.handleBlur;MostFunSearch.searchbox.onfocus=MostFunSearch.handleFocus;MostFunSearch.searchbox.show();}
MostFunSearch.searchresults=$("searchResults");if(MostFunSearch.searchresults){MostFunSearch.searchresults.positioned=false;Event.observe(window,"resize",MostFunSearch.handleResize);}},positionResults:function(){var searchBoxHeight=MostFunSearch.searchbox.getHeight();var options={"setWidth":false,"setHeight":false,"offsetTop":searchBoxHeight};MostFunSearch.searchresults.clonePosition(MostFunSearch.searchbox,options);MostFunSearch.searchresults.positioned=true;},handleResize:function(){MostFunSearch.searchresults.positioned=false;},handleKeyPress:function(e){var keycode=MostFunSearch.getkeycode(e);if(keycode==13){MostFunSearch.handleSubmit();}},handleSubmit:function(){if(MostFunSearch.matchingGames>0){if(MostFunSearch.selectedItem!==null){if(MostFunSearch.selectedItem.id==="SearchResultHeader"){MostFunSearch.goToResultPage();}else{MostFunSearch.navigate(MostFunSearch.selectedItem.url);}}
else if(MostFunSearch.searchbox.value.length>0){MostFunSearch.goToResultPage(MostFunSearch.searchbox.value);}}},handleKeyUp:function(e){var keycode=MostFunSearch.getkeycode(e);if(keycode===40||keycode===38){if(MostFunSearch.games.length>0){MostFunSearch.stopInterval();MostFunSearch.handleTemplateKeyUp(e);}}
else if(MostFunSearch.searchinterval===null&&MostFunSearch.searchbox.value!==MostFunSearch.lastfilter){MostFunSearch.startInterval();}},handleFocus:function(e){if(!MostFunSearch.searchresults.positioned){MostFunSearch.positionResults();}
MostFunSearch.cancelBlur();MostFunSearch.searchbox.value="";},handleBlur:function(e){MostFunSearch.blurTimeout=setTimeout(MostFunSearch.cancelSearch,200);},cancelBlur:function(){if(MostFunSearch.blurTimeout){clearTimeout(MostFunSearch.blurTimeout);MostFunSearch.blurTimeout=null;}},cancelSearch:function(e){MostFunSearch.resetQuery();MostFunSearch.stopInterval();MostFunSearch.searchbox.value=MostFunSearch.searchDefault;},handleInterval:function(){var query=MostFunSearch.searchbox.value;query=query.toLowerCase().strip();if(MostFunSearch.queryInProgress===false&&MostFunSearch.runningEffects===0){if(query.length===0){MostFunSearch.resetQuery();MostFunSearch.stopInterval();}
else if(MostFunSearch.lastfilter===null){MostFunSearch.lastfilter=query.charAt(0);MostFunSearch.query();}
else if(query.charAt(0)!==MostFunSearch.lastfilter.charAt(0)){MostFunSearch.resetQuery();}
else if(MostFunSearch.lastfilter!==query){MostFunSearch.lastfilter=query;MostFunSearch.deselectGame();MostFunSearch.filterResults();}
else if(MostFunSearch.lastfilter===query){MostFunSearch.stopInterval();}}},resetQuery:function(){MostFunSearch.games=[];MostFunSearch.matchingGames=0;MostFunSearch.selectedItem=null;MostFunSearch.lastfilter=null;if(MostFunSearch.searchresults.hasChildNodes()){MostFunSearch.runningEffects+=1;new Effect.SlideUp(MostFunSearch.searchresults,{duration:0.5,afterFinish:function(){MostFunSearch.runningEffects-=1;MostFunSearch.searchresults.innerHTML="";}});}},handleTemplateKeyUp:function(e){var keycode=MostFunSearch.getkeycode(e);var selectedItem=MostFunSearch.selectedItem;if(selectedItem===null){selectedItem=MostFunSearch.games.firstVisible;}else if(keycode===40){if(typeof(selectedItem['nextVisible'])=='undefined'){selectedItem=selectedItem.next('div');}else{selectedItem=selectedItem.nextVisible;}
selectedItem=selectedItem||MostFunSearch.games.firstVisible;}else if(keycode===38){if(typeof(selectedItem['prevVisible'])=='undefined'){selectedItem=selectedItem.previous('div');}else{selectedItem=selectedItem.prevVisible;}
selectedItem=selectedItem||MostFunSearch.games.lastVisible;}
MostFunSearch.selectGame(selectedItem);},deselectGame:function(){if(MostFunSearch.selectedItem!==null){MostFunSearch.selectedItem.removeClassName("searchresultselect");MostFunSearch.selectedItem=null;}},selectGame:function(el){MostFunSearch.deselectGame();MostFunSearch.selectedItem=el;if(el){el.addClassName("searchresultselect");}},startInterval:function(){MostFunSearch.searchinterval=setInterval(MostFunSearch.handleInterval,200);MostFunSearch.handleInterval();},stopInterval:function(){if(MostFunSearch.searchinterval!==null){clearInterval(MostFunSearch.searchinterval);MostFunSearch.searchinterval=null;}},getkeycode:function(e){if(window.event)
return window.event.keyCode;else if(e)
return e.keyCode?e.keyCode:e.charCode;else
return null;},startQuery:function(){MostFunSearch.queryInProgress=true;MostFunSearch.searchresults.show();MostFunSearch.addSearchHeader();},finishQuery:function(){MostFunSearch.queryInProgress=false;},query:function(){var query=MostFunSearch.lastfilter;var url="/ajax/Search.aspx?search="+encodeURIComponent(query);MostFunSearch.startQuery();new Ajax.Request(url,{method:'get',onSuccess:function(transport){if(query!=MostFunSearch.lastfilter){MostFunSearch.finishQuery();return;}
var gamenodes=new Array();try{gamenodes=transport.responseText.evalJSON();}catch(e){}
if(gamenodes.length>0){MostFunSearch.games=gamenodes;var sortfn=function(a,b){if(a.displayname<b.displayname){return-1;}
else if(a.displayname>b.displayname){return 1;}
else{return 0;}};MostFunSearch.games.sort(sortfn);}
setTimeout("MostFunSearch.finishQuery(); MostFunSearch.displayResults();",100);},onFailure:function(transport){MostFunSearch.finishQuery();MostFunSearch.resetQuery();}});},getGameTemplate:function(game){var template=MostFunSearch.searchtemplate;template=template.replace(/\{DisplayName\}/gi,game.displayname);template=template.replace(/\{ThumbnailResourceId\}/gi,game.thumbnail);var el=document.createElement("div");el.innerHTML=template;el=el.firstChild;Element.extend(el);el.id="SearchResult"+game.name;el.url="/Details.aspx?GameID="+game.name;el.displayname=game.displayname;el.addClassName("searchresult");el.addClassName("searchresultitem");el.onclick=function(){MostFunSearch.navigate(this.url);return true;};el.onmouseover=function(){MostFunSearch.selectGame(el);return true;};el.onmouseout=function(){MostFunSearch.deselectGame();return true;};return el;},displayResults:function(){var len=MostFunSearch.games.length;MostFunSearch.games.firstVisible=MostFunSearch.searchresults.firstChild;for(var i=0;i<len;i++){var el=MostFunSearch.getGameTemplate(MostFunSearch.games[i]);MostFunSearch.addResultItem(el);}
MostFunSearch.games.lastVisible=MostFunSearch.searchresults.lastChild;MostFunSearch.matchingGames=len;MostFunSearch.updateSearchHeader(len);},addSearchHeader:function(){var el=document.createElement("div");el.innerHTML="<p></p>";el.id="SearchResultHeader";el.displayname=null;Element.extend(el);el.addClassName("searchresult");el.addClassName("searchresultheader");MostFunSearch.searchresults.appendChild(el);MostFunSearch.updateSearchHeader();},updateSearchHeader:function(){var el=MostFunSearch.searchresults.firstChild;if(el){if(MostFunSearch.matchingGames<1){el.setStyle({"cursor":""});el.onmouseover=null;el.onmouseout=null;el.onclick=null;if(MostFunSearch.queryInProgress){el.firstChild.innerHTML="Searching";}else{el.firstChild.innerHTML="No matches found";}}else{el.setStyle({"cursor":"pointer"});el.onmouseover=function(){MostFunSearch.selectGame(el);return true;};el.onmouseout=function(){MostFunSearch.deselectGame();return true;};el.onclick=function(){MostFunSearch.goToResultPage();return true;};el.firstChild.innerHTML="See all search results";}}},addResultItem:function(el){MostFunSearch.searchresults.appendChild(el);MostFunSearch.runningEffects+=1;new Effect.SlideDown(el,{duration:0.25,afterFinish:function(){MostFunSearch.runningEffects-=1;}});},filterResults:function(){var query=RegExp.escape(MostFunSearch.lastfilter);var regex=new RegExp("^"+query+"|\\s"+query,"i");var matching=0;var lastSeen=MostFunSearch.games.firstVisible;lastSeen.nextVisible=null;for(var i=0,len=MostFunSearch.games.length;i<len;i++){var game=MostFunSearch.games[i].displayname.strip();var el=$("SearchResult"+MostFunSearch.games[i].name);el.prevVisible=el.nextVisible=null;if(regex.test(game)){++matching;el.prevVisible=lastSeen;lastSeen.nextVisible=el;lastSeen=el;if(el.style.display==="none"){MostFunSearch.runningEffects+=1;new Effect.SlideDown(el,{duration:0.5,afterFinish:function(){MostFunSearch.runningEffects-=1;}});}}
else if(el.style.display===""){MostFunSearch.runningEffects+=1;new Effect.SlideUp(el,{duration:0.5,afterFinish:function(){MostFunSearch.runningEffects-=1;}});}
MostFunSearch.games.lastVisible=lastSeen;MostFunSearch.matchingGames=matching;setTimeout("MostFunSearch.updateSearchHeader();",500);}},goToResultPage:function(pUrl){var url=pUrl||MostFunSearch.lastfilter;if(url){MostFunSearch.navigate("/GamesBySearch.aspx?search="+escape(url));}},navigate:function(url){MostFunSearch.cancelBlur();window.location=url;}};RegExp.escape=function(text){if(!arguments.callee.sRE){var specials=['/','.','*','+','?','|','(',')','[',']','{','}','\\'];arguments.callee.sRE=new RegExp('(\\'+specials.join('|\\')+')','g');}
return text.replace(arguments.callee.sRE,'\\$1');}