Ext.onReady(function(){Ext.BLANK_IMAGE_URL="extjs/resources/images/default/s.gif";Ext.QuickTips.init();Ext.state.Manager.setProvider(new Ext.state.CookieProvider());var J=function(Z,a){if(Z){if(!a.isLeaf()&&!a.isExpanded()){a.expand(false,false)}a.ui.getTextEl().scrollIntoView(T.getEl())}};var F=function(d){d=P(d);var a=d.substring(0,d.lastIndexOf("/"));var Z=d.slice(d.lastIndexOf("/")+1);Z=(Z.indexOf("#")>-1)?Z.slice(0,Z.indexOf("#")):Z;var c=Z?a+"/"+Z:a;var b=E(c);if(b.id!=c){T.loader.baseParams={childDepth:a,filename:Z};T.loader.on("load",function(e,i,g){var f=e.baseParams.filename;var h=e.baseParams.childDepth;var j=(f=="")?h:h+"/"+f;T.selectPath(O(j),"id",J);e.baseParams={}},this,{single:true});T.loader.load(b)}else{T.selectPath(O(c),"id",J)}if(Z){V(N,"source.cgi/"+d,Z,c,C(Z),true)}};var S={render:function(Z){Z.body.on({click:function(g,a){if(a.href.indexOf("/source.cgi/")>=0){g.stopEvent();var f=a.href.substring(a.href.indexOf("/source.cgi/")+12);F(f)}else{if(a.href.indexOf("/ident.cgi?")>=0){g.stopEvent();var b=Q(a.href.substring(a.href.indexOf("?i=")+3),"ident");V(G,a.href,b.title,b.id,b.iconCls,false)}else{if(/typeinfo/(a.href)){g.stopEvent();var c=/tname=([^&]+)/.exec(a.href).slice(1,2);V(N,a.href,c,"Type - "+c,"icon-cpp",true)}else{if(/gettypes/(a.href)){g.stopEvent();var c=/tname=([^&]+)/.exec(a.href).slice(1,2);V(G,a.href,c,c,"icon-type",false)}else{if(/showcallers/(a.href)){g.stopEvent();var d=/mname=([^&]+)/.exec(a.href).slice(1,2);var h=/mtname=([^&]+)/.exec(a.href).slice(1,2);V(G,a.href,h+"::"+d,"Members - "+h+":: "+d,"icon-ref",false)}}}}}},delegate:"a"})}};function C(a){var Z;switch(a.substring(a.indexOf(".")+1)){case"cpp":Z="icon-cpp";break;case"c":Z="icon-c";break;case"h":Z="icon-h";break;case"jpeg":case"jpg":case"png":case"gif":Z="icon-image";break;case"css":Z="icon-css";break;case"xml":case"xul":case"dtd":case"rdf":Z="icon-xml";break;case"html":case"htm":case"xhtml":Z="icon-html";break;case"js":case"pl":case"py":Z="icon-js";break;case"idl":Z="icon-idl";break;case"in":Z="icon-in";break;default:Z="icon-file"}return Z}function E(e){var d=e.split("/");var b=T.root;for(var a=1;a<d.length;a++){var f=d[0];for(var Z=1;Z<=a;Z++){f+="/"+d[Z]}var g=b.findChild("id",f);if(g){b=g}}return b}function O(Z){var e=Z.split("/");var d=T.pathSeparator;var c=";";for(var b=0;b<e.length;b++){for(var a=0;a<=b;a++){c+=e[a];if(a<b){c+="/"}}if(b<e.length-1){c+=d}}if(c.indexOf("/")<0){c=c.substring(1)}return c}function Y(b){b=P(b);var Z=b.indexOf("#");if(Z>-1){var d=b.slice(b.indexOf("mozilla/"),Z);var h=b.substring(Z+1);var c=Ext.getCmp(d);if(c){c.body.select("a.highlighted").removeClass("highlighted");var g=c.body.select("a."+h).first();g.addClass("highlighted");var f=(g.getOffsetsTo(c.body)[1])+c.body.dom.scrollTop;var a=c.body.getViewSize().height;c.body.scrollTo("top",f-a/2)}}}function P(Z){return window.unescape(Z)}function V(a,b,e,f,Z,d){f=P(f);e=P(e);var c=a.getComponent(f);if(!c){c=a.add(new Ext.Panel({id:f,title:e,tabTip:f,waitMsgTarget:true,closable:true,autoScroll:true,iconCls:Z,autoLoad:{url:b,timeout:60,callback:function(m,n,i,k,h,j,g){var l=h.getActiveTab();l.finishedLoading=true;Y(j)}.createDelegate(null,[a,b,Z],true),scope:this}}));if(d){c.on("destroy",K,this,{single:true});D.menu.add({text:f,iconCls:Z,handler:R});D.setText(f);D.setIconClass(Z)}else{c.on("destroy",function(g){if(G.items.getCount()==0){G.collapse()}})}}else{c.on("activate",function(g){Y(b)}.createDelegate(null,[b],true),this,{single:true})}a.expand();if(c!=a.getActiveTab()){a.setActiveTab(c)}else{Y(b)}}var K=function(b){var Z=D.menu.items;var a=Z.findIndex("text",b.id);if(a>-1){D.menu.remove(Z.get(a))}if(Z.getCount()==0){D.setText("No tabs open.");D.setIconClass("icon-info")}};var N=new Ext.TabPanel({region:"center",deferredRender:false,enableTabScroll:true,margins:"0 0 0 0",listeners:S,activeTab:0,items:[{id:"Mozilla Platform",title:"Mozilla Platform",closable:false,autoScroll:true,autoLoad:"platform-map.html",iconCls:"icon-file",listeners:{destroy:K}}]});var G=new Ext.TabPanel({region:"south",deferredRender:false,margins:"0 0 0 0",split:true,height:Math.max(this.innerHeight/3,200),collapsed:true,collapsible:true,stateEvents:["resize"],getState:function(){return{height:this.height}},enableTabScroll:true,listeners:S,stateful:true});N.on("tabchange",function(a,Z){if(Z.finishedLoading&&Z.id.indexOf("mozilla/")==0){T.selectPath(O(Z.id))}D.setIconClass(Z.iconCls);D.setText(Z.id)});var I=new Ext.menu.Menu({items:[{text:"Copy File URL to clipboard",iconCls:"icon-copy",listeners:{click:function(){var Z=location.href.indexOf("?");var a=(Z>-1)?location.href.slice(0,Z-1):location.href}}}]});var T=new Ext.tree.TreePanel({fitToFrame:true,title:"Source Code",split:true,width:250,minSize:175,maxSize:500,collapsible:true,margins:"0 0 0 0",id:"sourceTree",region:"west",animate:false,autoScroll:true,loader:new Ext.tree.TreeLoader({dataUrl:"json.cgi"}),enableDD:false,containerScroll:true,stateEvents:["expand","collapse","resize"],getState:function(){return{collapsed:this.collapsed,height:this.height}},stateful:true,pathSeparator:";"});new Ext.tree.TreeSorter(T,{folderSort:true});var X=new Ext.tree.AsyncTreeNode({text:"mozilla",draggable:false,id:"mozilla"});T.setRootNode(X);T.on("click",function(Z,a){if(Z.isLeaf()){a.stopEvent();V(N,Z.attributes.href,Z.text,Z.id,C(Z.id.substring(Z.id.lastIndexOf("/")+1)),true)}});T.on("contextmenu",function(Z,a){if(Z.isLeaf()){a.stopEvent();I.filePath=Z.id;I.show(Z.ui.getAnchor())}},this);var B=new Ext.form.ComboBox({id:"search-types",width:120,editable:false,lazyInit:false,triggerAction:"all",store:new Ext.data.SimpleStore({fields:["Type","Value"],data:[["Text Search","text"],["File Search","file"],["Identifier Search","ident"],["Type Search","type"]]}),displayField:"Type",valueField:"Value",typeAhead:true,mode:"local",value:"text",stateEvents:["select"],getState:function(){return{value:this.value}},stateful:true});var H=new Ext.form.TriggerField({width:200,selectOnFocus:true,hideTrigger:true,onTriggerClick:function(){var Z=Q(this.getValue(),Ext.getCmp("search-types").value);V(G,Z.text,Z.title,Z.id,Z.iconCls,false)}});var Q=function(b,a){var Z={};switch(a){case"text":Z.id="search="+b;Z.text="search.cgi?string="+b;Z.title="Text - "+b;Z.iconCls="icon-ref";if(Ext.getCmp("opt-case").checked){Z.text+="&case=on";Z.title+=" (Case)";Z.id+="&case=on"}if(Ext.getCmp("opt-regex").checked){Z.text+="&regexp=on";Z.title+=" (Regex)";Z.id+="&regexp=on"}break;case"file":Z.id="files="+b;Z.text="find.cgi?string="+b;Z.title="Files - "+b;Z.iconCls="icon-files";break;case"ident":Z.id="ident="+b;Z.text="ident.cgi?i="+b;Z.title="Identifier - "+b;Z.iconCls="icon-ident";break;case"type":Z.id="gettype="+b;Z.text="gettypes.cgi?tname="+b;Z.title="Type - "+b;Z.iconCls="icon-type";break}return Z};H.on("specialkey",function(Z,a){if(a.getKey()==a.ENTER){H.onTriggerClick()}},this);var D=new Ext.Toolbar.Button({text:"Mozilla Platform",iconCls:"icon-file",menu:{items:[{text:"Mozilla Platform",iconCls:"icon-file",handler:R}]}});function R(a){var Z=N.getComponent(a.text);N.setActiveTab(Z);D.setIconClass(a.iconCls);D.setText(a.text)}var U=new Ext.Panel({border:false,layout:"anchor",region:"north",cls:"header",height:80,items:[{xtype:"box",el:"header",border:false,anchor:"none -25"},new Ext.Toolbar({cls:"top-toolbar",items:[D,"->"," ",new Ext.form.Checkbox({id:"opt-case",boxLabel:"Match case",checked:false,stateEvents:["check"],getState:function(){return{checked:this.checked}},stateful:true})," "," "," ",new Ext.form.Checkbox({id:"opt-regex",boxLabel:"Regular Expression",checked:false,stateEvents:["check"],getState:function(){return{checked:this.checked}},stateful:true})," "," "," ",B," ",H," ",{text:"Search",handler:function(Z){H.onTriggerClick()}}]})]});var W=new Ext.Viewport({layout:"border",items:[U,T,N,G]});Ext.getTypes=function(Z){if(Z=="Cairo"||Z=="NSPR"||Z=="SQLite"){V(G,"notindexed.html",Z,Z,"icon-error",false)}else{V(G,"gettypes.cgi?tmodule="+Z,Z,Z,"icon-dehydra",false)}};var A=Ext.urlDecode(window.location.search.substring(1));var M;if(A.q){var L;switch(A.qt){case"i":L="ident";break;case"f":L="file";break;case"t":default:L="text";break}M=Q(A.q,L)}else{if(A.s){if(A.l){A.s+="#"+A.l}T.loader.on("load",function(Z){F(Z)}.createDelegate(this,[A.s]),this,{single:true})}}if(M){V(G,M.text,M.title,M.id,M.iconCls,false)}T.render();X.expand(false,false)});
