var BD = BD || {};
BD.AccordionController = function(element, smallWidth, largeWidth, duration)
{
	element = $(element);
	var slides = element.find('.slide');
	var currentController = null;
	
	function generate_close_callback(controller)
	{
		return function(n, fx)
		{
			controller.close_callback(n);
		}
	}
	
	function generate_callback(controller)
	{
		return function()
		{
			// Open selected slide
			controller.open(generate_close_callback(currentController));
			
			// Close curret open slide
			if (currentController && currentController!=controller)
			{
				currentController.close();
			}

			// Set selected slide controller
			currentController = controller;
		}
	};
	
	slides.each(function(key, slide)
	{
		slide = $(slide);
		var controller = new BD.AccordionSlideController(slide, smallWidth, largeWidth, duration);			
		var small = slide.find('.small');
		var large = slide.find('.large');
		
		small.click(generate_callback(controller));
		
		// Set current slide
		if (slide.hasClass('current'))
		{
			currentController = controller;
			small.css('opacity', 0);
		}
		else
		{
			large.css({
				opacity: 0,
				display: 'block'
			});
		}
	});
}
