// przechowuje obiekt XMLHttpRequest
var xmlHttp = createXmlHttpRequestObject();
// przechowuje adres i parametry zdalnego serwera
var serverAddress = "get_news.php";
// zmienne określające częstotliwość łączenia z serwerem
var updateInterval = 360; // ile sekund oczekiwać na pobranie nowej wiadomości
var nextInterval = 20; // ile sekund oczekiwać na pobranie nowej wiadomości
var errorRetryInterval = 10; // ile sekund czekać po wystąpieniu błędu serwera
// parametr true pozwala wyświetlić szczegóły błędu
var debugMode = true;
 
// inicjalizuje pamięć podręczną żądania
var cache = new Array();
var timer1;
var timer_main;
var idArray = new Array();
var idzArray = new Array();
var tytulArray = new Array();
var abstraktArray = new Array();
var fotoArray = new Array();
var foto2Array = new Array();
var linkArray = new Array();
var dataArray = new Array();

var iteracja = 0;
var maxl = 0;

var akcja = "";

var idb = "";
var action = "";
var card = "";

var pausen = false;
var stopn = false;



// 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;
}


// funkcja wyświetlająca komunikat o błędzie
function displayError($message)
{
  // wyświetla szczegóły techniczne błędu jeśli debugMode ma wartość true
    var html = "";
  var htmlg = "";
  
   /* html += "<table width=\'200\' cellpadding=\'0\' cellspacing=\'0\' border=\'0\'>"+
  "<tr>"+
    "<td height=\'19\' valign=\'middle\' align=\'center\' >"+
	"<table valign=\'bottom\' width=\'198\' height=\'19\' cellpadding=\'0\' cellspacing=\'0\' border=\'0\' hspace=\'0\'><tr>"+
	"<td width=\'11\' height=\'19\'  style=\'background-image:url(http://nadbugiem.com.pl/img/bn_left.jpg); background-position:top;\'></td>"+
	"<td width=\'56\' height=\'19\' class=\'boxn_tdz\' align=\'center\' valign=\'middle\'><a href=\'javascript:void(0);\' onclick=\'process(\"1\");\' class=\'boxn_menuz\'><b>Szlaki</b></a></td>"+
		"<td width=\'56\' height=\'19\'  class=\'boxn_td\' align=\'center\' valign=\'middle\'><a href=\'javascript:void(0);\' onclick=\'process(\"2\");\'  class=\'boxn_menu\'><b>Galerie</b></a></td>"+
			"<td width=\'56\' height=\'19\'  class=\'boxn_td\' align=\'center\' valign=\'middle\'><a href=\'javascript:void(0);\' onclick=\'process(\"3\");\' class=\'boxn_menu\'><b>Parki</b></a></td>"+
	"<td width=\'19\' height=\'19\' style=\'background-image:url(http://nadbugiem.com.pl/img/bn_right.jpg); background-position:top;\'></td>"+
	"</tr></table></td></tr>"+
	 "<tr><td valign=\'top\' align=\'center\' style=\'background-image:url(http://www.tygodnik.siedlecki.pl/img/bg_menu_lewe.gif); background-position:top; background-repeat:repeat-y;\' valign=\'top\'><a href=\'http://www.nadbugiem.com.pl\' target=\'_blank\' ><img src=\'http://nadbugiem.com.pl/img/nadbugiem_logo_ts.gif\' width=\'198\' height=\'55\' border=\'0\' /></a></td></tr>"+
	 "<tr><td height=\'1\' width=\'200\' style=\'background-image:url(http://www.tygodnik.siedlecki.pl/img/kreska.gif); background-position:top;\'></td></tr>"+
	 "<tr><td valign=\'top\' align=\'center\' style=\'background-image:url(http://www.tygodnik.siedlecki.pl/img/bg_menu_lewe_yellow.gif); background-position:top; background-repeat:repeat-y;\' valign=\'top\'>";
	 */
	   html += "<table width=\'358\' cellpadding=\'0\' cellspacing=\'0\' border=\'0\' height=\'29\'>"+
  "<tr>"+
    "<td height=\'29\' valign=\'bottom\' align=\'center\'>"+
	"<table valign=\'bottom\' width=\'358\' height=\'29\' cellpadding=\'0\' cellspacing=\'0\' border=\'0\' hspace=\'0\'><tr>"+"<td align=\'right\' width=\'5\' height=\'29\' class=\'boxn_tdz1\'><img src=\'img/lewy_gorny.gif\' width=\'5\' height=\'29\' border=\'0\' /></td><td width=\'116\' height=\'29\' class=\'boxn_tdz\' align=\'center\' valign=\'middle\'><a href=\'javascript:void(0);\' onclick=\'process(\"1\");\' class=\'boxn_menuz\'><b>Szlaki</b></a></td>"+
		"<td width=\'116\' height=\'29\'  class=\'boxn_td\' align=\'center\' valign=\'middle\'><a href=\'javascript:void(0);\' onclick=\'process(\"2\");\'  class=\'boxn_menu\'><b>Galerie</b></a></td>"+
			"<td width=\'116\' height=\'29\'  class=\'boxn_td1\' align=\'center\' valign=\'middle\'><a href=\'javascript:void(0);\' onclick=\'process(\"3\");\' class=\'boxn_menu\'><b>Parki</b></a></td>"+
	"<td align=\'left\' width=\'5\' height=\'29\' class=\'boxn_td11\'><img src=\'img/prawy_gorny.gif\' width=\'5\' height=\'29\' border=\'0\' /></td></tr></table></td></tr>"+
	 "<tr><td height=\'70\' valign=\'top\' align=\'center\' valign=\'top\' style=\'border-left:1px #9f9f9f solid; border-right:1px #9f9f9f solid; border-top:none; font-size:1px;\'><a href=\'http://www.nadbugiem.com.pl\' target=\'_blank\' ><img src=\'img/nadbugiem_logo_ts.gif\' width=\'254\' height=\'70\' border=\'0\' /></a></td></tr>"+
	 "<tr><td valign=\'top\' align=\'center\' valign=\'top\' style=\'border-left:1px #9f9f9f solid; border-right:1px #9f9f9f solid;\'>";
				
  html += "Błąd podczas otrzymywania wiadomości! "+
	   "</td></tr></table>";	
		

		display(html);
  // ponawia sekwencję
  setTimeout("process();", errorRetryInterval * 1000);
}

