Revert r56902 "(bug 18436) remove redundant (and disruptive to CSS) hardcoded "displa...
[lhc/web/wiklou.git] / skins / common / wikibits.js
index 03a7b03..06bbff3 100644 (file)
@@ -36,6 +36,7 @@ if (!window.onloadFuncts) {
        var onloadFuncts = [];
 }
 
+// code that is dependent on js2 functions should use js2AddOnloadHook
 function addOnloadHook(hookFunct) {
        // Allows add-on scripts to add onload functions
        if(!doneOnloadHook) {
@@ -45,6 +46,7 @@ function addOnloadHook(hookFunct) {
        }
 }
 
+
 function hookEvent(hookName, hookFunct) {
        addHandler(window, hookName, hookFunct);
 }
@@ -56,7 +58,7 @@ function importScript(page) {
                '&action=raw&ctype=text/javascript';
        return importScriptURI(uri);
 }
+
 var loadedScripts = {}; // included-scripts tracker
 function importScriptURI(url) {
        if (loadedScripts[url]) {
@@ -69,11 +71,11 @@ function importScriptURI(url) {
        document.getElementsByTagName('head')[0].appendChild(s);
        return s;
 }
+
 function importStylesheet(page) {
        return importStylesheetURI(wgScript + '?action=raw&ctype=text/css&title=' + encodeURIComponent(page.replace(/ /g,'_')));
 }
+
 function importStylesheetURI(url,media) {
        var l = document.createElement('link');
        l.type = 'text/css';
@@ -83,7 +85,7 @@ function importStylesheetURI(url,media) {
        document.getElementsByTagName('head')[0].appendChild(l);
        return l;
 }
+
 function appendCSS(text) {
        var s = document.createElement('style');
        s.type = 'text/css';
@@ -109,6 +111,7 @@ if (typeof stylepath != 'undefined' && typeof skin != 'undefined') {
        }
 }
 
+
 if (wgBreakFrames) {
        // Un-trap us from framesets
        if (window.top != window) {
@@ -160,6 +163,7 @@ function changeText(el, newText) {
 }
 
 function toggleToc() {
+       var tocmain = document.getElementById('toc');
        var toc = document.getElementById('toc').getElementsByTagName('ul')[0];
        var toggleLink = document.getElementById('togglelink');
 
@@ -167,10 +171,12 @@ function toggleToc() {
                changeText(toggleLink, tocHideText);
                toc.style.display = 'block';
                document.cookie = "hidetoc=0";
+               tocmain.className = 'toc';
        } else {
                changeText(toggleLink, tocShowText);
                toc.style.display = 'none';
                document.cookie = "hidetoc=1";
+               tocmain.className = 'toc tochidden';
        }
 }
 
@@ -225,10 +231,19 @@ var tooltipAccessKeyRegexp = /\[(ctrl-)?(alt-)?(shift-)?(esc-)?(.)\]$/;
  */
 function updateTooltipAccessKeys( nodeList ) {
        if ( !nodeList ) {
-               // skins without a "column-one" element don't seem to have links with accesskeys either
-               var columnOne = document.getElementById("column-one");
-               if ( columnOne )
-                       updateTooltipAccessKeys( columnOne.getElementsByTagName("a") );
+               // Rather than scan all links on the whole page, we can just scan these
+               // containers which contain the relevant links. This is really just an
+               // optimization technique.
+               var linkContainers = [
+                       "column-one", // Monobook and Modern
+                       "head", "panel", "p-logo" // Vector
+               ];
+               for ( var i in linkContainers ) {
+                       var linkContainer = document.getElementById( linkContainers[i] );
+                       if ( linkContainer ) {
+                               updateTooltipAccessKeys( linkContainer.getElementsByTagName("a") );
+                       }
+               }
                // these are rare enough that no such optimization is needed
                updateTooltipAccessKeys( document.getElementsByTagName("input") );
                updateTooltipAccessKeys( document.getElementsByTagName("label") );
@@ -275,13 +290,19 @@ function updateTooltipAccessKeys( nodeList ) {
  * @return Node -- the DOM node of the new item (an LI element) or null
  */
 function addPortletLink(portlet, href, text, id, tooltip, accesskey, nextnode) {
-       var node = document.getElementById(portlet);
-       if ( !node ) return null;
-       node = node.getElementsByTagName( "ul" )[0];
+       var root = document.getElementById(portlet);
+       if ( !root ) return null;
+       var node = root.getElementsByTagName( "ul" )[0];
        if ( !node ) return null;
 
+       // unhide portlet if it was hidden before
+       root.className = root.className.replace( /(^| )emptyPortlet( |$)/, "$2" );
+
+       var span = document.createElement( "span" );
+       span.appendChild( document.createTextNode( text ) );
+
        var link = document.createElement( "a" );
-       link.appendChild( document.createTextNode( text ) );
+       link.appendChild( span );
        link.href = href;
 
        var item = document.createElement( "li" );
@@ -449,11 +470,26 @@ function checkboxClickHandler(e) {
 }
 
 function toggle_element_activation(ida,idb) {
-       if (!document.getElementById) {
+       if ( !document.getElementById ) {
                return;
        }
-       document.getElementById(ida).disabled=true;
-       document.getElementById(idb).disabled=false;
+       // Show the appropriate upload size limit message
+       if( idb == 'wpUploadFileURL' ) {
+               var e = document.getElementById( 'mw-upload-maxfilesize' );
+               if( e ) e.style.display = "none";
+
+               var e = document.getElementById( 'mw-upload-maxfilesize-url' );
+               if( e ) e.style.display = "block";
+       }
+       if( idb == 'wpUploadFile' ) {
+               var e = document.getElementById( 'mw-upload-maxfilesize-url' );
+               if( e ) e.style.display =  "none";
+
+               var e = document.getElementById( 'mw-upload-maxfilesize' );
+               if( e ) e.style.display =  "block";
+       }
+       document.getElementById( ida ).disabled = true;
+       document.getElementById( idb ).disabled = false;
 }
 
 function toggle_element_check(ida,idb) {
@@ -659,8 +695,11 @@ function ts_resortTable(lnk) {
                var row = table.rows[j];
                if((" "+row.className+" ").indexOf(" unsortable ") < 0) {
                        var keyText = ts_getInnerText(row.cells[column]);
+                       if(keyText == undefined) {
+                               keyText = ""; 
+                       }
                        var oldIndex = (reverse ? -j : j);
-                       var preprocessed = preprocessor( keyText );
+                       var preprocessed = preprocessor( keyText.replace(/^[\s\xa0]+/, "").replace(/[\s\xa0]+$/, "") );
 
                        newRows[newRows.length] = new Array(row, preprocessed, oldIndex);
                } else staticRows[staticRows.length] = new Array(row, false, j-rowStart);
@@ -719,13 +758,13 @@ function ts_initTransformTable() {
                // Separators
                ascii = wgSeparatorTransformTable[0].split("\t");
                localised = wgSeparatorTransformTable[1].split("\t");
-               for ( var i = 0; i < ascii.length; i++ ) { 
+               for ( var i = 0; i < ascii.length; i++ ) {
                        ts_number_transform_table[localised[i]] = ascii[i];
                }
                // Digits
                ascii = wgDigitTransformTable[0].split("\t");
                localised = wgDigitTransformTable[1].split("\t");
-               for ( var i = 0; i < ascii.length; i++ ) { 
+               for ( var i = 0; i < ascii.length; i++ ) {
                        ts_number_transform_table[localised[i]] = ascii[i];
                }
 
@@ -734,7 +773,7 @@ function ts_initTransformTable() {
                maxDigitLength = 1;
                for ( var digit in ts_number_transform_table ) {
                        // Escape regex metacharacters
-                       digits.push( 
+                       digits.push(
                                digit.replace( /[\\\\$\*\+\?\.\(\)\|\{\}\[\]\-]/,
                                        function( s ) { return '\\' + s; } )
                        );
@@ -764,7 +803,7 @@ function ts_toLowerCase( s ) {
        return s.toLowerCase();
 }
 
-function ts_dateToSortKey(date) {      
+function ts_dateToSortKey(date) {
        // y2k notes: two digit years less than 50 are treated as 20XX, greater than 50 are treated as 19XX
        if (date.length == 11) {
                switch (date.substr(3,3).toLowerCase()) {
@@ -791,10 +830,10 @@ function ts_dateToSortKey(date) {
                }
        } else if (date.length == 8) {
                yr = date.substr(6,2);
-               if (parseInt(yr) < 50) { 
-                       yr = '20'+yr; 
-               } else { 
-                       yr = '19'+yr; 
+               if (parseInt(yr) < 50) {
+                       yr = '20'+yr;
+               } else {
+                       yr = '19'+yr;
                }
                if (ts_europeandate == true) {
                        return yr+date.substr(3,2)+date.substr(0,2);
@@ -811,7 +850,7 @@ function ts_parseFloat( s ) {
        }
        if (ts_number_transform_table != false) {
                var newNum = '', c;
-               
+
                for ( var p = 0; p < s.length; p++ ) {
                        c = s.charAt( p );
                        if (c in ts_number_transform_table) {
@@ -860,8 +899,8 @@ function ts_alternate(table) {
 /*
  * End of table sorting code
  */
+
+
 /**
  * Add a cute little box at the top of the screen to inform the user of
  * something, replacing any preexisting message.
@@ -905,7 +944,7 @@ function jsMsg( message, className ) {
        if( className ) {
                messageDiv.setAttribute( 'class', 'mw-js-message-'+className );
        }
-       
+
        if (typeof message === 'object') {
                while (messageDiv.hasChildNodes()) // Remove old content
                        messageDiv.removeChild(messageDiv.firstChild);