var collapse = {
	elements : Array,
	init : function() {
		collapse.elements = document.getElementsByClassName('collapsible');
		collapse.attach();

		var collapsed_elements = document.getElementsByClassName('collapsed');
		collapsed_elements.each(function(el) {
		    el.hide();
		});
	},
	attach : function() {
		var i;
		for ( i=0;i<collapse.elements.length;i++ ) {
			Event.observe(collapse.elements[i].down().next('.collapsible_handler'),'click',collapse.doCollapse,false);
			Element.cleanWhitespace(collapse.elements[i]);
		}
	},
	getEventSrc : function (e) {
		if (!e) e = window.event;
		if (e.originalTarget)
			return e.originalTarget;
		else if (e.srcElement)
		return e.srcElement;
	},
	doCollapse : function(e) {
		var el = collapse.getEventSrc(e).previous('.collapsible_content');

		if ( Element.hasClassName(el,'collapsed') ) {
			new Effect.Parallel(
				[
					new Effect.SlideDown(el,{sync:true}),
					new Effect.Appear(el,{sync:true})
				],
				{
					duration:0.5,
					fps:40
				}
			);
			Element.removeClassName(el,'collapsed');
		} else {
			new Effect.Parallel(
				[
					new Effect.SlideUp(el,{sync:true}),
					new Effect.Fade(el,{sync:true})
				],
				{
					duration:0.5,
					fps:40
				}
			);
			Element.addClassName(el,'collapsed')
		}
		Event.stop(e);
	}
};
Event.observe(window,'load',collapse.init,false);