
function getHttpRequest()
{
	var http_request = false;
	if (window.XMLHttpRequest) //Mozilla, Safari, …
	{ 
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType)
		{
			http_request.overrideMimeType('text/xml');
		}
	}
	else
	if (window.ActiveXObject) //IE
	{ 
		try
		{
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e) {}
		}
	}
	if (!http_request)
	{
		alert('Невозможно создать экземпляр класса XMLHTTP');
	}
	return http_request;
}

function makeRequest(url, httpMethod, async, processMethod)
{
	var http_request = getHttpRequest();
	if(async)
	{
		http_request.onreadystatechange = function()
			{
				stateChangedHandler(http_request, processMethod);
			};
	}
	http_request.open(httpMethod, url, async);
	http_request.send(null);
	if(!async)
	{
		processMethod(http_request);
	}
}

function makeSyncRequest(url, processMethod)
{
	makeRequest(url, 'GET', false, processMethod);
}

function makeAsyncRequest(url, processMethod)
{
	makeRequest(url, 'GET', true, processMethod);
}

function stateChangedHandler(http_request, processMethod)
{
	if (http_request.readyState == 4)
	{
		if (http_request.status == 200)
		{
			processMethod.call(http_request);
		}
		else
		{
			alert('С запросом возникла проблема.');
		}
	}
}

