Differenze tra le versioni di "MediaWiki:Common.js"

Da ItaChan.
Vai alla navigazioneVai alla ricerca
Riga 1: Riga 1:
/* Il codice JavaScript inserito qui viene caricato da ciascuna pagina, per tutti gli utenti. */
+
/********************************
 
   
 
   
/* Hook that enables collapsing objects.
+
THE FOLLOWING VISIBILITY TOGGLING CODE IS STOLEN DIRECTLY FROM
* Added 7/13/2008 by WhiteMystery ([email protected]) */
+
THE CODE THEY USE AT ED.
 
+
addOnloadHook(createToggleLinks);
+
*/
 
+
 
/* Function that creates collapsing objects and toggle links.
+
 
  * Added 7/13/2008 by WhiteMystery ([email protected]) */
+
  addOnloadHook(createToggleLinks);
 
+
function createToggleLinks() {
+
  /* Function that toggles ED's collapsing objects.
 
+
    * Added 11/5/2007 by WhiteMystery ([email protected])
var stateArray = new Array();
+
    * Uses publicly available code in one function, where noted. */
var allObjects = document.getElementsByTagName('span');
+
var rCollapsingObject = new RegExp("^co;(.+?);(.+?);(.+?);(.+?)(;(.+?))?$");
+
  function toggleCollapse(objToToggle, collapseText, expandText) {
+
for ( var i = 0; i < allObjects.length; i++ ) {
+
  var linkText = "";
+
  var targetObject = returnObjById(objToToggle);
if ( rCollapsingObject.test(allObjects[i].className) ) {
+
   
+
  if ( targetObject ) {
var collapsingInformation = rCollapsingObject.exec(allObjects[i].className);
+
+
  if ( targetObject.style.display == "none" ) {
var collapseText = collapsingInformation[1];
+
var expandText = collapsingInformation[2];
+
  targetObject.style.display = "block";
var initialState = collapsingInformation[3];
+
  linkText = collapseText;
var targetClass = collapsingInformation[4];
+
  }
var linkColor = collapsingInformation[6];
+
+
  else {
var toggleLink = document.createElement("a");
+
+
  targetObject.style.display = "none";
if ( initialState == "0" ) {
+
  linkText = expandText;
+
  }
toggleLink.appendChild(document.createTextNode(expandText));
+
stateArray[targetClass] = "none";
+
  var toggleLink = document.createElement("a");
}
+
  toggleLink.appendChild(document.createTextNode(linkText));
+
  toggleLink.setAttribute("href", "javascript:toggleCollapse('" + objToToggle + "','" + collapseText + "','" + expandText + "')");
else {
+
+
  returnObjById(objToToggle + "Link").innerHTML = "";
toggleLink.appendChild(document.createTextNode(collapseText));
+
  returnObjById(objToToggle + "Link").appendChild(toggleLink);
stateArray[targetClass] = "inline";
+
  }
}
+
  }
+
toggleLink.setAttribute("href", "javascript:toggleCollapse('" + targetClass + "','" + collapseText + "','" + expandText + "')");
+
  /* Functions that performs the morph operation.
+
    * Added 1/11/2008 by WhiteMystery (misterioblanco@gmail.com)
if ( linkColor != undefined && linkColor != "undefined" && linkColor != "" )
+
    * Uses publicly available code in one function, where noted. */
toggleLink.style.color = linkColor;
+
+
  function performMorph(targetID, targetNumber) {
allObjects[i].innerHTML = "";
+
allObjects[i].appendChild(toggleLink);
+
  var counter = 1;
}
+
+
  while ( returnObjById(targetID + "Content" + counter) ) {
else if ( allObjects[i].className == "morphMaster" ) {
+
+
  if ( counter == targetNumber )
var spanID = allObjects[i].getAttribute("id");
+
  returnObjById(targetID + "Content" + counter).style.display = "block";
var targetID = spanID.substr(0, spanID.length - 6);
+
  else
var counter = 1;
+
  returnObjById(targetID + "Content" + counter).style.display = "none";
+
// Create forward and backward paging if the paging elements exist
+
  counter++;
if ( returnObjById(targetID + "LinkNext") && returnObjById(targetID + "LinkPrev") && returnObjById(targetID + "Content1") ) {
+
  }
+
// Create the forward link
+
  returnObjById(targetID + "Master").innerHTML = targetNumber;
var nextLink = document.createElement("a");
+
  }
nextLink.appendChild(document.createTextNode(returnObjById(targetID + "LinkNext").innerHTML));
+
nextLink.setAttribute("href", "javascript:morphForward('" + targetID + "')");
+
  function morphForward(targetID) {
+
returnObjById(targetID + "LinkNext").innerHTML = "";
+
  var nextPane = parseInt(returnObjById(targetID + "Master").innerHTML) + 1;
returnObjById(targetID + "LinkNext").appendChild(nextLink, 0);
+
+
  if ( returnObjById(targetID + "Content" + nextPane) )
// Create the backward link
+
  performMorph(targetID, nextPane);
var prevLink = document.createElement("a");
+
prevLink.appendChild(document.createTextNode(returnObjById(targetID + "LinkPrev").innerHTML));
+
  else
prevLink.setAttribute("href", "javascript:morphBackward('" + targetID + "')");
+
  performMorph(targetID, "1");
+
  }
returnObjById(targetID + "LinkPrev").innerHTML = "";
+
returnObjById(targetID + "LinkPrev").appendChild(prevLink, 0);
+
  function morphBackward(targetID) {
+
// Initialize content panes
+
  var prevPane = parseInt(returnObjById(targetID + "Master").innerHTML) - 1;
while ( returnObjById(targetID + "Content" + counter) ) {
+
+
  if ( prevPane > 0 )
if ( counter == 1 )
+
  performMorph(targetID, prevPane);
returnObjById(targetID + "Content" + counter).style.display = "inline";
+
else
+
  else {
returnObjById(targetID + "Content" + counter).style.display = "none";
+
+
  var maxIndex = 1;
counter++;
+
}
+
  while ( returnObjById(targetID + "Content" + maxIndex) )
}
+
  maxIndex++;
 
+
counter = 1;
+
  performMorph(targetID, maxIndex - 1);
+
  }
// Whether or not there is paging, generate normal links
+
  }
while ( returnObjById(targetID + "Link" + counter) && returnObjById(targetID + "Content" + counter) ) {
+
+
  /* Function that creates ED's collapsing objects and toggle links.
var morphLink = document.createElement("a");
+
    * Added 11/5/2007 by WhiteMystery ([email protected])
morphLink.appendChild(document.createTextNode(returnObjById(targetID + "Link" + counter).innerHTML));
+
    * Uses publicly available code in one function, where noted.
morphLink.setAttribute("href", "javascript:performMorph('" + targetID + "','" + counter + "')");
+
    *
+
    * Updated: 1/11/2008 by WhiteMystery to add new Morphing Objects
returnObjById(targetID + "Link" + counter).innerHTML = "";
+
    * functionality. */
returnObjById(targetID + "Link" + counter).appendChild(morphLink, 0);
+
+
  function createToggleLinks() {
// Initialize content panes
+
if ( counter == 1 )
+
  var spanCollection = document.getElementsByTagName("span");
returnObjById(targetID + "Content" + counter).style.display = "inline";
+
else
+
  for ( i = 0; i < spanCollection.length; i++ ) {
returnObjById(targetID + "Content" + counter).style.display = "none";
+
+
  if ( spanCollection[i].className == "toggleLink" ) {
counter++;
+
}
+
  var spanID = spanCollection[i].getAttribute("id");
+
  var targetID = spanID.substr(0, spanID.length - 4);
allObjects[i].innerHTML = "1";
+
  var collapseText = returnObjById(targetID + "CollapseText").innerHTML;
allObjects[i].style.display = "none";
+
  var expandText = returnObjById(targetID + "ExpandText").innerHTML;
}
+
  var initialState = returnObjById(targetID + "InitialState").innerHTML;
}
+
+
  var toggleLink = document.createElement("a");
// Set state of appropriate objects
+
allObjects = document.getElementsByTagName('*');
+
  if ( initialState == "0" ) {
+
for ( var i = 0; i < allObjects.length; i++ ) {
+
  returnObjById(targetID).style.display = "none";
+
  toggleLink.appendChild(document.createTextNode(expandText));
if ( stateArray[allObjects[i].className] )
+
  }
allObjects[i].style.display = stateArray[allObjects[i].className];
+
}
+
  else {
}
+
 
+
  returnObjById(targetID).style.display = "block";
/* Function that toggles collapsing objects.
+
  toggleLink.appendChild(document.createTextNode(collapseText));
* Added 7/13/2008 by WhiteMystery ([email protected]) */
+
  }
 
+
function toggleCollapse(targetClass, collapseText, expandText) {
+
  toggleLink.setAttribute("href", "javascript:toggleCollapse('" + targetID + "','" + collapseText + "','" + expandText + "')");
 
+
var allObjects = document.getElementsByTagName('*');
+
  spanCollection[i].appendChild(toggleLink);
var rCollapsingObject = new RegExp("^co;(.+?);(.+?);(.+?);" + targetClass + "(;(.+?))?$");
+
  }
+
var linkType;
+
  else if ( spanCollection[i].className == "morphMaster" ) {
+
for ( var i = 0; i < allObjects.length; i++ ) {
+
  var spanID = spanCollection[i].getAttribute("id");
+
  var targetID = spanID.substr(0, spanID.length - 6);
if ( allObjects[i].className == targetClass ) {
+
  var counter = 1;
+
if ( allObjects[i].style.display == "none" ) {
+
  // Create forward and backward paging if the paging elements exist
+
  if ( returnObjById(targetID + "LinkNext") && returnObjById(targetID + "LinkPrev") && returnObjById(targetID + "Content1") ) {
allObjects[i].style.display = "inline";
+
linkType = "Collapse";
+
  // Create the forward link
}
+
  var nextLink = document.createElement("a");
+
  nextLink.appendChild(document.createTextNode(returnObjById(targetID + "LinkNext").innerHTML));
else {
+
  nextLink.setAttribute("href", "javascript:morphForward('" + targetID + "')");
+
allObjects[i].style.display = "none";
+
  returnObjById(targetID + "LinkNext").innerHTML = "";
linkType = "Expand";
+
  returnObjById(targetID + "LinkNext").appendChild(nextLink, 0);
}
+
}
+
  // Create the backward link
}
+
  var prevLink = document.createElement("a");
+
  prevLink.appendChild(document.createTextNode(returnObjById(targetID + "LinkPrev").innerHTML));
allObjects = document.getElementsByTagName('span');
+
  prevLink.setAttribute("href", "javascript:morphBackward('" + targetID + "')");
+
for ( var i = 0; i < allObjects.length; i++ ) {
+
  returnObjById(targetID + "LinkPrev").innerHTML = "";
+
  returnObjById(targetID + "LinkPrev").appendChild(prevLink, 0);
if ( rCollapsingObject.test(allObjects[i].className) ) {
+
+
  // Initialize content panes
var collapsingInformation = rCollapsingObject.exec(allObjects[i].className);
+
  while ( returnObjById(targetID + "Content" + counter) ) {
+
var collapseText = collapsingInformation[1];
+
  if ( counter == 1 )
var expandText = collapsingInformation[2];
+
  returnObjById(targetID + "Content" + counter).style.display = "block";
var linkColor = collapsingInformation[5];
+
  else
+
  returnObjById(targetID + "Content" + counter).style.display = "none";
var toggleLink = document.createElement("a");
+
+
  counter++;
if ( linkType == "Expand" )
+
  }
+
  }
toggleLink.appendChild(document.createTextNode(expandText));
+
+
  counter = 1;
else if ( linkType == "Collapse" )
+
+
  // Whether or not there is paging, generate normal links
toggleLink.appendChild(document.createTextNode(collapseText));
+
  while ( returnObjById(targetID + "Link" + counter) && returnObjById(targetID + "Content" + counter) ) {
+
toggleLink.setAttribute("href", "javascript:toggleCollapse('" + targetClass + "','" + collapseText + "','" + expandText + "')");
+
  var morphLink = document.createElement("a");
+
  morphLink.appendChild(document.createTextNode(returnObjById(targetID + "Link" + counter).innerHTML));
if ( linkColor != undefined && linkColor != "undefined" && linkColor != "" )
+
  morphLink.setAttribute("href", "javascript:performMorph('" + targetID + "','" + counter + "')");
toggleLink.style.color = linkColor;
+
+
  returnObjById(targetID + "Link" + counter).innerHTML = "";
allObjects[i].innerHTML = "";
+
  returnObjById(targetID + "Link" + counter).appendChild(morphLink, 0);
allObjects[i].appendChild(toggleLink);
+
}
+
  // Initialize content panes
}
+
  if ( counter == 1 )
}
+
  returnObjById(targetID + "Content" + counter).style.display = "block";
 
+
  else
/* Functions that perform the morph operations.
+
  returnObjById(targetID + "Content" + counter).style.display = "none";
* Added 8/13/2008 by WhiteMystery ([email protected]) */
+
 
+
  counter++;
function performMorph(targetID, targetNumber) {
+
  }
 
+
var counter = 1;
+
  spanCollection[i].innerHTML = "1";
+
  spanCollection[i].style.display = "none";
while ( returnObjById(targetID + "Content" + counter) ) {
+
  }
+
  }
if ( counter == targetNumber )
+
  }
returnObjById(targetID + "Content" + counter).style.display = "block";
+
else
+
  /* Function that toggles ED's collapsing objects.
returnObjById(targetID + "Content" + counter).style.display = "none";
+
    * Added 11/5/2007 by WhiteMystery (misterioblanco@gmail.com)
+
    * Taken from http://www.netlobo.com/javascript_get_element_id.html */
counter++;
+
}
+
  function returnObjById( id ) {
+
returnObjById(targetID + "Master").innerHTML = targetNumber;
+
      if (document.getElementById)
}
+
          var returnVar = document.getElementById(id);  
 
+
      else if (document.all)
function morphForward(targetID) {
+
          var returnVar = document.all[id];  
 
+
      else if (document.layers)
var nextPane = parseInt(returnObjById(targetID + "Master").innerHTML) + 1;
+
          var returnVar = document.layers[id];  
+
      return returnVar;  
if ( returnObjById(targetID + "Content" + nextPane) )
+
  }
performMorph(targetID, nextPane);
+
 
+
  /****************
else
+
performMorph(targetID, "1");
+
  END OF THE VISIBILITY TOGGLING CODE FROM ED
}
+
 
 
+
  ***/
function morphBackward(targetID) {
+
 
+
var prevPane = parseInt(returnObjById(targetID + "Master").innerHTML) - 1;
+
  /***
+
    This function autohides content of the class 'autohide'.
if ( prevPane > 0 )
+
    Haven't touched js code in ages so I may be doing this
performMorph(targetID, prevPane);
+
    in a retarded fashion, but whatever. -IAAPMOTESOD
+
  **/
else {
+
 
+
    addOnloadHook(autoHide);
var maxIndex = 1;
+
    function autoHide() {
+
      var stuffToAutohide = getElementsByClassName(document, "*", "autohide");
while ( returnObjById(targetID + "Content" + maxIndex) )
+
    for (var i = 0; i < stuffToAutohide.length; i++) {
maxIndex++;
+
    stuffToAutohide[i].style.display = 'none';
+
    }
performMorph(targetID, maxIndex - 1);
+
     }
}
 
}
 
 
 
/* Function that returns an object by ID for various browsers
 
* 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;
 
}
 

Versione delle 11:02, 10 lug 2009

 /********************************
 
 THE FOLLOWING VISIBILITY TOGGLING CODE IS STOLEN DIRECTLY FROM
 THE CODE THEY USE AT ED.
 
 */
   
   
   addOnloadHook(createToggleLinks);
 
   /* Function that toggles ED's collapsing objects.
    * Added 11/5/2007 by WhiteMystery ([email protected])
    * Uses publicly available code in one function, where noted. */
 
   function toggleCollapse(objToToggle, collapseText, expandText) {
 
   	var linkText = "";
   	var targetObject = returnObjById(objToToggle);
 
   	if ( targetObject ) {
 
   		if ( targetObject.style.display == "none" ) {
 
   			targetObject.style.display = "block";
   			linkText = collapseText;
   		}
 
   		else {
 
   			targetObject.style.display = "none";
   			linkText = expandText;
   		}
 
   		var toggleLink = document.createElement("a");
   		toggleLink.appendChild(document.createTextNode(linkText));
   		toggleLink.setAttribute("href", "javascript:toggleCollapse('" + objToToggle + "','" + collapseText + "','" + expandText + "')");
 
   		returnObjById(objToToggle + "Link").innerHTML = "";
   		returnObjById(objToToggle + "Link").appendChild(toggleLink);
   	}
   }
 
   /* Functions that performs the morph operation.
    * Added 1/11/2008 by WhiteMystery ([email protected])
    * 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 = "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);
   	}
   }
 
   /* Function that creates ED's collapsing objects and toggle links.
    * Added 11/5/2007 by WhiteMystery ([email protected])
    * Uses publicly available code in one function, where noted.
    *
    * Updated: 1/11/2008 by WhiteMystery to add new Morphing Objects
    * functionality. */
 
   function createToggleLinks() {
 
   	var spanCollection = document.getElementsByTagName("span");
 
   	for ( i = 0; i < spanCollection.length; i++ ) {
 
   		if ( spanCollection[i].className == "toggleLink" ) {
 
   			var spanID = spanCollection[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("a");
 
   			if ( initialState == "0" ) {
 
   				returnObjById(targetID).style.display = "none";
   				toggleLink.appendChild(document.createTextNode(expandText));
   			}
 
   			else {
 
   				returnObjById(targetID).style.display = "block";
   				toggleLink.appendChild(document.createTextNode(collapseText));
   			}
 
   			toggleLink.setAttribute("href", "javascript:toggleCollapse('" + targetID + "','" + collapseText + "','" + expandText + "')");
 
   			spanCollection[i].appendChild(toggleLink);
   		}
 
   		else if ( spanCollection[i].className == "morphMaster" ) {
 
   			var spanID = spanCollection[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 = "block";
   					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 = "block";
   				else
   					returnObjById(targetID + "Content" + counter).style.display = "none";
 
   				counter++;
   			}
 
   			spanCollection[i].innerHTML = "1";
   			spanCollection[i].style.display = "none";
   		}
   	}
   }
 
   /* Function that toggles ED's collapsing objects.
    * Added 11/5/2007 by WhiteMystery ([email protected])
    * 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; 
   }
   
   /****************
 
  END OF THE VISIBILITY TOGGLING CODE FROM ED
  
   ***/
 
 
   /*** 
    This function autohides content of the class 'autohide'.
    Haven't touched js code in ages so I may be doing this
    in a retarded fashion, but whatever. -IAAPMOTESOD
  **/
  
    addOnloadHook(autoHide);  
    function autoHide() {
      var stuffToAutohide = getElementsByClassName(document, "*", "autohide");
     	for (var i = 0; i < stuffToAutohide.length; i++) {
     		stuffToAutohide[i].style.display = 'none';
     	}
    }