MediaWiki:Mobile.js

Da Cathopedia, l'enciclopedia cattolica.
Vai alla navigazione Vai alla ricerca

Nota: Dopo aver salvato le preferenze, perché i cambi abbiano effetto, devi bypassare la cache del tuo browser. Mozilla / Firefox / Safari: tieni premuto Shift mentre clicchi Reload, o premi Ctrl-Shift-R (Cmd-Shift-R per Apple Mac); Google Chrome: premi Ctrl o Shift mentre clicchi F5; IE: premi Ctrl mentre clicchi Refresh, o premi Ctrl-F5; Konqueror:: clicca semplicemente il pulsante di Reload, o premi F5; se usi Opera devi cancellare completamente la chache nel menu Tools→Preferences.

/* Il codice JavaScript inserito qui viene caricato da ciascuna pagina, per tutti gli utenti. */

/* <pre> */

//============================================================
// Menu caratteri speciali
// ---> non so perché, ma se si inserisce qualcosa prima non funziona più...
//============================================================

/**
 * Aggiunge il menu a tendina per selezionare un sottoinsieme di caratteri speciali
 * Attenzione:        l'ordine della lista deve corrispondere a quello di MediaWiki:Edittools !
 */
function aggiungiMenuSubsetCaratteri()
{
  var specialchars = document.getElementById('specialchars');

  if (specialchars) {
    var menu = "<select style=\"display:inline\" onChange=\"scegliSubsetCaratteri(selectedIndex)\">";
    menu += "<option>Latino esteso</option>";
    menu += "<option>Wiki</option>";
    menu += "<option>Greco antico</option>";
    menu += "<option>Greco moderno</option>";
    menu += "<option>Cirillico</option>";
    menu += "<option>Arabo</option>";
    menu += "<option>Ebraico e yiddish</option>";
    menu += "<option>Armeno</option>";
    menu += "<option>Geroglifico</option>";
    menu += "<option>Vietnamita</option>";
    menu += "<option>IPA</option>";
    menu += "<option>Matematica</option>";
    menu += "</select>";
    specialchars.innerHTML = menu + specialchars.innerHTML;

    /* default subset - try to use a cookie some day */
    scegliSubsetCaratteri(0);
  }
}

/* select subsection of special characters */
function scegliSubsetCaratteri(s)
{
  var l = document.getElementById('specialchars').getElementsByTagName('p');
  for (var i = 0; i < l.length ; i++) {
    l[i].style.display = i == s ? 'inline' : 'none';
    l[i].style.visibility = i == s ? 'visible' : 'hidden';
  }
}

addLoadEvent(aggiungiMenuSubsetCaratteri);

// END Menu caratteri speciali

// BEGIN Enable multiple onload functions

// setup onload functions this way:
// aOnloadFunctions[aOnloadFunctions.length] = function_name; // without brackets!

if (!window.aOnloadFunctions)
{
  var aOnloadFunctions = new Array();
}

window.onload = function()
{
  if (window.aOnloadFunctions) {
    for (var _i=0; _i<aOnloadFunctions.length; _i++) {
      aOnloadFunctions[_i]();
    }
  }
};

// END Enable multiple onload functions


function addLoadEvent(func) 
{
  if (window.addEventListener) 
    window.addEventListener("load", func, false);
  else if (window.attachEvent) 
    window.attachEvent("onload", func);
}

// Serve per far funzionare il Cassetto2 con IE6.
if (window.attachEvent && !window.XMLHttpRequest)
{
	window.attachEvent(
		"onload",
		function()
		{
			var x=document.getElementById("bodyContent").getElementsByTagName("div");
			for (var i=0; i<x.length; i++) {
					if (x[i].className != "HopFrame") continue;
					var y=x[i].getElementsByTagName("div"); var j;
					for (j=0; j<y.length; j++)
							if (y[j].className == "HopContent") {x[i].hopContent = y[j]; break;}
					if (j<y.length) {
							x[i].onmouseover=function() { this.hopContent.style.display="block"; };
							x[i].onmouseout=function() { this.hopContent.style.display="none"; };
					}
			}
		}
	);
}

