// fonction rollover
var oRollover =
{
	_addEvent: function(oElem, sEvType, fn, bCapture)
		{
		  return oElem.addEventListener?
		  oElem.addEventListener(sEvType, fn, bCapture):
		  oElem.attachEvent?
			 oElem.attachEvent('on' + sEvType, fn):
			 oElem['on' + sEvType] = fn;
	},
	
	_getNextSibling:function (startBrother){
	  var endBrother=startBrother.nextSibling;
	  if (endBrother != null)
		{
			
			while(endBrother.nodeType!=1){
				endBrother = endBrother.nextSibling;
			}
		}
		
	  return endBrother;
}	 ,
	
	// Preload et Rollover
	_Init: function(container)
	{
		if (document.getElementById && document.getElementsByTagName && document.getElementById(container))
		{
			oRollover.Id = container;
			var extension = '';
			var fileurl = '';
			var myPreload  = new Array(); 
			var ImageCible = '';
			var ElementFrere = '';
			var AttacherEvenements = true;
			// Récupération de toutes les images à traiter
			
			var AllImages = oRollover._Cont().getElementsByTagName('img');
			
			if(!AllImages) return;
			
			// Boucle principale des images
			for(var indexImage = 0; indexImage < AllImages.length; ++indexImage)
				{
				var targetImage = AllImages[indexImage];
					if (targetImage.src.match(oRollover.RegexEtatNormal))
						{ 
						fileurl = targetImage.src.match(oRollover.RegexEtatNormal)[3];
			
						
						// Préchargement des images
						ImageCible = targetImage.src;
						ImageCible = ImageCible.replace('_nm.','_hv.');
						myPreload[indexImage] = new Image();
						myPreload[indexImage].src = ImageCible;						

				
						
						try
						  {
						  ElementFrere = oRollover._getNextSibling(targetImage.parentNode);
						  }
						catch(err)
						  {
						  ElementFrere = targetImage.parentNode.nextSibling;
						  }
						  
						AttacherEvenements = true;
						
						
						if (ElementFrere != null) {
							if(ElementFrere.tagName == 'UL') {
								AttacherEvenements = false;
							}
						}
						
						if (AttacherEvenements) {
							// addEventListener
							oRollover._addEvent(targetImage, 'mouseover', oRollover._Change, false);
							oRollover._addEvent(targetImage, 'mouseout', oRollover._Reset, false);
							
							// Si l'image est dans un lien
							if(targetImage.parentNode.tagName == "A")
								{
								oRollover._addEvent(targetImage.parentNode, 'focus', oRollover._Change, false);
								oRollover._addEvent(targetImage.parentNode, 'blur', oRollover._Reset, false);
								}
							}
						}
				}
		}
	},
	
	// Devient à l'état hover
	_Change: function(event)
	{
		var oElem = event.target || window.event.srcElement;
		var oImg = (oElem.tagName == "IMG") ? oElem : oElem.firstChild;
		var extension = '';
		var fileurl = '';
				
		fileurl = oImg.src.match(oRollover.RegexEtatNormal); 
		
		if(!oImg.src.match(oRollover.RegexEtatHover)){ // Permet d'éviter mouseover et focus simultanés
			oImg.src = oImg.src.replace('_nm.','_hv.');
		}
	},
	
	// Retourne à l'état normal
	_Reset: function(event)
	{
		var oElem = event.target || window.event.srcElement;
		var oImg = (oElem.tagName == "IMG") ? oElem : oElem.firstChild;
		oImg.src = oImg.src.replace("_hv","_nm");
	},

	// Récupération du conteneur
	_Cont: function()
	{
		var oCont = (oRollover.Id != '') ? document.getElementById(oRollover.Id) : document;
		return oCont;
	},
	
	// Id du conteneur à traiter. Si vide on prend toutes les images de la page
	Id: 'menu',
	RegexEtatNormal: /(.*)(_nm\.)([^\.]{3,4})$/,
	RegexEtatHover: /(.*)(_hv\.)([^\.]{3,4})$/
};
