cmarrin | 7210944 | 2009-12-09 19:24:49 +0000 | [diff] [blame] | 1 | function 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_google | 8a0a941 | 2010-05-17 19:04:01 +0000 | [diff] [blame^] | 21 | // Strip off names specified via <a name="...></a> |
| 22 | var tocText = text.replace(/(.*)\<a name=[\'\"].*[\'\"]>(.*)\<\/a\>(.*)/g, "$1$2$3"); |
| 23 | tocString.s += "<li class='toc-h"+hlevel+"'><a href='#"+sectionString+"'><span class='secno'>"+sectionString+"</span>"+tocText+"</a></li>\n"; |
cmarrin | 7210944 | 2009-12-09 19:24:49 +0000 | [diff] [blame] | 24 | |
| 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 | |
| 37 | function 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; |
| 43 | } |