// asynchroniczne wywołanie serwera
function process(card)
{
  clearTimeout(timer1);
  clearTimeout(timer_main);
  // kontynuuje, jeśli xmlHttp nie jest pusty
  if (xmlHttp)
  {
    // próbuje połączyć się z serwerem
    try
    {
		// nie zaczyna nowej operacji na serwerze, jeśli jakaś jest wykonywana
      	if (xmlHttp.readyState == 4 || 
         	xmlHttp.readyState == 0) 
      	{        
	  		// przechowa parametry potrzebne do wykonania żądania na serwerze
      		var params = "";
      		// jeśli w kolejce czekają wiadomości, to pobiera najstarszą
      		//if (cache.length>0)
        		//params = cache.shift();
      		// jeśli pamięć jest pusta, pobiera nową wiadomość
      		//else
			iteracja = 0;
			if(card=="")
				card = 1;

        	params = "card="+card;
      		// asynchroniczne żądanie HTTP otrzymania nowej wiadomości
      		xmlHttp.open("POST", serverAddress, true);
			xmlHttp.setRequestHeader("Content-Type", 
                                   "application/x-www-form-urlencoded");     	 	
			xmlHttp.onreadystatechange = handleGettingNews;
     		xmlHttp.send(params);
		} else
      	{
        	// sprawdza ponownie czy są nowe wiadomości
        	setTimeout("process("+card+");", updateInterval * 1000);
      	}	
	}
    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
  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);   
    }
  }
}


function nextNews(){
	if(iteracja==maxl)
		iteracja = 0;
	clearTimeout(timer1);
	makeNews();
}


function backNews(){
	if(iteracja==1)
		iteracja = maxl - 1;
	else 
		iteracja = iteracja - 2;
	clearTimeout(timer1);
	makeNews();
	
}

function pauseNews(){
	pausen = true;
	clearTimeout(timer1);
	clearTimeout(timer_main);
}

function playNews(){
	pausen = false;
	stopn = false;
	timer1 = setTimeout("makeNews();", nextInterval * 1000);  
}

function stopNews(){
	stopn = true;
	iteracja = 0;
	clearTimeout(timer1);
	clearTimeout(timer_main);
	makeNews();
}