// BEGIN Dynamic Navigation Bars


/* Test if an element has a certain class **************************************
 *
 * Description: Uses regular expressions and caching for better performance.
 * Maintainers: User:Mike Dillon, User:R. Koot, User:SG
 */

var hasClass = (function () {
    var reCache = {};
    return function (element, className) {
        return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
    };
})();


// set up the words in your language
var NavigationBarHide = '▲ nascondi';
var NavigationBarShow = '▼ espandi';

// set up max count of Navigation Bars on page,
// if there are more, all will be hidden
// NavigationBarShowDefault = 0; // all bars will be hidden
// NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden
var NavigationBarShowDefault = 0;


// shows and hides content and picture (if available) of navigation bars
// Parameters:
//     indexNavigationBar: the index of navigation bar to be toggled
function toggleNavigationBar(indexNavigationBar)
{
   var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
   var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);

   if (!NavFrame || !NavToggle) {
       return false;
   }

   // if shown now
   if (NavToggle.firstChild.data == NavigationBarHide) {
       for (
               var NavChild = NavFrame.firstChild;
               NavChild != null;
               NavChild = NavChild.nextSibling
           ) {
           if (hasClass(NavChild, 'NavPic')) {
               NavChild.style.display = 'none';
           }
           if (hasClass(NavChild, 'NavContent')) {
               NavChild.style.display = 'none';
           }
           if (hasClass(NavChild, 'NavToggle')) {
               NavChild.firstChild.data = NavigationBarShow;
           }
       }

   // if hidden now
   } else if (NavToggle.firstChild.data == NavigationBarShow) {
       for (
               var NavChild = NavFrame.firstChild;
               NavChild != null;
               NavChild = NavChild.nextSibling
           ) {
           if (hasClass(NavChild, 'NavPic')) {
               NavChild.style.display = 'block';
           }
           if (hasClass(NavChild, 'NavContent')) {
               NavChild.style.display = 'block';
           }
           if (hasClass(NavChild, 'NavToggle')) {
               NavChild.firstChild.data = NavigationBarHide;
           }
       }
   }
}

// adds show/hide-button to navigation bars
function createNavigationBarToggleButton()
{
   var indexNavigationBar = 0;
   // iterate over all < div >-elements
   for(
           var i=0; 
           NavFrame = document.getElementsByTagName("div")[i]; 
           i++
       ) {
       // if found a navigation bar
       if (hasClass(NavFrame, 'NavFrame')) {

           indexNavigationBar++;
           var NavToggle = document.createElement("a");
           NavToggle.className = 'NavToggle';
           NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
           NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');

           var NavToggleText = document.createTextNode(NavigationBarHide);
           NavToggle.appendChild(NavToggleText);

           // add NavToggle-Button as first div-element 
           // in < div class="NavFrame" >
           NavFrame.insertBefore(
               NavToggle,
               NavFrame.firstChild
           );
           NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
       }
   }
   // if more Navigation Bars found than Default: hide all
   if (NavigationBarShowDefault < indexNavigationBar) {
       for(
                i=1; 
               i<=indexNavigationBar; 
               i++
       ) {
           toggleNavigationBar(i);
       }
   }

}

aOnloadFunctions[aOnloadFunctions.length] = createNavigationBarToggleButton;

// END Dynamic Navigation Bars


