﻿jQuery.fn.accordeon = function(options) {
	var settings = {
		start:0, // 'all',false,0..N
		title:'dt',
		data:'dd',
		multi:false
	};
	if(options) {
		jQuery.extend(settings, options);
	}
	// walk trough accordeons
	this.each(function(i){
		// close all elements
		if(settings.start!='all')
		jQuery(this).find(settings.data).hide();
		// settings override (will be stored in datastore of the accordeons titles)
		settings.container = jQuery(this);
		// each title receive the settings and his own index into the accordeon
		jQuery(this).find(settings.title).each(function(i) { jQuery(this).data('accordeonSettings',settings); jQuery(this).data('accordeonID',i); });
		// apply click action on titles
		jQuery(this).find(settings.title).bind('click',jQuery.accordeon.display)
		// simulate click on the start element
		if(settings.start!=='all' && settings.start!==false)
			jQuery(this).find(settings.title).eq(settings.start).trigger('click');
	});
	
	
	return this;
};
 
jQuery.accordeon = {
	display: function(){
		// extract Index and settings for current datastore
		var i = jQuery(this).data('accordeonID');
		var settings = jQuery(this).data('accordeonSettings');
		// currently opened ? 
		var opened = jQuery(this).hasClass('accordeonON');
		
		if(settings.multi)
		{
			settings.container.find(settings.title).eq(i).toggleClass('accordeonON');
			settings.container.find(settings.data).eq(i).toggle();
		}
		else
		{
			// close all entries
			settings.container.find(settings.title).removeClass('accordeonON');
			settings.container.find(settings.data).hide();
			// open selected if not previously opened
			if(!opened)
			{
				settings.container.find(settings.title).eq(i).addClass('accordeonON');
				settings.container.find(settings.data).eq(i).show();
			}
		}
	}
};
