// przechowuje odwołanie do obiektu XMLHttpRequest
var xmlHttp = createXmlHttpRequestObject();

// zwraca obiekt XMLHttpRequest
function createXmlHttpRequestObject()
{
  // przechowa odwołanie do obiektu XMLHttpRequest
  var xmlHttp;
  // jeśli uruchomiony jest Internet Explorer
  if(window.ActiveXObject)
  {
    try
    {
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e)
    {
      xmlHttp = false;
    }
  }
  // jeśli uruchomiona jest Mozilla lub inne przeglądarki
  else
  {
    try
    {
      xmlHttp = new XMLHttpRequest();
    }
    catch (e)
    {
      xmlHttp = false;
    }
  }
  // zwraca utworzony obiekt lub wyświetla komunikat o błędzie
  if (!xmlHttp)
    alert("Blad podczas tworzenia obiektu XMLHttpRequest.");
  else
    return xmlHttp;
}

// wysyła asynchroniczne żądanie protokołem HTTP korzystając z obiektu XMLHttpRequest
function podobne()
{
  // kontynuuje jedynie jeśli obiekt xmlHttp nie jest zajęty
  if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
  {

    name = encodeURIComponent(document.getElementById("podobne").value);
    xmlHttp.open("GET", "ajax/podobne.php?name=" + name, true);
    xmlHttp.onreadystatechange = handleServerResponse;
    xmlHttp.send(null);
  }
  else

    setTimeout('podobne()', 90000);
}


function handleServerResponse()
{
  // kontynuuje jedynie jeśli transakcja została zakończona
  if (xmlHttp.readyState == 4)
  {
    // status 200 oznacza pomyślne ukończenie transakcji
    if (xmlHttp.status == 200)
    {

      helloMessage = xmlHttp.responseText;
      // aktualizuje dane wyświetlane klientowi informacjami otrzymanymi z serwera
      document.getElementById("podobne").innerHTML = helloMessage ;
      // ponawia sekwencję
      setTimeout('podobne()', 10000);
    }
    // dla statusu protokołu HTTP innego niż 200 zgłasza błąd
    else
    {
      alert("error: " + xmlHttp.statusText);
    }
  }
}


