function Log(loggerUrl)
{
	var url = loggerUrl;

	function createXMLHttpRequest()
	{
		try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { }
		try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { }
		try { return new XMLHttpRequest(); } catch(e) { }
		
		return null;
	}
	
	this.SendToLog = function(type, src, msg)
	{
		try
		{
			var d = new Date();
			var ds = "[" + d.getUTCHours() + ":" + d.getUTCMinutes() + ":" + d.getUTCSeconds() + "," + d.getUTCMilliseconds() + "] ";
			src = ds + src;
			var reqUrl = url + "?type=" + escape(type) + "&src=" + escape(src) + "&msg=" + escape(msg);
			var req = createXMLHttpRequest();
			if (req != null)
			{
				req.open("GET", reqUrl, true);
				req.send(null);
			}
		}
		catch(e) { } // We can't log anything, so there's not much point to catching
	}

	this.LogInfo = function(src, msg)
	{
		this.SendToLog("info", src, msg);
	}

	this.LogDebug = function(src, msg)
	{
		this.SendToLog("debug", src, msg);
	}

	this.LogWarn = function(src, msg)
	{
		this.SendToLog("warn", src, msg);
	}

	this.LogError = function(src, msg)
	{
		this.SendToLog("error", src, msg);
	}

	this.LogFatal = function(src, msg)
	{
		this.SendToLog("fatal", src, msg);
	}
}
