////////////////////////////////
//
//
////////////////////////////////
function emenu( emenu_id, default_tab )
{
	//vérification emenu présent
	if( !document.getElementById( emenu_id ) )
	{ return false; }
	
	
	////////////////////////////////
	// méthode : emenu_init()
	// Initialise tous les éléments du menu dynamique et attache les évènements
	////////////////////////////////
	function emenu_init()
	{
		//obtention des différentes listes
		var lis = document.getElementById(emenu_id+'_tabs').getElementsByTagName( 'li' );
		
		//attachement des évènements pour chaque puce
		for( i = 0; i < lis.length; i++ )
		{
			//on attache les fonctions
			lis[i].onmouseover = function(){ selection(this.className); };
		}
		
		//sélection de la classe par défaut
		selection( default_tab );
	}
	
	////////////////////////////////
	// méthode : selection()
	// Effectue toutes les manips lors du passage de la souris sur un élément
	////////////////////////////////
	function selection( class_name )
	{
		//
		class_name = class_name.replace(new RegExp('^([a-z0-9_]+)($| .*)', "g"), "$1");
		
		//
		li = getElementByClassName( 'tabs', class_name );
		div = getElementByClassName( 'texts', class_name );
		
		selection_tab( li );
		selection_text( div );		
	}
	
	////////////////////////////////
	// méthode selection_tab()
	// Active la puce class_name, désactive les autres
	////////////////////////////////
	function selection_tab( ressource )
	{
		lower_tabs();
		//
		ressource.className += ' up';
	}
	
	////////////////////////////////
	// méthode selection_text()
	// Active le div class_name, désactive les autres
	////////////////////////////////
	function selection_text( ressource )
	{
		lower_texts();
		//
		ressource.className = ressource.className.replace(new RegExp(' cache'), '');
	}
	
	////////////////////////////////
	// méthode lower_tabs()
	// Désactive toutes les puces
	////////////////////////////////
	function lower_tabs()
	{
		var lis = document.getElementById(emenu_id+'_tabs').getElementsByTagName( 'li' );
		for(i = 0; i < lis.length; i++)
		{
			lis[i].className = lis[i].className.replace(new RegExp(' up'), '');
		}
	}
	
	////////////////////////////////
	// méthode lower_texts()
	// Désactive tous les divs
	////////////////////////////////
	function lower_texts()
	{
		var divs = document.getElementById(emenu_id+'_texts').getElementsByTagName( 'div' );
		for(i = 0; i < divs.length; i++)
		{
			divs[i].className = divs[i].className.replace(new RegExp(' cache'), '');
			divs[i].className += ' cache';
		}
	}
	
	////////////////////////////////
	// méthode getElementByClassName()
	// Retourne la ressource associée à un className contenant `element_name`
	////////////////////////////////
	function getElementByClassName( emenu_element, element_name )
	{
		//Sélection conteneur
		var conteneur = '';
		var sous_conteneur = '';
		if( emenu_element == 'tabs' )
		{
			conteneur = emenu_id + '_' + emenu_element;
			sous_conteneur = 'li';
		}
		else if( emenu_element == 'texts' )
		{
			conteneur = emenu_id + '_' + emenu_element;
			sous_conteneur = 'div';
		}
		else{ return false; }

		var elements = document.getElementById( conteneur ).getElementsByTagName( sous_conteneur );
		for( i = 0; i < elements.length; i++ )
		{
			//if( elements[i].className.match(new RegExp("^"+element_name+"(?:\s|$)")) )
			if( new RegExp("^"+element_name+"($| .*)").test(elements[i].className) )
			{
				return elements[i];
			}
		}
}	
	this.emenu_init = emenu_init;
	this.emenu_init( default_tab );
}