blob: fd5814b6aa104561e3ff3835ad605bbab03db575 [file] [log] [blame]
cmarrin72109442009-12-09 19:24:49 +00001function nextLevel(nodeList, startIndex, hlevel, prefix, tocString)
2{
3 var hIndex = 1;
4 var i = startIndex;
5
6 while (i < nodeList.length) {
7 var currentNode = nodeList[i];
8
9 if (currentNode.tagName != "H"+hlevel)
10 break;
11
12 if (currentNode.className == "no-toc") {
13 ++i;
14 continue;
15 }
16
17 var sectionString = prefix+hIndex;
18
19 // Update the TOC
20 var text = currentNode.innerHTML;
kbr_google61dfd042010-05-17 20:55:23 +000021 // Strip off names specified via <a name="..."></a>
22 var tocText = text.replace(/<a name=[\'\"][^\'\"]*[\'\"]>([^<]*)<\/a>/g, "$1");
kbr_google8a0a9412010-05-17 19:04:01 +000023 tocString.s += "<li class='toc-h"+hlevel+"'><a href='#"+sectionString+"'><span class='secno'>"+sectionString+"</span>"+tocText+"</a></li>\n";
cmarrin72109442009-12-09 19:24:49 +000024
25 // Modify the header
26 currentNode.innerHTML = "<span class=secno>"+sectionString+"</span> "+text;
27 currentNode.id = sectionString;
28
29 // traverse children
30 i = nextLevel(nodeList, i+1, hlevel+1, sectionString+".", tocString);
31 hIndex++;
32 }
33
34 return i;
35}
36
37function generateTOC(toc)
38{
39 var nodeList = $("h2,h3,h4,h5,h6");
40 var tocString = { s:"<ul class='toc'>\n" };
41 nextLevel(nodeList, 0, 2, "", tocString);
42 toc.innerHTML = tocString.s;
cmarrin3a525242010-09-07 16:54:49 +000043
44 // Now position the document, in case a #xxx directive was given
45 var id = window.location.hash.substring(1);
46 if (id.length > 0) {
47 var target = document.getElementById(id);
48 if (target) {
Steven Dwy5a782ca2022-02-24 23:47:21 -080049 target.scrollIntoView();
cmarrin3a525242010-09-07 16:54:49 +000050 }
51 }
cmarrin72109442009-12-09 19:24:49 +000052}