function getFirstElementSibling(b,a){while(b){if(b.nodeType==1){return b}if(a){b=b.previousSibling}else{b=b.nextSibling}}return undefined}Element.create=function(a){Element.create.tmp.innerHTML=a;return $(getFirstElementSibling(Element.create.tmp.firstChild))};Element.create.tmp=document.createElement("div");var DetectDesktop=Class.create();Object.extend(DetectDesktop.prototype,{aboutDesktopLink:"/search/mypc/aboutDesktop/",desktopLink:"http://localhost:17500/search/mypcSearch?q=",initialize:function(){this.detectDesktop();new PeriodicalExecuter(this.detectDesktop.bind(this),15)},clicked:function(a){if(this.href==window.location){Event.stop(a);this.detectDesktopAndFollow()}else{searchSwitch(this)}},detectDesktop:function(){this.check(this.onDesktopDown.bind(this),this.onDesktopUp.bind(this))},detectDesktopAndFollow:function(){this.check(this.goToAbout.bind(this),this.goToDesktop.bind(this))},check:function(c,a){var b=new Image();Event.observe(b,"error",c);Event.observe(b,"load",a);b.src="http://localhost:17500/isDesktopUp?tp="+new Date().getTime()},onDesktopDown:function(){this.href=this.aboutDesktopLink},onDesktopUp:function(){this.href=this.desktopLink},goToDesktop:function(){this.href=this.desktopLink;searchSwitch(this);window.location=this.href},goToAbout:function(){this.href=this.aboutDesktopLink;searchSwitch(this);window.location=this.href}});var mypcLink=$("mypcLink");if(mypcLink){Object.extend(mypcLink,DetectDesktop.prototype);mypcLink.initialize()}var Suggest=Class.create();Object.extend(Suggest.prototype,{suggestions:undefined,currentIndex:undefined,currentInput:undefined,currentTimeout:undefined,disabled:false,checkCloseFunction:undefined,initialize:function(){Event.observe(this.getElementsByClassName("closeLink")[0],"click",this.close.bind(this))},close:function(a){Element.hide(this);this.suggestions=undefined;this.currentIndex=undefined;this.currentTimeout=undefined;if(a){$("searchField").focus()}Event.stopObserving(document,"keydown",this.checkCloseFunction)},open:function(){Element.show(this);this.currentIndex=undefined;this.currentInput=$("searchField").value;this.checkCloseFunction=this.checkClose.bind(this);Event.observe(document,"keydown",this.checkCloseFunction)},checkClose:function(a){if(a.keyCode==Event.KEY_ESC){this.close()}},update:function(a){if(this.disabled){return false}if((a.keyCode==Event.KEY_DOWN&&!a.shiftKey)||(a.keyCode==Event.KEY_UP&&!a.shiftKey)){if(this.suggestions){if(a.keyCode==Event.KEY_DOWN){if(this.currentIndex==this.suggestions.length-1){this.suggestions[this.currentIndex].removeClassName("selected");this.currentIndex=undefined}else{if(!this.currentIndex&&this.currentIndex!=0){this.currentIndex=0}else{this.suggestions[this.currentIndex].removeClassName("selected");this.currentIndex++}}}else{if(this.currentIndex==0){this.currentIndex=undefined;this.suggestions[0].removeClassName("selected")}else{if(!this.currentIndex){this.currentIndex=this.suggestions.length-1}else{this.suggestions[this.currentIndex].removeClassName("selected");this.currentIndex--}}}if(this.currentIndex||this.currentIndex==0){this.suggestions[this.currentIndex].addClassName("selected");$("searchField").value=this.suggestions[this.currentIndex].innerHTML.replace(/<b>/gi,"").replace(/<\/b>/gi,"")}else{$("searchField").value=this.currentInput}Event.stop(a)}}else{if(a.keyCode==Event.KEY_ESC||a.keyCode==Event.KEY_LEFT||a.keyCode==Event.KEY_TAB||a.keyCode==Event.KEY_RETURN||a.keyCode==Event.KEY_RIGHT){if(this.suggestions){if(a.keyCode==Event.KEY_ESC){$("searchField").value=this.currentInput;Event.stop(a)}this.close(true)}}else{if(a.keyCode!=Event.KEY_END&&a.keyCode!=Event.KEY_HOME&&a.keyCode!=Event.KEY_INSERT&&a.keyCode!=Event.KEY_PAGEDOWN&&a.keyCode!=Event.KEY_PAGEUP){if(this.currentTimeout){clearTimeout(this.currentTimeout)}this.currentTimeout=setTimeout(function(){var b=$("searchField").value;if(b){this.requestSuggestions(b)}else{this.close(false)}}.bind(this),500)}}}},findLI:function(a){while(a.tagName!="LI"){a=a.parentNode}return a},requestSuggestions:function(a){new Ajax.Request("/search/suggest/",{parameters:{q:a},method:"get",onSuccess:function(d){if(d.responseText!=""){var b=$("suggestContainer");b.innerHTML=d.responseText;this.suggestions=b.getElementsByTagName("li");for(var c=0;c<this.suggestions.length;c++){Event.observe(this.suggestions[c],"click",function(e){$("searchField").value=Suggest.prototype.findLI(e.target).innerHTML.replace(/<b>/gi,"").replace(/<\/b>/gi,"");$("searchForm").submit();this.close()}.bind(this));Event.observe(this.suggestions[c],"mouseover",function(e){Suggest.prototype.findLI(e.target).addClassName("hover")}.bind(this));Event.observe(this.suggestions[c],"mouseout",function(e){Suggest.prototype.findLI(e.target).removeClassName("hover")}.bind(this))}this.open()}else{this.close(false)}}.bind(this),onException:function(b){throw b}})}});var suggest=$("suggest");if(suggest){Object.extend(suggest,Suggest.prototype);suggest.initialize();var searchInput=$("searchField");Event.observe(searchInput,"keydown",suggest.update.bind(suggest))}function showHiddenElements(a){var b=getFirstElementSibling(a.parentNode.firstChild);while(b){Element.show(b);b=getFirstElementSibling(b.nextSibling)}Element.hide(a)}function searchSwitch(b,a){var c=encodeURIComponent($("searchField").value).replace(/\*/g,"%2A");c=c.replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29");c=c.replace(/~/g,"%7E").replace(/\!/g,"%21").replace(/%20/g,"+");if(!a&&$("queryWithoutRefines")){c=$("queryWithoutRefines").innerHTML}if(!b.originalHref){b.originalHref=b.href.split("?q=")[0]}b.href=b.originalHref+"?q="+c}var registerExclude=function(b,a){var d=function(e){if(e.keyCode==16){a.activate(e)}}.bindAsEventListener();var c=function(e){if(e.keyCode==16){a.deactivate(e)}}.bindAsEventListener();Event.observe(b,"mouseover",function(e){Event.observe(document,"keydown",d);Event.observe(document,"keyup",c);if(e.shiftKey){a.activate(e)}});Event.observe(b,"mouseout",function(e){document.stopObserving("keydown",d);document.stopObserving("keyup",c);a.deactivate(e)})};var refines=$("refines");if(refines){refines.select(".hasExcludeQuery").each(function(a){registerExclude(a,{activate:function(){a.addClassName("exclude")},deactivate:function(b){a.removeClassName("exclude")}})})}function showhideWikipediaRefines(f,d){var b=$(f).hasClassName("active");var i=f.parentNode.parentNode.getElementsByClassName("links")[0];var h=f.parentNode.parentNode.getElementsByClassName("legend")[0];var e=h.getElementsByTagName("a");for(var c=0;c<e.length;c++){$(e[c]).removeClassName("active")}var a=i.getElementsByTagName("a");for(var c=0;c<a.length;c++){if(b){Element.show(a[c])}else{Element.hide(a[c])}}if(!b){var g=i.getElementsByClassName(d);for(var c=0;c<g.length;c++){Element.show(g[c])}f.addClassName("active")}}function setHeight(d,e){var j=d.offsetHeight;var b=e-j;if(b==0){return 0}var c=Math.abs(b);var a=Math.floor(30/1000*c);var g=c/a;var i=Math.abs(b/a);var h=function(l,k){setTimeout(function(){d.style.height=k+"px"},g*l)};if(b<0){for(var f=0;f<a;f++){h(f,i*(a-f-1))}}else{for(var f=0;f<a;f++){h(f,i*(f+1))}}return c}var RefineEditor=Class.create();Object.extend(RefineEditor.prototype,{working:false,initialize:function(){this.refines=document.getElementsByClassName("refines")[0];if(!this.refines){return}this.wrapper=this.refines.getElementsByClassName("wrapper")[0];this.modifiers=this.wrapper.getElementsByClassName("groupModifier");this.displays=this.wrapper.getElementsByClassName("groupDisplay")},edit:function(){if(this.working){return}else{this.working=true}if(!this.refines){return}var a=setHeight(this.wrapper,0);setTimeout(function(){this.showModifiers();var b=setHeight(this.wrapper,this.modifiers[0].parentNode.offsetHeight+13,undefined);setTimeout(function(){$("editRefinesLink").hide();$("saveRefinesLink").show();this.working=false}.bind(this),b)}.bind(this),a)},save:function(){if(this.working){return}else{this.working=true}if(!this.refines){return}var c=[];for(var a=0;a<this.modifiers.length;a++){var b=this.modifiers[a].getElementsByTagName("input")[0];if(!b.checked){c.push(b.id.split("_")[0])}}this.excludes=c.join(",");new Ajax.Request("/accounts/excludedrefines/",{parameters:{refines:this.excludes},method:"post",onSuccess:function(e){var d=setHeight(this.wrapper,0);setTimeout(function(){this.showDisplays();var f=setHeight(this.wrapper,this.displays[0].parentNode.offsetHeight+13,undefined);setTimeout(function(){$("editRefinesLink").show();$("saveRefinesLink").hide();this.working=false}.bind(this),f)}.bind(this),d)}.bind(this),onException:function(d){this.working=false}})},showModifiers:function(){for(var a=0;a<this.modifiers.length;a++){Element.show(this.modifiers[a])}for(var a=0;a<this.displays.length;a++){Element.hide(this.displays[a])}},showDisplays:function(){for(var a=0;a<this.modifiers.length;a++){Element.hide(this.modifiers[a])}for(var a=0;a<this.displays.length;a++){var c=this.displays[a];if(this.excludes.indexOf(c.id)<0){Element.show(c);var b=c.getElementsByClassName("chartsjs")[0];if(b&&b.style&&b.style.display=="none"){Element.show(b);buildChart(b)}}}}});var refineEditor=new RefineEditor();var VideoPopup={initialize:function(){this.container=this.getElementsByClassName("container")[0];Event.observe(this.getElementsByClassName("CloseButton")[0],"click",function(){this.close()}.bind(this))},open:function(){Element.show(this);return this},close:function(){Element.hide(this);if(this.content&&this.content.parentNode==this.container){this.contentParent.appendChild(this.content.hide());this.content=undefined}return this},loadVideo:function(b){var a=$(b);if(a&&a!=this.content){this.close();this.contentParent=a.parentNode;this.content=this.container.appendChild(a.show());this.style.top=(window.pageYOffset||document.documentElement.scrollTop)+100+"px";this.open()}}};var popup=$("videoPopup");if(popup){Object.extend(popup,VideoPopup);popup.initialize()}function selectInTextField(b,f,a){if(b.setSelectionRange){b.setSelectionRange(b.value.length,b.value.length);try{var d=document.createEvent("KeyboardEvent");d.initKeyEvent("keypress",true,true,null,false,false,false,false,32,32);b.dispatchEvent(d);var d=document.createEvent("KeyboardEvent");d.initKeyEvent("keypress",true,true,null,false,false,false,false,8,0);b.dispatchEvent(d)}catch(e){}b.setSelectionRange(f,a)}else{if(b.createTextRange){var c=b.createTextRange();c.move("character",b.value.length);c.select();c.moveEnd("character",a-b.value.length);c.moveStart("character",f-a);c.select()}}}var AdvancedOptions=Class.create();Object.extend(AdvancedOptions.prototype,{checkCloseFunction:undefined,load:function(a){var b=$("advanced");if(b){b.open()}else{new Ajax.Request("/search/"+a+"/advanced/",{method:"get",onSuccess:function(e){if(e.responseText!=""){var d=Element.create(e.responseText);$("advancedContainer").appendChild(d);Object.extend(d,AdvancedOptions.prototype);d.initialize();var c=$("advancedLanguageSelect");if(c){Object.extend(c,AdvancedOptionsSelect.prototype);c.initialize(" language:")}}},onException:function(c){throw c}})}},initialize:function(){Event.observe(this.getElementsByClassName("closeLink")[0],"click",this.close.bind(this));this.open()},appendToQuery:function(c,b,f){var d=$("searchField");d.focus();d.value+=d.value.length>0?" "+c:c;var e=d.value.length;d.value+=b;var a=d.value.length;d.value+=f;selectInTextField(d,e,a)},choose:function(a){if(this.closeTimeout){clearTimeout(this.closeTimeout)}var b=a.getElementsByTagName("span");this.appendToQuery(b[0].innerHTML.unescapeHTML(),b[1].innerHTML.unescapeHTML(),b[2].innerHTML.unescapeHTML())},open:function(){if(this.closeTimeout){clearTimeout(this.closeTimeout)}Element.hide(getFirstElementSibling($("advancedSearchLink").getElementsByTagName("span")[0]));$("suggest").close();$("suggest").disabled=true;Element.show(this);$("searchField").focus();this.checkCloseFunction=this.checkClose.bind(this);Event.observe(document,"keydown",this.checkCloseFunction)},checkClose:function(a){if(a.keyCode==Event.KEY_ESC){this.close()}},close:function(){this.closeTimeout=setTimeout(function(){Element.hide(this);$("suggest").disabled=false;Element.show($("advancedSearchLink").getElementsByTagName("a")[0])}.bind(this),250);Event.stopObserving(document,"keydown",this.checkCloseFunction)}});var AdvancedOptionsSelect=Class.create();Object.extend(AdvancedOptionsSelect.prototype,{initialize:function(a){this.valuePrefix=a;Event.observe(this,"change",this.update.bind(this));Event.observe(this,"keyup",this.update.bind(this));Event.observe(this,"keydown",this.update.bind(this))},update:function(){var a=$("searchField");a.value=a.value.replace(new RegExp(this.valuePrefix+"[a-z]{2,2}","g"),"");if(this.value){a.value+=this.valuePrefix+this.value;selectInTextField(a,a.value.length-2,a.value.length)}}});