function HttpRequest ()
{
	var xmlhttp = false;

	/*@cc_on @*/
	/*@if (@_jscript_version >= 5)
	// JScript gives us Conditional compilation, we can cope with old IE versions.
	// and security blocked creation of the objects.
	try
	{
		xmlhttp = new ActiveXObject ("Msxml2.XMLHTTP");
	}
	catch (e)
	{
		try
		{
			xmlhttp = new ActiveXObject ("Microsoft.XMLHTTP");
		}
		catch (e)
		{
			xmlhttp = false;
		}
	}
	@end @*/

	if (!xmlhttp && typeof XMLHttpRequest != "undefined")
	{
		xmlhttp = new XMLHttpRequest ();
	}

	return xmlhttp;
}

function GetFormData (formObject)
{
	var i, element, argumentsArray = new Array ();

	if (typeof (formObject) == "object")
	{
		for (i = 0; i < formObject.elements.length; i ++)
		{
			element = formObject.elements[i];

			if (element.name.length > 0)
			{
				valueArray = new Array ();

				switch (element.type)
				{
					case "select-multiple":
						for (j = 0; j < element.options.length; j ++)
						{
							element.options[j].selected && (valueArray[valueArray.length] = element.options[j].value);
						}

						break;
					case "radio":
					case "checkbox":
						element.checked && (valueArray[valueArray.length] = element.value);

						break;
					default:
						if (element.type == "textarea" && element.className == "elementTextareaEditor")
						{
//							DisplayEditor (formObject, false);
						}
						valueArray[valueArray.length] = element.value;
				}

				for (j = 0; j < valueArray.length; j ++)
				{
					argumentsArray[argumentsArray.length] = element.name + "=" + encodeURIComponent (valueArray[j]);
				}
			}
		}
	}
	
	return argumentsArray.join ("&");
}

function RequestURL (id, url, content, callback)
{
	Debug ("Request: " + url);

	var callbackArguments = new Array ();
	for (var i = 4; i < arguments.length; i ++)
	{
		callbackArguments[i - 4] = arguments[i];
	}

	var BlockObject = (typeof (id) == "object" ? id : document.getElementById (id));
	if (BlockObject)
	{
		var xmlhttp = HttpRequest ();
		xmlhttp.open (content ? "POST" : "GET", url, true);

		if (content)
		{
			xmlhttp.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded");
		}

		xmlhttp.onreadystatechange = function ()
		{
			if (xmlhttp.readyState == 4)
			{
				if (xmlhttp.status == 200 || xmlhttp.status == 0)
				{
					BlockObject.innerHTML = xmlhttp.responseText;

					if (typeof (callback) == "function")
					{
						callback.apply (null, callbackArguments);
					}
				}

				Wait (false);
			}
			else
			{
				Wait (true);
			}
		}
		xmlhttp.send (content ? content : null);

		delete xmlhttp;
	}
}

function ExecuteURL (url, content)
{
	Debug ("Execute: "+url);

	var xmlhttp = HttpRequest ();
	xmlhttp.open (content ? "POST" : "GET", url, true);
	content && xmlhttp.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded");
	xmlhttp.onreadystatechange = function ()
	{
		if (xmlhttp.readyState == 4)
		{
			if (xmlhttp.status == 200 || xmlhttp.status == 0)
			{
				eval (xmlhttp.responseText);
			}

			Wait (false);
		}
		else
		{
			Wait (true);
		}
	}
	xmlhttp.send (content ? content : null);
	
	delete xmlhttp;
}

function Debug (content)
{
//	alert (content);
}

var messageTimer, timerStart = false;

function Wait (display)
{
/*	if (display)
	{
		if (!timerStart)
		{
			messageTimer = setTimeout ("DisplayObject ('wait', 2);", 500);
			timerStart = true;
		}
	}
	else
	{
		clearTimeout (messageTimer);
		timerStart = false;
		DisplayObject ('wait', false);
	}
*/
}

function DisplayObject (id, display)
{
	var selectionObject = document.getElementById (id);
	if (typeof (selectionObject) == "object")
	{
		selectionObject.style.display = display ? "block" : "none";
	}
}

function ShowOverlay (content)
{
	DisplayObject ("overlayContainer", true);
	DisplayObject ("popupOverlayContainer", true);
	// document.getElementById ("popupOverlayContainer").style.top = window.scrollY + 'px';
	window.scrollTo (0,0);
	if (content && document.getElementById ("popupContainer"))
	{
		document.getElementById ("popupContainer").innerHTML = content;
	}
}

function CloseOverlay ()
{
	DisplayObject ("overlayContainer", false);
	DisplayObject ("popupOverlayContainer", false);
	if (document.getElementById ("popupContainer"))
	{
		document.getElementById ("popupContainer").innerHTML = "";
	}
}