var newsletter_xmlHttp = newsletter_createXmlHttpRequestObject();

function newsletter_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 newsletter_key(e)
{
	if(e.keyCode == 13)
	{
		newsletter("add");
	}
}

function newsletter_init()
{
	var second = document.getElementById("second");
	var uls = second.getElementsByTagName("ul");
	var ul = uls.item(0);

	var status = document.createElement("li");
	status.id = "status";

	ul.appendChild(status);

	var strong = document.createElement("strong");
	strong.style.display = "none";
	strong.style.paddingBottom = "25px";
	strong.id = "newsletter_error";

	status.appendChild(strong);

	var statusImage = document.createElement("img");
	statusImage.src = "/graphics/html/calendar/newsletterLoader.gif";
	statusImage.id = "newsletter_status";

	status.appendChild(statusImage);

	var explainImage = document.createElement("img");
	explainImage.src = "/graphics/html/calendar/newsletterExplain.gif";
	explainImage.style.display = "inline";

	var explainA = document.createElement("a");
	explainA.id = "newsletter_explain";
	explainA.style.display = "none";

	explainA.appendChild(explainImage);
	status.appendChild(explainA);
}

function newsletter(action)
{
	var statusImage = document.getElementById("newsletter_status");;
	statusImage.src = "/graphics/html/calendar/newsletterLoader.gif";
	statusImage.style.display = "inline";

	var newsletter_emailInput = document.getElementById("newsletterField");
	var newsletter_emailValue = newsletter_emailInput.value;

	var strong = document.getElementById("newsletter_error");
	strong.style.display = "none";

	var explainA = document.getElementById("newsletter_explain");
	explainA.style.display = "none";

	var emailFormat = /^[a-zA-Z0-9\.\-\_]+\@[a-zA-Z0-9\.\-\_]+\.[a-z]{2,4}$/i;

	if(emailFormat.test(newsletter_emailValue))
	{
		if (newsletter_xmlHttp)
		{
			try
			{
				var params = "?email=" + newsletter_emailValue + "&action=" + action;

				newsletter_xmlHttp.open("GET", "/php/newsletter.php5" + params, true);
				newsletter_xmlHttp.onreadystatechange = newsletter_handleRequestStateChange;
				newsletter_xmlHttp.send(null);
			}
			catch (e)
			{
				alert("Nie mogę połaczyć się z serwerem:\n" + e.toString());
			}
		}
	}
	else
	{
		statusImage.src = "/graphics/html/calendar/newsletterWrong.gif";

		var explainA = document.getElementById("newsletter_explain");
		explainA.href = "javascript: newsletter_explain(\"email\");";
		explainA.style.display = "inline";
	}
}

function newsletter_handleRequestStateChange()
{
	if (newsletter_xmlHttp.readyState == 4)
	{
		if (newsletter_xmlHttp.status == 200)
		{
			try
			{
				newsletter_handleServerResponse();
			}
			catch(e)
			{
			      alert("Bład podczas otrzymywania odpowiedzi z serwera: " + e.toString());
			}
		}
		else
		{
			alert("Problem przy pobieraniu danych:\n" + newsletter_xmlHttp.statusText);
		}
	}
}

function newsletter_handleServerResponse()
{
	var xmlResponse = newsletter_xmlHttp.responseXML;
	xmlRoot = xmlResponse.documentElement;

	var information = new String;

	var textNode = xmlRoot.firstChild;
	information = textNode.data;

	var statusImage = document.getElementById("newsletter_status");

	is_ok = information.indexOf("pomyslnie");
	if(is_ok != -1)
	{
		statusImage.src = "/graphics/html/calendar/newsletterFine.gif";
	}
	else
	{
		statusImage.src = "/graphics/html/calendar/newsletterWrong.gif";

		var explainA = document.getElementById("newsletter_explain");
		explainA.href = "javascript: newsletter_explain(\"server\");";
		explainA.style.display = "inline";
	}
}

function newsletter_explain(error)
{
	var statusImage = document.getElementById("newsletter_status");
	statusImage.style.display = "none";

	var explainA = document.getElementById("newsletter_explain");
	explainA.style.display = "none";

	var strong = document.getElementById("newsletter_error");
	strong.style.display = "inline";

	if(error == "server")
	{
		var information = "Błąd serwera. Proszę spróbować później lub <a href=\"mailto: mess_alex@ospdzd.com\">skontaktować się z administratorem</a>.";
	}
	else if(error == "email")
	{
		var information = "Niepoprawny adres e-mail.";
	}

	strong.innerHTML = information;
}