// obsługuje odpowiedź otrzymaną z serwera
function makeNews()
{	  

	if(iteracja==maxl)
		iteracja = 0;
// generuje dane wyjściowe w formacie HTML
  var html = "";
  var htmlg = "";
  
	var cclasa1 = "";
	var cclasa11 = "";
	var cclasa2 = "";
	var cclasa3 = "";
	var cclasa1t = "";
	var cclasa2t = "";
	var cclasa3t = "";
	
	if(idzArray.item(iteracja).firstChild.data=="1"){
		cclasa1 = "boxn_tdz"; 
		cclasa11 = "boxn_tdz1";
		cclasa2 = "boxn_td"; 
		cclasa3 = "boxn_td1"; 
		cclasa33 = "boxn_td11"; 
		cclasa1t = "boxn_menuz"; 
		cclasa2t = "boxn_menu"; 
		cclasa3t = "boxn_menu"; 
	}else if(idzArray.item(iteracja).firstChild.data=="2"){
		cclasa1 = "boxn_td"; 
		cclasa11 = "boxn_td11";
		cclasa2 = "boxn_tdz"; 
		cclasa3 = "boxn_td1"; 	
		cclasa33 = "boxn_td11";
		cclasa1t = "boxn_menu"; 
		cclasa2t = "boxn_menuz"; 
		cclasa3t = "boxn_menu"; 

	}else if(idzArray.item(iteracja).firstChild.data=="3"){
		cclasa1 = "boxn_td"; 
		cclasa11 = "boxn_td11";
		cclasa2 = "boxn_td"; 
		cclasa3 = "boxn_tdz2";
		cclasa33 = "boxn_tdz1";
		cclasa1t = "boxn_menu"; 
		cclasa2t = "boxn_menu"; 
		cclasa3t = "boxn_menuz"; 

	}else {
		cclasa1 = "boxn_tdz";
		cclasa11 = "boxn_tdz1";
		cclasa2 = "boxn_td"; 
		cclasa3 = "boxn_td";
		cclasa33 = "boxn_td11"; 
		cclasa1t = "boxn_menuz"; 
		cclasa2t = "boxn_menu"; 
		cclasa3t = "boxn_menu"; 
	}
	
  html += "<table width=\'358\' cellpadding=\'0\' cellspacing=\'0\' border=\'0\'>"+
  "<tr>"+
    "<td height=\'28\' valign=\'bottom\' align=\'center\' style=\'font-size:1px;padding:0;margin:0;\'>"+
	"<table valign=\'bottom\' width=\'358\' height=\'28\' cellpadding=\'0\' cellspacing=\'0\' border=\'0\' hspace=\'0\'><tr>"+"<td align=\'right\' width=\'5\' height=\'28\' class=\'"+cclasa11+"\'><img src=\'img/lewy_gorny.gif\' width=\'5\' height=\'29\' border=\'0\' /></td><td width=\'116\' height=\'28\' class=\'"+cclasa1+"\' align=\'center\' valign=\'middle\'><a href=\'javascript:void(0);\' onclick=\'process(\"1\");\' class=\'"+cclasa1t+"\'><b>Szlaki</b></a></td>"+
		"<td width=\'116\' height=\'28\'  class=\'"+cclasa2+"\' align=\'center\' valign=\'middle\'><a href=\'javascript:void(0);\' onclick=\'process(\"2\");\'  class=\'"+cclasa2t+"\'><b>Galerie</b></a></td>"+
			"<td width=\'116\' height=\'28\'  class=\'"+cclasa3+"\' align=\'center\' valign=\'middle\'><a href=\'javascript:void(0);\' onclick=\'process(\"3\");\' class=\'"+cclasa3t+"\'><b>Parki</b></a></td>"+
	"<td align=\'left\' width=\'5\' height=\'28\' class=\'"+cclasa33+"\'><img src=\'img/prawy_gorny.gif\' width=\'5\' height=\'29\' border=\'0\' /></td></tr></table></td></tr>"+
	 "<tr><td height=\'70\' valign=\'top\' align=\'center\' valign=\'top\' style=\'border-left:1px #9f9f9f solid; border-right:1px #9f9f9f solid; font-size:1px;\' class=\'td_activ\'><a href=\'http://www.nadbugiem.com.pl\' target=\'_blank\' ><img src=\'img/nadbugiem_logo_ts.gif\' width=\'254\' height=\'70\' border=\'0\' /></a></td></tr>"+
	 "<tr><td valign=\'top\' align=\'center\' valign=\'top\' style=\'border-left:1px #9f9f9f solid; border-right:1px #9f9f9f solid;\' class=\'td_activ\'>";
				
  html += "<table height=\'220\' width=\'315\' border=\'0\'><tr><td align=\'center\' valign=\'middle\' height=\'30\'>";
  // iteracja przez elementy tablic i tworzenie struktury HTML
  var i =0;
  //for (var i=0; i<tytulArray.length; i++){
    html += "<span  class=\'boxn_tytul\'><b>" +  tytulArray.item(iteracja).firstChild.data + "</b></span></td></tr><tr><td valign=\'top\'  align=\'center\' valign=\'top\'>";
	
			if(linkArray.item(iteracja).firstChild.data!="x")
	  		html += "<a href=\'"+linkArray.item(iteracja).firstChild.data+"\' target=\'_blank\' class=\'boxn_tresc\'>";

      html += "<img src=\'http://nadbugiem.com.pl/image/boxy/mini/" + fotoArray.item(iteracja).firstChild.data + "\'  border=\'0\' width=\'140\' hspace=\'5\'  style=\'margin-bottom:5px; margin-top:5px;\' />";
	  
	 
		
	 if(foto2Array.item(iteracja).firstChild.data!="x")	
		html += "<img src=\'http://nadbugiem.com.pl/image/boxy/mini/" + foto2Array.item(iteracja).firstChild.data + "\'  border=\'0\' width=\'140\' hspace=\'5\' style=\'margin-bottom:5px; margin-top:5px; margin-left:10px;\' />";
		
	  html += "<br></center><span class=\'boxn_tresc\'>";
	  
	  html += abstraktArray.item(iteracja).firstChild.data+"";
	  if(linkArray.item(iteracja).firstChild.data!="x")
	  	html += "</a>";
	  
	  html += "</span></td></tr>"+	  
	  "<tr><td class=\'boxn_tresc_bialy\' valign=\'bottom\' align=\'center\' height=\'10\'>Czytaj więcej w <a href=\'http://www.nadbugiem.com.pl\' target=\'_blank\' class=\'boxn_tresc_bialy\'boxn_tresc_bialy\'>nadbugiem.com.pl</a></td></tr></table>";
	
	html +="</td></tr>";
	
	html +="<tr><td valign=\'middle\' align=\'center\' style=\'border-top:1px #9f9f9f solid; border-left:1px #9f9f9f solid; border-right:1px #9f9f9f solid; padding:5px 0 0 0;\' valign=\'top\'><a href=\'javascript:void(0)\';  onclick=\'playNews();\'><img src=\'http://nadbugiem.com.pl/img/next.gif\' border=\'0\' width=\'15\' height=\'15\' align=\'middle\' title=\'start\' alt=\'start\' /></a>&nbsp;&nbsp;<a href=\'javascript:void(0)\';  onclick=\'pauseNews();\'><img src=\'http://nadbugiem.com.pl/img/pause.gif\' border=\'0\' width=\'15\' height=\'15\' align=\'middle\' title=\'pauza\' alt=\'pauza\' /></a> <a href=\'javascript:void(0)\';  onclick=\'backNews();\'><img src=\'http://nadbugiem.com.pl/img/reward.gif\' border=\'0\' width=\'15\' height=\'15\' align=\'middle\' title=\'poprzedni\' alt=\'poprzedni\' /></a> <a href=\'javascript:void(0);\' onclick=\'nextNews();\'><img src=\'http://nadbugiem.com.pl/img/fast_forward.gif\' border=\'0\' width=\'15\' height=\'15\' align=\'middle\' title=\'następny\' alt=\'następny\' /></a>&nbsp;&nbsp;<a href=\'javascript:void(0);\' onclick=\'stopNews();\'> <img src=\'http://www.nadbugiem.com.pl/img/stop.gif\' border=\'0\' width=\'15\' height=\'15\' align=\'middle\' title=\'stop\' alt=\'stop\' /></a></td></tr>"+
	"<tr><td height=\'12\'><img src=\'http://www.tygodnik.siedlecki.pl/img/box_bottom.gif\' border=\'0\' width=\'358\' height=\'12\'></td></tr></table>";

	

		iteracja = iteracja+1;
		
	display(html);
	if(!pausen)
		timer1 = setTimeout("makeNews();", nextInterval * 1000);  
}

// obsługuje odpowiedź otrzymaną z serwera
function getNews()
{	

  idArray = new Array();
  idzArray = new Array();
  tytulArray = new Array();
  abstraktArray = new Array();
  fotoArray = new Array();
  foto2Array = new Array();
  linkArray = new Array();
  dataArray = new Array();

// 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);

		
  // pobiera tablice tytułów i numerów ISBN
  idArray = xmlRoot.getElementsByTagName("id");
  idzArray = xmlRoot.getElementsByTagName("idz");
  tytulArray = xmlRoot.getElementsByTagName("tytul");
  abstraktArray = xmlRoot.getElementsByTagName("abstrakt");
  fotoArray = xmlRoot.getElementsByTagName("foto");
  foto2Array = xmlRoot.getElementsByTagName("foto2");
  linkArray = xmlRoot.getElementsByTagName("link");
  dataArray = xmlRoot.getElementsByTagName("data");
  
  maxl = tytulArray.length;
  if(!stopn)
 	timer_main = setTimeout("process("+xmlRoot.getElementsByTagName("idz")+");", updateInterval * 1000);
  makeNews();
}


