function toggle( options) {
	if($defined(options.classDefaut)) {
		var s = $.extend({
			classDefaut: '', // ni ouvert, ni fermé
			classClose: $defined(options.classClose) ? options.classClose : options.classDefaut + '-close', // fermé
			classOpen: $defined(options.classOpen) ? options.classOpen : options.classDefaut + '-open', // ouvert
			openStart: false, // false = fermé, true = ouvert au démarrage
			cookieName: '', // si non vide, save ds cookie
			idPanel: '', // si le "contenu click" et éloigné du "contenu à ouvrir" Ex : idName-idPanel-Id
			idName: $defined(options.idName) ? options.idName : options.cookieName + '-',
			forceId: [], // force des contenus au démarrage			
			animation: '' // cf. slideToggle
		}, options);

		var bCookie = false, aCookie = [];
		if( $defined(s.cookieName) && s.cookieName != '' ) {
			aCookie = ($.cookie( s.cookieName) || '').split('\.');
			bCookie = true;
		}

		$('.' + s.classDefaut).click(function() {
			var iId = this.id.replace(s.idName, '');

			// Action
			if(s.idPanel == '') {
				if ( s.animation != '') {
					$(this).next().slideToggle(s.animation);
				} else {
					$(this).next().toggle();
				}
			} else {
				if ( s.animation != '') {
					$('#' + s.idPanel + '-' + this.id).slideToggle(s.animation);
				} else {
					$('#' + s.idPanel + '-' + this.id).toggle();
				}
			}
			$(this).inverseClass(s.classClose, s.classOpen);
			if (bCookie) {
				if ( iId + '' != '' ) {
					var iPos;
					if ( (iPos = $.inArray(iId, aCookie)) != -1) {
						do {
							aCookie.splice(iPos, 1);
						} while( (iPos = $.inArray(iId, aCookie)) != -1)
					} else {
						aCookie.push(iId);
					}
					$.cookie( s.cookieName, aCookie.join('.'), {expires: 365} );
				}
			}
		}).each(function() {
			// Initialisation
			var iPosF = -1, iId = this.id.replace(s.idName, '');
			if ( !(s.openStart ^ $.inArray(iId, aCookie) != -1) && !(s.openStart ^ (iPosF = $.inArray(iId, s.forceId)) != -1) ){
				$(this).replaceClass(s.classDefaut, s.classClose)
				if(s.idPanel == '') {
					$(this).next().hide();
				} else {
					$('#' + s.idPanel + '-' + this.id).hide();
				}
			} else {
				$(this).replaceClass(s.classDefaut, s.classOpen);
				if(s.idPanel == '') {
					$(this).next().show();
				} else {
					$('#' + s.idPanel + '-' + this.id).show();
				}
			}
			// ajout le forceid en cookie si non stocké
			if (bCookie && iPosF != -1) {
				if ( iId + '' != '') {
					var iPos;
					if ( (iPos = $.inArray(iId, aCookie)) == -1) {
						aCookie.push(iId);
						$.cookie( s.cookieName, aCookie.join('.'), {expires: 365} );
					}
				}
			}
		});
	}
}
