11,055
edits
DansFriend (talk | contribs) mNo edit summary |
DansFriend (talk | contribs) No edit summary |
||
Line 12: | Line 12: | ||
// each operation is a two element array, the first being the type, the second a class name or array of elements | // each operation is a two element array, the first being the type, the second a class name or array of elements | ||
// operation types are strings like "_reset" or "" for the default toggle operation | // operation types are strings like "_reset" or "" for the default toggle operation | ||
var togglers = []; | var togglers = []; | ||
var togglerStates = []; | |||
var allClasses = {}; // associative map of class names to page elements | var allClasses = {}; // associative map of class names to page elements | ||
Line 53: | Line 54: | ||
// Toggle | // Toggle | ||
for (j = 0; j < toggles.length; j++) | for (j = 0; j < toggles.length; j++) | ||
togglerStates[id] = !togglerStates[id]; | |||
if (togglerStates[id] || !togglerStates[id] && areAllTogglersOff(toggles[j])) | |||
toggles[j].style.display = (togglerStates[id] ? '' : 'none'); | |||
break; | break; | ||
} | } | ||
} | } | ||
} | |||
function areAllTogglersOff(elem) | |||
{ | |||
for (var i = 0; i < allClasses.length; i++) | |||
{ | |||
if (allClasses[toggles[i]].includes(elem) && togglerStates[i] === true) | |||
{ | |||
return false; | |||
} | |||
} | |||
return true; | |||
} | } | ||
Line 76: | Line 91: | ||
// initialize/clear any old information | // initialize/clear any old information | ||
togglers = []; | togglers = []; | ||
togglerStates = []; | |||
allClasses = {}; | allClasses = {}; | ||
Line 89: | Line 105: | ||
elem._toggle_original_display = elem.style.display; | elem._toggle_original_display = elem.style.display; | ||
var togglerID = -1; | var togglerID = -1; | ||
var togglerState = true; | |||
var elemClasses = elem.className.split(' '); // get list of classes | var elemClasses = elem.className.split(' '); // get list of classes | ||
for (var j = 0; j < elemClasses.length; j++) | for (var j = 0; j < elemClasses.length; j++) | ||
Line 94: | Line 111: | ||
var elemClass = elemClasses[j]; | var elemClass = elemClasses[j]; | ||
// all the special classes begin with _toggle | |||
if (elemClass.substring(0, 7) != "_toggle") | if (elemClass.substring(0, 7) != "_toggle") | ||
continue; | continue; | ||
Line 136: | Line 153: | ||
togglers[togglerID].push(new Array(op, toBeToggled)); | togglers[togglerID].push(new Array(op, toBeToggled)); | ||
togglerStates[togglerID].push(togglerState); | |||
} | } | ||
} | } |