var calendar_xmlHttp = calendar_createXmlHttpRequestObject();
var calendar_month;
var calendar_year;
var calendar_data;
var description_data = "";
var calendar_data_start_1 = "<table cellpadding=\"0\" cellspacing=\"1px\"><tr id=\"month\"><td><a href=\"javascript: calendar('prev');\" title=\"Poprzedni miesiac\"><img src=\"http://www.ospdzd.com/graphics/html/calendar/prev.gif\" alt=\"pop\" /></a></td><td colspan=\"5\" id=\"current\">";
var calendar_data_start_2 = "</td><td><a href=\"javascript: calendar('next');\" title=\"Następny miesiac\"><img src=\"http://www.ospdzd.com/graphics/html/calendar/next.gif\" alt=\"nast\" /></a></td></tr><tr><th title=\"Monday\">M</th><th title=\"Tuesday\">T</th><th title=\"Wednesday\">W</th><th title=\"Thursday\">T</th><th title=\"Friday\">F</th><th title=\"Saturday\">S</th><th title=\"Sunday\">S</th></tr>";
var calendar_loading = "<tr><td colspan=\"7\" rowspan=\"5\" style=\"width: 154px\"><img src=\"http://www.ospdzd.com/graphics/html/calendar/loader.gif\" alt=\"Trwa ładowanie\" /></td></tr></table>";
var calendar_months = new Array("",
					  "January",
					  "February",
					  "March",
					  "April",
					  "May",
					  "June",
					  "July",
					  "August",
					  "September",
					  "October",
					  "November",
					  "December");

function calendar_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)
	{
		alert("Bład podczas tworzenia obiektu XMLHttpRequest.");
	}
	else
	{
		return xmlHttp;
	}
}

function tip(day, action)
{
	var id = "tip_" + day;
	var current_div = document.getElementById(id);

	if(action == "show")
	{
		current_div.style.display = "block";
	}
	else if(action == "hide")
	{
		current_div.style.display = "none";
	}
}

function calendar_error()
{
	var p_description = document.getElementById("description");
	p_description.innerHTML = "<strong>Błąd serwera. Proszę spróbować później lub <a href=\"mailto: mess_alex@ospdzd.com\">skontaktować się z administratorem</a>.</strong>" + description_data;
}

function calendar_disable_error()
{
	var p_description = document.getElementById("description");
	p_description.innerHTML = description_data;
}

function calendar(action)
{
	if(action == "next")
	{
		calendar_month++;

		if(calendar_month == 13)
		{
			calendar_year++;

			calendar_month = 1;
		}
	}
	else if(action == "prev")
	{
		calendar_month--;

		if(calendar_month == 0)
		{
			calendar_year--;

			calendar_month = 12;
		}
	}
	else
	{
		calendar_month = php_month;
		calendar_year = php_year;
	}

	var div_second = document.getElementById("second");
	var divs = div_second.getElementsByTagName("div");
	var div_calendar = divs.item(0);
	div_calendar.innerHTML = calendar_data_start_1 + calendar_months[calendar_month] + " " + calendar_year + calendar_data_start_2 + calendar_loading;

	if (calendar_xmlHttp)
	{
		try
		{
			var params = "?month=" + calendar_month + "&year=" + calendar_year;

			calendar_xmlHttp.open("GET", "/php/calendar.php5" + params, true);
			calendar_xmlHttp.onreadystatechange = calendar_handleRequestStateChange;
			calendar_xmlHttp.send(null);
		}
		catch (e)
		{
			calendar_error();
		}
	}
}

function calendar_handleRequestStateChange()
{
	if (calendar_xmlHttp.readyState == 4)
	{
		if (calendar_xmlHttp.status == 200)
		{
			try
			{
				calendar_handleServerResponse();
			}
			catch(e)
			{
				calendar_error();
			}
		}
		else
		{
			calendar_error();
		}
	}
}

function calendar_handleServerResponse()
{
	var xmlResponse = calendar_xmlHttp.responseXML;
	var xmlRoot = xmlResponse.documentElement;

	var calendar = xmlRoot.firstChild;

	var emptySpaces = parseInt(calendar.firstChild.data);
	var days = xmlRoot.getElementsByTagName("day");
	var daysNumber = days.length;

	var iloscPotrzebnychLini = (emptySpaces + daysNumber) / 7;
	iloscPotrzebnychLini = Math.ceil(iloscPotrzebnychLini);


	var div_second = document.getElementById("second");
	var divs = div_second.getElementsByTagName("div");
	var div_calendar = divs.item(0);

	for(i=(1-emptySpaces); i<=daysNumber; i++)
	{
		if(i==(1-emptySpaces))
		{
			calendar_data = calendar_data_start_1 + calendar_months[calendar_month] + " " + calendar_year + calendar_data_start_2;
		}

		if(i<=0)
		{
			calendar_data = calendar_data + "<td class=\"empty\"></td>";
		}
		else if(i>=1)
		{
			if((i+emptySpaces)%7 == 1)
			{
				calendar_data = calendar_data + "</tr><tr>";
			}

			if(php_year == calendar_year && php_month == calendar_month && php_day == i)
			{
				var i_day = "<strong>" + i + "</strong>";
			}
			else
			{
				var i_day = i;
			}

			var i_array = i - 1;
			var current_xml_day = days.item(i_array);
			var current_xml_color = current_xml_day.getElementsByTagName("color");
			if(current_xml_color.item(0))
			{
				current_xml_color = current_xml_color.item(0);
				var current_xml_title = current_xml_day.getElementsByTagName("title");
				current_xml_title = current_xml_title.item(0);
				var current_xml_content = current_xml_day.getElementsByTagName("content");
				current_xml_content = current_xml_content.item(0);
				var current_xml_color = current_xml_day.getElementsByTagName("color");
				current_xml_color = current_xml_color.item(0);

				var h3_text = current_xml_title.firstChild;
				var h3_text = current_xml_title.firstChild.data;

				var p_text = current_xml_content.firstChild;
				var p_text = current_xml_content.firstChild.data;

				var color_text = current_xml_color.firstChild;
				var color_text = current_xml_color.firstChild.data;

				calendar_data = calendar_data + "<td onmouseover=\"tip(" + i + ", 'show')\" onmouseout=\"tip(" + i + ", 'hide')\" class=\"" + color_text + "\"><div class=\"cell\">" + i_day + "<div class=\"tip\" id=\"tip_" + i + "\"><div><h3>" + h3_text + "</h3><p>" + p_text + "</p></div></div></div></td>";
			}
			else
			{
				calendar_data = calendar_data + "<td>" + i_day + "</td>";
			}
		}

		if(i == daysNumber)
		{
			var pola = emptySpaces + daysNumber;
			var iloscPotrzebnychPol = iloscPotrzebnychLini * 7;
			var iloscPolDoDorobienia = iloscPotrzebnychPol - pola;

			for(x=1; x<=iloscPolDoDorobienia; x++)
			{
				calendar_data = calendar_data + "<td class=\"empty\"></td>";
			}

			calendar_data = calendar_data + "</tr></table>";
		}
	}

	div_calendar.innerHTML = calendar_data;
	calendar_disable_error();
}
