var xmlHttp = createXmlHttpRequestObject();
// przechowa adres zdalnego serwera
//var serverAddress = "/kalendarium/generuj";
var showErrors = false;
var cache = new Array();
var typ = null;

function createXmlHttpRequestObject() 
{
  	var xmlHttp;
  	try
  	{
    	xmlHttp = new XMLHttpRequest();
  	}
  	catch(e)
  	{
    	var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
                                      "MSXML2.XMLHTTP.5.0",
                                      "MSXML2.XMLHTTP.4.0",
                                      "MSXML2.XMLHTTP.3.0",
                                      "MSXML2.XMLHTTP",
                                      "Microsoft.XMLHTTP");
    	for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) 
    	{
      	try 
      	{ 
       		xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
      	} 
      	catch (e) {}
    	}
  	}
  	if (!xmlHttp)
    	displayError("Błąd podczas tworzenia obiektu XMLHttpRequest.");
  	else 
    	return xmlHttp;
}

function displayError($message)
{
  	if(showErrors)
  	{
    	//showErrors = false;
    	alert("Wystąpił błąd: \n" + $message);
  	}
}

function generujKalendarium(miesiac, rok, lang)
{  
	typ = "kalendarium";
	if (xmlHttp)
  	{
    	if(miesiac && rok)
    	{
      	miesiac = encodeURIComponent(miesiac);
      	rok = encodeURIComponent(rok);
			//alert("/"+lang+serverAddress);
      	cache.push("miesiac" + "=" + miesiac + "&rok=" + rok);
    	}
    	try
    	{
      	if ((xmlHttp.readyState == 4 || xmlHttp.readyState == 0) && cache.length > 0)
      	{
        		var cacheEntry = cache.shift();
        		xmlHttp.open("POST", "/"+lang+"/kalendarium/generuj", true);
        		xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        		xmlHttp.onreadystatechange = handleRequestStateChange;
        		xmlHttp.send(cacheEntry);
      	}
    	}
    	catch (e)
    	{
			displayError(e.toString());
    	}
  	}
}

function zapiszEmail(email, lang)
{  
	typ = "biuletyn";
	if (xmlHttp)
  	{
    	if(email)
    	{
      	email = encodeURIComponent(email);			
      	cache.push("email" + "=" + email);
    	}
    	try
    	{
      	if ((xmlHttp.readyState == 4 || xmlHttp.readyState == 0) && cache.length > 0)
      	{
        		var cacheEntry = cache.shift();
        	  	xmlHttp.open("POST", "/"+lang+"/biuletyn/generuj", true);
        		xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        		xmlHttp.onreadystatechange = handleRequestStateChange;
        		xmlHttp.send(cacheEntry);
      	}
    	}
    	catch (e)
    	{
			displayError(e.toString());
    	}
  	}
}

function validateKontakt(inputValue, fieldID, lang)
{  
	typ = "kontakt";
	//alert('ble');
	if (xmlHttp)
  	{
    	if (fieldID)
    	{
      	inputValue = encodeURIComponent(inputValue);
      	fieldID = encodeURIComponent(fieldID);
      	cache.push(fieldID + "=" + inputValue + "&fieldID=" + fieldID);
    	}
    	try
    	{
      	if ((xmlHttp.readyState == 4 || xmlHttp.readyState == 0) && cache.length > 0)
      	{
        		var cacheEntry = cache.shift();
        	  	xmlHttp.open("POST", "/"+lang+"/kontakt/validate", true);
        		xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        		xmlHttp.onreadystatechange = handleRequestStateChange;
        		xmlHttp.send(cacheEntry);
      	}
    	}
    	catch (e)
    	{
			displayError(e.toString());
    	}
  	}
}

function validateKsiega(inputValue, fieldID, lang)
{  
	typ = "ksiega";
	if (xmlHttp)
  	{
    	if (fieldID)
    	{
      	inputValue = encodeURIComponent(inputValue);
      	fieldID = encodeURIComponent(fieldID);
      	cache.push(fieldID + "=" + inputValue + "&fieldID=" + fieldID);
    	}
    	try
    	{
      	if ((xmlHttp.readyState == 4 || xmlHttp.readyState == 0) && cache.length > 0)
      	{
        		var cacheEntry = cache.shift();
        	  	xmlHttp.open("POST", "/"+lang+"/ksiega/validate", true);
        		xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        		xmlHttp.onreadystatechange = handleRequestStateChange;
        		xmlHttp.send(cacheEntry);
      	}
    	}
    	catch (e)
    	{
			displayError(e.toString());
    	}
  	}
}

