var SHOW_POPUP_LABELS=false;function id(C){if(arguments.length>1){for(var D=0,A=[],B=arguments.length;D<B;D++){A.push(id(arguments[D]))}return A}if(typeof C=="string"){C=document.getElementById(C)}return C}Array.prototype.contains=function(C){for(var B=0,A=this.length;B<A;B++){if(C==this[B]){return true}if(C.equals){if(C.equals(this[B])){return true}}}return false};Array.prototype.remove=function(D){var B=-1;for(var C=0,A=this.length;C<A;C++){if(D==this[C]){B=C}else{if(D.equals){if(D.equals(this[C])){B=C}}}if(B!=-1){return this.splice(B,1)}}};var Obj={toQueryString:function(D){assert(D,"Obj.toQueryString: Argument is undefined.");var C=[];for(var B in D){var A=D[B];if(!A){if((typeof A=="undefined")||(A===null)){A=""}if(A===false){A="false"}}C.push(B+"="+encodeURIComponent(A))}return C.join("&")}};function toQueryObject(B){var A={};$A(B.replace(/(^.*\?)|(#.*$)/g,"").split("&")).each(function(C){C=C.split("=");A[decodeURIComponent(C[0])]=decodeURIComponent(C[1])});return A}function truncate(B,A){if(B.length>A){B=B.split("");B.push(" ");loop=true;in_tag=tag_open=false;rep=0;trunc="";while(true){if(rep>=A&&!in_tag&&B[rep]==" "){break}if(B[rep]=="<"){in_tag=true}if(B[rep]==">"&&!tag_open){tag_open=true}else{if(B[rep]==">"&&tag_open){tag_open=in_tag=false}}trunc+=B[rep];rep++}trunc+="...";return trunc}else{return B}}var HistoryManager=(function(){var B=new Class({initialize:function(){this._currentLocation=this._getHash();if(window.ie){this.addState=this._addStateIE;this._iframe=new Element("iframe",{src:"javascript:'<html></html>'",styles:{"position":"absolute","top":"-1000px"}}).inject(document.body).contentWindow;$justForIE=function(F){this._getHash=function(){return F};this._monitorDefault.call(this);location.hash=F}.bind(this);var D=function C(){if(this._iframe&&this._iframe.document&&this._iframe.document.body){if(!this._iframe.document.body.innerHTML){this.addState(this._currentLocation,true)}$clear(D)}}.periodical(50,this)}else{if(window.webkit419){this._form=new Element("form",{method:"get"}).inject(document.body);this._historyCounter=history.length;this._stateHistory=[];this._stateHistory[history.length]=this._getHash();this.addState=this._addStateSafari;this._monitorSafari.periodical(250,this)}else{if(window.opera&&navigator.appVersion.toFloat()<9.5){this.addState=this._addStateDefault;$justForOpera=this._monitorDefault.bind(this);new Element("img",{src:"javascript:location.href='javascript:$justForOpera();';",style:"position: absolute; top: -1000px;"}).inject(document.body)}else{this.addState=this._addStateDefault;this._monitorDefault.periodical(250,this)}}}},getCurrentLocation:function(){return this._currentLocation},_getHash:function(){return location.href.split("#")[1]||""},_addStateIE:function(D,C){if(this._currentLocation==D&&!C){return }this._currentLocation=D;this._iframe.document.write("<html><body onload=\"top.$justForIE('",D.replace("'","\\'"),"');\">Loaded</body></html>");this._iframe.document.close()},_addStateSafari:function(C){if(this._currentLocation==C){return }this._form.setProperty("action","#"+C).submit();this._currentLocation=C;this._stateHistory[history.length]=this._getHash();this._historyCounter=history.length},_monitorSafari:function(){if(history.length!=this._historyCounter){this._historyCounter=history.length;this._currentLocation=this._stateHistory[history.length];this.fireEvent("onHistoryChange",[this._currentLocation])}},_addStateDefault:function(C){if(this._currentLocation==C){return }location.hash="#"+C;this._currentLocation=C},_monitorDefault:function(){var C=this._getHash();if(C!=this._currentLocation){this._currentLocation=C;this.fireEvent("onHistoryChange",[C])}}});B.implement(new Events);var A;return function(){return A?A:A=new B()}})();var BrowserHistory=new HistoryManager();var E={hide:function(A){A=id(A);if(A){A.style.display="none"}return A},show:function(A){A=id(A);if(A){A.style.display=""}return A},getElementsByClassName:function(D,H){H=id(H)||document.body;if(H.getElementsByClassName){return H.getElementsByClassName(D)}var F=H.getElementsByTagName("*");var B=[],A;for(var G=0,C=F.length;G<C;G++){A=F[G];if(E.hasClassName(A,D)){B.push(A)}}return B},getElement:function(G,B,D){G=id(G)||document.body;var C=G.getElementsByTagName(B);if(C.length){if(!D){return C[0]}for(var F=0,A=C.length;F<A;F++){var H=C[F];if(E.hasClassName(H,D)){return H}}}return null},nodeBefore:function(A){function B(D){return !(/[^\t\n\r ]/.test(D.data))}function C(D){return(D.nodeType==8)||((D.nodeType==3)&&B(D))}while((A=A.previousSibling)){if(!C(A)){return A}}return null},childOf:function(B,A){B=id(B),A=id(A);while(B=B.parentNode){if(B==A){return true}}return false},hasClassName:function(B,A){B=id(B);assert(B,"hasClassName: no element.");var C=B.className;if(C.length==0){return false}if(C==A||C.match(new RegExp("(^|\\s)"+A+"(\\s|$)"))){return true}return false},addClassName:function(B,A){B=id(B);var D=B.className.trim();if(!E.hasClassName(B,A)){if(D.length==0){B.className=A}else{var C=D.split(" ");assert(!C.contains(A),"addClassName: Element already has class: "+A);C.push(A);B.className=C.join(" ")}}return B},removeClassName:function(B,A){B=id(B);var D=B.className.trim();if(E.hasClassName(B,A)){if(D==A){B.className=""}else{var C=D.split(" ");assert(C.contains(A),"removeClassName: Element doesn't have class: "+A);C.remove(A);B.className=C.join(" ")}}return B},cumulativeOffset:function(A){var B=0,C=0;do{B+=A.offsetTop||0;C+=A.offsetLeft||0;A=A.offsetParent}while(A);return[C,B]}};var Evt={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_HOME:36,KEY_END:35,KEY_PAGEUP:33,KEY_PAGEDOWN:34,KEY_INSERT:45,target:function(A){return A.target||A.srcElement},stop:function(A){A.preventDefault();A.stopPropagation()},observe:function(B,D,C){if(B.addEventListener){B.addEventListener(D,C,false)}else{if(!C.$$guid){C.$$guid=Evt.guid++}if(!B.events){B.events={}}var A=B.events[D];if(!A){A=B.events[D]={};if(B["on"+D]){A[0]=B["on"+D]}}A[C.$$guid]=C;B["on"+D]=handleEvent}},unobserve:function(A,C,B){if(A.removeEventListener){A.removeEventListener(C,B,false)}else{if(A.events&&A.events[C]){delete A.events[C][B.$$guid]}}}};Evt.guid=1;function handleEvent(D){var B=true;D=D||fixEvent(((this.ownerDocument||this.document||this).parentWindow||window).event);var A=this.events[D.type];for(var C in A){this.$$handleEvent=A[C];if(this.$$handleEvent(D)===false){B=false}}return B}function fixEvent(A){A.preventDefault=fixEvent.preventDefault;A.stopPropagation=fixEvent.stopPropagation;return A}fixEvent.preventDefault=function(){this.returnValue=false};fixEvent.stopPropagation=function(){this.cancelBubble=true};var Cookie={get:function(B,F){var H=document.cookie;if(H){var G=H.split(";");for(var C=0,A=G.length;C<A;C++){var D=G[C].trim().split("=");if(D[0]==B){return D[1]}}}return F||null},set:function(B,D,F){var C="";if(F){var A=new Date();A.setTime(A.getTime()+(F*24*60*60*1000));C="; expires="+A.toGMTString()}document.cookie=B+"="+D+C}};var Params={get:function(B,C,G){if(!B){B=location.search}if(B){B=B.substring(1);var H=B.split("&");for(var D=0,A=H.length;D<A;D++){var F=H[D].trim().split("=");if(F[0]==C){return F[1]||G}}}return G||null}};if(typeof XMLHttpRequest=="undefined"){XMLHttpRequest=function(){return new ActiveXObject(navigator.userAgent.indexOf("MSIE 5")>=0?"Microsoft.XMLHTTP":"Msxml2.XMLHTTP")}}function ajax(F){F={type:F.type||"POST",url:F.url||"",params:F.params||"",timeout:F.timeout||5000,onComplete:F.onComplete||function(){},onError:F.onError||function(){},onSuccess:F.onSuccess||function(){},data:F.data||""};var D=new XMLHttpRequest();var C=F.url;if(F.params){C+="?"+F.params}D.open(F.type,C,true);var A=F.timeout;var G=false;setTimeout(function(){G=true},A);D.onreadystatechange=function(){if(D.readyState==4&&!G){if(B(D)){F.onSuccess(D)}else{F.onError()}F.onComplete();D=null}};if(F.type=="POST"){if(D.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){D.setRequestHeader("Connection","close")}}D.setRequestHeader("Cache-Control","no-cache");D.send(null);function B(H){try{return !H.status&&location.protocol=="file:"||(H.status>=200&&H.status<300)||H.status==304||navigator.userAgent.indexOf("Safari")>=0&&typeof H.status=="undefined"}catch(I){}return false}return D}var Layout={width:0,height:0,_scratch:[0,0],getSize:function(A){if(!A){A=[]}if(typeof (window.innerWidth)=="number"){A[0]=window.innerWidth;A[1]=window.innerHeight}else{if(document.documentElement&&document.documentElement.clientWidth){A[0]=document.documentElement.clientWidth;A[1]=document.documentElement.clientHeight}else{if(document.body&&document.body.clientWidth){A[0]=document.body.clientWidth;A[1]=document.body.clientHeight}else{assert(false,"Don't know how to get window w x h")}}}return A},checkSize:function(){Layout.getSize(Layout._scratch);if((Layout.width==Layout._scratch[0])&&(Layout.height==Layout._scratch[1])){return }Layout.width=Layout._scratch[0];Layout.height=Layout._scratch[1];if(typeof Layout.resized=="function"){Layout.resized()}},init:function(){Evt.observe(window,"resize",this.checkSize);this.checkSize()}};if(typeof HTMLElement!="undefined"){if(HTMLElement.prototype.__defineGetter__){HTMLElement.prototype.__defineGetter__("innerText",function(){return(this.textContent)});HTMLElement.prototype.__defineSetter__("innerText",function(A){this.textContent=A})}}function assert(A,B){if(typeof (gDebug)=="undefined"){return }if(!A){alert("Assertion Failed: "+B)}}function isDebug(){return typeof (gDebug)!="undefined"}function isIE(){return !!(window.attachEvent&&!window.opera)}function isIE7(){return navigator.userAgent.indexOf("MSIE 7")>-1}function isGecko(){return navigator.userAgent.indexOf("Gecko")>-1&&navigator.userAgent.indexOf("KHTML")==-1}function isFlock(){return !!navigator.userAgent.match(/Flock/)}function isWebKit(){return navigator.userAgent.indexOf("AppleWebKit/")>-1}function isSafari(){return !!navigator.userAgent.match(/Safari/)}function isMobileSafari(){return !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)}function isKonqueror(){return !!navigator.userAgent.match(/Konqueror/)}function isOpera(){return !!navigator.userAgent.match(/Opera/)}String.prototype.trim=function(){var A=this;A=A.replace(/^\s*(.*)/,"$1");A=A.replace(/(.*?)\s*$/,"$1");return A};String.prototype.htmlEncode=function(){var B=this;var A=B.length;var D="";for(var C=0;C<A;C++){var F=B.charAt(C);if(F=="&"){D+="&amp;"}else{if(F=="<"){D+="&lt;"}else{if(F==">"){D+="&gt;"}else{D+=F}}}}return D};function create(B,A){var C=document.createElement(B);if(A){C.className=A}return C}function createMeaning(A){A.toElement=function(){var B=create("LI");assert(this.display,"Meaning has no display property: "+this.query);B.innerHTML=this.display.htmlEncode();B.query=this.query;return B};return A}var gAjaxReq=null;function send(C){if(gAjaxReq){return }var B=C.q.trim();var A=Obj.toQueryString(C);location.href="/search?"+A}function doNav(A){var C=E.getElementsByClassName("url",A)[0];gPopup.cancelSubmit=true;var B={u:C.innerText};track(logstr("nav",B));location.href="http://"+C.innerText}function track(B){if(!isDebug()){server="http://www.xoole.com"}else{server=""}if(document.images){var A=parseInt((new Date()).valueOf()/1000);(new Image).src=server+"/static/images/log.gif?"+B+"&time="+A}}function logstr(B,C){assert(typeof B=="string","Parameter 'type' should be a string.");assert(typeof C=="object","Parameter 'info' should be an object.");var D={};for(var A in C){D[A]=C[A]}D.ty=B;return Obj.toQueryString(D)}function linkDownHandler(A){track(this.track)}function attachLinkTracking(F,B,H){var C=$$(B);for(var D=0,A=C.length;D<A;D++){var G=C[D];if(typeof H!="function"){var I={q:true,t:G,a:G.get("text")}}else{var I=H(G)}if(I.q){I.q=gQuery}if(I.s){I.s=A}if(I.mn==true){I.mn=Params.get(null,"m");if(I.mn){I.mn=decodeURIComponent(I.mn)}}if(I.prov==true){I.prov=Params.get(null,"prov");if(I.prov){I.prov=decodeURIComponent(I.prov)}}if(I.t){I.t=I.t.href.replace(/#.*/,"")}oo={};for(prop in I){if(I[prop]){oo[prop]=I[prop]}}G.track=logstr(F,oo);Evt.observe(G,"mousedown",linkDownHandler)}}function Controller(N,V,D){var H=id("bdy");E.hide("td_no_js");this.doQuery=function(Y,X){id("fld_q").value=Y;if(X){var Z={q:Y,prov:X}}else{var Z={q:Y}}track(logstr("suggest",Z));send(Z)};function B(){attachLinkTracking("drill",".explore_link",function(X){return{q:true,t:X,mn:true,d:X.get("text")}})}function F(){attachLinkTracking("res",".web_result a",function(Y){if($(Y.parentNode).hasClass("web_result")){var Z=Y.parentNode.id.substr(1)}else{var Z=Y.parentNode.parentNode.id.substr(1)}var X=Params.get(null,"d");if(X){X=decodeURIComponent(X);X=gQuery.slice(X.length+1)}return{q:true,t:Y,p:Z,klass:Y.className,mn:true,prov:true,d:X}})}function L(){attachLinkTracking("bc","a.breadcrumb_link",function(X){return{q:true,t:X,d:X.get("text"),s:true}})}function P(){attachLinkTracking("prov_tab",".media_bar a",function(X){return{q:true,t:X,mn:true,prov:X.get("text")}})}function C(){attachLinkTracking("spelling","#spell a",function(Y){var X=Y.get("text");return{q:true,t:Y,suggestion:X}})}function R(){attachLinkTracking("tab",".tab a",function(Y){var X=Params.get(Y.search,"m");if(X){X=decodeURIComponent(X)}return{q:true,mn:X,prov:true}})}function S(Y,f){Y.innerHTML="";var a=id("sel_more");if(a){E.hide("td_no_js");var X=a.options;var g=X.length;for(var e=0;e<g;e++){var Z=X[e];if(Z.value===""){continue}var c=createMeaning({display:Z.text,query:Z.value});Y.appendChild(c.toElement())}addEndcap(Y);E.show(f)}f.onclick=function(){var m=E.cumulativeOffset(f);var i=Y.offsetWidth;var k=1;var l=1;if(isSafari()){k=0;l=4}Y.style.left=(m[0]+f.offsetWidth-i-k)+"px";Y.style.top=(m[1]+f.offsetHeight-l)+"px";Y.activate();return false};var b=function(i){Y.deactivate();Evt.stop(i)};var h=function(k){var i=Evt.target(k);if((i==f)||E.childOf(i,f)||(i==Y)||E.childOf(i,Y)){return }Y.deactivate();Evt.stop(k)};var d=null;var j=function(k){var i=Evt.target(k);if(i.tagName=="UL"){return }while(i.tagName!="LI"){i=i.parentNode}if(E.hasClassName(i,"cap")){return }E.addClassName(i,"focused");if(d){E.removeClassName(d,"focused")}d=i};Y.activate=function(){this.style.visibility="visible";Evt.observe(document,"keydown",b);Evt.observe(document,"click",h);Evt.observe(this,"mouseover",j)};Y.deactivate=function(){d=null;this.style.visibility="hidden";Evt.unobserve(document,"keydown",b);Evt.unobserve(document,"click",h);Evt.unobserve(this,"mouseover",j);for(var m=0,l=this.childNodes.length;m<l;m++){var k=this.childNodes[m];if(k.tagName!="LI"){continue}E.removeClassName(k,"focused")}};Y.onclick=function(i){i=i||window.event;var l=Evt.target(i);if(l.tagName!="LI"||!l.query){this.deactivate();return false}var k={q:gQuery,m:l.query,prov:true};track(logstr("tab",k));send(k);this.deactivate();return false}}function K(){var X=!isMobileSafari();var c=!isMobileSafari();var Y=!isMobileSafari();var b=16;function a(i){var j=Evt.target(i);if(j.tagName=="INPUT"){return }var h=i.code;var f=id("bdy");switch(h){case Evt.KEY_UP:if(X){f.scrollTop-=b;Evt.stop(i)}return ;case Evt.KEY_DOWN:if(X){f.scrollTop+=b;Evt.stop(i)}return ;case Evt.KEY_LEFT:if(c){var g=id("a_prev");if(!E.hasClassName(g,"off")){location.href=g.href}}return ;case Evt.KEY_RIGHT:if(c){var d=id("a_next");if(!E.hasClassName(d,"off")){location.href=d.href}}return ;case 32:if(Y){f.scrollTop+=6*b;Evt.stop(i)}return }}var Z="keypress";if(isSafari()||isIE()){Z="keydown"}document.addEvent(Z,a)}function W(){var Y=new ExploreTips($$(".explore_link"),{interactable:true});var X=new Tips($$(".category-query"))}var Q=false;var G=Cookie.get("cols",3);var O=Params.get(location.search,"cols",G);if(O!="1"&&O!="2"&&O!="3"){O=G}var I=O;var M=id("ul_more");var T=id("td_more");document.body.style.overflow="hidden";H.style.overflowY="auto";if(isIE()){H.style.height="10px"}Layout.resized=function(){if(isMobileSafari()){return }var b=this.height;var a=id("hdr").offsetHeight;var Y=id("ftr").offsetHeight;var Z=(b-Y-a);H.style.height=Z+"px";if(!Q){return }var X=H.offsetWidth;if(3==O){if((I==3)&&(X<986)){J(2)}else{if((I!=3)&&(X>986)){J(3)}}}M.style.visibility="hidden"};Layout.recalcLayout=Layout.resized;Layout.init();if(T){S(M,T)}var A=new ExploreController();A.init();initField(id("fld_q"));F();B();L();P();C();W();if(!curr_media){Paging.init()}id("form_q").onsubmit=function(){if(gPopup){gPopup.hide();if(gPopup.cancelSubmit){gPopup.cancelSubmit=false;return false}}var X={q:id("fld_q").value};track(logstr("sub",X));return true};function U(X){assert(X==1||X==2||X==3,"Invalid column option. Valid options are 1, 2, 3.");var a=id("accordion");if(!a){return }id("accordion").parentNode.removeChild(a);switch(parseInt(X)){case 1:col1=id("col1_r");col1.appendChild(a);break;case 2:var Z=id("col2_r");Z.insertBefore(a,Z.firstChild);break;case 3:var Y=id("col3_r");Y.insertBefore(a,Y.firstChild)}}function J(a,Y){var X=id("tbl_2");var Z=id("tbl_3");if(!X||!Z){return }if(a==1){assert(false,"Shouldn't get here because 1	column mode has	been disabled.");E.hide(X);E.hide(Z)}else{if(a==2){E.show(X);E.hide(Z)}else{E.show(Z);E.hide(X)}}I=a;c2Link.select(a==2);c3Link.select(a==3);U(a);if(Y){O=a;Cookie.set("cols",a,60)}}mobilelink=id("mobile")||false;if(mobilelink){mobilelink.onclick=function(){Cookie.set("mobile_override","0","30")}}R();J(I);showPlugin();K();Q=true}var Paging={currentPage:"",init:function(){BrowserHistory.addEvent("onHistoryChange",Paging.historyFlip);$$("#pages a.pagelink").addEvent("click",function(A){A.stop();BrowserHistory.addState("page="+this.get("text"));Paging.gotoPage(this.get("text"));return false});$("a_next").addEvent("click",function(A){if(!$("a_next").hasClass("off")){A.stop();nextpage=parseInt($$("#pages .sel").get("text"))+1;BrowserHistory.addState("page="+nextpage);Paging.gotoPage(nextpage)}return false});$("a_prev").addEvent("click",function(A){if(!$("a_prev").hasClass("off")){A.stop();nextpage=parseInt($$("#pages .sel").get("text"))-1;BrowserHistory.addState("page="+nextpage);Paging.gotoPage(nextpage)}return false});landedPage=BrowserHistory.getCurrentLocation().split("page=")[1]||false;if(landedPage&&Paging.currentPage!=landedPage){Paging.currentPage=landedPage;Paging.gotoPage(landedPage)}},historyFlip:function(A){Paging.gotoPage(A.split("page=")[1]||1)},gotoPage:function(pagenum){Paging.currentPage=pagenum;params=toQueryObject($("a_p"+(pagenum-1)).get("href"));params["formatted"]=1;pageReq=ajax({url:"/search",type:"POST",params:Obj.toQueryString(params),onSuccess:function(o){var text=o.responseText;if(text&&text.trim()!=""){eval("var data = "+text)}$("bdy").scrollTo(0);$$(".result_columns").destroy();$("tbl_3").grab(new Element("text",{"html":data.results}),"top");$("pages").destroy();$("ftr").grab(new Element("text",{"html":data.pagination}));Paging.init()}})}};function initField(A){if(!isSafari()){return }Evt.observe(A,"focus",function(B){E.addClassName(A,"fld_focused")});Evt.observe(A,"blur",function(B){E.removeClassName(A,"fld_focused")})}function showPlugin(){var D=id("span_add_ext");var C=id("add_ext");if(!D){return }if(isGecko()||isIE7()){var B=false;var A="Firefox";if(isIE7()){A="Internet Explorer";if(isDebug()){B=true}else{B=window.external&&(window.external.IsSearchProviderInstalled("http://www.xoole.com")==0)}}else{if(isFlock()){A="Flock"}B=window.external&&window.external.IsSearchProviderInstalled&&(window.external.IsSearchProviderInstalled("http://www.xoole.com")==0)}if(B){C.onclick=function(){window.external.AddSearchProvider("http://www.xoole.com/opensearch/xoole.xml");return false};C.innerHTML="Add xoole to "+A;E.show(D)}}}var MsgBox={show:function(A){id("msg").innerHTML=A;E.show("msgbox");Layout.recalcLayout()},clear:function(){id("msg").innerHTML="";E.hide("msgbox");Layout.recalcLayout()}};var gAutoReq=null;function Popup(fld){var ul=create("UL","popup");ul.id="menu_auto";E.hide(ul);document.getElementsByTagName("BODY")[0].appendChild(ul);$(ul).addEvent("mouseover",function(e){popup=$("advanced-description");if($(e.target).hasClass("help-tip")){popup.setStyle("left",$(e.target).getCoordinates("cluster").right+9);popup.setStyle("top",$(e.target).getCoordinates("cluster").top-50);popup.setStyle("display","block")}});var self=this;var val=fld.value;var selected=null;function _keydown(e){var code=e.which||e.keyCode;switch(code){case Evt.KEY_ESC:self.hide();Evt.stop(e);return ;case Evt.KEY_UP:if(self.up()){Evt.stop(e)}return ;case Evt.KEY_DOWN:if(self.down()){Evt.stop(e)}return ;case Evt.KEY_RIGHT:if(selected&&selected.className.indexOf("nav")==-1){if(selected.className.indexOf("cat")!=-1){fld.value=getCategory(selected)}else{fld.value=selected.innerHTML}Evt.stop(e)}return }}function _keypress(e){var code=e.which||e.keyCode;if(code==Evt.KEY_RETURN){if(self.pick()){Evt.stop(e)}}else{if((code==Evt.KEY_UP)||(code==Evt.KEY_DOWN)){if(!e.charCode&&isGecko()){Evt.stop(e)}}}}function _keyup(e){var code=e.which||e.keyCode;if(code==Evt.KEY_RETURN){return }if(this.value!=val){val=this.value;if(val.length<2){self.hide();return }if(gAutoReq){return }var params=Obj.toQueryString({q:this.value});var server=gUseProxy?"/suggestproxy":"/suggest";gAutoReq=ajax({url:server,type:"GET",params:params,onSuccess:function(r){var text=r.responseText;if(text&&text.trim()!=""){eval("var data = "+text);categories=data.categories||false;self.set(data.suggests,data.navs,categories)}gAutoReq=null},onError:function(){gAutoReq=null}})}}function getTargetLI(e){var elem=Evt.target(e);if(elem.tagName=="UL"){return elem}while(elem.tagName!="LI"){elem=elem.parentNode}assert(elem.tagName=="LI","elem is not LI: "+elem.tagName);return elem}function isItem(elem){return(elem.tagName=="LI")&&!E.hasClassName(elem,"heading")&&!E.hasClassName(elem,"cap")}function isHeading(elem){return E.hasClassName(elem,"heading")}this.itemType=function(item){if(E.hasClassName(item,"nav")){return"nav"}else{if(E.hasClassName(item,"category")){return"cat"}else{return"suggest"}}};function getFirst(){var lis=ul.childNodes;if(!lis.length){return null}var li=lis[0];if(isHeading(li)){li=li.nextSibling}assert(li,"GetFirst: li is null.");return li}ul.onclick=function(e){e=e||window.event;var target=getTargetLI(e);if(!isItem(target)){return false}_keyEvent=true;self.pick(target);return false};ul.onmouseover=function(e){e=e||window.event;var target=getTargetLI(e);if(!isItem(target)){return false}self.select(target);return false};this.show=function(){if(this.visible()){return }var fld=id("fld_q");var pos=E.cumulativeOffset(fld);ul.style.left=(pos[0]+11)+"px";ul.style.top=(pos[1]+fld.offsetHeight-7)+"px";ul.style.display="";Evt.observe(fld,"keydown",_keydown);Evt.observe(fld,"keypress",_keypress)};this.hide=function(){if(!this.visible()){return }$("advanced-description").setStyle("display","none");ul.style.display="none";selected=null;Evt.unobserve(fld,"keydown",_keydown);Evt.unobserve(fld,"keypress",_keypress)};this.visible=function(){return"none"!=ul.style.display};this.set=function(items,navs,categories){var restore=null;if(selected){restore=selected.innerText}selected=null;var html="";var hasItems=false;var hasNav=false;var hasCats=false;if(navs.length){hasNav=true;html="";if(SHOW_POPUP_LABELS){html+='<li class="heading">Go directly to...</li>'}for(var j=0,nlen=navs.length;j<nlen;j++){var nav=navs[j];var url=nav[0];var fave="http://"+url+"/favicon.ico";html+='<li class="nav">';html+='<img src="'+fave+'" />';html+="<div>"+nav[1].htmlEncode()+"</div>";html+='<div class="url">'+url+"</div>";html+="</li>"}}if(items.length){hasItems=true;var index=-1;if(SHOW_POPUP_LABELS){html+='<li class="heading">Common queries...</li>'}num_results=(items.length<=4)?items.length:4;for(var i=0,ilen=num_results;i<ilen;i++){var item=items[i];if(restore==item){index=i}html+="<li>"+item+"</li>"}}if(categories.length){hasCats=true;html+='<li class="heading">Advanced Search<small class="help-tip">Help</small></li>';if(SHOW_POPUP_LABELS){html+='<li class="heading">Browse by category...</li>'}num_results=(categories.length<=4)?categories.length:4;for(var i=0;i<num_results;i++){html+='<li class="category"><span class="hint">Category: </span>'+categories[i]+"</li>"}}ul.innerHTML=html;this.show();addEndcap(ul);if(!hasItems&&!hasNav&&!hasCats){ul.innerHTML="";this.hide()}};var _keyEvent=false;this.select=function(li,keyEvent){if(li==selected){return }assert(!isHeading(li),"Can't select a heading.");E.addClassName(li,"focused");if(selected){E.removeClassName(selected,"focused")}selected=li;if(keyEvent){_keyEvent=true}};this.up=function(){assert(this.visible(),"Shouldn't be getting an up request when menu is hidden.");var li=selected;if(!li){return true}var prev=li.previousSibling;if(!prev){return true}else{if(isHeading(prev)){prev=prev.previousSibling;if(!prev){return true}}}assert(prev,"Previous item is null.");this.select(prev,true);return true};this.down=function(){assert(this.visible(),"Shouldn't be getting a down request when menu is hidden.");var li=selected;if(!li){li=getFirst();if(!li){return false}this.select(li,true);return true}var next=li.nextSibling;if(!next){return true}else{if(isHeading(next)){next=next.nextSibling}else{if(E.hasClassName(next,"cap")){return true}}}assert(next,"Next item is null.");this.select(next,true);return true};this.pick=function(item){assert(this.visible(),"Picked shouldn't be called when menu is hidden.");if(!_keyEvent){if(selected){return true}return false}_keyEvent=false;item=item||selected;if(!item){return }assert(isItem(item),"Trying to pick something that's not item.");if(typeof this.itemPicked=="function"){this.itemPicked(item)}this.hide();return true};Evt.observe(fld,"keyup",_keyup);Evt.observe(fld,"blur",function(e){setTimeout(function(){self.hide()},300);Evt.stop(e)});Evt.observe(fld,"keydown",function(){self.cancelSubmit=false})}function addEndcap(D){var H=create("LI","cap");var C=create("CANVAS");var F=D.offsetWidth;if(!(F>0)){return }var A=7;C.setAttribute("width",F);C.setAttribute("height",2*A);if(C.getContext){var B=C.getContext("2d");B.beginPath();B.arc(A,-2,A,Math.PI,Math.PI/2,true);var G=F-A;B.lineTo(G,5);B.arc(G,-2,A,Math.PI/2,0,true);B.closePath();B.fillStyle="#f5f5f5";B.fill();B.strokeStyle="#a8a8a8";B.stroke()}H.appendChild(C);D.appendChild(H)}function ExploreController(){this.toggle_state=0;var C=this;this.init=function D(){var G=$("show_more");if(G){G.addEvent("click",C.toggle_tiles.bind(C))}C.tiles=$$(".tile");C.hidden_tiles=$$(".tile.hidden");var F=$$(".show_more_meanings");F.each(function(H){H.store("toggled",0);H.addEvent("click",C.toggle_meanings)})};this.toggle_tiles=function A(){var F=$("show_more");if(this.toggle_state==1){this.hidden_tiles.each(function(G){G.setStyle("display","none")});this.toggle_state=0;if(F){F.innerHTML="More Categories"}}else{this.hidden_tiles.each(function(G){G.setStyle("display","block")});this.toggle_state=1;if(F){F.innerHTML="Fewer Categories"}}};this.toggle_meanings=function B(){if(this.retrieve("toggled")){var F=$(this.parentNode).getElement(".hidden");F.setStyle("display","none");this.store("toggled",0);this.innerHTML="See more&nbsp;&raquo;"}else{var F=$(this.parentNode).getElement(".hidden");F.setStyle("display","inline");this.store("toggled",1);this.innerHTML="&laquo;&nbsp;See fewer"}}}var Tips=new Class({Implements:[Events,Options],options:{onShow:function(A){if(A.element.retrieve("tip:title")=="No description"){A.tip.addClass("disabled")}else{A.tip.removeClass("disabled")}A.tip.setStyle("visibility","visible")},onHide:function(A){A.tip.setStyle("visibility","hidden")},showDelay:250,hideDelay:300,className:"tip_wrapper",offsets:{x:0,y:1},fixed:true,interactable:false,direction:"down"},initialize:function(){var A=Array.link(arguments,{options:Object.type,elements:$defined});this.setOptions(A.options||null);this.tip=new Element("div").setStyle("display","none").inject(document.body);if(this.options.className){this.tip.addClass(this.options.className)}this.container=new Element("div",{"class":"tip"}).inject(this.tip);this.tip.setStyles({position:"absolute",top:0,left:0,visibility:"hidden",display:""});if(A.elements){this.attach(A.elements)}},attach:function(A){$$(A).each(function(F){var I=F.retrieve("tip:title",(F.get("title"))?F.get("title"):"No description");var H=F.retrieve("tip:enter",this.elementEnter.bindWithEvent(this,F));var D=F.retrieve("tip:leave",this.elementLeave.bindWithEvent(this,F));F.addEvents({mouseenter:H,mouseleave:D});if(this.options.interactable){var G=this.tipEnter.bindWithEvent(this,F);var B=this.tipLeave.bindWithEvent(this,F);this.tip.addEvents({mouseenter:G,mouseleave:B})}if(!this.options.fixed){var C=F.retrieve("tip:move",this.elementMove.bindWithEvent(this,F));F.addEvent("mousemove",C)}F.store("tip:native",F.get("title"));F.erase("title")},this);return this},detach:function(A){$$(A).each(function(B){B.removeEvent("mouseenter",B.retrieve("tip:enter")||$empty);B.removeEvent("mouseleave",B.retrieve("tip:leave")||$empty);B.removeEvent("mousemove",B.retrieve("tip:move")||$empty);B.eliminate("tip:enter").eliminate("tip:leave").eliminate("tip:move");var C=B.retrieve("tip:native");if(C){B.set("title",C)}});return this},elementEnter:function(B,A){this.event=B;$clear(this.timer);if(A==this.element){return }this.timer=this.show.delay(this.options.showDelay,this,A)},elementLeave:function(B,A){$clear(this.timer);this.timer=this.hide.delay(this.options.hideDelay,this,A)},tipEnter:function(B,A){$clear(this.timer)},tipLeave:function(B,A){this.elementLeave(B,A)},elementMove:function(A){this.position(A)},position:function(C){var A=window.getSize(),F=window.getScroll();var D={x:this.tip.offsetWidth,y:this.tip.offsetHeight};var B={x:"left",y:"top"};for(var G in B){var H=C.page[G]+this.options.offsets[G];if((H+D[G])>A[G]||(G=="y"&&this.options.direction=="up")){H=C.page[G]-D[G]-this.options.offsets[G]}this.tip.setStyle(B[G],H)}},fill:function(B,A){(typeof A=="string")?B.set("html",A):B.adopt(A)},setContent:function(A){this.fill(this.container,A)},show:function(A){this.element=A;$A(this.container.childNodes).each(Element.dispose);var B=A.retrieve("tip:title");if(B){this.setContent(B)}this.position(this.event);this.fireEvent("show",{"tip":this.tip,"element":A})},hide:function(A){this.element=null;this.fireEvent("hide",{"tip":this.tip,"element":A})}});var ExploreTips=new Class({Extends:Tips,initialize:function(){this.options.ajaxDelay=0;this.options.img_box=50;this.parent.apply(this,arguments)},setContent:function(){var D=category_attributes[this.element.id];var G=(D.desc!="No description");this.more_link="/search?q="+encodeURIComponent(D.query)+"&d="+encodeURIComponent(gQuery);var B=new Element("a",{href:this.more_link,html:D.title});var I=new Element("h3",{"class":"title"});attachLinkTracking("drill",B,function(J){return{q:true,t:J,mn:true,d:J.get("text"),klass:"tooltip"}});I.grab(B);I.inject(this.container);if(D.img&&G){if(D.img){var C=D.img.x;var F=D.img.y;if(D.img.x>this.options.img_box||D.img.y>this.options.img_box){var H=this.options.img_box/Math.max(D.img.x,D.img.y);C=Math.floor(D.img.x*H);F=Math.floor(D.img.y*H)}}var A=new Element("img",{"src":D.img.url,"width":C,"height":F});A.inject(this.container)}if(G){this.container.appendText(D.desc)}this.loading=new Element("div",{"class":"loading"});this.loading.inject(this.container);this.fetchHits(D.query)},fetchHits:function(A,B){if($type(this.ajax_timer)=="number"){$clear(this.ajax_timer)}if(this.request){this.request.cancel()}if(!B){var B="drilldown"}this.request=new Request({url:"/search?num_results=3&"+B+"=1&q="+A,onSuccess:this.appendHits.bind(this)});this.ajax_timer=this.request.send.delay(this.options.ajaxDelay,this.request)},appendHits:function(response){eval("var hits = "+response);var that=this;this.loading.dispose();if(hits.results.length==0){return }this.hit_container=new Element("div",{"class":"hits","html":"<h4>Top Results</h4>"});this.hit_container.inject(this.container);hits.results.each(function(hit){var short_url=hit.url.replace(/http:\/\//i,"");if(short_url.length>=45){short_url=short_url.substr(0,44)+"..."}var div=new Element("div",{"class":"hit"});var a=new Element("a",{"class":"title","href":hit.url,"html":hit.plain_title});var br=new Element("br");var snippet=new Element("p",{"class":"snippet","html":truncate(hit.plain_snippet,80)});var a2=new Element("a",{"class":"url","href":hit.url,"html":short_url});a.store("drill",that.element.get("text"));a2.store("drill",that.element.get("text"));attachLinkTracking("res",[a,a2],function(link){return{q:true,t:link,klass:"tooltip",mn:true,prov:true,d:link.retrieve("drill")}});div.adopt([a,br,snippet,a2]);that.hit_container.grab(div)});var more=new Element("a",{href:this.more_link,html:"More results","class":"more_link"});attachLinkTracking("drill",more,function(link){return{q:true,t:link,mn:true,d:link.get("text"),klass:"tooltip"}});more.inject(this.hit_container);var coords=this.tip.getCoordinates();var win=window.getSize();if(coords.bottom>=win.y-10){this.tip.setStyle("top",win.y-coords.height-10)}if(coords.right>=win.x-10){this.tip.setStyle("left",win.x-coords.width-10)}}});var SERPCompare={q:"",googleResults:{},googleSet:0,urlregex:/www\./i,init:function(){SERPCompare.q=id("fld_q").value;SERPCompare.fetchGoogle()},markResults:function(){$each($$(".web_result"),function(D,C,F){url=D.getElement(".url").href.replace(SERPCompare.urlregex,"");if(typeof (SERPCompare.googleResults[url])=="undefined"){new Fx.Tween(D.getElement(".onlyonxoole"),{"duration":1000}).start("opacity",0,1)}});var B={offsets:{x:5,y:10},direction:"up",hideDelay:100,className:"tip_wrapper onlyxoole"};var A=new Tips($$(".onlyonxoole"),B)},fetchGoogle:function(){body=$$("#bdy");switch(SERPCompare.googleSet){case 0:rsz="large";start=0;break;case 1:rsz="large";start=8;break;case 2:rsz="small";start=16;break}var A=Element("script",{"type":"text/javascript","src":"http://ajax.googleapis.com/ajax/services/search/web?v=1.0&rsz="+rsz+"&start="+start+"&callback=SERPCompare.processGoogle&context=context&q="+encodeURIComponent(SERPCompare.q)});SERPCompare.googleSet++;A.inject("bdy")},processGoogle:function(A,C,B){$each(C.results,function(F,D,G){SERPCompare.googleResults[F.url.replace(SERPCompare.urlregex,"")]=true});if(SERPCompare.googleSet>2){SERPCompare.markResults()}else{SERPCompare.fetchGoogle()}}}