var TabsOver = Class.create();

TabsOver.prototype = {
	
	initialize: function(idUlTabs, idDivFrames, appear, firstActive) {
		if (!idUlTabs || !idDivFrames || !document.getElementById || !document.getElementsByTagName) return false;
		
		appear = appear || false;
		firstActive = firstActive || 1;
		
		this.current_tab = 0;
		this.menu_elements = $(idUlTabs).getElementsByTagName("a");
		
		Element.cleanWhitespace($(idDivFrames));
		
		this.blocks = new Array();
		this.blocks.push($(idDivFrames).firstChild);
		
		while (this.blocks.last().nextSibling) {
			var next = this.blocks.last().nextSibling;
			this.blocks.push(next);
		}
		
		this.longBlocks = this.blocks.length;
		this.appear = appear;
		var hauteurMax = 0;
		
		// Blocs en absolu, ecoute de mouseover sur les elements du menu.
		for (var i=0; i<this.longBlocks; i++) {
			if (this.blocks[i].offsetHeight > hauteurMax) hauteurMax = this.blocks[i].offsetHeight;
			this.blocks[i].style.display = "none";
			this.blocks[i].getElementsByTagName('caption')[0].style.display = "none";
			this.blocks[i].getElementsByTagName('thead')[0].style.display = "none";
			/*this.blocks[i].style.position = "absolute";*/
			this.blocks[i].style.position = "static";
			this.menu_elements[i].index=i;
			Event.observe(this.menu_elements[i], 'mouseover', this.onOverSwitchTabs.bindAsEventListener(this), false);
			Event.observe(this.menu_elements[i], 'focus', this.onOverSwitchTabs.bindAsEventListener(this), false);
			this.menu_elements[i].onclick = function() {return false;}
		}
		
		$(idDivFrames).style.height = hauteurMax + "px";
		
		if (this.switchTabs(firstActive-1)) {
			this.current_tab = firstActive-1;
			return true;
		}
	},
	 
	onOverSwitchTabs: function(event) {
		var cible = event.currentTarget || event.srcElement;
		var attr = cible.getAttribute("href") || cible.parentElement.getAttribute("href");
		
		// Utilisation du lien (ex. #6) pour extraire le numero
		var attr2 = attr.split(/#/); // IE
		var tabNum = (attr2[1].match(/[0-9]+/) - 1);
		
		if (tabNum != this.current_tab)	this.switchTabs(tabNum);
	},
	
	switchTabs: function(tabNum) {
		this.disableTab(this.current_tab);
		this.enableTab(tabNum);
		this.current_tab = tabNum;
		return true;
	},
	
	disableTab: function(tabNum) {
		this.blocks[tabNum].style.display = "none";
		new Element.ClassNames(this.menu_elements[tabNum].parentNode).remove('current');
	},
	
	enableTab: function(tabNum) {
		if (this.appear == true) {
			new Effect.Opacity(this.blocks[tabNum], {duration:0.5, from:0.5, to:1.0});
		}
		this.blocks[tabNum].style.display = "block";
		new Element.ClassNames(this.menu_elements[tabNum].parentNode).add('current');
	}
}