

<!-- Создаем кросс-браузерный экземпляр класса для http-запросов -->
function get_http_request ()
{
	var http_request = false;
	
	if (window.XMLHttpRequest) // mozilla, safari
		{
		  http_request = new XMLHttpRequest (); 
		  if (http_request.overrideMimeType) {http_request.overrideMimeType('text/xml');} // некоторые версии некоторых броузеров Mozilla не будут корректно работать, если ответ сервера не содержит заголовка XML mime-type. Чтобы решить эту проблему переопределяем заголовок полученный от сервера
		}
	else if (window.ActiveXObject) // ie, myie
		{ 
		   try {http_request = new ActiveXObject("Msxml2.XMLHttp");}
		   catch (e) {try {http_request = new ActiveXObject ('Microsoft.XMLHttp');} catch (e) {} }
		 }
	
	if (!http_request) {alert ('Невозможно создать экземпляр класса XMLHttp'); return false;}
	else return http_request;



}


// проверяем ответ сервера
function check_http_response (http_request)
{
	// проверяем, в какой стадии находится запрос
	if (http_request.readyState != 4) {return false;} // object is completely initialized (complete)
	
	// 0 - object is not initialized with data (uninitialized)
	// 1 - object is loading its data (loading)
	// 2 - object has finished loading its data (loaded)
	// 3 - user can interact with the object even though it is not fully loaded (interactive)
	// 4 - object is completely initialized (complete)
	
	
	// читаем ответ сервера
	if (http_request.status == 200) return true;
	else return false;
}



// получаем результат работы запроса на сервер, и передаем его в функцию, которая должна работать в данном скрипте с данным запросом, 
function get_http_content (http_request)
{
	if (check_http_response(http_request) == false) return false;
	else 
	{
		// выводим результат запроса
		this.content = http_request.responseText;
	}
}
