Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var togglers = new Array();
- var allClasses = new Object(); // associative map of class names to page elements
- function toggler(id)
- {
- var toBeToggled = togglers[id];
- if (!toBeToggled)
- return;
- // sí algún elemento está en la lista más de una vez, será conmutado múltiples veces
- for (var i = 0; i < toBeToggled.length; i++)
- {
- // obtiene el arreglo de elementos sobre el que operar
- var toggles = toBeToggled[i][1];
- if (typeof(toggles) == "string")
- {
- if (toggles.charAt(0) == '-')
- {
- // lo trata como un ID de elemento, no como una clase
- toggles = document.getElementById(toggles.substring(1));
- if (toggles)
- toggles = new Array(toggles);
- }
- else
- toggles = allClasses[toggles];
- }
- if (!toggles || !toggles.length)
- continue;
- var op = toBeToggled[i][0]; // indíca que operación será
- switch (op)
- {
- case "_reset":
- for (var j = 0; j < toggles.length; j++)
- toggles[j].style.display = toggles[j]._toggle_original_display;
- break;
- case "_show":
- for (var j = 0; j < toggles.length; j++)
- toggles[j].style.display = '';
- break;
- case "_hide":
- for (var j = 0; j < toggles.length; j++)
- toggles[j].style.display = 'none';
- break;
- case "":
- default:
- // Toggle
- for (var j = 0; j < toggles.length; j++)
- toggles[j].style.display = ((toggles[j].style.display == 'none') ? '' : 'none');
- break;
- }
- }
- }
- function createTogglerLink(toggler, id)
- {
- var toggle = document.createElement("a");
- toggle.className = 'toggler-link';
- toggle.setAttribute('id', 'toggler' + id);
- toggle.setAttribute('href', 'javascript:toggler("' + id + '");');
- var child = toggler.firstChild;
- toggler.removeChild(child);
- toggle.appendChild(child);
- toggler.insertBefore(toggle, toggler.firstChild);
- }
- function toggleInit()
- {
- var togglerElems = new Array();
- var toggleGroup = new Array();
- // inicializa/limpia información vieja
- togglers = new Array();
- allClasses = new Object();
- // hace una lista de todos los documentos de clase
- var elems = document.getElementsByTagName("*");
- var numelems = elems.length;
- for (var i = 0; i < elems.length; i++)
- {
- var elem = elems[i];
- if (!elem.className)
- continue;
- elem._toggle_original_display = elem.style.display;
- var togglerID = -1;
- var elemClasses = elem.className.split(' '); // obtiene listas de clases
- for (var j = 0; j < elemClasses.length; j++)
- {
- var elemClass = elemClasses[j];
- if (! allClasses[elemClass])
- allClasses[elemClass] = new Array();
- allClasses[elemClass].push(elem);
- // todas las clases especiales inician con _toggle
- if (elemClass.substring(0, 7) != "_toggle")
- continue;
- if (elemClass == "_togglegroup")
- toggleGroup = new Array();
- else if (elemClass == "_toggle")
- toggleGroup.push(elem);
- else if (elemClass.substring(0, 12) == "_toggle_init")
- {
- // establece el valor inicial para mostrar (ignora el valor CSS establecido originalmente)
- // entiende _toggle_initshow y _toggle_inithide
- var disp = elemClass.substring(12);
- if (disp == "show")
- elem.style.display = '';
- else if (disp == "hide")
- elem.style.display = 'none';
- elem._toggle_original_display = disp;
- }
- else if (elemClass.substring(0, 8) == "_toggler")
- {
- if (togglerID == -1)
- {
- togglerID = togglers.length;
- togglers[togglerID] = new Array();
- togglerElems[togglerID] = elem;
- }
- // todas las clases son de la forma _toggler_op
- // descubre que clases estamos conmutando
- // sí ninguno es especificado, entonces usamos el grupo de conmutación actual
- var toBeToggled;
- var hyphen = elemClass.indexOf('-');
- if (hyphen != -1)
- toBeToggled = elemClass.substring(hyphen+1);
- else
- {
- toBeToggled = toggleGroup;
- hyphen = elemClass.length;
- }
- var op = elemClass.substring(8, hyphen);
- togglers[togglerID].push(new Array(op, toBeToggled));
- }
- }
- }
- // agrega javascript a todos los elementos toggle
- for (var i = 0; i < togglerElems.length; i++)
- createTogglerLink(togglerElems[i], i);
- }
- function owwsitesearch(f){
- f.q.value='site:http://openwetware.org/wiki/'+
- f.base.value+'++'+f.qfront.value
- }
- addOnloadHook(toggleInit);
Advertisement
Add Comment
Please, Sign In to add comment