document.observe("dom:loaded", function() {
	$$('.accordion').each ( function(accordion) {
		accordion.childElements().each( function(accordionElement) {
			var accordionElementChildren = accordionElement.childElements();
			accordionElementChildren[0].removeClassName('open');
			accordionElementChildren[0].addClassName('close');
			accordionElementChildren[1].hide();
			accordion.betweenElement;
			$(accordionElement.down()).observe('click', function(event){
				if (accordion.currentElement != Event.element(event).next() && accordion.betweenElement != Event.element(event).next()) {
					accordion.betweenElement = Event.element(event).next();
					var effects = [];
					accordion.newElement = Event.element(event).next();
					accordion.newElement.setStyle({
						display: 'block',
						overflow: 'hidden',
						height: '0px'
					});
					var options = {

						sync: true,
						scaleFrom: 0,
						scaleContent: false,
						transition: Effect.Transitions.sinoidal,
						scaleMode: {
							originalHeight: accordion.newElement.scrollHeight,
							originalWidth: accordion.newElement.scrollWidth
						},
						scaleX: false,
						scaleY: true
					};

					effects.push(
						new Effect.Scale(accordion.newElement, 100, options)
					);
					if (accordion.currentElement) {

						options = {
							sync: true,
							scaleContent: false,
							transition: Effect.Transitions.sinoidal,
							scaleX: false,
							scaleY: true
						};
						effects.push(
							new Effect.Scale(accordion.currentElement, 0, options)
						);
					}
					new Effect.Parallel(effects, {
						duration: 0.5,
						queue: {
							position: 'end',
							scope: 'accordionAnimation'
						},
						afterFinish: function() {
							accordion.currentElement.setStyle({
								height: 'auto',
								display: 'none'
							});
							accordion.currentElement.previous(0).removeClassName('open');
							accordion.currentElement.previous(0).addClassName('close');
							accordion.newElement.previous(0).addClassName('open');
							accordion.newElement.previous(0).removeClassName('close');
							accordion.currentElement = accordion.newElement;
						}.bind(accordion)
					});
				}
			});
		});
		var accordionChildren = accordion.childElements()[0].childElements();
		accordion.currentElement = accordionChildren[1];
		accordionChildren[0].removeClassName('close');
		accordionChildren[0].addClassName('open');
		accordion.currentElement.show();
	});
});
