function SendRequest(method, URL, params){
	if (!window.objRequest){
		try {
			objRequest = new XMLHttpRequest();
		} catch (trymicrosoft) {
			try {
				objRequest = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (othermicrosoft) {
				try {
					objRequest = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (failed) {
					objRequest = false;
				}
			}
		}
	}
	objRequest.open(method,URL,true);	
	if (params != null){			
		objRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		objRequest.setRequestHeader("Content-length", params.length);
		objRequest.setRequestHeader("Connection", "close");
	}	
	objRequest.onreadystatechange = ReceiveRequest;
	objRequest.send(params);
}

function ReceiveRequest(){
	if (objRequest.readyState == 4){
		switch (objRequest.status){
			case 200:
				var objReturn = eval("(" + objRequest.responseText + ")");
				var objArguments = toJsonString(objReturn.Arguments);
				eval(objReturn.Method+'('+objArguments+')');
			break;
			case 404:
				alert("404 Resource Not Found");
			break;
			case 403:
				alert("You are not logged in. Please log in to use this resource.");
			break;
			case 405:
				alert("405 Method Not Allowed");
			break;
			default:
				alert("An error has occurred");
		}
	}
	//FIXME! maybe return false here
}

function DoRequestAlert(objArguments){
	alert(objArguments.AlertData);
}
