function RequestJSON(url)
{
	var connection = new Object();
	connection.url = url;
	connection.setup = true;
	
	connection.events = {COMPLETE:null, ERROR:null};
	
	connection.addEventListener = function(event, functionToCall)
	{
		connection.events[event] = functionToCall;
	}
	
	connection.sendRequest = function(variables)
	{
		var params = '?r=' + Math.floor(Math.random()*11);
		for(itemName in variables)
		{
			params += '&' + itemName + '=' + variables[itemName];
		}
		
		var request = new ajaxRequest();
		request.onreadystatechange = function()
		{
			if (request.readyState == 4)
			{
				if (request.status == 200 || window.location.href.indexOf("http") == -1)
				{
					if (connection.events.COMPLETE != null)
					{
						connection.events.COMPLETE(JSON.parse(request.responseText));
					}
				}
				else
				{
					if (connection.events.ERROR != null)
					{
						connection.events.ERROR('error making request');
					}
				}
			}
		}
		request.open("GET", connection.url + params, true);
		request.send();
	}
	return connection;
}

function ajaxRequest()
{
	var activexmodes = ["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"];
	if (window.ActiveXObject)
	{ 
		for (var i = 0; i < activexmodes.length; i++)
		{
			try
			{
				return new ActiveXObject(activexmodes[i])
			}
			catch(e)
			{
				//suppress error
			}
		}
	}
	else if (window.XMLHttpRequest) 
	{
		return new XMLHttpRequest()
	}
	else
	{
		return false
	}
}
