92 lines
2.4 KiB
HTML
92 lines
2.4 KiB
HTML
<div id=footer>
|
|
<!--#include virtual="_navline.html" -->
|
|
</div>
|
|
|
|
<script>
|
|
function buildTocHelper(node, headers) {
|
|
if (node.nodeType == 1) {
|
|
// Element node.
|
|
var nodeName = node.nodeName.toLowerCase();
|
|
if (nodeName == "h2" || nodeName == "h3" || nodeName == "h4" ||
|
|
nodeName == "h5" || nodeName == "h6") {
|
|
if (node.id) {
|
|
headers.push([nodeName, node.innerHTML, node.id]);
|
|
node.appendChild(document.createTextNode("\u00A0")); // nbsp
|
|
var a = document.createElement("a");
|
|
a.class = "header-link";
|
|
a.href = "#" + node.id;
|
|
a.textContent = "\uD83D\uDD17"; // link symbol
|
|
node.appendChild(a);
|
|
}
|
|
} else {
|
|
for (var i = 0; i < node.childNodes.length; i++) {
|
|
buildTocHelper(node.childNodes[i], headers);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function buildToc() {
|
|
var headers = [];
|
|
buildTocHelper(document.body, headers);
|
|
if (headers.length == 0) {
|
|
return;
|
|
}
|
|
|
|
var toc = document.getElementById("toc");
|
|
var tocContents = document.createElement("div");
|
|
tocContents.id = "toc-contents";
|
|
tocContents.textContent = "Contents";
|
|
toc.appendChild(tocContents);
|
|
|
|
var level = 1;
|
|
var currentUl = null;
|
|
for (var i = 0; i < headers.length; i++) {
|
|
var header = headers[i];
|
|
var headerLevel = header[0];
|
|
var headerValue = header[1];
|
|
var headerId = header[2];
|
|
|
|
var newLevel = parseInt(headerLevel.substring(1));
|
|
while (newLevel > level) {
|
|
// We loop here to handle the case where we have h2 ... h4. This
|
|
// isn't a good way to write html, but someone may still do it.
|
|
|
|
var newUl = document.createElement("ul");
|
|
if (currentUl == null) {
|
|
toc.appendChild(newUl);
|
|
} else {
|
|
currentUl.appendChild(newUl);
|
|
}
|
|
currentUl = newUl;
|
|
level++;
|
|
}
|
|
while (newLevel < level) {
|
|
currentUl = currentUl.parentNode;
|
|
level--;
|
|
}
|
|
var li = document.createElement("li");
|
|
var a = document.createElement("a");
|
|
a.href = "#" + headerId;
|
|
a.textContent = headerValue;
|
|
li.appendChild(a);
|
|
currentUl.appendChild(li);
|
|
}
|
|
}
|
|
|
|
function wrapTables() {
|
|
var tables = document.getElementsByTagName("table");
|
|
for (var i = 0; i < tables.length; i++) {
|
|
var table = tables[i];
|
|
var parent = table.parentNode;
|
|
var div = document.createElement('div');
|
|
div.className = "table-wrapper";
|
|
parent.insertBefore(div, table);
|
|
div.appendChild(table);
|
|
}
|
|
}
|
|
|
|
buildToc();
|
|
wrapTables();
|
|
</script>
|