/*** Codice per il Template:Galleria ***/
    function updateImageGroup( currImg, $images, $countInfo, $prevLink, $nextLink ) {
        $images.hide().eq( currImg ).show();
        $countInfo.html( '(' + ( currImg + 1 ) + '/' + $images.length + ')' );
        $prevLink.toggle( currImg !== 0 );
        $nextLink.toggle( currImg !== $images.length - 1 );
    }
 
    function initImageGroup() {
        $( 'div.ImageGroup > div.ImageGroupUnits' ).each( function ( i, imageGroupUnits ) {
            var $images,  $prevLink, $nextLink, $countInfo, currImg = 0;
            $images = $( imageGroupUnits ).children( '.center' );
            $countInfo = $( '<tt>' ).css( 'font-size', '110%' );
            $prevLink = $( '<a>' )
                .attr( 'href', '#' ).attr( 'title', 'Immagine precedente' )
                .text( '◀' ).css( 'text-decoration', 'none' )
                .click( function ( e ) {
                    e.preventDefault();
                    updateImageGroup( currImg -= 1, $images, $countInfo, $prevLink, $nextLink );
                } );
            $nextLink = $( '<a>' )
                .attr( 'href', '#' ).attr( 'title', 'Immagine successiva' )
                .text( '▶' ).css( 'text-decoration', 'none' )
                .click( function ( e ) {
                    e.preventDefault();
                    updateImageGroup( currImg += 1, $images, $countInfo, $prevLink, $nextLink );
                } );
            updateImageGroup( currImg, $images, $countInfo, $prevLink, $nextLink );
            $( imageGroupUnits ).prepend( $prevLink, $countInfo, $nextLink );
        } );
    }
 
    $( initImageGroup );

/** Collapsible tables *********************************************************
 *
 *  Taken from http://en.wikipedia.org/wiki/MediaWiki:Common.js
 *  Description: Allows tables to be collapsed, showing only the header. See
 *               Wikipedia:NavFrame.
 *  Maintainers: User:R. Koot
 */

var autoCollapse = 2;
var collapseCaption = "▲ nascondi";
var expandCaption = "▼ espandi";

function collapseTable( tableIndex )
{
    var Button = document.getElementById( "collapseButton" + tableIndex );
    var Table = document.getElementById( "collapsibleTable" + tableIndex );

    if ( !Table || !Button ) {
        return false;
    }

    var Rows = Table.getElementsByTagName( "tr" ); 

    if ( Button.firstChild.data == collapseCaption ) {
        for ( var i = 1; i < Rows.length; i++ ) {
            Rows[i].style.display = "none";
        }
        Button.firstChild.data = expandCaption;
    } else {
        for ( var i = 1; i < Rows.length; i++ ) {
            Rows[i].style.display = Rows[0].style.display;
        }
        Button.firstChild.data = collapseCaption;
    }
}

function createCollapseButtons()
{
    var tableIndex = 0;
    var NavigationBoxes = new Object();
    var Tables = document.getElementsByTagName( "table" );

    for ( var i = 0; i < Tables.length; i++ ) {
        if ( hasClass( Tables[i], "collapsible" ) ) {
            NavigationBoxes[ tableIndex ] = Tables[i];
            Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex );

            var Button     = document.createElement( "span" );
            var ButtonLink = document.createElement( "a" );
            var ButtonText = document.createTextNode( collapseCaption );

            Button.style.styleFloat = "right";
            Button.style.cssFloat = "right";
            Button.style.fontWeight = "normal";
            Button.style.textAlign = "right";
            Button.style.width = "7em";

            ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
            ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" );
            ButtonLink.appendChild( ButtonText );

            Button.appendChild( document.createTextNode( "[" ) );
            Button.appendChild( ButtonLink );
            Button.appendChild( document.createTextNode( "]" ) );

            var Header = Tables[i].getElementsByTagName( "tr" )[0].getElementsByTagName( "th" )[0];
            /* only add button and increment count if there is a header row to work with */
            if (Header) {
                Header.insertBefore( Button, Header.childNodes[0] );
                tableIndex++;
            }
        }
    }

    for ( i = 0;  i < tableIndex; i++ ) {
        if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) {
            collapseTable( i );
        }
    }
}

$( createCollapseButtons );

//END Collapsible tables

//HIDDENCAT (mostra le categorie nascoste). Scippato ai francesi
function addClass(node, className)
{
    if (hasClass(node, className)) {
        return false;
    }
    node.className += ' '+ className;
    return true;
}

