
// +------------------------------------------------------------------------------
// | ajax.js
// | Начальная библиотека для отправки и получения запросов через AJAX
// +------------------------------------------------------------------------------
// | Автор:
// | Петр Коробейников
// +------------------------------------------------------------------------------
// | Дата: 08.02.2007
// | Последнее изменение: 19.02.2007
// | Версия: 2.0.0
// +------------------------------------------------------------------------------

createRequest = function() {
  var request = false;
  if (window.XMLHttpRequest) {
    request = new XMLHttpRequest();

    if (request.overrideMimeType) {
      request.overrideMimeType('text/xml');
    }
  } else if (window.ActiveXObject) {
    try {
      request = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e) {
      try {
        request = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (e) { }
    }
  }
  return request;
}

sendRequest = function(url, method, anischoronous, data, callback) {
  var request = createRequest();
  if (request) {
    request.onreadystatechange = function() { getResponse(request, callback) };
    request.open(method, url, anischoronous);
    if (method == "POST") {
      request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
    }
    request.send(data);
  }
}

getResponse = function(request, callback) {
  if (request.readyState == 4) {
    callback(request);
  }
}

// эту функцию надо переписать: собрать в одном месте [i].value, а то много кейсов с разными условиями и одинаковыми действиями
function getFormValuesArray(argv) {
  var vals = new Array();
  if (document.getElementById) {
    for (var i in argv) {
      switch (document.getElementById(argv[i]).type) {
        case "text" :
          vals[argv[i]] = document.getElementById(argv[i]).value;
          break;
        case "password" :
          vals[argv[i]] = document.getElementById(argv[i]).value;
          break;
        case "textarea" :
          vals[argv[i]] = document.getElementById(argv[i]).value;
          break;
        case "select-one" :
          vals[argv[i]] = document.getElementById(argv[i]).value;
          break;
        case "checkbox" :
          vals[argv[i]] = document.getElementById(argv[i]).checked;
          break;
      }
    }
  }
  return vals;
}

function createRequestString(argv) {
  var str = "";
  for (var i in argv) {
    str += i + "=" + argv[i] + "&";
  }
  str = str.substr(0, str.length - 1);
  return str;
}
