User:Ucucha/collapse.js

 var autoCollapse = 2;var collapseCaption = "hide";var expandCaption = "show";function collapseRow( rowIndex ){    var Button = document.getElementById( "id-row-collapsebutton" + rowIndex );    var Row = document.getElementById( "id-row-collapsible" + rowIndex );    if ( !Row || !Button ) {        return false;    }    if ( Button.firstChild.data == collapseCaption ) {        Row.style.display = "none";        Button.firstChild.data = expandCaption;    } else {        Row.style.display = "table-row";        Button.firstChild.data = collapseCaption;    }}function createCollapseButtons(){    var rowIndex = 0;    var Collbuttons = new Object();    var Collrows = new Object();    var Rows = document.getElementsByTagName( "tr" );    for ( var i = 0; i < Rows.length; i++ ) {        if ( hasClass( Rows[i], "row-collapsebutton" ) ) {            /* only add button and increment count if there is a header row to work with */            var Collbutton = Rows[i];            var Header = Collbutton.getElementsByTagName( "th" )[0];            if (!Header) continue;            Collbuttons[ rowIndex ] = Collbutton;            /* get accompanying row to be collapsed */            for ( ; i < Rows.length ; i++ ) {                if ( hasClass( Rows[i], "row-collapsible" ) ) {                    var Collrow = Rows[i];                    break;                }            }            if (!Collrow) break;                       Collrows[ rowIndex ] = Collrow;                       Collrow.setAttribute( "id", "id-row-collapsible" + rowIndex );            /* create hide/show button */            var Button     = document.createElement( "span" );            var ButtonLink = document.createElement( "a" );            var ButtonText = document.createTextNode( collapseCaption );            Button.className = "collapseButton";  //Styles are declared in Common.css            ButtonLink.style.color = Header.style.color;            ButtonLink.setAttribute( "id", "id-row-collapsebutton" + rowIndex );            ButtonLink.setAttribute( "href", "#" );            addHandler( ButtonLink,  "click", new Function( "evt", "collapseRow(" + rowIndex + " ); return killEvt( evt );") );            ButtonLink.appendChild( ButtonText );            Button.appendChild( document.createTextNode( "[" ) );            Button.appendChild( ButtonLink );            Button.appendChild( document.createTextNode( "]" ) );            Header.insertBefore( Button, Header.childNodes[0] );            rowIndex++;        }    }    for ( var i = 0;  i < rowIndex; i++ ) {        if ( hasClass( Collrows[i], "collapsed" ) ) {            collapseRow( i );        }    }}addOnloadHook( createCollapseButtons );