MediaWiki:Common.js
From MikroTik Wiki
/* Any JavaScript here will be loaded for all users on every page load. */
/*<pre>*/
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g,"");
}
var bLinkArray = new Array();
function parseVarTags() {
var variablesFound = 0;
var contentDiv = document.getElementById("bodyContent");
if (!contentDiv || !contentDiv.childNodes) return false;
// parse all bodyContent > ul > li > b
// assign ids to them, put them in a map
for (var i = 0; i < contentDiv.childNodes.length; ++i) {
var ul = contentDiv.childNodes[i];
if (ul && ul.tagName && ul.tagName.toLowerCase() == "ul") {
for (var j = 0; j < ul.childNodes.length; ++j) {
var li = ul.childNodes[j];
if (li && li.tagName && li.tagName.toLowerCase() == "li") {
for (var k = 0; k < li.childNodes.length; ++k) {
var b = li.childNodes[k];
if (b && b.tagName) {
if (b.tagName.toLowerCase() == "b") {
b.id = "variableB" + (variablesFound++);
// only accept first b tag
var varName = b.innerHTML;
if (!bLinkArray[varName]) {
bLinkArray[varName] = b.id;
b.innerHTML += "<a name=\"" + varName + "\"></a>";
}
break;
} else {
break;
}
} else {
// if a text node located before li, discard
// all b nodes in this li
if (b.nodeValue) {
var l = b.nodeValue.trim().length;
if (l) break;
}
}
}
}
}
}
}
var i = 0;
for (attrs in bLinkArray) {
++i;
}
// for all the other b tags assign an url if they have a name
// in the b-link table
var bNodes = contentDiv.getElementsByTagName("b");
for (var i = 0; i < bNodes.length; ++i) {
var bNode = bNodes[i];
if (bNode && !bNode.id && bLinkArray[bNode.innerHTML]) {
var varName = bNode.innerHTML;
bNode.innerHTML = "<a href=\"#" + varName + "\">"+ varName + "</a>";
}
}
return true;
}
addOnloadHook(parseVarTags);
/*</pre>*/