5 var i = varName.lastIndexOf(
'/');
6 var n = i>=0 ? varName.substring(i+1) : varName;
7 return eval(n.replace(/\-/g,
'_'));
12 return uri.substring(uri.lastIndexOf(
'/')+1);
17 var i = uri.lastIndexOf(
'/');
18 var s = uri.substring(i+1);
19 var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/);
20 return m ? uri.substring(i-6) : s;
25 return $(location).attr(
'hash').substring(1).replace(/[^\w\-]/g,
'');
35 return $(location).attr(
'pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g,
'');
41 return 'localStorage' in window && window[
'localStorage'] !== null && window.localStorage.getItem;
52 window.localStorage.setItem(
'navpath',link);
59 window.localStorage.setItem(
'navpath',
'');
66 return window.localStorage.getItem(
'navpath');
74 var head = document.getElementsByTagName(
"head")[0];
75 var script = document.createElement(
'script');
76 script.id = scriptName;
77 script.type =
'text/javascript';
79 script.src = scriptName+
'.js';
80 if ($.browser.msie && $.browser.version<=8) {
82 script.onreadystatechange =
function() {
83 if (script.readyState==
'complete' || script.readyState==
'loaded') {
88 head.appendChild(script);
95 while (n.parentNode) { level++; n=n.parentNode; }
96 if (node.childrenData) {
97 var imgNode = document.createElement(
"img");
98 imgNode.style.paddingLeft=(16*level).toString()+
'px';
102 node.plus_img = imgNode;
103 node.expandToggle = document.createElement(
"a");
104 node.expandToggle.href =
"javascript:void(0)";
105 node.expandToggle.onclick =
function() {
107 $(node.getChildrenUL()).slideUp(
"fast");
108 node.plus_img.src = node.relpath+
"arrowright.png";
109 node.expanded =
false;
114 node.expandToggle.appendChild(imgNode);
115 domNode.appendChild(node.expandToggle);
116 imgNode.src = node.relpath+
"arrowright.png";
118 var span = document.createElement(
"span");
119 span.style.display =
'inline-block';
120 span.style.width = 16*(level+1)+
'px';
121 span.style.height =
'22px';
122 span.innerHTML =
' ';
123 domNode.appendChild(span);
131 var pos, docContent = $(
'#doc-content');
132 var ancParent = $(anchor.parent());
133 if (ancParent.hasClass(
'memItemLeft') ||
134 ancParent.hasClass(
'fieldname') ||
135 ancParent.hasClass(
'fieldtype') ||
136 ancParent.is(
':header'))
138 pos = ancParent.position().top;
139 }
else if (anchor.position()) {
140 pos = anchor.position().top;
143 var dist = Math.abs(Math.min(
144 pos-docContent.offset().top,
145 docContent[0].scrollHeight-
146 docContent.height()-docContent.scrollTop()));
149 scrollTop: pos + docContent.scrollTop() - docContent.offset().top
150 },Math.max(50,Math.min(500,dist)),
function(){
151 if (updateLocation) window.location.href=aname;
157 function newNode(o, po, text, link, childrenData, lastNode)
159 var node =
new Object();
160 node.children = Array();
161 node.childrenData = childrenData;
162 node.depth = po.depth + 1;
163 node.relpath = po.relpath;
164 node.isLast = lastNode;
166 node.li = document.createElement(
"li");
167 po.getChildrenUL().appendChild(node.li);
168 node.parentNode = po;
170 node.itemDiv = document.createElement(
"div");
171 node.itemDiv.className =
"item";
173 node.labelSpan = document.createElement(
"span");
174 node.labelSpan.className =
"label";
177 node.itemDiv.appendChild(node.labelSpan);
178 node.li.appendChild(node.itemDiv);
180 var a = document.createElement(
"a");
181 node.labelSpan.appendChild(a);
182 node.label = document.createTextNode(text);
183 node.expanded =
false;
184 a.appendChild(node.label);
187 if (link.substring(0,1)==
'^') {
188 url = link.substring(1);
191 url = node.relpath+link;
193 a.className =
stripPath(link.replace(
'#',
':'));
194 if (link.indexOf(
'#')!=-1) {
195 var aname =
'#'+link.split(
'#')[1];
197 var targetPage =
stripPath(link.split(
'#')[0]);
198 a.href = srcPage!=targetPage ? url :
"javascript:void(0)";
199 a.onclick =
function(){
201 if (!$(a).parent().parent().hasClass(
'selected'))
203 $(
'.item').removeClass(
'selected');
204 $(
'.item').removeAttr(
'id');
205 $(a).parent().parent().addClass(
'selected');
206 $(a).parent().parent().attr(
'id',
'selected');
208 var anchor = $(aname);
213 a.onclick =
function() {
storeLink(link); }
216 if (childrenData != null)
218 a.className =
"nolink";
219 a.href =
"javascript:void(0)";
220 a.onclick = node.expandToggle.onclick;
224 node.childrenUL = null;
225 node.getChildrenUL =
function() {
226 if (!node.childrenUL) {
227 node.childrenUL = document.createElement(
"ul");
228 node.childrenUL.className =
"children_ul";
229 node.childrenUL.style.display =
"none";
230 node.li.appendChild(node.childrenUL);
232 return node.childrenUL;
240 var headerHeight = $(
"#top").height();
241 var footerHeight = $(
"#nav-path").height();
242 var
windowHeight = $(window).height() - headerHeight - footerHeight;
246 navtree.scrollTo(
'#selected',0,{offset:-windowHeight/2});
248 setTimeout(arguments.callee, 0);
255 if (node.childrenData && !node.expanded) {
256 if (typeof(node.childrenData)===
'string') {
257 var varName = node.childrenData;
258 getScript(node.relpath+varName,
function(){
259 node.childrenData = getData(varName);
260 expandNode(o, node, imm, showRoot);
263 if (!node.childrenVisited) {
265 }
if (imm || ($.browser.msie && $.browser.version>8)) {
267 $(node.getChildrenUL()).
show();
269 $(node.getChildrenUL()).slideDown(
"fast");
272 node.plus_img.src = node.relpath+
"arrowdown.png";
274 node.plus_img.src = node.relpath+
"arrowdown.png";
276 node.expanded =
true;
283 n.addClass(
'glow').delay(duration).queue(
function(next){
284 $(
this).removeClass(
'glow');next();
291 var anchor = $(aname);
292 if (anchor.parent().attr(
'class')==
'memItemLeft'){
293 var rows = $(
'.memberdecls tr[class$="'+
hashValue()+
'"]');
295 }
else if (anchor.parent().attr(
'class')==
'fieldname'){
297 }
else if (anchor.parent().attr(
'class')==
'fieldtype'){
299 }
else if (anchor.parent().is(
":header")) {
312 a=$(
'.item a[class$="'+link+
'"]');
315 a.parent().parent().addClass(
'selected');
316 a.parent().parent().attr(
'id',
'selected');
319 $(n.itemDiv).addClass(
'selected');
320 $(n.itemDiv).attr(
'id',
'selected');
322 if ($(
'#nav-tree-contents .item:first').hasClass(
'selected')) {
323 $(
'#nav-sync').
css(
'top',
'30px');
325 $(
'#nav-sync').
css(
'top',
'5px');
332 if (node && node.childrenData) {
333 if (typeof(node.childrenData)===
'string') {
334 var varName = node.childrenData;
335 getScript(node.relpath+varName,
function(){
336 node.childrenData = getData(varName);
337 showNode(o,node,index,hash);
340 if (!node.childrenVisited) {
343 $(node.getChildrenUL()).
css({
'display':
'block'});
344 node.plus_img.src = node.relpath+
"arrowdown.png";
345 node.expanded =
true;
346 var n = node.children[o.breadcrumbs[index]];
347 if (index+1<o.breadcrumbs.length) {
350 if (typeof(n.childrenData)===
'string') {
351 var varName = n.childrenData;
353 n.childrenData = getData(varName);
355 showNode(o,node,index,hash);
358 var rootBase =
stripPath(o.toroot.replace(/\..+$/,
''));
359 if (rootBase==
"index" || rootBase==
"pages" || rootBase==
"search") {
372 var parentNode = element.parentNode;
373 var nextSibling = element.nextSibling;
374 parentNode.removeChild(element);
377 parentNode.insertBefore(element, nextSibling);
379 parentNode.appendChild(element);
387 po.childrenVisited =
true;
388 var l = po.childrenData.length-1;
389 for (var i in po.childrenData) {
390 var nodeData = po.childrenData[i];
391 po.children[i] =
newNode(o, po, nodeData[0], nodeData[1], nodeData[2],
401 if (!o.breadcrumbs && root!=
NAVTREE[0][1]) {
403 $(
'.item').removeClass(
'selected');
404 $(
'.item').removeAttr(
'id');
407 o.breadcrumbs.unshift(0);
416 var parts = link.split(
'#');
418 if (parts.length>1) hash =
'#'+parts[1].replace(/[^\w\-]/g,
'');
421 if (hash.match(/^#l\d+$/)) {
422 var anchor=$(
'a[name='+hash.substring(1)+
']');
433 getScript(relpath+
'navtreeindex'+i,
function(){
444 n.html(
'<img src="'+relpath+
'sync_off.png" title="'+
SYNCOFFMSG+
'"/>');
449 n.html(
'<img src="'+relpath+
'sync_on.png" title="'+
SYNCONMSG+
'"/>');
454 var navSync = $(
'#nav-sync');
455 if (navSync.hasClass(
'sync')) {
456 navSync.removeClass(
'sync');
460 navSync.addClass(
'sync');
468 var o =
new Object();
470 o.node =
new Object();
471 o.node.li = document.getElementById(
"nav-tree-contents");
473 o.node.children =
new Array();
474 o.node.childrenUL = document.createElement(
"ul");
475 o.node.getChildrenUL =
function() {
return o.node.childrenUL; };
476 o.node.li.appendChild(o.node.childrenUL);
478 o.node.relpath = relpath;
479 o.node.expanded =
false;
480 o.node.isLast =
true;
481 o.node.plus_img = document.createElement(
"img");
482 o.node.plus_img.src = relpath+
"arrowright.png";
483 o.node.plus_img.width = 16;
484 o.node.plus_img.height = 22;
487 var navSync = $(
'#nav-sync');
490 navSync.removeClass(
'sync');
497 $(window).load(
function(){
502 $(window).bind(
'hashchange',
function(){
503 if (window.location.hash && window.location.hash.length>1){
505 if ($(location).attr(
'hash')){
507 a=$(
'.item a[class$="'+clslink.replace(/</g,
'\\3c ')+
'"]');
509 if (a==null || !$(a).parent().parent().hasClass(
'selected')){
510 $(
'.item').removeClass(
'selected');
511 $(
'.item').removeAttr(
'id');
516 $(
'#doc-content').scrollTop(0);
517 $(
'.item').removeClass(
'selected');
518 $(
'.item').removeAttr(
'id');
function navTo(o, root, hash, relpath)
function showNode(o, node, index, hash)
function gotoNode(o, subIndex, root, hash, relpath)
function removeToInsertLater(element)
function showSyncOn(n, relpath)
function newNode(o, po, text, link, childrenData, lastNode)
function highlightAnchor()
function createIndent(o, domNode, node, level)
function expandNode(o, node, imm, showRoot)
function localStorageSupported()
function toggleSyncButton(relpath)
function gotoAnchor(anchor, aname, updateLocation)
function getScript(scriptName, func, show)
function showSyncOff(n, relpath)
function getData(varName)
function glowEffect(n, duration)
function selectAndHighlight(hash, n)
function initNavTree(toroot, relpath)