From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.

// <pre><nowiki>



/////////////////////////////////////////////////////////////////////////////////////////////////////////

// From http://en.wikipedia.org/wiki/Wikipedia:WikiProject_User_scripts/Scripts/Fix_diff_width

/////////////////////////////////////////////////////////////////////////////////////////////////////////



// inline style sheet to keep this whole thing self-contained:

document.write('<style type="text/css">' +

    ' .xdiff { width: 100%; background: white; }' +

    ' .xdiff-row { width: 100%; margin: 0 0 3px 0; overflow: hidden; }' +

    ' .xdiff-col { width: 49%; margin: 0; float: left; clear: none; position: relative; }' +

    ' .xdiff-sign, .xdiff-outer, .xdiff-inner { display: block; margin: 0; }' +

    ' .xdiff-sign { position: absolute; top: 0; left: 0; width: 2em; text-align: center; }' +

    ' .xdiff-outer { padding: 0 0 0 2em; }' +

    ' .xdiff-inner { overflow: auto; overflow-y: visible; width: 100%; }' +

    ' .xdiff-inner.diff-addedline { font-size: 85%; background: #cfc; }' +

    ' .xdiff-inner.diff-deletedline { font-size: 85%; background: #ffa; }' +

    ' .xdiff-inner.diff-context { font-size: 85%; background: #eee; }' +

    (!document.recalc ? '' :  // IE kluge:

        ' * html .xdiff-inner { padding-bottom: expression(this.scrollWidth > this.offsetWidth ? "16px" : 0); }' +

        ' * html .xdiff-sign { top: expression((this.parentNode.clientHeight - this.offsetHeight)/2 + "px"); }') +

    '<'+'/style>');



if (false) addOnloadHook(function () { // OBSOLETE!!!

    var diffSigns = new Array();

    var fixDiffWidth = function () {

        var tables = document.getElementsByTagName('table');



        for (var i = 0; i < tables.length; i++) {

            if (tablesi].className != 'diff') continue;

            var rows = tablesi].getElementsByTagName('tr');



            var diffDiv = document.createElement('div');

            diffDiv.className = 'xdiff';



            for (var j = 0; j < rows.length; j++) {

                var rowDiv = document.createElement('div');

                rowDiv.className = 'xdiff-row';



                var colDiv = null;

                var cols = rowsj].getElementsByTagName('td');

                for (var k = 0; k < cols.length; k++) { 

                    if (!colDiv) {

                        colDiv = document.createElement('div');

                        colDiv.className = 'xdiff-col';

                        rowDiv.appendChild(colDiv);

                    }

                    if (colsk].getAttribute('colspan') == 2 || colsk].className.substring(0,5) == 'diff-') {                

                        // use spans instead of divs so that an eventual non-js solution will look nice in lynx!

                        var outerSpan = document.createElement('span');

                        var innerSpan = document.createElement('span');

                        outerSpan.className = 'xdiff-outer';

                        innerSpan.className = 'xdiff-inner ' + colsk].className;

                        innerSpan.style.textAlign = colsk].getAttribute('align');

                        for (var node = colsk].firstChild; node; node = node.nextSibling)

                            innerSpan.appendChild(node.cloneNode(true));

                        innerSpan.appendChild(document.createTextNode(String.fromCharCode(0xa0))); // add nbsp

                        outerSpan.appendChild(innerSpan);

                        colDiv.appendChild(outerSpan);

                        colDiv = null;  // start new column

                    }

                    else if (colsk].firstChild && (colsk].firstChild.nextSibling ||

                             colsk].firstChild.nodeType != 3 || colsk].firstChild.nodeValue.match(/\S/))) {

                        // use spans instead of divs so that an eventual non-js solution will look nice in lynx!

                        var signSpan = document.createElement('span');

                        signSpan.className = 'xdiff-sign';

                        if (!signSpan.style.setExpression)

                            diffSignsdiffSigns.length = signSpan;

                        for (var node = colsk].firstChild; node; node = node.nextSibling)

                            signSpan.appendChild(node.cloneNode(true));

                        colDiv.appendChild(signSpan);

                    }

                }

                diffDiv.appendChild(rowDiv);

            }

            tablesi].parentNode.replaceChild(diffDiv, tablesi]);

        }

    };

    // finally, a kluge to vertically center the +/- signs

    var centerDiffSigns = function () {

        for (var i = 0; i < diffSigns.length; i++) {

            var parentHeight;

            if (!( parentHeight = diffSignsi].parentNode )) continue; 

            if (!( parentHeight = parentHeight.clientHeight )) continue; 

            diffSignsi].style.top = ((parentHeight - diffSignsi].offsetHeight)/2) + "px";

        }

    };

    fixDiffWidth();

    if (diffSigns.length) {

        hookEvent('resize', centerDiffSigns);

        setTimeout(centerDiffSigns, 250); 

    }

});



// </nowiki></pre>