function HtmlEntities(s)
{
	return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
}

function Trim(s)
{
	return s.replace(/^\s+|\s+$/g, "");
}

function UrlEncode(clearString)
{
	var output = '';
	var x = 0;
	clearString = clearString.toString();
	var regex = /(^[a-zA-Z0-9_.]*)/;
	while (x < clearString.length)
	{
		var match = regex.exec(clearString.substr(x));
		if (match != null && match.length > 1 && match[1] != '')
		{
			output += match[1];
			x += match[1].length;
		}
		else
		{
			if (clearString[x] == ' ')
				output += '+';
			else
			{
				var charCode = clearString.charCodeAt(x);
				var hexVal = charCode.toString(16);
				output += '%' + hexVal.toUpperCase();
			}
			x++;
		}
	}
	return output;
}

function UrlDecode(encodedString)
{
	var output = encodedString;
	var binVal, thisString;
	var myregexp = /(%[^%]{2})/;
	while ((match = myregexp.exec(output)) != null && match.length > 1 && match[1] != '')
	{
		binVal = parseInt(match[1].substr(1),16);
		thisString = String.fromCharCode(binVal);
		output = output.replace(match[1], thisString);
	}
	return output;
}

function GetRequest()
{
	var xmlHttp = null;
	try
	{
		// Firefox, Opera 8.0+, Safari
		xmlHttp = new XMLHttpRequest();
	}
	catch(e)
	{
		// Internet Explorer
		try
		{
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e)
		{
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}

function RequestStateToStr(iReadyState)
{
	if (iReadyState == 0)
		return 'Brak.';
	else if (iReadyState == 1)
		return 'Połączony...';
	else if (iReadyState == 2)
		return 'Oczekiwanie na odpowiedź...';
	else if (iReadyState == 3)
		return 'Pobieranie...';
	else
		return 'Gotowy.';
}

function MakePostRequest(oRequest, sUrl, sParams, fOnStateChange)
{
	oRequest.open('POST', sUrl, true);
	oRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=ISO-8859-2");
	oRequest.setRequestHeader("Content-length", sParams.length);
	oRequest.setRequestHeader("Connection", "close");
	oRequest.onreadystatechange = fOnStateChange;
	oRequest.send(sParams);
}

function CalcAbsPos(obj)
{
	var curleft = 0;
	var curtop = 0;
	if (obj.offsetParent)
	do
	{
		curleft += obj.offsetLeft;
		curtop += obj.offsetTop;
	}
	while (obj = obj.offsetParent);
	return [curleft,curtop];
}


var g_iID = null;
var g_oRequest = null;
var g_bModerateAlreadyUsed = false;
var g_sModerateY = '';

function Moderate(oLink, sY, iId)
{
	g_iID = iId;
	g_sModerateY = sY;
	var oFrame = document.getElementById('Moderate');
	if (oFrame)
	{
		if (g_bModerateAlreadyUsed)
		{
			var oResponse = document.getElementById('Moderate_Response');
			if (oResponse)
				oResponse.innerHTML = 'Jedno zgłoszenie do moderatora zostało już wysłane.';
		}
		
		var aLinkPos = CalcAbsPos(oLink);
		aLinkPos[0] += 14 - 320;
		aLinkPos[1] += 14;
		oFrame.style.left = aLinkPos[0] + 'px';
		oFrame.style.top  = aLinkPos[1] + 'px';
		oFrame.style.visibility = 'visible';
	}
	return false;
}

function OnModerateSubmitStateChange()
{
	if (g_oRequest.readyState < 4)
		document.getElementById('Moderate_Response').innerHTML = HtmlEntities(RequestStateToStr(g_oRequest.readyState));
	else
	{
		if (g_oRequest.status == 200)
		{
			if (Trim(g_oRequest.responseText) == 'OK')
			{
				document.getElementById('Moderate_Response').innerHTML = HtmlEntities(g_oRequest.responseText);
			}
			else
				document.getElementById('Moderate_Response').innerHTML = HtmlEntities(g_oRequest.responseText);
		}
		else
			document.getElementById('Moderate_Response').innerHTML = HtmlEntities('Błąd HTTP: ' + g_oRequest.status + ' - ' + g_oRequest.statusText);
		
		g_iID = null;
	}
}

function CloseModeratePopup()
{
	document.getElementById('Moderate').style.visibility = 'hidden';
	return false;
}

function ModerateSubmit(oForm)
{
	g_oRequest = GetRequest();
	var sInfo = document.getElementById('Moderate_Info').value;
	document.getElementById('Moderate').innerHTML = '<p id="Moderate_Response">&nbsp;</p><p style="text-align:center"><input type="button" value="OK" style="padding-left:1em; padding-right:1em;" onclick="return CloseModeratePopup();"></p>';
	MakePostRequest(g_oRequest, 'moderate_ajax.php', 'x=moderate&y='+g_sModerateY+'&id='+g_iID+'&info='+UrlEncode(sInfo), OnModerateSubmitStateChange);
	g_bModerateAlreadyUsed = true;
}