function eregReplace(search, replace, subject)
{
    return subject.replace(new RegExp(search,'g'), replace);
}

function removeClass(node, className)
{
  if (!hasClass(node, className)) {
    return false;
  }
  node.className = eregReplace('(^|\\s+)'+ className +'($|\\s+)', ' ', node.className);
  return true;
}

function isClass(element, classe)
{
    return hasClass(element, classe);
}

function hiddencat()
{
 var cl = document.getElementById('catlinks');           if(!cl) return;
 var hc = document.getElementById('mw-hidden-catlinks'); if(!hc) return;
 var nc = document.getElementById('mw-normal-catlinks');
 if(!nc)
 {
  removeClass(cl, 'catlinks-allhidden');
  addClass(cl, 'catlinks-allhidden-mostra');
  var ahc = '<div id="mw-normal-catlinks"><a href="/wiki/Categoria:Categorie" title="Categoria:Categorie">Categorie</a>&nbsp;:&#32;<span dir="ltr"><a onclick="javascript:toggleHiddenCats();" id="mw-hidden-cats-link" style="cursor:pointer; color:#002BB8;" title="Questa voce contiene categorie nascoste">[<span style="font-style:italic;">altre</span>]</a></span></div>';
  document.getElementById('catlinks').innerHTML = ahc + cl.innerHTML;
 }
 else if( isClass(hc, 'mw-hidden-cats-hidden') )
 {
  var ahc = ' | <a onclick="javascript:toggleHiddenCats();" id="mw-hidden-cats-link" style="cursor:pointer; color:#002BB8;" title="Questa voce contiene categorie nascoste">[<span style="font-style:italic;">altre</span>]</a>';
  document.getElementById('mw-normal-catlinks').innerHTML += ahc;
 }
}

function toggleHiddenCats()
{
 var hc = document.getElementById('mw-hidden-catlinks');
 if( isClass(hc, 'mw-hidden-cats-hidden') )
 {
  removeClass(hc, 'mw-hidden-cats-hidden');
  addClass(hc, 'mw-hidden-cat-user-shown');
  document.getElementById('mw-hidden-cats-link').innerHTML = '[<span style="font-style:italic;">nascondi</span>]';
 }
 else
 {
  removeClass(hc, 'mw-hidden-cat-user-shown');
  addClass(hc, 'mw-hidden-cats-hidden');
  document.getElementById('mw-hidden-cats-link').innerHTML = '[<span style="font-style:italic;">altre</span>]';
 }
}
 
$(hiddencat);

/* Layout pagina di modifica */
addLoadEvent ( function ()
{
  if (wgAction == "edit")
  {
    /* Allarga l'edittools a tutta pagina */
    document.getElementById("Standard").style.width = "100%";
  }
});

/* Avvisa quando si tenta di creare una voce con titolo non valido  ("Scrivi qui il titolo")*/
$( function ()
{
  if (wgTitle == "Scrivi qui il titolo" && wgAction == "edit")
  {
    dopoDi = document.getElementById("contentSub");
        if (!dopoDi) return;
    var daInserire = document.createElement('div');
    daInserire.innerHTML = "<b>Stai creando una pagina senza specificare un titolo valido per la voce. Per favore torna indietro e inserisci un titolo valido.</b>";
        daInserire.className = "toccolours itwiki_template_avviso rad";
        daInserire.style.marginBottom = "0.5em";
        daInserire.style.background = "#FC9";
        daInserire.style.borderColor = "red";
        daInserire.style.textAlign = "center";
        dopoDi.parentNode.insertBefore(daInserire, dopoDi.nextSibling);
  }
});

//============================================================
// Funzione per gestire i cookies

function SetCookie(cookieName,cookieValue,nDays)
{
        var today = new Date();
        var expire = new Date();
        if (nDays==null || nDays==0) nDays=1;
        expire.setTime(today.getTime() + 3600000*24*nDays);
        document.cookie = cookieName+"="+escape(cookieValue)
                          + ";expires="+expire.toGMTString();
}

