function request(requestFajl, method) {
  var http = null;
  var targetDiv = null;
  var targetDivAppend = false;
  var targetFunc = null;
  var targetFuncXML = false;

  this.method = method;
  this.params = new Array();  

  function requestObject() {
    var ro;

    if (window.XMLHttpRequest) {
      ro = new XMLHttpRequest();
    } else {
      ro = new ActiveXObject("Microsoft.XMLHTTP");
    }
    return ro;
  }

  this.sendRequest = function() {
    http = null;
    http = requestObject();
    http.onreadystatechange = response;
    if (this.method == "POST") {
      http.open("POST", requestFajl, true);
      http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      http.setRequestHeader("Content-length", this.getParams().length);
      http.setRequestHeader("Connection", "close");
      http.send(this.getParams());
    } else {
      http.open("GET", requestFajl+"?"+this.getParams(), true);
      http.send(null);
    }
  }

  this.addParam = function(param) {
    this.params.push(param);
  }

  this.getParams = function() {
    var p = "";

    for(var i=0; i<this.params.length; i++) {
      if (p != "") p += "&";
      p += this.params[i][0]+"="+this.params[i][1];
    }

    return p;
  }

  this.clearParams = function() {
    this.params = [];
  }

  this.setResponseTarget = function(div, append) {
    targetDiv = div;
    targetDivAppend = append;
  }

  this.setResponseFunction = function(func, xml) {
    targetFunc = func;
    targetFuncXML = xml;
  }

  function response() {
    if (http.readyState == 4) {
      if (targetFunc != null) {
        if (!targetFuncXML) targetFunc(http.responseText);
          else targetFunc(http.responseXML);
      } else {
        if (!targetDivAppend) targetDiv.innerHTML = http.responseText;
          else targetDiv.innerHTML += http.responseText;
      }
    }
  }

}






// -------------------------------------- TESZT -----------------------------------------------------------------
function init(){

  // Megjegyzés: az IE net tud mit kezdeni a GET-ben lévő szóközökkel!!! => url biztos
  var req1 = new request("request1.php", "GET");
  req1.addParam(["szoveg", "HellóAjax!"]);
  req1.setResponseTarget(document.getElementById("responseTerulet1"), false);
  req1.sendRequest();

  var req2 = new request("request2.php", "POST");
  req2.setResponseTarget(document.getElementById("responseTerulet2"), true);
  req2.addParam(["valtozo1", "balh blah blah"]);
  req2.addParam(["valtozo2", "árvíztűrőtükörfúrógép"]);
  req2.sendRequest();

  var req3 = new request("request3.php", "POST");
  req3.setResponseFunction(kulsoResponseFeldolgozo, false);
  req3.addParam(["info", "Ezt most egy saját function dolgozta fel"]);
  req3.sendRequest();

  var req4 = new request("request4.xml", "GET");
  req4.setResponseFunction(kulsoResponseFeldolgozoXML, true);
  req4.sendRequest();

}

function kulsoResponseFeldolgozo(re) {
  alert(re);
}

function kulsoResponseFeldolgozoXML(re) {
  var xmlDOC = re.documentElement;

  // Megjegyzés: az IE nefogja tudni miaz, hogy textContent csak a text-et ismeri!!!! => prototype

  for (var i=0; i < xmlDOC.getElementsByTagName("ember").length; i++) {
    var nev = xmlDOC.getElementsByTagName("ember")[i].getElementsByTagName("nev")[0].textContent;
    var magas = xmlDOC.getElementsByTagName("ember")[i].getElementsByTagName("magas")[0].textContent;

    document.getElementById("responseTerulet3").innerHTML += nev+"-----"+magas+"cm<br />";
  }
}
// -------------------------------------- VÉGE: TESZT -----------------------------------------------------------------

