/*

- Ce plugin reçoit un ou plusieurs éléments container et parcourt ses enfants.

- Chacun de ces enfants devient un "plusMoins".

- Chacun de ces plusMoins doit avoir au moins un enfant avec une classe "click".

- Quand cet élément est cliqué, la classe du plusMoins alterne entre "ouvert" et "ferme"

- Les plusMoins ont une classe "ferme" à l'intialisation.

- Le style doit être fait par l'intégrateur. Le plugin ne fait qu'enregistrer 
un événement click et changer la classe du plusMoins quand cliqué.

- Si les plusMoins ont un ID et qu'un de ces IDs égale l'ancre dans l'URL, ce plusMoins est cliqué à l'initialisation (donc ouvert).

exemple minimal:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>new document</title>
<style type="text/css">
#myPlusMoins .click {
	background-color: #ccc;
}
#myPlusMoins .myContent {
	background-color: #ddd;
}
#myPlusMoins .ferme .myContent {
	display: none;
}
</style>
<script type="text/javascript" src="jquery-1.5.2.min.js"></script>
<script type="text/javascript" src="jquery.plusMoins.js"></script>
<script type="text/javascript">
jQuery(function($){
	$('#myPlusMoins').plusMoins();
});
</script>
</head>

<body>
<div id="myPlusMoins">
  <div>
    <div class="myHeader click">Header</div>
    <div class="myContent">Content</div>
  </div>
  <div>
    <div class="myHeader click">Header</div>
    <div class="myContent">Content</div>
  </div>
  <div>
    <div class="myHeader click">Header</div>
    <div class="myContent">Content</div>
  </div>
</div>
</body>
</html>


*/

(function($){

$.fn.plusMoins = function(){
	
	var openDefault = $([]);

	this.each(function(){
		
		var container = $(this);
		var openMany = container.hasClass('ouvrir-plusieurs');
		var items = container.children();
		
		items.each(function(){
			var item = $(this);
			var id = item.attr('id');
			var hash = id ? '#' + item.attr('id') : false;
			
			if (location.hash === hash)
				openDefault = item;
				
			function ouvrir(){
				if ( ! openMany )
					hideAll();				
				item.addClass('ouvert').removeClass('ferme');
				if (hash)
					location.replace(hash);
			}
			
			function fermer(){
				item.addClass('ferme').removeClass('ouvert');
			}
			
			item.find('.click').click(function(event){
				var handle = $(this);

				// si l'action ne fait qu'ouvrir
				if ( handle.hasClass('ouvrir') ){
					ouvrir();
				}
				
				// si l'action ne fait que fermer
				else if ( handle.hasClass('fermer') ){
					fermer();
				}
								
				// si l'action est un toggle
				else {
					if ( item.hasClass('ouvert') )
						fermer();
					else if ( item.hasClass('ferme') )
						ouvrir();
				}	
								
			});
		});
		
		function hideAll(){
			items.addClass('ferme').removeClass('ouvert');
		}
		
		hideAll();
			
	});
	
	openDefault.find('.click').eq(0).click();
	
	return this;

};

})(jQuery);
