//przechowuje obiekt XMLHttpRequest
var xmlHttp = createXmlHttpRequestObject();
var ajaxVariable = new Object;
var ajax_loading = "<div style='margin: 20px 0 0 120px'><img src='js/ajax-loader.gif' />ładowanie</div>"; // ładowanie
var ajax_loaded = "<div style='margin: 20px 0 0 120px'><img src='js/ajax-loader.gif' />załadowany</div>"; //załadowany
var ajax_interactive = "<div style='margin: 20px 0 0 120px'><img src='js/ajax-loader.gif' /></div>"; //interaktywny
var ajax_ended = "<div style='margin: 20px 0 0 120px'><img src='js/ajax-loader.gif' /></div>"; //zakończony

//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 utworzyć obiekt XMLHttpRequest
		xmlHttp = new XMLHttpRequest();
	}
	catch (e)
	{
		//w przypadku gdy przeglądarką jest IE6 lub starsza
		var XmlHttpVersion = 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 identyfikator, aż jeden zadziała
		for(var i=0; i<XmlHttpVersion.length; i++)
		{
			try
			{
				//próbuje utworzyć obiekt XMLHttpRequest
				xmlHttp = new ActiveXObject(XmlHttpVersion[i]);
			}
			catch (e) 
			{
			}
		}

	}
	//zwraca utworzony obiekt lub wyświetla komunikat o błędzie
	if(!xmlHttp)
		alert("Błąd podczas przetwarznia obiektu XMLHttpRequest.");
	else
		return xmlHttp;
}

//wywołanie do odczytania pliku z serwera 

function myEasyAjax(method, divName, fileName, param)
{

  ajaxVariable.value = divName;
	//kontynuuje tylko jeśli obiekt xmlHttp istnieje
	if(xmlHttp)
	{
		//próbuje połączyć się z serwerem
		try
		{
			//inicjalizacja odczytu z serwera
			xmlHttp.open(method, fileName, true);
			xmlHttp.onreadystatechange = handleRequestStateChange;
			xmlHttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
			if(method=="GET") {
      xmlHttp.send(null);
      }
      else {
      xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      xmlHttp.send(param);
      }
			
		}
		//w przypadku niepowodzenia wyświetla komunikat o błędzie
		catch (e)
		{
			alert("Nie mogę połączyć się z serwerem:\n" + e.toString());
		}
	}
} 


function myEasyAjax2(method, divName, fileName, param)
{

  ajaxVariable.value = divName;
	//kontynuuje tylko jeśli obiekt xmlHttp istnieje
	if(xmlHttp)
	{
		//próbuje połączyć się z serwerem
		try
		{
			//inicjalizacja odczytu z serwera
			xmlHttp.open(method, fileName, false);
			xmlHttp.onreadystatechange = handleRequestStateChange;
			xmlHttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
			if(method=="GET") {
      xmlHttp.send(null);
      }
      else {
      xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      xmlHttp.send(param);
      }
			
		}
		//w przypadku niepowodzenia wyświetla komunikat o błędzie
		catch (e)
		{
			alert("Nie mogę połączyć się z serwerem:\n" + e.toString());
		}
	}
}

//funkcja obsługująca odpowiedź http
function handleRequestStateChange()
{

  var divName = ajaxVariable.value;
  //alert(divName);
	//pobranie odwołania do elementu <div> na stronie
	myDiv = document.getElementById(divName);

	//wyświetla status żądania
	if(xmlHttp.readyState == 1)
	{
		myDiv.innerHTML = ajax_loading;
	}
	else if(xmlHttp.readyState == 2)
	{
		myDiv.innerHTML = ajax_loaded;
	}
	else if(xmlHttp.readyState == 3)
	{
		myDiv.innerHTML = ajax_interactive;
	}
	//kiedy status serwera wynosi 4, odczytujemy odpowiedź serwera
	else if(xmlHttp.readyState == 4)
	{
		//kontynuujemy tylko, gdy status serwera ma wartość "OK"
		if(xmlHttp.status == 200)
		{
			try
			{
				//czyta wiadomość wysłaną z serwera
				response = xmlHttp.responseText;
				//wyświetla wiadomość
				myDiv.innerHTML = ajax_ended;
				myDiv.innerHTML = response;
			}
			catch (e)
			{
				//wyświetla komunikat o błędzie
				alert("Błąd podczas odczytu odpowiedzi: " + e.toString());
			}
		}
		else
		{
			//wyświetla status wiadomości
			alert("Pojawił się problem w uzuskaniu danych:\n" + xmlHttp.statusText);
		}

		var odpowiedz = xmlHttp.statusText;
		//alert(odpowiedz.length);

	}
}

