// 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;
	},
	
	// Preload et Rollover
	_Init: function(container)
	{
		if (document.getElementById && document.getElementsByTagName)
		{
			oRollover.Id = container;
			var extension = '';
			var fileurl = '';
			var myPreload  = new Array(); 
			var ImageCible = '';
			// Récupération de toutes les images à traiter
			var AllImages = oRollover._Cont().getElementsByTagName('img');
			
			if(AllImages) {
			
				// 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;						
							
							// 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);
								}
							}
					}
			}
			
			// Récupération de toutes les images de type input à traiter
			var AllImages = oRollover._Cont().getElementsByTagName('input');
			
			if(AllImages) {
				

				// Boucle principale des images input
				for(var indexImage = 0; indexImage < AllImages.length; ++indexImage)
					{
					var targetImage = AllImages[indexImage];
					
					if (targetImage.type == 'image') {
					
						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;						
							
							// 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.tagName == "INPUT") ? 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.tagName == "INPUT") ? 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})$/
};
