var request;

/**
* Load XMLDoc function
* Здесь в качестве параметра url при вызове мы должны указать
* backend-скрипт, который, собственно, и получит данные с сервера
*/

function doLoad(url) {
  if (window.XMLHttpRequest) {
    request = new XMLHttpRequest();
    request.onreadystatechange = processRequestChange;
    request.open("GET", url, true);
    request.send(null);
  } else if (window.ActiveXObject) {
    request = new ActiveXObject("Microsoft.XMLHTTP");
    if (request) {
      request.onreadystatechange = processRequestChange;
      request.open("GET", url, true);
      request.send();
    }
  }
}


function doLoadpost(url, post) {
  if (window.XMLHttpRequest) {
    request = new XMLHttpRequest();
    request.onreadystatechange = processRequestChange;
    request.setRequestHeader('Content-Type' , 'application/x-www-form-urlencoded');
    request.open("POST", url, true);
    request.send(null);
  } else if (window.ActiveXObject) {
    request = new ActiveXObject("Microsoft.XMLHTTP");
    if (request) {
      request.onreadystatechange = processRequestChange;
      request.setRequestHeader('Content-Type' , 'application/x-www-form-urlencoded');
      request.open("POST", url, true);
      request.send();
    }
  }
}

/**
* Get request state text function
*/
function getRequestStateText(code) {
  switch (code) {
    case 0: return "Uninitialized."; break;
    case 1: return "Loading..."; break;
    case 2: return "Loaded."; break;
    case 3: return "Interactive..."; break;
    case 4: return "Complete."; break;
  }
}

/**
* Event on request change
* Собственно, обработчик события onreadystatechange.
* Здесь мы, в зависимости от состояния запроса,
* будем скрывать / показывать слои "Загрузка данных",
* само поле данных и т.д.
*/
function processRequestChange() {
  document.getElementById("resultdiv").style.display = 'none';
  abortRequest = window.setTimeout("request.abort();", 10000);
  // если выполнен
  if (request.readyState == 4) {
    clearTimeout(abortRequest);
        // если успешно
    if (request.status == 200) {
      document.getElementById("resultdiv").style.display = 'block';
      document.getElementById("responseHTML").innerHTML = request.responseText;
    } else {
      alert("Не удалось получить данные:n" + request.statusText);
    }
    document.getElementById("loading").style.display = 'none';
  }
  // иначе, если идет загрузка или в процессе - показываем слой "Загружаются данные"
  else if (request.readyState == 3 || request.readyState == 1) {
    document.getElementById("loading").style.display = 'block';
  }
}