var Dom,JsTree=function(){var n={},t=!1,f=function(){var n=new Slate.Queue,i;if(t)n.initialize();else $("#tree").one("loaded.jstree",$.proxy(n.initialize,n));this.OpenNode=function(t){n.enqueue(function(n){$("#tree").jstree("open_node",t,n,!1)})},this.SelectNode=function(t){n.enqueue(function(n){$("#tree").jstree("select_node",t,!0),n()})},i=function(n){var t=$(window).scrollTop(),r=t+$(window).height(),i=$(n).offset().top,u=i+$(n).height();return t<i&&r>u},this.ScrollToNode=function(t){n.enqueue(function(n){i(t)||window.scrollTo(0,$(t).position().top-70),n()})}},r,u;return n.clicked=function(n){var i=$(n).data("jstree"),r=i.path,t=i.cite;return parent.doc.Doc?t?parent.doc.Doc.openCite(t):parent.doc.Doc.openPath(r):parent.doc.location=t?"/document/"+t:r,!1},n.init=function(){$("#tree").bind("select_node.jstree",function(n,t){var i=t.rslt.obj[0],r=t.args[2];r&&(JsTree.clicked(i),n.preventDefault())}).bind("loaded.jstree",function(){t=!0}),$("#tree").jstree({core:{animation:100},themes:{url:"/scripts/themes/default/style.css"},json_data:{ajax:{url:function(n){var t;return t=n==-1?"/":$(n).data("jstree").path,"/tree"+t},success:function(n){for(var u,i,r,t=0;t<n.length;t++)u=n[t].metadata.path,i=n[t].metadata.cite,r=i?"/document/"+i:u,n[t].data.attr||(n[t].data.attr={}),n[t].data.attr.href=r;return n}}},plugins:["json_data","themes","ui"]})},r=function(n){var u=n.split("_002f"),e=["i"],o,t,r=new f;for(i=1;i<u.length;i++)e.push(u[i]),t="#"+e.join("_002f"),r.OpenNode(t);t&&(r.SelectNode(t),r.ScrollToNode(t))},u=function(n){var u=function(n){var t=n.toString("16");return t.length<4&&(t=new Array(5-t.length).join("0")+t),t},r=[],t;for(r.push("i"),i=0;i<n.length;i++)t=n.charCodeAt(i),t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122||t==45?r.push(n.charAt(i)):r.push("_"+u(t));return r.join("")},n.openPath=function(n){n==""||n=="/"?$("#tree").jstree("deselect_all"):r(u(n))},n}(),Slate=Slate||{};Slate.Queue=function(){this._q=[],this._qRunning=!1,this._qInitialized=!1,this._qExecNext=function(){if(this._qInitialized){this._qRunning=!0;var n=this._q.shift();n?n($.proxy(this._qExecNext,this)):this._qRunning=!1}},this.initialize=function(){this._qInitialized||(this._qInitialized=!0,this._qExecNext())},this.enqueue=function(n){this._q.push(n),this._qRunning||this._qExecNext()}}