MediaWiki:Common.js

From Moonlight Design
Revision as of 16:35, 30 April 2011 by Stevenlawrance (talk | contribs)
Jump to navigation Jump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
/* Any JavaScript here will be loaded for all users on every page load. */

// Highlight every other line in the software tables
var orig_onload = window.onload;
window.onload = function(e) {
    if (orig_onload != null) {
        orig_onload(e);
    }
    var tables = document.getElementsByTagName("table");
    var rows;
    for (var t = 0; t < tables.length; t++) {
        if (tables[t].className.indexOf("software") >= 0 && tables[t].rows && tables[t].rows.length > 1) {
            grayRows(tables[t]);

            // Give the third-to-last cell a width of 15em (CSS lets us do this, but, sadly, browsers don't implement nth-child)
            // and the second-to-last cell a width of 6em
            rows = tables[t].rows;
            for (var r = 0; r < rows.length; r++) {
                if (rows[r].lastChild && rows[r].lastChild.previousSibling) {
                    var secondToLast = rows[r].lastChild.previousSibling;
                    secondToLast.style.width = "6em";
                    if (secondToLast.tagName.toLowerCase() == "td") {
                        secondToLast.style.textAlign = "right";
                    }
                    if (secondToLast.previousSibling) {
                        secondToLast.previousSibling.style.width = "15em";
                    }
                }
            }
        }
    }
}

function grayRows(table) {
    var rows = table.rows;
    for (var r = 0; r < rows.length; r++) {
        if (r % 2 == 1) {
            rows[r].className = "grayrow";
        } else {
            rows[r].className = "";
        }
    }
}

var orig_ts_resortTable = ts_resortTable;
ts_resortTable = function(evt) {
    orig_ts_resortTable(evt);

    // Find the table
    var table = evt;
    while (table && table.tagName.toLowerCase() != "table") {
        table = table.parentNode;
    }
    if (table && (table.className.indexOf("software") >= 0)) {
        grayRows(table);
    }
}