Cimitero:MediaWiki:Common.js: differenze tra le versioni
Vai alla navigazione
Vai alla ricerca
Contenuto aggiunto Contenuto cancellato
Zaza (rosica | curriculum) mNessun oggetto della modifica |
Zaza (rosica | curriculum) m (Annullate le modifiche di Zaza (discussione), riportata alla versione precedente di MFH) |
||
Riga 47: | Riga 47: | ||
import_script((wgPageName == "Speciale:WidgetDashboard"), "Nonciclopedia:Script/Shoutbox.js"); |
import_script((wgPageName == "Speciale:WidgetDashboard"), "Nonciclopedia:Script/Shoutbox.js"); |
||
import_script((wgPageName == "Giochi:CasiNonci/Slot_machine") , "Nonciclopedia:Script/SlotMachine.js"); |
import_script((wgPageName == "Giochi:CasiNonci/Slot_machine") , "Nonciclopedia:Script/SlotMachine.js"); |
||
import_script((wgPageName == "Utente:Zaza/Sandbox/SlotMachine") , "Nonciclopedia:Script/SlotMachine.js"); |
|||
return; |
return; |
||
} |
} |
Versione delle 16:40, 19 dic 2009
/********************** OnloadHooks **********************/
var hooks_custom = new Array();
/* Funzioni generali */
function hooks_common () {
Script_Import();
hooks_common_render();
createPurgeButton();
return;
}
addOnloadHook(hooks_common);
/* Funzioni del rendering - separate per richiamarle in anteprima rapida */
var __test_js__ = false;
function hooks_common_render () {
randomlist();
createCollapseButtons();
createNavigationBarToggleButton();
createToggleLinks();
if (navigator.appName == "Microsoft Internet Explorer") createToggleLinks();
UserNameReplace();
ref_tooltip();
alertLink();
alertLoad();
alertUnload();
import_script((/\<\;test(.*)\>\;/.test(document.getElementById('bodyContent').innerHTML) && !__test_js__), "Nonciclopedia:Script/Test.js");
target_blank();
hiddencats_IE();
return;
}
/* Funzioni dell'editor */
function hooks_common_edit () {
if (wgAction != 'edit' && wgAction != 'submit') return;
charinsert_anon_hack();
return;
}
addOnloadHook(hooks_common_edit);
/* Importazione script */
function Script_Import () {
/*
Sintassi: import_script(CONDIZIONE, SCRIPT);
Es.: import_script((wgPageName == "Esempio"), "Esempio.js");
*/
import_script((wgPageName == "Speciale:WidgetDashboard"), "Nonciclopedia:Script/Shoutbox.js");
import_script((wgPageName == "Giochi:CasiNonci/Slot_machine") , "Nonciclopedia:Script/SlotMachine.js");
return;
}
function import_script (condition, script) {
if(!condition) return;
var scriptElem = document.createElement( 'script' );
scriptElem.type = 'text/javascript';
scriptElem.language = 'javascript';
scriptElem.src = '/index.php?title=' + script + '&action=raw&ctype=text/javascript&smaxage=8400';
document.getElementsByTagName( 'head' )[0].appendChild( scriptElem );
return;
}
/************* Funzioni di utilità generale *************/
/* 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);
};
})();
function getElementsByClass (node, className, tagName) {
if (node.getElementsByClassName && (tagName == undefined || tagName == null || tagName == '*')) return node.getElementsByClassName(className);
var list = node.getElementsByTagName(tagName?tagName:'*');
var array = new Array();
var i = 0;
for (i in list) {
if (hasClass(list[i], className))
array.push(list[i]);
}
return array;
}
/* Creates the method getElementsByClass, if unsupported from the browser */
if(!document.getElementsByClass) document.getElementsByClass = function(className) {
return getElementsByClass(document, className, '*');
};
function getText (e) {
if (e.textContent) return e.textContent;
else if (e.innerText) return e.innerText;
else return null;
}
function setText (e, t) {
if (e.textContent) e.textContent = t;
else if (e.innerText) e.innerText = t;
else { e.textContent = t; e.innerText = t; } // entrambi nulli, non si può discriminare
return;
}
function appendText (e, t) {
if (e.textContent) e.textContent += t;
else if (e.innerText) e.innerText += t;
else { e.textContent = t; e.innerText = t; }
return;
}
/* Crea una request Ajax */
function createRequest () {
if (window.XMLHttpRequest) { // Mozilla, Safari...
return new XMLHttpRequest();
}
else if (window.ActiveXObject) { // IEmmerda
return new ActiveXObject("Microsoft.XMLHTTP");
}
return
}
/* Restituisce il valore di un cookie */
function getCookie(name) {
if (document.cookie.length == 0) return null;
var start = document.cookie.indexOf(name);
if (start == -1) return null;
start += name.length + 1;
var end = document.cookie.indexOf(';', start);
if (end == -1) end = document.cookie.length;
return unescape(document.cookie.substring(start,end));
}
/* Aggiunge uno zero alle cifre minori di 10 nella rappresentazione testuale */
function addzero(n) {
if (n<10) return '0' + n.toString();
else return n.toString();
}
/************* Funzioni applicative ***************/
// ============================================================
// BEGIN Dynamic Navigation Bars (experimantal)
// This script is from Wikipedia. For author attribution, please see http://en.wikipedia.org/w/index.php?title=MediaWiki:Common.js&action=history
/** Collapsible tables *********************************************************
*
* Description: Allows tables to be collapsed, showing only the header. See
* [[Wikipedia:NavFrame]].
* Maintainers: [[User:R. Koot]]
*/
var autoCollapse = 0; // numero massimo di barre visibili
// per default al caricamento di una pagina
var collapseCaption = "nascondi";
var expandCaption = "vedi";
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" ) && !Tables[i].id) {
NavigationBoxes[ tableIndex ] = Tables[i];
Tables[i].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 = "6em";
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 ( var i = 0; i < tableIndex; i++ ) {
if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) {
collapseTable( i );
}
}
}
/** Dynamic Navigation Bars (experimental) *************************************
*
* Description: See [[Wikipedia:NavFrame]].
* Maintainers: UNMAINTAINED
*/
// set up the words in your language
var NavigationBarHide = '[' + collapseCaption + ']';
var NavigationBarShow = '[' + expandCaption + ']';
// 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 = autoCollapse;
// 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';
}
}
NavToggle.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';
}
}
NavToggle.firstChild.data = NavigationBarHide;
}
}
// adds show/hide-button to navigation bars
function createNavigationBarToggleButton()
{
var indexNavigationBar = 0;
// iterate over all < div >-elements
var divs = document.getElementsByTagName("div");
for(
var i=0;
NavFrame = divs[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);
// Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
for(
var j=0;
j < NavFrame.childNodes.length;
j++
) {
if (hasClass(NavFrame.childNodes[j], "NavHead")) {
NavFrame.childNodes[j].appendChild(NavToggle);
}
}
NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
}
}
// if more Navigation Bars found than Default: hide all
if (NavigationBarShowDefault < indexNavigationBar) {
for(
var i=1;
i<=indexNavigationBar;
i++
) {
toggleNavigationBar(i);
}
}
}
/** Codice sostituzione Username ([[template:USERNAME]]) *******************************
* Inserts user name into <span id="insertusername"></span>
* By [[wikia:User:Splarka|Splarka]]
*/
var disableUsernameReplace = false;
function UserNameReplace() {
if (disableUsernameReplace) return;
var list = getElementsByClass(document.getElementsByTagName('body')[0], "insertusername", 'span');
if (list.length < 1) return;
if (wgUserName) {
for (var i=0; UserName = list[i]; i++) {
setText(UserName, wgUserName);
}
return;
}
var defaultText = "<tuo nome>";
var userpage = document.getElementById("pt-anonuserpage");
if (userpage != null) {
var IP = getText(userpage.getElementsByTagName('a')[0]);
if (IP == null) return;
for (var i=0; UserName = list[i]; i++) {
if (getText(UserName) == defaultText)
setText(UserName, IP);
}
return;
}
var httpRequest;
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
var id = setTimeout(function() { httpRequest.abort();}, 30000);
httpRequest.onreadystatechange = function () {
if (httpRequest.readyState != 4) return;
clearTimeout(id);
if (httpRequest.status != 200) return;
if (httpRequest.responseXML == null) return;
var IP = httpRequest.responseXML.getElementsByTagName('userinfo')[0].getAttribute("name");
if (IP == null) return;
for (var i=0; UserName = list[i]; i++) {
if (getText(UserName) == defaultText)
setText(UserName, IP);
}
return;
}
httpRequest.open('GET', wgServer + wgScriptPath + "/api.php?action=query&meta=userinfo&format=xml", true);
httpRequest.send('');
return;
}
/* Generatori di alert */
/* Carica un alert su un link prima di caricare la nuova pagina, oppure su un link "fasullo", senza caricare nessuna nuova pagina*/
function alertLink() {
for(var i=0; Elem = document.getElementsByTagName("span")[i]; i++) {
if((Elem.getAttribute('id') == "alert-link") || (Elem.getAttribute('id') == "alert-nolink")) {
var Link = Elem.firstChild;
var Testo = Elem.title;
Link.setAttribute('onclick', 'alert("' + Testo + '");');
if(Elem.getAttribute('id') == "alert-nolink") {
Link.removeAttribute('href',0);
}
}
}
}
/* Carica uno o più alert al caricamento della pagina */
var disablealertLoad = 0;
function alertLoad() {
if (disablealertLoad) return;
for(var i=0; Elem = document.getElementsByTagName("span")[i]; i++) {
if(Elem.getAttribute('id') == "alert-load") {
var Testo = Elem.innerText || Elem.textContent;
alert(Testo);
}
}
}
/* Carica uno o più alert all'uscita dalla pagina */
function alertUnload() {
if (disablealertLoad) return;
for(var i=0; Elem = document.getElementsByTagName("span")[i]; i++) {
if(Elem.getAttribute('id') == "alert-unload") {
var Testo = Elem.innerText || Elem.textContent;
var temp = document.getElementsByTagName("body")[0].getAttribute('onUnload');
if (temp) document.getElementsByTagName("body")[0].setAttribute('onUnload', temp + 'alert("' + Testo + '");');
else document.getElementsByTagName("body")[0].setAttribute('onUnload', 'alert("' + Testo + '");');
}
}
}
/* Elenchi random */
function randomlist () {
var Div;
for(var I=0; Div = document.getElementById("bodyContent").getElementsByTagName("div")[I]; I++) {
if(Div.id == "randomlist") {
var List = new Array();
var i=0;
var max = parseInt(Div.title);
do { Div1 = Div.getElementsByTagName('div')[i]; i++;} while (Div1.id != "randomcontent");
for( i=0; Div1.getElementsByTagName('li')[i]; i++) {
List[i] = Div1.getElementsByTagName('li')[i].innerHTML;
}
do { Text = Div.getElementsByTagName('*')[i]; i++;} while (Text.id != "randomtext");
if (!Text) return;
var Format = Text.cloneNode(true);
Text.innerHTML = '';
N = new Array();
var Item;
for (i=0; i < max; i++) {
do {
n = Math.round(Math.random() * (List.length - 1));
for (ii = 0; ii < i && n != -1; ii++) {
if (N[ii] == n)
n = -1;
}
} while (n == -1)
N[i] = n;
Item = Format.cloneNode(true);
Item.innerHTML = Item.innerHTML.replace(/\.\.\./,List[n]);
Text.appendChild(Item);
}
}
}
}
/* Hook that enables collapsing objects.
* Added 11/5/2007 by WhiteMystery (misterioblanco@gmail.com)
* on Encyclopedia Dramatica, stolen by Zaza
* Improved with multiMorph and galleryMorph by MFH
* Uses publicly available code in one function, where noted. */
var galleryCounter = 0; /* Needed for galleryMorph */
/* Function that toggles collapsing objects.
* Added 11/5/2007 by WhiteMystery (misterioblanco@gmail.com)
* on Encyclopedia Dramatica, stolen by Zaza
* Uses publicly available code in one function, where noted. */
function tableOrNot(objId) {
if (document.getElementById(objId).tagName == "TABLE") return "table";
else return "block";
}
function toggleCollapse(objToToggle, collapseText, expandText) {
var linkText = "";
var targetObject = returnObjById(objToToggle);
if ( targetObject ) {
if ( targetObject.style.display == "none" ) {
targetObject.style.display = tableOrNot(objToToggle);
linkText = collapseText;
}
else {
targetObject.style.display = "none";
linkText = expandText;
}
var toggleLink = document.createElement("div");
toggleLink.appendChild(document.createTextNode(linkText));
toggleLink.setAttribute("onclick", "javascript:toggleCollapse('" + objToToggle + "','" + collapseText + "','" + expandText + "')");
toggleLink.setAttribute("class", "morphLink");
returnObjById(objToToggle + "Link").innerHTML = "";
returnObjById(objToToggle + "Link").appendChild(toggleLink, 0);
}
}
/* Functions that performs the morph operation.
* Added 11/5/2007 by WhiteMystery (misterioblanco@gmail.com)
* on Encyclopedia Dramatica, stolen by Zaza
* Uses publicly available code in one function, where noted. */
function performMorph(targetID, targetNumber) {
var counter = 1;
while ( returnObjById(targetID + "Content" + counter) ) {
if ( counter == targetNumber )
returnObjById(targetID + "Content" + counter).style.display = tableOrNot(targetID + "Content" + counter);
else
returnObjById(targetID + "Content" + counter).style.display = "none";
counter++;
}
returnObjById(targetID + "Master").innerHTML = targetNumber;
}
function morphForward(targetID) {
var nextPane = parseInt(returnObjById(targetID + "Master").innerHTML) + 1;
if ( returnObjById(targetID + "Content" + nextPane) )
performMorph(targetID, nextPane);
else
performMorph(targetID, "1");
}
function morphBackward(targetID) {
var prevPane = parseInt(returnObjById(targetID + "Master").innerHTML) - 1;
if ( prevPane > 0 )
performMorph(targetID, prevPane);
else {
var maxIndex = 1;
while ( returnObjById(targetID + "Content" + maxIndex) )
maxIndex++;
performMorph(targetID, maxIndex - 1);
}
}
/* Special functions for the galleryMorph,
* created by MFH */
function performGalleryMorph(targetID, targetNumber) {
var counter = 1;
while ( returnObjById(targetID + "Content" + counter) ) {
if ( counter == targetNumber )
returnObjById(targetID + "Content" + counter).style.display = tableOrNot(targetID + "Content" + counter);
else
returnObjById(targetID + "Content" + counter).style.display = "none";
counter++;
}
if (targetNumber == 1) {
returnObjById(targetID + "LinkPrev").style.display = "none";
}
else {
returnObjById(targetID + "LinkPrev").style.display = tableOrNot(targetID + "LinkPrev");
}
if (targetNumber == counter - 1) {
returnObjById(targetID + "LinkNext").style.display = "none";
}
else {
returnObjById(targetID + "LinkNext").style.display = tableOrNot(targetID + "LinkNext");
}
returnObjById(targetID + "Counter").innerHTML = "(" + targetNumber + "/" + galleryCounter + ")";
returnObjById(targetID + "Master").innerHTML = targetNumber;
}
function galleryMorphForward(targetID) {
var nextPane = parseInt(returnObjById(targetID + "Master").innerHTML) + 1;
if ( returnObjById(targetID + "Content" + nextPane) )
performGalleryMorph(targetID, nextPane);
else
performGalleryMorph(targetID, "1");
}
function galleryMorphBackward(targetID) {
var prevPane = parseInt(returnObjById(targetID + "Master").innerHTML) - 1;
if ( prevPane > 0 )
performGalleryMorph(targetID, prevPane);
else {
var maxIndex = 1;
while ( returnObjById(targetID + "Content" + maxIndex) )
maxIndex++;
performGalleryMorph(targetID, maxIndex - 1);
}
}
/* Function that creates ED's collapsing objects and toggle links.
* Added 11/5/2007 by WhiteMystery (misterioblanco@gmail.com)
* on Encyclopedia Dramatica, stolen by Zaza
* Uses publicly available code in one function, where noted.
*
* Updated: 1/11/2008 by WhiteMystery to add new Morphing Objects
* functionality.
* Updated: 23/5/2009 by MFH to add 2 new kinds of morph:
* multiMorph and galleryMorph */
function createToggleLinks() {
var toggleLinkCollection = document.getElementsByClass("toggleLink");
var morphMasterCollection = document.getElementsByClass("morphMaster");
var multiMorphMasterCollection = document.getElementsByClass("multiMorphMaster");
var galleryMorphMasterCollection = document.getElementsByClass("galleryMorphMaster");
for (var i = 0; i < toggleLinkCollection.length; i++) {
var spanID = toggleLinkCollection[i].getAttribute("id");
var targetID = spanID.substr(0, spanID.length - 4);
var collapseText = returnObjById(targetID + "CollapseText").innerHTML;
var expandText = returnObjById(targetID + "ExpandText").innerHTML;
var initialState = returnObjById(targetID + "InitialState").innerHTML;
var toggleLink = document.createElement("div");
if (initialState == "0") {
returnObjById(targetID).style.display = "none";
toggleLink.appendChild(document.createTextNode(expandText));
}
else {
returnObjById(targetID).style.display = tableOrNot(targetID);
toggleLink.appendChild(document.createTextNode(collapseText));
}
toggleLink.setAttribute("onclick", "javascript:toggleCollapse('" + targetID + "','" + collapseText + "','" + expandText + "')");
toggleLink.setAttribute("class", "morphLink");
toggleLinkCollection[i].appendChild(toggleLink);
}
for (var i = 0; i < morphMasterCollection.length; i++) {
var spanID = morphMasterCollection[i].getAttribute("id");
var targetID = spanID.substr(0, spanID.length - 6);
var counter = 1;
// Create forward and backward paging if the paging elements exist
if ( returnObjById(targetID + "LinkNext") && returnObjById(targetID + "LinkPrev") && returnObjById(targetID + "Content1") ) {
// Create the forward link
var nextLink = document.createElement("div");
nextLink.innerHTML = returnObjById(targetID + "LinkNext").innerHTML;
nextLink.setAttribute("onclick", "javascript:morphForward('" + targetID + "')");
nextLink.setAttribute("class", "morphLink");
returnObjById(targetID + "LinkNext").innerHTML = "";
returnObjById(targetID + "LinkNext").appendChild(nextLink, 0);
// Create the backward link
var prevLink = document.createElement("div");
prevLink.innerHTML = returnObjById(targetID + "LinkPrev").innerHTML;
prevLink.setAttribute("onclick", "javascript:morphBackward('" + targetID + "')");
prevLink.setAttribute("class", "morphLink");
returnObjById(targetID + "LinkPrev").innerHTML = "";
returnObjById(targetID + "LinkPrev").appendChild(prevLink, 0);
// Initialize content panes
while ( returnObjById(targetID + "Content" + counter) ) {
if ( counter == 1 )
returnObjById(targetID + "Content" + counter).style.display = tableOrNot(targetID + "Content" + counter);
else
returnObjById(targetID + "Content" + counter).style.display = "none";
counter++;
}
}
counter = 1;
// Whether or not there is paging, generate normal links
while (returnObjById(targetID + "Link" + counter) && returnObjById(targetID + "Content" + counter)) {
var morphLink = document.createElement("div");
morphLink.innerHTML = returnObjById(targetID + "Link" + counter).innerHTML;
morphLink.setAttribute("onclick", "javascript:performMorph('" + targetID + "','" + counter + "')");
morphLink.setAttribute("class", "morphLink");
returnObjById(targetID + "Link" + counter).innerHTML = "";
returnObjById(targetID + "Link" + counter).appendChild(morphLink, 0);
// Initialize content panes
if (counter == 1)
returnObjById(targetID + "Content" + counter).style.display = tableOrNot(targetID + "Content" + counter);
else
returnObjById(targetID + "Content" + counter).style.display = "none";
counter++;
}
morphMasterCollection[i].innerHTML = "1";
morphMasterCollection[i].style.display = "none";
}
for (var i = 0; i < multiMorphMasterCollection.length; i++) {
var spanID = multiMorphMasterCollection[i].getAttribute("id");
var targetID = spanID.substr(0, spanID.length - 6);
var counter = 1;
// Create forward and backward paging if the paging elements exist
if (document.getElementsByClass(targetID + "LinkNext") && document.getElementsByClass(targetID + "LinkPrev") && document.getElementsByClass(targetID + "Content1")) {
// Create the forward link
var nextLinkCollection = document.getElementsByClass(targetID + "LinkNext");
for (j = 0; j < nextLinkCollection.length; j++) {
var nextLink = document.createElement("div");
nextLink.innerHTML = nextLinkCollection[j].innerHTML;
nextLink.setAttribute("onclick", "javascript:morphForward('" + targetID + "')");
nextLink.setAttribute("class", "morphLink");
nextLinkCollection[j].innerHTML = "";
nextLinkCollection[j].appendChild(nextLink, 0);
}
// Create the backward link
var prevLinkCollection = document.getElementsByClass(targetID + "LinkPrev");
for (j = 0; j < prevLinkCollection.length; j++) {
var prevLink = document.createElement("div");
prevLink.innerHTML = prevLinkCollection[j].innerHTML;
prevLink.setAttribute("onclick", "javascript:morphBackward('" + targetID + "')");
prevLink.setAttribute("class", "morphLink");
prevLinkCollection[j].innerHTML = "";
prevLinkCollection[j].appendChild(prevLink, 0);
}
// Initialize content panes
while (returnObjById(targetID + "Content" + counter)) {
if (counter == 1)
returnObjById(targetID + "Content" + counter).style.display = tableOrNot(targetID + "Content" + counter);
else
returnObjById(targetID + "Content" + counter).style.display = "none";
counter++;
}
}
counter = 1;
// Whether or not there is paging, generate normal links
while ( document.getElementsByClass(targetID + "Link" + counter) && returnObjById(targetID + "Content" + counter) ) {
var morphLinkCollection = document.getElementsByClass(targetID + "Link" + counter);
for (j = 0; j < morphLinkCollection.length; j++) {
var morphLink = document.createElement("div");
morphLink.innerHTML = morphLinkCollection[j].innerHTML;
morphLink.setAttribute("onclick", "javascript:performMorph('" + targetID + "','" + counter + "')");
morphLink.setAttribute("class", "morphLink");
morphLinkCollection[j].innerHTML = "";
morphLinkCollection[j].appendChild(morphLink, 0);
}
// Initialize content panes
if (counter == 1)
returnObjById(targetID + "Content" + counter).style.display = tableOrNot(targetID + "Content" + counter);
else
returnObjById(targetID + "Content" + counter).style.display = "none";
counter++;
}
multiMorphMasterCollection[i].innerHTML = "1";
multiMorphMasterCollection[i].style.display = "none";
}
for (var i = 0; i < galleryMorphMasterCollection.length; i++) {
var spanID = galleryMorphMasterCollection[i].getAttribute("id");
var targetID = spanID.substr(0, spanID.length - 6);
var counter = 1;
// Create forward and backward paging if the paging elements exist
if ( returnObjById(targetID + "LinkNext") && returnObjById(targetID + "LinkPrev") && returnObjById(targetID + "Content1") ) {
// Create the forward link
var nextLink = document.createElement("div");
nextLink.innerHTML = returnObjById(targetID + "LinkNext").innerHTML;
nextLink.setAttribute("onclick", "javascript:galleryMorphForward('" + targetID + "')");
nextLink.setAttribute("class", "morphLink");
returnObjById(targetID + "LinkNext").innerHTML = "";
returnObjById(targetID + "LinkNext").appendChild(nextLink, 0);
// Create the backward link
var prevLink = document.createElement("div");
prevLink.innerHTML = returnObjById(targetID + "LinkPrev").innerHTML;
prevLink.setAttribute("onclick", "javascript:galleryMorphBackward('" + targetID + "')");
prevLink.setAttribute("class", "morphLink");
returnObjById(targetID + "LinkPrev").innerHTML = "";
returnObjById(targetID + "LinkPrev").appendChild(prevLink, 0);
// Initialize content panes
while ( returnObjById(targetID + "Content" + counter) ) {
if (counter == 1)
returnObjById(targetID + "Content" + counter).style.display = tableOrNot(targetID + "Content" + counter);
else
returnObjById(targetID + "Content" + counter).style.display = "none";
counter++;
}
if (counter == 2) {
returnObjById(targetID + "LinkNext").style.display = "none";
}
galleryCounter = counter - 1;
if (returnObjById(targetID + "Counter")) {
returnObjById(targetID + "Counter").innerHTML = "(1/" + galleryCounter + ")";
}
}
galleryMorphMasterCollection[i].innerHTML = "1";
galleryMorphMasterCollection[i].style.display = "none";
}
}
/* Function that toggles ED's collapsing objects.
* Added 11/5/2007 by WhiteMystery (misterioblanco@gmail.com)
* on Encyclopedia Dramatica, stolen by Zaza
* Taken from http://www.netlobo.com/javascript_get_element_id.html */
function returnObjById(id) {
if (document.getElementById)
var returnVar = document.getElementById(id);
else if (document.all)
var returnVar = document.all[id];
else if (document.layers)
var returnVar = document.layers[id];
return returnVar;
}
/* Attiva il charinsert per gli anonimi nel box "newarticleintro" */
function charinsert_anon_hack () {
if(!(wgAction == "edit" && wgArticleId == 0 && wgUserName == null)) return;
var box = getElementsByClass(document.getElementById("bodyContent"), "mw-newarticletextanon", 'div')[0];
if (!box) return;
var link = '<' + 'a href="#" onclick="insertTags('$1','','');return false">$1<' + '/a>';
box.innerHTML = box.innerHTML.replace(/<charinsert>(.+?)<\/charinsert>/, link);
return;
}
/* Function to add a "purge" button at the top of the page,
* usefull for dpl, random and similar things that need the
* cache of the server.
*
* Created by MFH */
var buttonPurge = 0;
function createPurgeButton() {
if (buttonPurge == 0 || wgCanonicalNamespace == 'Special') return;
if (document.getElementById('ca-report-problem')) { /* Modifies the "report a problem" button, that is already invisible */
document.getElementById('ca-report-problem').getElementsByTagName('a')[0].innerHTML = 'Purge';
document.getElementById('ca-report-problem').getElementsByTagName('a')[0].href = wgServer + wgScriptPath + '/index.php?title=' + wgPageName + '&action=purge';
document.getElementById('ca-report-problem').setAttribute('id', 'ca-purge');
}
else {
var menuList = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
var newLi = document.createElement('li');
newLi.setAttribute('id', 'ca-purge');
newLi.innerHTML = '<a href="' + wgServer + wgScriptPath + '/index.php?title=' + wgPageName + '&action=purge">Purge</a>';
menuList.appendChild(newLi);
}
}
/* Visualizza correttamente categorie nascoste in IE */
function hiddencats_IE () {
if (navigator.appName != "Microsoft Internet Explorer") return;
var div = document.getElementById("mw-hidden-catlinks");
if (div == null) return;
var span = document.createElement('span');
span.id = 'mw-hidden-catlinks-switch';
span.innerHTML = ">>";
div.insertBefore(span, div.firstChild);
return;
}
/* Class che aggiunge "target= '_blank'" ai link */
function target_blank () {
var tags = getElementsByClass(document.getElementsByTagName('body')[0], "target-blank");
if (tags == null) return;
var i, j, links;
for (i=0; i < tags.length; i++) {
links = tags[i].getElementsByTagName('a');
for (j=0; j < links.length; j++) links[j].target = '_blank';
}
return;
}
/* Visualizza note come tooltip */
/* by Sanjilops - http://nonciclopedia.wikia.com/wiki/Utente:Sanjilops */
var disablereftooltip = false;
function ref_tooltip () {
if (disablereftooltip) return;
var refs = getElementsByClass(document.getElementById('bodyContent'), "reference", 'sup');
if (!refs) return;
for (var i = 0; i < refs.length; i++) Do(refs[i]);
return;
function Do (ref) {
var span = document.createElement('span');
var id = ref.id.substr('cite_ref-'.length);
span.className = "reference-tt";
span.id = "cite_tt-" + id;
var li = document.getElementById('cite_note-' + id.replace(/_(\d+)-\d+$/, '-$1'));
if (!li) return;
var temp = li.innerHTML;
temp = temp.split(/^.+a href=\"#cite_ref-.+\" title=\"\">.+?<\/a>(<\/sup>)? /);
span.innerHTML = (temp.length)? temp[temp.length - 1] : temp;
if (ref.offsetLeft < document.getElementById('bodyContent').offsetWidth/2) span.style.left = (ref.offsetWidth - 1) + 'px';
else span.style.right = (ref.offsetWidth - 1) + 'px';
temp = getText(span);
temp = temp.length * 12;
span.style.width = (temp < 400)? temp + 'px' : "400px";
ref.appendChild(span);
return;
}
}