/**
 * Permet de récupérer dans un tableau tous
 * les noeuds DOM ayant une classe CSS commune
 *
 * @param : string clsName nom de la classe commune
 * @return : array retVal tableau d'objets DOM
 */
document.getElementsByClassName = function(clsName) 
{
	var retVal = new Array(); 
	var elements = document.getElementsByTagName("*"); 
	
	for(var i = 0;i < elements.length;i++) 
	{
		if(elements[i].className.indexOf(" ") >= 0)
		{
			var classes = elements[i].className.split(" ");
			
			for(var j = 0;j < classes.length;j++)
			{
				if(classes[j] == clsName) 
					retVal.push(elements[i]);
			}

		} else if(elements[i].className == clsName)
			retVal.push(elements[i]);
	}
	return retVal;
}

/**--------------------------------------------------------------------------------------**/

/**
 * Permet de fixer un bug IE 7 sur les menus déroulants
 * ayants un lien dièse
 *
 * @author : Hugo HAMON
 * @copyright : Noe-Interactive
 * @param : integer idMenu numero du menu à viser
 * @return : void
 */
function fixIEBug(idMenu)
{
	// Variables locales
	var oMenuDeNavigation = document.getElementById('menu');
	var oMenuPrincipal = document.getElementById('aMenu'+idMenu);
	var oSousMenu = document.getElementById('ulMenu'+idMenu);
	
	// Test du navigateur
	if(estInternetExplorer(7))
	{
		// On affiche le menu sélectionné au déclenchement de la fonction
		oSousMenu.className = 'afficherSousMenu';
		
		// Survole-t-on l'élement ?
		oMenuPrincipal.onmouseover = function() 
		{
			changerClasseCssCommune('afficherSousMenu','masquerSousMenu');
			oSousMenu.className = 'afficherSousMenu';
		}
		
		// Clique-t-on sur l'élément ?
		oMenuPrincipal.onclick = function() 
		{
			changerClasseCssCommune('afficherSousMenu','masquerSousMenu');
			//oSousMenu.className = 'afficherSousMenu';
		}
		
		// Quitte-t-on le sous-menu ?
		oSousMenu.getElementsByTagName('li').onmouseout = function() 
		{
			changerClasseCssCommune('afficherSousMenu','masquerSousMenu');
		}
	}
}

/**--------------------------------------------------------------------------------------**/

/**
 * Permet de changer une classe par une autre pour tous
 * les éléments ayant la même classe
 *
 * @author : Hugo HAMON
 * @copyright : Noe-Interactive
 * @param : string classeCssActive classe commune aux noeuds HTML
 * @param : string classeCssDeRemplacement classe de remplacement
 * @return : void
 */
function changerClasseCssCommune(classeCssActive, classeCssDeRemplacement)
{
	// Variables locales
	var aElementsActifs = new Array();
	var oSousMenuCourant = new Object();
	var iElementsActifs = 0;
	
	// On récupère les noeuds DOM des éléments affichés
	aElementsActifs = document.getElementsByClassName(classeCssActive);
	iElementsActifs = aElementsActifs.length;
	
	// A-t-on trouvé au moins un élément ?
	if(iElementsActifs > 0)
	{
		for(i=0; i<iElementsActifs; i++)
		{
			oSousMenuCourant = aElementsActifs[i];
			oSousMenuCourant.className = classeCssDeRemplacement;
		}
	}
}

/**--------------------------------------------------------------------------------------**/

/**
 * Permet de savoir si l'on utilise une version de IE
 *
 * La fonction retourne un booléen
 *
 * @author : Hugo HAMON
 * @copyright : Noe-Interactive
 * @param : integer version version que l'on veut tester
 * @return : boolean estIe
 */
function estInternetExplorer(version)
{
	// Variables locales
	var estIE = false;
	var navigateurNom = navigator.appVersion.indexOf('MSIE');
	var navigateurVersion = 0;
	var recupVersion = '';
	
	// A-t-on trouvé la chaine MSIE ?
	if(navigateurNom != -1)
	{
		// On vérifie la version	
		recupVersion = navigator.appVersion.split('MSIE');
		navigateurVersion = parseInt(recupVersion[1]);
		
		if(navigateurVersion == version)
		{
			estIE = true;	
		}
		
	}
	
	// Retour du booléen
	return estIE;
}

/**--------------------------------------------------------------------------------------**/



