/*****************************************
			   Auteur :	
	  Gael du Plessix - Neweb Design
			Copyright 2008
	Tous droits réservés à Neweb Design
*****************************************/

var Accordion = Class.create({
	
	initialize: function(cont,options)
		{
		this.options = {
				id: cont,				
				class_tooggle:'accordion-toggle',
				class_tooggle_active:'accordion-toggle-active',
				class_content:'accordion-content',
				duration: 0.5,
				transition: Effect.Transitions.sinoidal,
				positionInit: false
			};
					
		this.options = Object.extend(this.options,options);
		
		//Parcours des volets et modification du html
		$$('#'+this.options.id+' .'+this.options.class_content).each(function(e){				
			//Création du div conteneur
			var contVolet = new Element('div',{'class':'cont_volet'});
			contVolet.update(e.innerHTML);
			e.update(contVolet);
			e.setStyle({ height:'0px' });
			}.bind(this));
			
		//Bind pour évènement
		this.bindTooggleVolet = this.tooggleVolet.bindAsEventListener(this);
		
		$$('#'+this.options.id+' .'+this.options.class_tooggle).each(function(e){
			//Bind des tooggles			
			Event.observe(e,'click',this.bindTooggleVolet);
			}.bind(this));
		
		
		if(this.options.positionInit !== false)
			{
			$$('#'+this.options.id+' .'+this.options.class_tooggle).each(function(e,i){
				if(i+1 == this.options.positionInit)
					{
					this.tooggleVolet({element:function(){return e;}});
					}
				}.bind(this));
			}
		},
		
	tooggleVolet: function(event)
		{
		var element = event.element();
		var content = element.next();
		var contVolet = content.down('.cont_volet');
		
		if(content.getHeight() == 0)
			{
			//récup de la hauteur du contenu
			var newHeight = contVolet.getHeight();
			//Définition de la nouvelle hauteur
			new Effect.Morph(content,{
					style: 'height:'+newHeight+'px',
					duration: this.options.duration,
					transition: this.options.transition
				});
				
			//Réduction de tout autre volet
			$$('#'+this.options.id+' .'+this.options.class_content).each(function(e){
				if(e.getHeight() != 0)
					{
					new Effect.Morph(e,{
						style: 'height:0px',
						duration: this.options.duration,
						transition: this.options.transition
						});
					}
				}.bind(this));
			//Maj de toutes les class des tooggle
			$$('#'+this.options.id+' .'+this.options.class_tooggle).each(function(e){
				e.removeClassName(this.options.class_tooggle_active);
			}.bind(this));
				
			element.addClassName(this.options.class_tooggle_active);
			}
		else
			{
			new Effect.Morph(content,{
					style: 'height:0px',
					duration: this.options.duration,
					transition: this.options.transition
				});
			element.removeClassName(this.options.class_tooggle_active);
			}
		}

});