var ElementSlider = Class.create();

ElementSlider.prototype = {

	initialize: function(elementList){
		this.elementList = elementList;
		this.slide_on_action = false;
		this.duration = 0.5;
		
		this.hideAll();
	},
	
	
	slide: function(element_id, toggle_element_id){
		var visibles = false;
		
		if (this.slide_on_action) 
			return;
		
		
		this.slide_on_action = true;
		
		if ($(element_id).visible()) {

			this.slideUp(element_id,toggle_element_id);
			setTimeout(this.endAction.bind(this), this.duration*1000);
			return;
		}
		
		this.elementList.each(function(elementList){
			
			if ($(elementList.id).visible()) 
			{
				this.slideUp(elementList.id,elementList.toggleId);
				visibles = true;
			}
		}.bind(this));
		
		if (visibles) {
		
			this.slideDown(element_id,toggle_element_id);
			
		}
		else {
			this.slideDown(element_id,toggle_element_id);
		}
		
		setTimeout(this.endAction.bind(this), this.duration*1000);
	},
	slideUp: function(name, toggle_element_id)
	{
		Effect.SlideUp(name, {
			duration: this.duration,
			afterFinish: function()
			{
				$(toggle_element_id).removeClassName('open');
			}.bind(this)
		});
		
	},
	
	slideDown: function(name, toggle_element_id)
	{
		Effect.SlideDown(name, {
			duration: this.duration,
			afterFinish: function()
			{
				$(toggle_element_id).addClassName('open');
			}.bind(this)
		});
		
	},
	
	endAction: function()
	{
		this.slide_on_action = false;
	},
	hideAll: function()
	{
		this.elementList.each(function(name) 
		{
			$(name.id).hide();
		});
	}
}
	