// Multiple accordion

var MultipleAccordion = new Class({
	Implements: [Options],

	/**
	 * Options
	 *
	 */
	options : {
		display: 0,
		active: 'on',
		inactive: 'off',
		onActive: function(){},
		onBackground: function(){}
	},
	
	initialize: function (aTrigger, aElements, options)
	{
		if (aTrigger.length == 0)
			return false;
		if (aElements.length == 0)
			return false;
		if (aTrigger.length != aElements.length)
			return false;
		
		// init vars
		this.setOptions(options);
		this.aTrigger = aTrigger;
		this.aElements = aElements;
		this.aSize = new Array();
		
		this.initElements();
		this.initEvents();
	},
	
	initElements: function()
	{
		this.aElements.each(function(element, index){
			var size = element.getSize();
			this.aSize[index] = size.y;
			
			if (index != this.options.display)
			{
				this.hide(index);
			}
			else
			{
				this.options.onActive(this.aTrigger[index], index);
			}
			
		}.bind(this));
	},
	
	initEvents: function()
	{
		this.aTrigger.each(function(element, index){
			element.addEvent('click', function(){
				this.toggle(index);
			}.bind(this));
		}.bind(this));
	},
	
	display: function(index)
	{
		var element = this.aElements[index];
		var myFx = new Fx.Tween(element);
		
		if (element.getStyle('height').toInt() == 0)
		{
			myFx.onComplete = function(){
				element.setStyle("height","auto");
				window.fireEvent('resize');
			}.bind(this);
			
			myFx.start('height', this.aSize[index]+'px');
			
			this.options.onActive(this.aTrigger[index], index);
			//this.aTrigger[index].removeClass(this.options.inactive);
			//this.aTrigger[index].addClass(this.options.active);
		}
	},
	
	hide: function(index)
	{
		var element = this.aElements[index];
		var myFx = new Fx.Tween(element);
		
		if (element.getStyle('height').toInt() != 0)
		{
			myFx.onComplete = function(){
			
				window.fireEvent('resize');
			}.bind(this);
			
			myFx.start('height', 0);
			this.options.onBackground(this.aTrigger[index], index);
			//this.aTrigger[index].removeClass(this.options.active);
			//this.aTrigger[index].addClass(this.options.inactive);
		}
	},
	
	toggle: function(index)
	{
		var element = this.aElements[index];
		if (element.getStyle('height').toInt() == 0)
		{
			this.display(index);
		}
		else
		{
			this.hide(index);
		}
	},
	
	debug: function()
	{
		
	}
});
