117 lines
2.8 KiB
JavaScript
117 lines
2.8 KiB
JavaScript
|
|
|
|
function populate_toc () {
|
|
var children = document.getElementsByTagName("h1").item(0).parentNode.childNodes
|
|
var toc = ""
|
|
|
|
var counters = new Array()
|
|
counters[1] = 0
|
|
counters[2] = 0
|
|
counters[3] = 0
|
|
counters[4] = 0
|
|
|
|
/* Generate the table of contents */
|
|
for(var ii=0; ii<children.length; ii++){
|
|
var node = children.item(ii)
|
|
var iHeader = -1
|
|
if( node.tagName == "H1" ){ iHeader = 1 }
|
|
if( node.tagName == "H2" ){ iHeader = 2 }
|
|
if( node.tagName == "H3" ){ iHeader = 3 }
|
|
if( node.tagName == "H4" ){ iHeader = 4 }
|
|
|
|
if( iHeader>0 ){
|
|
var anchor = "tocentry_" + ii
|
|
|
|
for(var jj=iHeader+1; jj<=4; jj++){ counters[jj] = 0 }
|
|
counters[iHeader]++
|
|
|
|
var number = ""
|
|
for(var jj=1; jj<=iHeader; jj++){ number += counters[jj] + "." }
|
|
|
|
toc += '<div style="margin-left:' + (iHeader*6) + 'ex">'
|
|
toc += '<a href="#' + anchor + '">' + number + " " + node.innerHTML
|
|
toc += "</a></div>"
|
|
|
|
var a = '<a style="color:inherit" name="' + anchor + '">' + number + '</a>'
|
|
node.innerHTML = a + " " + node.innerHTML
|
|
}
|
|
}
|
|
document.getElementById("toc").innerHTML = toc
|
|
}
|
|
|
|
function number_figs () {
|
|
/* Number the figures in this document */
|
|
var figcounter = 1
|
|
var spans = document.getElementsByTagName("span")
|
|
for(var ii=0; ii<spans.length; ii++){
|
|
var s = spans.item(ii)
|
|
if( s.className=="fig" ){
|
|
s.innerHTML = figcounter
|
|
figcounter++
|
|
}
|
|
}
|
|
}
|
|
|
|
function populate_refs () {
|
|
/* Fix up <cite> references */
|
|
var cites = document.getElementsByTagName("cite")
|
|
for(var ii=0; ii<cites.length; ii++){
|
|
var t = cites.item(ii).innerHTML
|
|
var h = document.getElementById(t)
|
|
|
|
if( !h ){
|
|
alert("Bad reference: " + t)
|
|
continue
|
|
}
|
|
|
|
var label
|
|
if( h.tagName=="H1" || h.tagName=="H2"
|
|
|| h.tagName=="H3" || h.tagName=="H4"
|
|
){
|
|
label = h.firstChild.firstChild.data
|
|
label = label.substring(0, label.length-1)
|
|
} else {
|
|
label = h.firstChild.data
|
|
}
|
|
|
|
cites.item(ii).innerHTML = '<a href="#' + t + '">' + label + '</a>'
|
|
}
|
|
}
|
|
|
|
function decorate_tables () {
|
|
/* Decorate tables */
|
|
var tables = document.getElementsByTagName("table")
|
|
for(var ii=0; ii<tables.length; ii++){
|
|
var t = tables.item(ii)
|
|
if( t.className!="striped" ) continue
|
|
var rows = t.rows
|
|
for(var jj=1; jj<rows.length; jj += 2){
|
|
rows.item(jj).style.backgroundColor = '#DDDDDD'
|
|
}
|
|
}
|
|
}
|
|
|
|
function check_for_duplicates () {
|
|
var aReq = new Array();
|
|
var ps = document.getElementsByTagName("p")
|
|
|
|
for(var ii=0; ii<ps.length; ii++){
|
|
var p = ps.item(ii)
|
|
if( p.className!="req" || !p.id ) continue;
|
|
|
|
if( aReq[p.id] ){
|
|
alert("Duplicate requirement number: " + p.id)
|
|
}
|
|
aReq[p.id] = 1;
|
|
}
|
|
}
|
|
|
|
onload = function () {
|
|
number_figs()
|
|
populate_toc()
|
|
populate_refs()
|
|
decorate_tables()
|
|
check_for_duplicates()
|
|
}
|
|
|