// przechowuje odwołanie do obiektu XMLHttpRequest
var xmlHttpProjectBox = createXmlHttpRequestObjectProjectBox(); 

// zwraca obiekt XMLHttpRequest
function createXmlHttpRequestObjectProjectBox() 
{
  // 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) {} // ignoruje potencjalne błędy
    }
  }
  // zwraca stworzony obiekt albo wyświetla komunikat o błędzie
  if (!xmlHttp) {
    //displayError("Błąd podczas tworzenia obiektu XMLHttpRequest.");
  }
  else {
    return xmlHttp;
  }
}

function processProjectBox() 
{
	setTimeout('processProjectBoxEx()', 45000);
}

// wysyła asynchroniczne żądanie protokołem HTTP korzystając z obiektu XMLHttpRequest
function processProjectBoxEx()
{
  if (xmlHttpProjectBox) {
    try {
      // kontynuuje jedynie jeśli obiekt xmlHttp nie jest zajęty
      if (xmlHttpProjectBox.readyState == 4 || xmlHttpProjectBox.readyState == 0)
      {
        xmlHttpProjectBox.open("GET", "ProjectBoxResponse.php", true);  
        xmlHttpProjectBox.onreadystatechange = handleServerProjectBoxResponse;
        xmlHttpProjectBox.send(null);
      }
      else {
        setTimeout('processProjectBoxEx()', 45000);
      }
	 }
	 catch(e) {}
  }
}

// wykonywana automatycznie po otrzymaniu odpowiedzi z serwera
function handleServerProjectBoxResponse() 
{
  // kontynuuje jedynie jeśli transakcja została zakończona
  if (xmlHttpProjectBox.readyState == 4) 
  {
    // status 200 oznacza pomyślne ukończenie transakcji
    if (xmlHttpProjectBox.status == 200) 
    {
      try {
         getProjectBoxData();
      }
      catch(e) {}
    } 
    // dla statusu protokołu HTTP innego niż 200 zgłasza błąd
    else 
    {
      //alert("Wystąpił błąd podczas uzyskiwania dostępu do serwera: " + xmlHttp.statusText);
    }
  }
}

function getProjectBoxData(){
   var response = xmlHttpProjectBox.responseText;
  
   if (response.indexOf("ERRNO") >= 0 || response.indexOf("error") >= 0 || response.length == 0)
     throw(response.length == 0 ? "Błąd serwera." : response);
     
   document.getElementById("ccFrame1Project").innerHTML = response ;
   setTimeout('processProjectBoxEx()', 45000);
}


