var cd = {
	codes : Array,
	lastElements : Array,
	init : function() {
		cd.codes = $$('div.slider');
		cd.attach();
	},
	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 (cd.lastElements.length > 0 && cd.lastElements[0] != null)
				return;
		if ( Element.hasClassName(el,'slider_closed') ) {
			cd.lastElements[0] = el;
			Element.removeClassName(el,'slider_closed');
			new Effect.Parallel(
				[
					new Effect.SlideDown(el,{sync:true}),
					new Effect.Appear(el,{sync:true})
				],
				{
					duration:1.0,
					fps:40,
					queue: { position: 'end', scope: 'slider', limit: 1 },
					afterFinish: cd.hide_elements
				}
			);
			Element.removeClassName(cd.getEventSrc(e), 'less');
			Element.addClassName(cd.getEventSrc(e), 'more');
		} else if (Element.hasClassName(el,'slider_opened')) {
			cd.lastElements[0] = el;
			Element.removeClassName(el,'slider_opened');
			new Effect.Parallel(
				[
					new Effect.SlideUp(el,{sync:true}),
					new Effect.Fade(el,{sync:true})
				],
				{
					duration:1.0,
					fps:40,
					queue: { position: 'end', scope: 'slider', limit: 1 },
					afterFinish: cd.show_elements
				}
			);
			Element.removeClassName(cd.getEventSrc(e), 'more');
			Element.addClassName(cd.getEventSrc(e), 'less');
		}
	},
	show_elements : function() {
		var el = cd.lastElements[0];
		Element.removeClassName(el,'slider_opened');
		Element.addClassName(el,'slider_closed');
		cd.lastElements[0] = null;
	},
	hide_elements : function() {
		var el = cd.lastElements[0];
		Element.removeClassName(el,'slider_closed');
		Element.addClassName(el,'slider_opened');
		cd.lastElements[0] = null;
	}
	
};
Event.observe(window,'load',cd.init,false);
