// przechowuje obiekt XMLHttpRequest
var xmlHttp = createXmlHttpRequestObject();

// tworzy obiekt XMLHttpRequest
function createXmlHttpRequestObject() 
{
  //przechowa odwołanie do obiektu XMLHttpRequest
  var xmlHttp;
  // powinno działać dla wszystkich przeglądarek z wyjątkiem IE6 i starszych
  try
  {
    // próbuje stworzyć obiekt XMLHttpRequest
    xmlHttp = new XMLHttpRequest();
  }
  catch(e)
  {
    // zakładając, że IE6 lub starsza
    var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
      "MSXML2.XMLHTTP.5.0",
      "MSXML2.XMLHTTP.4.0",
      "MSXML2.XMLHTTP.3.0",
      "MSXML2.XMLHTTP",
      "Microsoft.XMLHTTP");
    // sprawdza każdy prog id aż któryś zadziała
    for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) 
    {
      try 
      { 
        // próbuje stworzyć obiekt XMLHttpRequest
        xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
      } 
      catch (e) {}
    }
  }
  // zwraca stworzony obiekt albo wyświetla komunikat o błędzie
  if (!xmlHttp)
    alert("Błąd podczas tworzenia obiektu XMLHttpRequest.");
  else 
    return xmlHttp;
}

// funkcja wywoływana przy zmianie statusu żądania HTTP
function handleRequestStateChange() 
{
  // kiedy readyState ma wartość 4, jesteśmy gotowi do odebrania odpowiedzi z serwera
  if (xmlHttp.readyState == 4) 
  {
    // kontynuuje tylko, gdy status HTTP ma wartość "OK"
    if (xmlHttp.status == 200) 
    {
      try
      {
        // przetwarza wiadomość z serwera
        handleServerResponse();
      }
      catch(e)
      {
        // komunikat o błędzie
        alert("Błąd odczytu odpowiedzi: " + e.toString());
      }
    }
    else
    {
      // wyświetla wiadomość o statusie
      alert("Pojawił się problem przy pobieraniu danych:\n" + xmlHttp.statusText);
    }
  }
}

// obsługuje odpowiedź otrzymaną z serwera
function handleServerResponse()
{
  // pobiera odpowiedź serwera podaną jako obiekt DOM XML
  var xmlResponse = xmlHttp.responseXML;
  // przechwycenie potencjalnych błędów przez IE i Operę
  if (!xmlResponse || !xmlResponse.documentElement)
    throw("Invalid XML structure:\n" + xmlHttp.responseText);
 
  // przechwycenie potencjalnych błędów przez Firefox
  var rootNodeName = xmlResponse.documentElement.nodeName;
  if (rootNodeName == "parsererror") 
    throw("Niepoprawna struktura XML:\n" + xmlHttp.responseText);
  // pobiera element nadrzędny (element document)
  xmlRoot = xmlResponse.documentElement;
  // sprawdzanie, czy otrzymaliśmy taki dokument XML, jakiego się spodziewaliśmy
  if (rootNodeName != "response" || !xmlRoot.firstChild)
    throw("Niepoerawna struktura XML:\n" + xmlHttp.responseText);
  // wartość potrzebna do wyświetlenia potomka elementu nadrzędnego <response>
  responseText = xmlRoot.firstChild.data;
  // wyświetla wiadomość dla użytkownika
  
    
  if(responseText == "faild"){
    myDiv = document.getElementById("information");
    myDiv.style.color = "#ff0000";
    myDiv.style.backgroundColor = "#ccc";
    myDiv.style.padding = "0.25em";
    myDiv.style.width = "10em";
    myDiv.style.textAlign = "center";
    myDiv.innerHTML = "Invalid arguments.";
  }
  else if(responseText == "success"){
  	window.location='index.php';
  }
}

