function Tools_SetHtml(id, html)
			{
				var obj = document.getElementById(id);
				if (obj != null)
					obj.innerHTML = html;
			}

			function Tools_CreateGuid()
			{
				var d = new Date();
				return "" + d.getHours() + d.getMinutes() + d.getSeconds() + d.getMilliseconds();
			}

			function Tools_SetAlpha(id, value)
			{
				var obj = document.getElementById(id);
				if (obj != null)
				{
					var object = obj.style;
					object.opacity = (value / 100); 
					object.MozOpacity = (value / 100); 
					object.KhtmlOpacity = (value / 100); 
					object.filter = "alpha(opacity=" + value + ")"; 
				}	
			}

			function Tools_Fade(id, start, end)
			{ 
				var step = (start < end) ? 1 : -1;
				var timer = 0;

				var fadeId = Tools_CreateGuid();
				tools_fades[id] = fadeId;
				for (var i = start; i != end; i += step)
				{ 
					// On doit vérifier qu'il n'y a pas deux fondus simultanés sur le même objet
					var check = "if (tools_fades['" + id + "'] == '" + fadeId + "')";
					setTimeout(check + "Tools_SetAlpha('" + id + "', " + i + ")", (timer * 7)); 
					timer++;
				}
			}

			var ajax_xmlhttp;
			function Ajax_Execute(url, method, params, responseCallback)
			{
				
				if (ajax_xmlhttp == null)
				{
					if (window.XMLHttpRequest)
						ajax_xmlhttp = new XMLHttpRequest();
					else if (window.ActiveXObject)
						ajax_xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
				}
				
				url += "?AjaxRequest=" + method;
				
				if (params != null)
					for (var key in params)
					{
						url += "&" + key + "=" + params[key];
											
					}
				
				// On fait ça pour éviter la mise en cache
				url += "&guid=" + Tools_CreateGuid();
				try
				{
					ajax_xmlhttp.open("GET", url, true);
					ajax_xmlhttp.onreadystatechange = function()
					{
						if (ajax_xmlhttp.readyState == 4 || ajax_xmlhttp.readyState == "complete")
						{
							
							if (ajax_xmlhttp.status == 200 || ajax_xmlhttp.status == 304)
							{
								
								var values = Ajax_ParseResponse(ajax_xmlhttp.responseText);
								responseCallback(values);
								
							}
						}
					}
				
					ajax_xmlhttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
					ajax_xmlhttp.send(null);
				}
				catch (ex)
				{
					 /*alert(ex);*/ 
				}
			}

			function Ajax_ParseResponse(text)
			{
				var values = new Array();
				var items = text.split(";;");
				for (var i = 0; i < items.length; i++)
				{
					var parts = items[i].split("::");
					values[parts[0]] = parts[1];	
				}
				
				return values;
			}