function podgladKsiega(imie, tresc, lang)
{
	typ = "podglad_ksiega";
	//alert(imie+'?'+tresc+'?');
	if (xmlHttp)
  	{
    	if(imie || tresc)
    	{
      	imie = encodeURIComponent(imie);
      	tresc = encodeURIComponent(tresc);
      	cache.push("imie=" + imie + "&tresc=" + tresc);
    	}
    	try
    	{
      	if ((xmlHttp.readyState == 4 || xmlHttp.readyState == 0) && cache.length > 0)
      	{
        		var cacheEntry = cache.shift();
        	  	xmlHttp.open("POST", "/"+lang+"/ksiega/podglad", true);
        		xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        		xmlHttp.onreadystatechange = handleRequestStateChange;
        		xmlHttp.send(cacheEntry);
      	}
    	}
    	catch (e)
    	{
			displayError(e.toString());
    	}
  	}
}

function handleRequestStateChange() 
{	
  	if (xmlHttp.readyState == 4) 
  	{
    	if (xmlHttp.status == 200) 
    	{
      	try
      	{
        		//alert(typ);
				switch(typ)
				{
					case "kalendarium": readResponseKalendarium(); break;
					case "biuletyn": readResponseBiuletyn(); break
					case "kontakt": readResponseKontakt(); break;
					case "ksiega": readResponseKsiega(); break;
					case "podglad_ksiega": readResponsePodgladKsiega(); break;
					default: break;
				}
				
      	}
      	catch(e) 
      	{
				displayError(e.toString());
      	}
    	}
    	else
    	{
      	displayError(xmlHttp.statusText);
    	}
  	}
}

function readResponseKalendarium()
{
 	var response = xmlHttp.responseText;
 	//alert(response);	
 	if (response.indexOf("ERRNO") >= 0 || response.indexOf("error:") >= 0 || response.length == 0)
 		throw(response.length == 0 ? "Server error." : "response");
 	responseJSON = eval('(' + response + ')');
	tabela = responseJSON.tabela;
	//alert(tabela);
	div = document.getElementById("tabela_kalendarium");
  	//div.className = (result != '') ? "error" : "hidden";
  	div.innerHTML = tabela;	
  	setTimeout("generujKalendarium();", 500);	
}

function readResponseBiuletyn()
{
 	var response = xmlHttp.responseText;
 	//alert(response);	
 	if (response.indexOf("ERRNO") >= 0 || response.indexOf("error:") >= 0 || response.length == 0)
 		throw(response.length == 0 ? "Server error." : "response");
 	responseJSON = eval('(' + response + ')');
	odpowiedz = responseJSON.odpowiedz;
	wynik = responseJSON.wynik;
	div = document.getElementById("komunikat");
  	div.className = (wynik ? "pokazOk" : "pokazBlad");
  	div.innerHTML = odpowiedz;
  	setTimeout("zapiszEmail();", 500);	
}

function readResponseKontakt()
{
 	var response = xmlHttp.responseText;
 	//alert(response);	
 	if (response.indexOf("ERRNO") >= 0 || response.indexOf("error:") >= 0 || response.length == 0)
 		throw(response.length == 0 ? "Server error." : "response");
 	responseJSON = eval('(' + response + ')');
	fieldID = responseJSON.fieldID;
	result = responseJSON.result;
	
	message = document.getElementById(fieldID + "Failed");
	// wyświetla lub ukrywa błąd
  	message.className = (result != '') ? "error" : "hidden";
  	message.innerHTML = '<br />'+result;
  	setTimeout("validateKontakt();", 500);	
}

function readResponseKsiega()
{
 	var response = xmlHttp.responseText;
 	//alert(response);	
 	if (response.indexOf("ERRNO") >= 0 || response.indexOf("error:") >= 0 || response.length == 0)
 		throw(response.length == 0 ? "Server error." : "response");
 	responseJSON = eval('(' + response + ')');
	fieldID = responseJSON.fieldID;
	result = responseJSON.result;
	
	message = document.getElementById(fieldID + "Failed");
	// wyświetla lub ukrywa błąd
  	message.className = (result != '') ? "error" : "hidden";
  	message.innerHTML = '<br />'+result;
  	setTimeout("validateKsiega();", 500);	
}

function readResponsePodgladKsiega()
{
 	var response = xmlHttp.responseText;
 	//alert(response);	
 	if (response.indexOf("ERRNO") >= 0 || response.indexOf("error:") >= 0 || response.length == 0)
 		throw(response.length == 0 ? "Server error." : "response");
 	responseJSON = eval('(' + response + ')');
	imie = responseJSON.imie;
	tresc = responseJSON.tresc;
	
	if(imie || tresc)
	{
		p_imie = document.getElementById("imiePodglad");
  		p_imie.innerHTML = imie;
		p_tresc = document.getElementById("trescPodglad");
		p_tresc.innerHTML = tresc;
	}	
  	setTimeout("podgladKsiega();", 500);	
}
