var Accordion = new Class({
	initialize: function(triggers, targets) {
		// Objects
		this.targets = targets;
		this.effects = new Array();
		this.heights = new Array();
		var obj = this;
		// Initialize targets
		$each(targets, function(item, key) {
			item.set('open', 'false').setStyle('display', 'block');
			obj.heights[key] = item.getSize().y;
			if (!$chk(item.getElement('a.focus'))) item.setStyle('height', 0);
			else item.set('open', 'true');
			obj.effects[key] = new Fx.Morph(item, {link: 'cancel', onComplete: function() {
				if (item.getStyle('height').toInt() != 0) item.setStyle('height', 'auto');
			}});
		});
		// Initialize triggers
		$each(triggers, function(item, key) {
 			item.addEvent('click', function(e) {
 				if (item.get('href').test('#')) {
 					e.stop();
 					obj.toggle(key);
 				} else item.erase('target');
 			});
		});
	},
	// Toggle targets
	toggle: function(key) {
		var target = this.targets[key];
		var obj = this;
		$each(this.targets, function(item, key) {
			// If target open
			if (item==target&&item.get('open')!='true') {
				// Add class focus to anchor
				item.getPrevious('a').removeClass('focus');
				item.set('open', 'true');
				newHeight = item.measure(function() {
					item.setStyle('height', 'auto');
					height = item.getSize().y.toInt()-item.getStyle('padding-top').toInt()-item.getStyle('padding-bottom').toInt();
					item.setStyle('height', 0);
					return height;
				});
				obj.effects[key].start({'height': newHeight});
			} 
			// If open close
			else if (
				(item.get('open')=='true' && item!=target.getParent('div.accordion'))
			) {
				// Remove class focus to anchor
				item.getPrevious('a').removeClass('focus');
				item.setStyle('height', item.getSize().y.toInt()-item.getStyle('padding-top').toInt()-item.getStyle('padding-bottom').toInt());
				item.set('open', 'false');
				obj.effects[key].start({'height': 0});
			}
		});
		
	}
});

window.addEvent('domready', function() {
	$each($(document.body).getElement('div.content').getChildren('div'), function(div) {
		if ($chk(div.getElement('div.accordion')))
			new Accordion(div.getElements('a[target=accordion]'), div.getElements('div.accordion'));
	});
});
