function ImageSwapper(){	//Propriétés privées	var Images = new Array();	var ImagesOriginales = new Array();			this.count = count;	this.preloadImages = preloadImages;	this.preloadImage = preloadImage;	this.swapByIndex = swapByIndex;	this.swapByKey = swapByKey;	this.restore = restore;	this.setBaseSrc = setBaseSrc;	this.imageByIndex = imageByIndex;	this.imageByKey = imageByKey;		function imageByIndex(iIndex)	{		return Images[iIndex][1];	}		function imageByKey(key)	{		var i = 0;		for (i = 0; i < this.count(); i++)		{			if (Images[i][0] == key) 			{				return this.imageByIndex(i);			}		}	}		function swapByIndex(oImg, iIndex)	{		oImg = validateImage(oImg);		saveImageOriginale(oImg);		if (oImg != null)			oImg.src = Images[iIndex][1].src;		else			alert("Une des images passée en paramètre dans swapByIndex ou swapByKey est incorrecte");	}	function swapByKey(oImg, key)	{			var i = 0;		for (i = 0; i < this.count(); i++)		{			if (Images[i][0] == key) 			{				this.swapByIndex(oImg, i);				break;				}		}	}		function preloadImages()	{		var i = 0;		//Il faut passer des array ou des string en paramètre		//Ex.: preloadImages(Array("i1", "image1.jpg"), Array("i2", "image2.jpg"));		//Ex.: preloadImages("image1.jpg", "image2.jpg");		args = preloadImages.arguments;		for (i = 0 ; i < args.length ; i++)		{			if (((args[i] && typeof args[i] == 'object') || typeof args[i] == 'function') && args[i].constructor == Array)			{				//true = C'est un Array				this.preloadImage(args[i][0], args[i][1]);			}			else			{				//false = Ce n'est pas un array				//Dans le cas où ce n'est pas un array, la clé devient simplement l'index de l'image				this.preloadImage(this.count() + 1, args[i]);			}		}	}		function preloadImage(key, imageLink) 	{ 		var i = 0, iIndex = Images.length;			  for (i = 0; i < iIndex; i++)	  {	  	//Si la clé est déjà présente, on remplace sa valeur	  	if (Images[i][0] == key)	  	{	  		iIndex = i;	  		break;	  	}	  }		Images[iIndex] = new Array();		Images[iIndex][0] = key;		Images[iIndex][1] = new Image;		Images[iIndex][1].src = imageLink;			}	function count()	{		return Images.length;	}	function setBaseSrc(oImg, sSrc)	{		var i = 0, iIndex = ImagesOriginales.length;		oImg = validateImage(oImg);				for (i = 0 ; i < iIndex; i++)		{			if (ImagesOriginales[i][0] == oImg.id)			{				iIndex = i;				break;			}		}				ImagesOriginales[iIndex] = new Array();		ImagesOriginales[iIndex][0] = oImg.id;		ImagesOriginales[iIndex][1] = sSrc;	}	function saveImageOriginale(oImg)	{		oImg = validateImage(oImg);		setBaseSrc(oImg, oImg.src);	}	function restore(oImg)	{		var i = 0, iIndex = ImagesOriginales.length, found = false;		oImg = validateImage(oImg);				for (i = 0 ; i < iIndex; i++)		{			if (ImagesOriginales[i][0] == oImg.id)			{				found = true;				iIndex = i;				break;			}		}		if (found)			oImg.src = ImagesOriginales[iIndex][1];		else			saveImageOriginale(oImg);						}	function validateImage(oImg) 	{		if (typeof oImg == "string") 		{			var oTmp = document.getElementById(oImg);			return oTmp;		}		else			return oImg;	}}var imgSwapper = new ImageSwapper();