
var request = null;
function createRequest() {
  try {
    request = new XMLHttpRequest();
  } catch (trymicrosoft) {
    try {
      request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (othermicrosoft) {
      try {
        request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (failed) {
        request = null;
      }
    }
  }
  if (request == null) alert("Ошибка при создании объекта XMLHttpRequest!");
}

function getList(ctg, mkr, lang, param)
{
  url = "/getList.php?idkategory=" + ctg + "&elem=" + mkr  + "&lang_form=" + lang  + "&param=" + param;
  createRequest();
  request.open("GET", url, true);
  request.onreadystatechange = makeList;
  request.send(null);
}

function makeList()
{
  // только при состоянии "complete"
  if (request.readyState == 4) {
    // для статуса "OK"
    if (request.status == 200) {
      // здесь идет построение списков заново
      var responseXml = request.responseXML;
      var xmlDoc = responseXml.documentElement;
      var action = xmlDoc.getElementsByTagName("action")[0].firstChild.data;
      var elem = xmlDoc.getElementsByTagName("elem")[0].firstChild.data;
      if ( action == "makeMakerList" )
      {
        _select = document.getElementById(elem);
      }
      _select.innerHTML = ""; // Удаляем всех потомков
      options = xmlDoc.getElementsByTagName("option");
      for (var i=0; i<options.length; i++) {
        // Извлекаем значение атрибута value и текст
        var value = options[i].getAttribute("value");
        var selected = options[i].getAttribute("selected");
        var text = options[i].firstChild.data;
        // Формируем очередной элемент option
        var option = document.createElement("option");
        var optionText = document.createTextNode(text);
        option.appendChild(optionText);
        option.setAttribute("value", value);
        if(selected=="yes")
        	option.selected=true;
        _select.appendChild(option);
      }
    } else {
      alert("Не удалось получить данные от сервера:\n" + request.statusText);
    }
  }
}

