Difference between revisions of "MediaWiki:Common.js"

From Discovery Wiki
Jump to navigationJump to search
(Added two event functions (DW_eventAttach, DW_hookToElement) and a function for Template:SpoilerBox (DW_toggleVisibility))
 
Line 26: Line 26:
 
/* Function for Template:SpoilerBox */
 
/* Function for Template:SpoilerBox */
 
function DW_toggleVisibility (obj) {
 
function DW_toggleVisibility (obj) {
var container = obj.parentNode.getElementsByTagName('div').item(0);
+
var container = obj.parentNode.parentNode.getElementsByTagName('div').item(0);
 
if (!container.style.display || container.style.display == 'block') {
 
if (!container.style.display || container.style.display == 'block') {
 
container.style.display = 'none';
 
container.style.display = 'none';
Line 35: Line 35:
 
}
 
}
 
}
 
}
addOnloadHook(function () { DW_hookToElement('a', 'dwspoiler', 'click', function () { DW_toggleVisibility(this); }); });
+
addOnloadHook(function () { DW_hookToElement('span', 'dwspoiler', 'click', function () { DW_toggleVisibility(this); }); });

Revision as of 23:10, 12 July 2009

/* Any JavaScript here will be loaded for all users on every page load. */

/* Event attach functions. Use DW_hookToElement to hook functions to browser
events for certain elements. */
function DW_eventAttach (obj, event, handler) {
	if (obj.addEventListener) {
		obj.addEventListener(event, handler, false);
	} else if (obj.attachEvent) {
		var r = obj.attachEvent('on' + event, handler);
	} else {
		obj['on' + event] = handler;
	}
}

function DW_hookToElement (el, n, ev, func) {
	var el_list = document.getElementsByTagName(el);
	var el_cur;
	for (var i = 0, l = el_list.length; i < l; i++){ 
		el_cur = el_list[i];
		if (el_cur.name && el_cur.name == n) {
			DW_eventAttach(el_cur, ev, func);
		}
	}
}

/* Function for Template:SpoilerBox */
function DW_toggleVisibility (obj) {
	var container = obj.parentNode.parentNode.getElementsByTagName('div').item(0);
	if (!container.style.display || container.style.display == 'block') {
		container.style.display = 'none';
		obj.innerHTML = 'Show';
	} else {
		container.style.display = 'block';
		obj.innerHTML = 'Hide';
	}
}
addOnloadHook(function () { DW_hookToElement('span', 'dwspoiler', 'click', function () { DW_toggleVisibility(this); }); });