// przechowuje obiekt XMLHttpRequest
var xmlHttp = createXmlHttpRequestObject();
// przechowuje adres i parametry zdalnego serwera
var serverAddress = "./mods/zmiany_p.php";
// zmienne okreœlaj¹ce czêstotliwoœæ ³¹czenia z serwerem
var updateInterval = 0; // ile sekund oczekiwaæ na pobranie nowej wiadomoœci
var errorRetryInterval = 30; // ile sekund czekaæ po wyst¹pieniu b³êdu serwera
// parametr true pozwala wyœwietliæ szczegó³y b³êdu
var debugMode = true;
 
// 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 wyœwietla now¹ wiadomoœæ na stronie
function display($message)
{
  // pobiera odwo³anie do elementu <div> na stronie
  myDiv = document.getElementById("myDivElement");
  // wyœwietla komunikat
  myDiv.innerHTML = $message + "<br/>";
}

// funkcja wyœwietlaj¹ca komunikat o b³êdzie
function displayError($message)
{
  // wyœwietla szczegó³y techniczne b³êdu jeœli debugMode ma wartoœæ true
  display("Błąd podczas otrzymywania wiadomości z serwera gimnowe.pl! Prawdopodobnie administrator strony gimnowe.pl na napisał jeszcze zmian Spróbuję za " +
    errorRetryInterval + " sekund." + (debugMode ? "<br/>" + $message : ""));
  // ponawia sekwencjê
  setTimeout("process();", errorRetryInterval * 1000);
}

// asynchroniczne wywo³anie serwera
function process()
{
  // kontynuuje, jeœli xmlHttp nie jest pusty
  if (xmlHttp)
  {
    // próbuje po³¹czyæ siê z serwerem
    try
    {
 
      display("Laczenie ze strona http://www.gimnowe.pl ... <img src=\"loading.gif\" width=\"15\">")
      // asynchroniczne ¿¹danie HTTP otrzymania nowej wiadomoœci
      xmlHttp.open("GET", serverAddress, true);
      xmlHttp.onreadystatechange = handleGettingNews;
      xmlHttp.send(null);
    }
    catch(e)
    {
      displayError(e.toString());
    }
  }
}

	

// funkcja wywo³ywana przy zmianie statusu ¿¹dania HTTP
function handleGettingNews() 
{
    // kiedy readyState ma wartoœæ 4, jesteœmy gotowi do odebrania odpowiedzi z Sewera
	myDiv = document.getElementById("myDivElement");
	//wyświetla status żądania
	if(xmlHttp.readyState == 1)
	{
		myDiv.innerHTML += "Laduje <br/>";
	}
	else if(xmlHttp.readyState == 2)
	{
		myDiv.innerHTML += "ładuje2 <br/>";
	}
	else if(xmlHttp.readyState == 3)
	{
		myDiv.innerHTML += "ładuje3 <br/>";
	}
	if (xmlHttp.readyState == 4) 
    {
    // kontynuuje tylko, gdy status HTTP ma wartoœæ "OK"
    if (xmlHttp.status == 200) 
    {
      try
      {
        // przetwarza wiadomoœæ z serwera
        getNews();
      }
      catch(e)
      {
        // komunikat o b³êdzie
        displayError(e.toString());
      }
    } 
    else
    {
      // komunikat o b³êdzie
      displayError(xmlHttp.statusText);   
    }
  }
}

// obs³uguje odpowiedŸ otrzymanł z serwera
function getNews()
{
  // pobiera odpowiedŸ serwera
  var response = xmlHttp.responseText;
  // b³¹d serwera?
  if (response.indexOf("ERRNO") >= 0 || response.indexOf("error") >= 0
    || response.length == 0)
    throw(response.length == 0 ? "Błąd serwera." : response);
  // wyœwietla wiadomoœæ
  display(response);
  // ponawia sekwencjê
}