function getCookie(c_name)
{
        var i,x,y,ARRcookies=document.cookie.split(";");
        for (i=0;i<ARRcookies.length;i++)
        {
                x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
                y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
                x=x.replace(/^\s+|\s+$/g,"");
                if (x==c_name)
                {
                        return unescape(y);
                }
        }
}

//============================================================
// Funzione per la variazione della dimensione del font

function resizeText(multiplier, boolPulsante)
{

  var coockieNameMultiplier = "CathopediaMultiplier";  
  var Correction = 10;
  var bodyContent = document.getElementById("mw-content-text");
  var cookieValueNewText;

  cookieValue = parseFloat(bodyContent.style.fontSize) * 100 / Correction;
  if (! cookieValue)
    cookieValue = parseFloat(getCookie(coockieNameMultiplier));
  if (! cookieValue)
    cookieValue = 100;

  var cookieValueNew = Math.round(cookieValue * multiplier / 100 / 5) * 5;
  if (cookieValueNew < 50)
    cookieValueNew = 50;
  if (cookieValueNew > 200)
    cookieValueNew = 200;
  if (! multiplier || ( mw.config.get( "wgNamespaceNumber" ) && mw.config.get( "wgNamespaceNumber" ) !== 4 ) )
    cookieValueNew = 100;
  bodyContent.style.fontSize = (cookieValueNew * Correction / 100) + "pt";
  cookieValueNewText = cookieValueNew.toString();

  if (boolPulsante)
    SetCookie(coockieNameMultiplier, cookieValueNewText, 1000);

  //if (cookieValue < 100)
    //cookieValue = "<span style='color: white'>0</span>" + cookieValue;

  textPerCentElement = document.getElementById("textpercent");  
  if (textPerCentElement)
    textPerCentElement.innerText = cookieValueNew + "%";

}

window.onload(resizeText(100, false));

if (document.getElementById('selettoreriti'))
{
        // funzioni per scambiare i riti romano e ambrosiano in pagina principale
        function AttivaRomano()
        {
          //~ document.getElementById('selettoreambrosiano').style.display = '';
          //~ document.getElementById('selettoreromano').style.display = 'none';
          document.getElementById('ambrosiano').style.display = 'none';
          document.getElementById('romano').style.display = '';
          document.getElementById('selettoreromano').className = 'BottoneSelettoreRitoSelezionato';
          document.getElementById('selettoreambrosiano').className = 'BottoneSelettoreRitoNonSelezionato';
          document.getElementById('selettoreambrosiano').title = 'Passa al Rito Ambrosiano';
          document.getElementById('selettoreromano').title = '';
          SetCookie('rito', '', 1000);
          document.getElementById('selettoreambrosiano').onclick = AttivaAmbrosiano;
          document.getElementById('selettoreromano').onclick = null;
        }

        function AttivaAmbrosiano()
        {
          //~ document.getElementById('selettoreambrosiano').style.display = 'none';
          //~ document.getElementById('selettoreromano').style.display = '';
          document.getElementById('ambrosiano').style.display = '';
          document.getElementById('romano').style.display = 'none';
          document.getElementById('selettoreromano').className = 'BottoneSelettoreRitoNonSelezionato';
          document.getElementById('selettoreambrosiano').className = 'BottoneSelettoreRitoSelezionato';
          document.getElementById('selettoreambrosiano').title = '';
          document.getElementById('selettoreromano').title = 'Passa al Rito Romano';
          SetCookie('rito', 'ambrosiano', 1000);
          document.getElementById('selettoreromano').onclick = AttivaRomano;
          document.getElementById('selettoreambrosiano').onclick = null;
        }


        if ( getCookie('rito') == 'ambrosiano')
                AttivaAmbrosiano();
        else
                AttivaRomano();
}

document.getElementById('textminus').onclick = function(){resizeText(90, true);}
document.getElementById('textstandard').onclick = function(){resizeText(0, true);}
document.getElementById('textplus').onclick = function(){resizeText(111, true);}