MediaWiki:Common.js: Difference between revisions
From Bulbapedia, the community-driven Pokémon encyclopedia.
Jump to navigationJump to search
m (Undo revision 693699 by Jioruji Derako (Talk) doesn't work.) |
m (testing a possible variant on the collapsible boxes.) |
||
Line 144: | Line 144: | ||
document.getElementById('countdown').style.display = 'block'; | document.getElementById('countdown').style.display = 'block'; | ||
updateClocks(); | updateClocks(); | ||
} | |||
/* Hook that enables collapsing objects. | |||
* Added 7/13/2008 by WhiteMystery on Encyclopedia Dramatica ([email protected]) */ | |||
addOnloadHook(createToggleLinks); | |||
/* Function that creates collapsing objects and toggle links. | |||
* Added 7/13/2008 by WhiteMystery on Encyclopedia Dramatica ([email protected]) */ | |||
function createToggleLinks() { | |||
var stateArray = new Array(); | |||
var allObjects = document.getElementsByTagName('span'); | |||
var rCollapsingObject = new RegExp("^co;(.+?);(.+?);(.+?);(.+?)(;(.+?))?$"); | |||
for ( var i = 0; i < allObjects.length; i++ ) { | |||
if ( rCollapsingObject.test(allObjects[i].className) ) { | |||
var collapsingInformation = rCollapsingObject.exec(allObjects[i].className); | |||
var collapseText = collapsingInformation[1]; | |||
var expandText = collapsingInformation[2]; | |||
var initialState = collapsingInformation[3]; | |||
var targetClass = collapsingInformation[4]; | |||
var linkColor = collapsingInformation[6]; | |||
var toggleLink = document.createElement("a"); | |||
if ( initialState == "0" ) { | |||
toggleLink.appendChild(document.createTextNode(expandText)); | |||
stateArray[targetClass] = "none"; | |||
} | |||
else { | |||
toggleLink.appendChild(document.createTextNode(collapseText)); | |||
stateArray[targetClass] = "inline"; | |||
} | |||
toggleLink.setAttribute("href", "javascript:toggleCollapse('" + targetClass + "','" + collapseText + "','" + expandText + "')"); | |||
if ( linkColor != undefined && linkColor != "undefined" && linkColor != "" ) | |||
toggleLink.style.color = linkColor; | |||
allObjects[i].innerHTML = ""; | |||
allObjects[i].appendChild(toggleLink); | |||
} | |||
else if ( allObjects[i].className == "morphMaster" ) { | |||
var spanID = allObjects[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("a"); | |||
nextLink.appendChild(document.createTextNode(returnObjById(targetID + "LinkNext").innerHTML)); | |||
nextLink.setAttribute("href", "javascript:morphForward('" + targetID + "')"); | |||
returnObjById(targetID + "LinkNext").innerHTML = ""; | |||
returnObjById(targetID + "LinkNext").appendChild(nextLink, 0); | |||
// Create the backward link | |||
var prevLink = document.createElement("a"); | |||
prevLink.appendChild(document.createTextNode(returnObjById(targetID + "LinkPrev").innerHTML)); | |||
prevLink.setAttribute("href", "javascript:morphBackward('" + targetID + "')"); | |||
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 = "inline"; | |||
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("a"); | |||
morphLink.appendChild(document.createTextNode(returnObjById(targetID + "Link" + counter).innerHTML)); | |||
morphLink.setAttribute("href", "javascript:performMorph('" + targetID + "','" + counter + "')"); | |||
returnObjById(targetID + "Link" + counter).innerHTML = ""; | |||
returnObjById(targetID + "Link" + counter).appendChild(morphLink, 0); | |||
// Initialize content panes | |||
if ( counter == 1 ) | |||
returnObjById(targetID + "Content" + counter).style.display = "inline"; | |||
else | |||
returnObjById(targetID + "Content" + counter).style.display = "none"; | |||
counter++; | |||
} | |||
allObjects[i].innerHTML = "1"; | |||
allObjects[i].style.display = "none"; | |||
} | |||
} | |||
// Set state of appropriate objects | |||
allObjects = document.getElementsByTagName('*'); | |||
for ( var i = 0; i < allObjects.length; i++ ) { | |||
if ( stateArray[allObjects[i].className] ) | |||
allObjects[i].style.display = stateArray[allObjects[i].className]; | |||
} | |||
} | |||
/* Function that toggles collapsing objects. | |||
* Added 7/13/2008 by WhiteMystery on Encyclopedia Dramatica ([email protected]) */ | |||
function toggleCollapse(targetClass, collapseText, expandText) { | |||
var allObjects = document.getElementsByTagName('*'); | |||
var rCollapsingObject = new RegExp("^co;(.+?);(.+?);(.+?);" + targetClass + "(;(.+?))?$"); | |||
var linkType; | |||
for ( var i = 0; i < allObjects.length; i++ ) { | |||
if ( allObjects[i].className == targetClass ) { | |||
if ( allObjects[i].style.display == "none" ) { | |||
allObjects[i].style.display = "inline"; | |||
linkType = "Collapse"; | |||
} | |||
else { | |||
allObjects[i].style.display = "none"; | |||
linkType = "Expand"; | |||
} | |||
} | |||
} | |||
allObjects = document.getElementsByTagName('span'); | |||
for ( var i = 0; i < allObjects.length; i++ ) { | |||
if ( rCollapsingObject.test(allObjects[i].className) ) { | |||
var collapsingInformation = rCollapsingObject.exec(allObjects[i].className); | |||
var collapseText = collapsingInformation[1]; | |||
var expandText = collapsingInformation[2]; | |||
var linkColor = collapsingInformation[5]; | |||
var toggleLink = document.createElement("a"); | |||
if ( linkType == "Expand" ) | |||
toggleLink.appendChild(document.createTextNode(expandText)); | |||
else if ( linkType == "Collapse" ) | |||
toggleLink.appendChild(document.createTextNode(collapseText)); | |||
toggleLink.setAttribute("href", "javascript:toggleCollapse('" + targetClass + "','" + collapseText + "','" + expandText + "')"); | |||
if ( linkColor != undefined && linkColor != "undefined" && linkColor != "" ) | |||
toggleLink.style.color = linkColor; | |||
allObjects[i].innerHTML = ""; | |||
allObjects[i].appendChild(toggleLink); | |||
} | |||
} | |||
} | |||
/* Functions that perform the morph operations. | |||
* Added 8/13/2008 by WhiteMystery on Encyclopedia Dramatica ([email protected]) */ | |||
function performMorph(targetID, targetNumber) { | |||
var counter = 1; | |||
while ( returnObjById(targetID + "Content" + counter) ) { | |||
if ( counter == targetNumber ) | |||
returnObjById(targetID + "Content" + counter).style.display = "block"; | |||
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); | |||
} | |||
} | } | ||
/* </pre> */ | /* </pre> */ |