/* TEMPORAIRE : TabsOver */
var TabsOver = Class.create();

TabsOver.prototype = {
	
	initialize: function(idMenuTabs, idFramesWrapper, optionalParams) {
		if (!idMenuTabs || !idFramesWrapper || !document.getElementById || !document.getElementsByTagName) return false;
		
		optionalParams = optionalParams || {disableTags: false, appear: false, firstActive: 1, click: false}
		this.disableTags = optionalParams.disableTags || false;
		this.appear = optionalParams.appear || false;
		this.firstActive = optionalParams.firstActive || 1;
		this.click = optionalParams.click || false;
		this.noresize = optionalParams.noresize || false;
		
		this.menu_elements = $(idMenuTabs).getElementsByTagName("a");
		
		Element.cleanWhitespace($(idFramesWrapper));
		
		this.blocks = new Array();
		this.blocks.push($(idFramesWrapper).firstChild);
		
		while (this.blocks.last().nextSibling) {
			var next = this.blocks.last().nextSibling;
			this.blocks.push(next);
		}
		
		this.longBlocks = this.blocks.length;
		this.blockMaxHeight = 0;
		
		if (this.longBlocks != this.menu_elements.length) { // Verif. que le nbre d'onglets corresp. au nbre de blocs.
			return false;
		}
		
		// Blocs en display: none, ecoute de mouseover sur les elements du menu.
		for (var i=0; i<this.longBlocks; i++) {
			this.styleBlock(this.blocks[i]);
			this.menu_elements[i].onclick = function() {return false;}
			if (!(optionalParams.click)) {
				Event.observe(this.menu_elements[i], 'mouseover', this.onOverSwitchTabs.bindAsEventListener(this));
				Event.observe(this.menu_elements[i], 'focus', this.onOverSwitchTabs.bindAsEventListener(this));
			}
			else {
				Event.observe(this.menu_elements[i], 'mousedown', this.onOverSwitchTabs.bindAsEventListener(this));
			}
		}
		
		(this.noresize==false)? $(idFramesWrapper).style.height = this.blockMaxHeight + "px" : 0;
		
		this.current_tab = 0;
		if (this.switchTabs(this.firstActive-1)) this.current_tab = this.firstActive-1;
	},
	
	onOverSwitchTabs: function(event) {
		var cible = event.currentTarget || event.srcElement;
		var attr = cible.getAttribute("href") || cible.parentElement.getAttribute("href");
		
		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');
	},
	
	styleBlock: function(block) {
		if (Element.getHeight(block) > this.blockMaxHeight) this.blockMaxHeight = Element.getHeight(block);
		block.style.display = "none";
		
		// Disable tags
		if (this.disableTags){
			this.disableTags.each(function(disableTag){
				$A(block.getElementsByTagName(disableTag)).each(function(tag){
					tag.style.display = "none";
				});
			});
		}
	}
};