var cd = {
	codes : Array,
	init : function() {
		cd.codes = document.getElementsByClassName('code');
		cd.attach();
		var i;
		for ( i=0;i<cd.codes.length;i++ ) {
			el = cd.codes[i].nextSibling;
			new Effect.SlideUp(el, {duration:.5,fps:40});
			Element.addClassName(el,'closed')
			Element.addClassName(el.previousSibling,'collapsed');
		}
	},
	attach : function() {
		var i;
		for ( i=0;i<cd.codes.length;i++ ) {
			Event.observe(cd.codes[i],'click',cd.collapse,false);
			Element.cleanWhitespace(cd.codes[i].parentNode);
		}
	},
	getEventSrc : function (e) {
		if (!e) e = window.event;
		if (e.originalTarget)
			return e.originalTarget;
		else if (e.srcElement)
		return e.srcElement;
	},
	collapse : function(e) {
		var el = cd.getEventSrc(e).nextSibling;
		if ( Element.hasClassName(el,'closed') ) {
			new Effect.SlideDown(el, { duration: .5,fps:40 });
			Element.removeClassName(el,'closed');
			Element.removeClassName(el.previousSibling,'collapsed');
			Element.addClassName(el.previousSibling,'expanded');
		} else {
			new Effect.SlideUp(el, {duration:.5,fps:40});
			Element.addClassName(el,'closed')
			Element.addClassName(el.previousSibling,'collapsed');
			Element.removeClassName(el.previousSibling,'expanded');
		}
	}
};
Event.observe(window,'load',cd.init,false);