var SimpleAccordion=Class.create({
	mainContainer:null,
	tabs:[],
	lastOpenned:null,
	/*options:{
		tabClassName		:"tab",
		tabContentClassName	:"tab-content",
		tabOpennedClassName :"tab-openned"
	},*/
	options:{},
	
	initialize:function(mainContainer,options){
		this.mainContainer=mainContainer;
		//Object.extend(this.options,options);
		this.options=Object.extend({
			tabClassName		:"tab",
			tabContentClassName	:"tab-content",
			tabOpennedClassName :"tab-openned"
		},options||{});
		//this.tabs.clear();
		//attend le chargement de la page
		//Event.observe(window,"load",this.proceedInitialize.bindAsEventListener(this));
		this.proceedInitialize();
	},
	
	proceedInitialize:function(e){
		if(typeof(this.mainContainer)=="string"){
			this.mainContainer=$(this.mainContainer);
		}
		
		//cache les contenus
		var tabsContent=this.mainContainer.immediateDescendants();
		tabsContent.each(function(element){
			var tab=element.getElementsBySelector("h5."+this.options.tabClassName).first();
			var tabContent=element.getElementsBySelector("div."+this.options.tabContentClassName).first();
			
			//ajoute une tab
			this.tabs.push(new SimpleTab(tab,tabContent,this,this.tabs.size()));
		},this);
	},
	
	openTab:function(id){
		if(this.lastOpenned!=null){
			if(this.lastOpenned==id){
				this.tabs[id].closeTab();
				this.lastOpenned=null;
			}else{
				this.tabs[id].openTab();
				this.tabs[this.lastOpenned].closeTab();
				this.lastOpenned=id;
			}
		}else{
			this.tabs[id].openTab();
			this.lastOpenned=id;
		}
	}/*,
	openFirst:function(){
		//console.log(this.tabs.indexOf(this.tabs.first()));
		this.tabs.first().openTab();
		this.lastOpenned=this.tabs.indexOf(this.tabs.first());
	}*/
});

var SimpleTab=Class.create({
	tab:null,
	tabContent:null,
	parent:null,
	id:null,
	isOpen:false,
	defaultHeight:null,
	defaultWidth:null,
	dontPanic:false,
	
	initialize:function(tab,tabContent,parent,id){
		this.tab=tab;
		this.tabContent=tabContent;
		this.parent=parent;
		this.id=id;
		
		this.defaultHeight=this.tabContent.offsetHeight;
		this.defaultWidth=this.tabContent.offsetWidth;
		
		//créer le liens
		var lien=new Element("a",{
			href:"javascript:void(0);"
		});
		lien.setStyle({
		  display: 'block',
		  zoom: '1'
		});

		
		//this.tab.parentNode.insert({Top:lien});
		//lien.insert(this.tab);
		
		//this.tab=lien;
		
		//this.tab.insert(lien);
		//lien.insert({before:this.tab});
		
		//cache le contenu
		this.tabContent.hide();
		this.tabContent.setStyle({"height":"0px"});
		this.tab.setStyle({"cursor":"pointer"});
		
		this.tab.observe("click",this.tabClicked.bindAsEventListener(this));
		this.tab.observe("focus",this.tabClicked.bindAsEventListener(this));
	},
	
	tabClicked:function(e){
		if(!this.dontPanic){
			this.dontPanic=true;
			new PeriodicalExecuter(this.preventEvent.bindAsEventListener(this),1/5);
			this.parent.openTab(this.id);
		}
	},
	
	preventEvent:function(pe){
		this.dontPanic=false;
		pe.stop();
	},
	
	openTab:function(){
		this.tab.className=this.parent.options.tabOpennedClassName;
		var options={
			duration:0.5,
			transition:Effect.Transitions.sinoidal
		};
		this.tabContent.show();
		new Effect.Tween(this.tabContent,1,this.defaultHeight,options,this.setHeight.bindAsEventListener(this));
	},
	
	setHeight:function(value){
		this.tabContent.setStyle({"height":value+"px"});
	},
	
	closeTab:function(){
		this.tab.className=this.parent.options.tabClassName;
		var options={
			duration:0.5,
			transition:Effect.Transitions.sinoidal,
			afterFinish:this.afterFinish.bindAsEventListener(this)
		};
		new Effect.Tween(this.tabContent,this.tabContent.offsetHeight,1,options,this.setHeight.bindAsEventListener(this));
	},
	
	afterFinish:function(e){
		this.tabContent.hide();
	}
});
