function createHttpRequest() {
	var httpRequest;
	var browser = navigator.appName;

	if (browser == "Microsoft Internet Explorer") {

		httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		httpRequest = new XMLHttpRequest();
	}

	return httpRequest;
}
function sendRequest(file, _resultId, getRequestProc) {
	resultId = _resultId;
	document.getElementById(resultId).innerHTML = 'Подождите, идет загрузка...';
	httpRequest.open('get', file);

	httpRequest.onreadystatechange = getRequestProc;
	httpRequest.send(null);
} 
function getRequest() {
	if (httpRequest.readyState == 4) {
		document.getElementById(resultId).innerHTML = httpRequest.responseText;
	}
}
var httpRequest = createHttpRequest();
var resultId = '';


      function createXMLHttp() {
        if(typeof XMLHttpRequest != "undefined") { // для браузеров аля Mozilla

          return new XMLHttpRequest();
        } else if(window.ActiveXObject) { // для Internet Explorer (all versions)
          var aVersions = ["MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0",
                   "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp",
                   "Microsoft.XMLHttp"
                   ];
          for (var i = 0; i < aVersions.length; i++) {
            try { //
              var oXmlHttp = new ActiveXObject(aVersions[i]);

              return oXmlHttp;
            } catch (oError) { 

            }
          }
          throw new Error("Невозможно создать объект XMLHttp.");
        }
      }
      
      /* Очень важная функция, обратите на неё внимание.
        Формирует строку запроса "name1=value1&name2=value2&name3...".
        Принимает один аргумент - ссылку на форму.
      */
        
      function getRequestBody(oForm) { 
        var aParams = new Array();
        for(var i = 0; i < oForm.elements.length; i++) {
          var sParam = encodeURIComponent(oForm.elements[i].name);
          sParam += "=";
          sParam += encodeURIComponent(oForm.elements[i].value);
          aParams.push(sParam);
        }
        return aParams.join("&");
      }
      
      
      /* В этой ф-ции мы создаём объект XmlHttp, формируем запрос, инициализируем перехватчик состояний
        onreadystatechange, и посылаем наш запрос.
        
        Обратите внимание, что во втором аргументе метода open(..) мы передаём
        ссылку на oForm.action, это сделано как из соображений безопасности, так и ради
        того что-бы сценарий можно-было бы использовать для работы с несколькими страницами.
        
        Так-же, стоит отметить факт отправки дополнительного заголовка: "appilaction/x-www-form-urlencoded"
        Большинство языков (в том числе и PHP), требуют этого, для корректного выполнения
        синтаксического анализа пришедших данных. Этот момент очень важен.
        
      */
      
      function sendPostRequest() {
        var oForm = document.forms[0];
        var sBody = getRequestBody(oForm);
        var oXmlHttp = createXMLHttp();
        
        oXmlHttp.open("POST",oForm.action, true);
        oXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        
        oXmlHttp.onreadystatechange = function() {
          if(oXmlHttp.readyState == 4) {
            if(oXmlHttp.status == 200) {
              savePostResult(oXmlHttp.responseText);
            } else {
              savePostResult("Ошибка: " + oXmlHttp.statusText);
            }
          }
        };
        
        oXmlHttp.send(sBody);
      }
      
      function savePostResult(sText) {
        var sElem = document.getElementById("result");
        sElem.innerHTML = sText;
      }