var ccn = "clicker"; var clcn = "closed"; var opcn = "open"; function getElementsByTagAndClassName(tag, cname) { var tags = document.getElementsByTagName(tag); var cEls = new Array(); for (i = 0; i < tags.length; i++) { var rE = new RegExp("(^|\s)" + cname + "(\s|$)"); if (rE.test(tags[i].className)) { cEls.push(tags[i]); } } return cEls; } function toggleNextOpenClose(el) { var next = el.nextSibling; el.className = el.className.replace(new RegExp(opcn + "\\b"), ""); el.className = el.className.replace(new RegExp(clcn + "\\b"), ""); while(next.nodeType != 1) next = next.nextSibling; next.style.display = (next.style.display == "none" ? "block" : "none"); el.className += (next.style.display == "block" ? " " + opcn : " " + clcn); } function toggleNextByTagAndClassName(tag, cname) { clickers = getElementsByTagAndClassName(tag, cname); for (i = 0; i < clickers.length; i++) { clickers[i].className += " " + ccn; clickers[i].className += " " + clcn; clickers[i].onclick = function() { toggleNextOpenClose(this); } toggleNextOpenClose(clickers[i]); } } function addEvent(obj, type, fn) { if (obj.addEventListener) { obj.addEventListener(type, fn, false); EventCache.add(obj, type, fn); } else if (obj.attachEvent) { obj["e" + type + fn] = fn; obj[type + fn] = function() { obj["e" + type + fn](window.event); } obj.attachEvent("on" + type, obj[type + fn]); EventCache.add(obj, type, fn); } else { obj["on" + type] = obj["e" + type + fn]; } } var EventCache = function() { var listEvents = []; return { listEvents : listEvents, add : function(node, sEventName, fHandler, bCapture) { listEvents.push(arguments); }, flush : function() { var i, item; for (i = listEvents.length - 1; i >= 0; i = i - 1) { item = listEvents[i]; if(item[0].removeEventListener) { item[0].removeEventListener(item[1], item[2], item[3]); }; if (item[1].substring(0, 2) != "on") { item[1] = "on" + item[1]; }; if (item[0].detachEvent) { item[0].detachEvent(item[1], item[2]); }; item[0][item[1]] = null; }; } }; }(); function pageLoaders(e) { toggleNextByTagAndClassName("div", "archiveYear"); toggleNextByTagAndClassName("div", "archiveMonth"); } addEvent(window, "unload", EventCache.flush); addEvent(window, "load", pageLoaders);