(function($) {
	$.extend({
		accordion: new function() {
			
			var defaults = {
				triggers: 'h1', //les elements qui activent l'ouverture et la fermeture
				auto_hide: '', // les éléments qui se cachent et s'affichent automatiquelment lorsqu'on active l'ouverture et la fermeture
				content: '.content', // le contenu se cache par default
				hide_others: true, // si les autres blocs se ferment automatiquement quand on en ouvre un
				opened_class: 'opened', // la classe css ajouter au bloc ouvert
				open_speed: 'fast', // la vitesse d'ouverture d'un bloc
				close_speed: 'fast' // la vitesse de fermeture d'un bloc
			};
						
			
			/* public methods */
			// la fonction appelée lors de l'initialisation de l'accoréon
			this.construct = function(settings) {
				
				if(hasCSS()){
			
					defaults = $.extend(defaults, settings);
					
					var element_list = this;
					
					$(element_list).each(function(i){
					
						$(defaults.triggers, this).data('index', i);
						
						var element = this;
					
						$(defaults.content, element).hide();
						
						$(defaults.triggers, element)
							.css({cursor:'pointer'})
							.click(function(){
								var index = $(this).data('index');
								
								$(element_list).each(function(i){
									if(i==index){
										if($(this).hasClass('opened')){
											$(defaults.content, this).slideUp(defaults.close_speed);
											$(defaults.auto_hide, this).show();
											$(this).removeClass(defaults.opened_class);
										}
										else{
											$(defaults.content, this).slideDown(defaults.open_speed);
											$(defaults.auto_hide, this).hide();
											$(this).addClass(defaults.opened_class);
										}
									}
									else if(defaults.hide_others){
										$(defaults.content, this).slideUp(defaults.close_speed);
										$(defaults.auto_hide, this).show();
										$(this).removeClass(defaults.opened_class);
									}
								});
							});
					});
					
				}				
			};
			
			
			// fonction utilisée pour verifier que CSS est activé dans le navigateur	
			function hasCSS() {
				$("<div></div>")
					.attr("id", "css_test")
					.css({width:"1px", height:"1px", display:"none"})
					.appendTo($("body"));
				
				var hasCSS = ($('#css_test').width() != 1) ? false : true;
				$('#css_test').remove();
				
				return hasCSS;
			}

		}
	});
	
	// extend plugin scope
	$.fn.extend({
        accordion: $.accordion.construct
	});
	
})(jQuery);
