MediaWiki:Common.js

From MikroTik Wiki
Jump to: navigation, search
/* 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>*/