// styling functions function isA(o,klass){ return new RegExp('\\b'+klass+'\\b').test(o.className) } function addClass(o,klass){ if(!isA(o,klass)) o.className += ' ' + klass } function rmClass(o,klass){ o.className = o.className.replace(new RegExp('\\s*\\b'+klass+'\\b'),'') } function swapClass(o,klass,klass2){ var swap = isA(o,klass) ? [klass,klass2] : [klass2,klass]; rmClass(o,swap[0]); addClass(o,swap[1]) } // shorter names for grabbing stuff function $tags(t,o){ o=o||document; return o.getElementsByTagName(t) } function $tag(t,o,i) { o=o||document; return o.getElementsByTagName(t)[i||0] } // get elements by class name function $c(c,o,t) { o=o||document; if (!o.length) {o = [o]} var elements = []; for(var i = 0, e; e = o[i]; i++) { if(e.getElementsByTagName) { var children = e.getElementsByTagName(t || '*'); for (var j = 0, child; child = children[j]; j++) { if(isA(child,c)) { elements.push(child); } } } } return elements; } var Fold = { folded : {}, go : function(){ if(!document.getElementsByTagName || !document.childNodes) return var fold,icon,text // collect elements of class 'help' within divs var folds = $c('help',document,'div') this.ffhack() //weird spacing bug in ff for(fold in folds) { fold = folds[fold] // get element of class 'icon' within element of class 'help' icon = $c('icon',fold)[0] text = $c('text',fold)[0] if(icon) { icon.onclick = this.toggle(text); text.onclick = this.toggle(text); icon.style.cursor = 'pointer' //this.toggle(text)() }}}, toggle : function(element){ return (function(){ if (element.style.display == 'block') element.style.display = 'none' else element.style.display = 'block' })}, ffhack : function() { var u=$c('bundles',document,'ul'),i for(i in u) {i=u[i]; var b=document.createElement('li'); b.innerHTML=' '; b.className='bundle ffhack'; i.insertBefore(b,i.firstChild) } }} .