Difference between revisions of "MediaWiki:Collapsible.js"

m (Created page with '* * Code for collapsible tables.: var CollapseButton = Class.extend({ init: function(table, header) { var spacer = document.createElement('div'); spacer…')
 
m
Line 39: Line 39:
 
     }
 
     }
 
});
 
});
 
function createCollapseButtons() {
 
    var tables = getElementsByClassName(document, 'table', 'collapsible');
 
 
    for (var i = 0; i < tables.length; i++) {
 
        var headerRow = tables[i].getElementsByTagName('tr')[0];
 
        if (headerRow) {
 
            var header = headerRow.getElementsByTagName('th')[0];
 
            if (header) {
 
                new CollapseButton(tables[i], header);
 
            }
 
        }
 
    }
 
}
 
addOnloadHook(createCollapseButtons);
 

Revision as of 13:11, 29 April 2010

/**
 * Code for collapsible tables.
 */
var CollapseButton = Class.extend({
    init: function(table, header) {
        var spacer = document.createElement('div');
        spacer.style.cssFloat = 'left';
        spacer.style.styleFloat = 'left';
        spacer.style.textAlign = 'left';
        spacer.style.width = '35px';
        spacer.appendChild(document.createTextNode('\u00a0'));
        header.insertBefore(spacer, header.childNodes[0]);

        var button = document.createElement('div');
        button.style.cssFloat = 'right';
        button.style.styleFloat = 'right';
        button.style.fontSize = '11px';
        button.style.fontWeight = 'normal';
        button.style.textAlign = 'right';
        button.style.width = '35px';
        button.onclick = function() {
            if (this.firstChild.data == '[hide]') {
                for (var i = 1; i < table.rows.length; i++) {
                    table.rows[i].style.display = 'none';
                }
                this.firstChild.data = '[show]';
            } else {
                for (var i = 1; i < table.rows.length; i++) {
                    table.rows[i].style.display = table.rows[0].style.display;
                }
                this.firstChild.data = '[hide]';
            }
        };
        button.onmouseover = function() {
            this.style.cursor = 'pointer';
        };
        button.appendChild(document.createTextNode('[hide]'));
        header.insertBefore(button, header.childNodes[0]);
    }
});