var xmlHttp = createXmlHttpRequestObject();
var errorRetryInterval = 10;
var debugMode = true;

var name_ = "";

function createXmlHttpRequestObject()
{
	var xmlHttp

	try
	{
		xmlHttp = new XMLHttpRequest();
	}
	catch(e)
	{
		// IE
		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)
		alert("Błąd podczas tworzenia żądania.");
	else
		return xmlHttp;
}

function display($message)
{
	myDiv = document.getElementById("mainFrame");
	myDiv.innerHTML = $message;
}

function displayError($message)
{
	display("Błąd pobierania danych. Następna próba za " + errorRetryInterval + " sekund." +
		(debugMode ? "<br />" + $message : ""));

	setTimeout("load('" + name_ + "')", (errorRetryInterval * 1000));
}

function load(name)
{
	name_ = name;
        loadingtxt = "<p align=\"center\"><br/><br/><br/>";
        loadingtxt += "<img src=\"graphics/ajax-loader.gif\"><br/>";
        loadingtxt += "<span class=\"news_title\">Ładowanie...</span></p>";

	if (xmlHttp)
	{
		try
		{
			display(loadingtxt);

			name = name + ".php";
			xmlHttp.open("GET", name, true);
			xmlHttp.onreadystatechange = handleGettingPage;
			xmlHttp.send(null);
		}
		catch(e)
		{
			displayError(e.toString());
		}
	}
}

function handleGettingPage()
{
	if (xmlHttp.readyState == 4)
	{
		if (xmlHttp.status == 200)
		{
			try
			{
				getPage();
			}
			catch(e)
			{
				displayError(e.toString());
			}
		}
		else
		{
			if (xmlHttp.status == 404)
			{
				display('Żądana strona nie istnieje.');
			}
			else
			{
				display(xmlHttp.statusText);
			}
		}
	}
}

function getPage()
{
	var xmlResponse = xmlHttp.responseXML;

	// catching potential error with Opera (the best browser ever :]) and IE(r) (the worst browser ever :[)
	if (!xmlResponse || !xmlResponse.documentElement)
		throw("Invalid XML structure:\n" + xmlHttp.responseText);

	var rootNodeName = xmlResponse.documentElement.nodeName;
	if (rootNodeName == "parsererror") throw ("Invalid XML structure");

	xmlRoot = xmlResponse.documentElement;

	if (rootNodeName != "response" || !xmlRoot.firstChild)
		throw("Invalid XML structure:\n" + xmlHttp.responseText);

	responseText = xmlRoot.firstChild.data;
	display(responseText);
}
