function ajaxRequest(uri, container)
{
	var ajax_object = getAjaxObject();
	
	ajax_object.onreadystatechange = function ()
	{
		if (4 == ajax_object.readyState)
		{
			document.getElementById(container).innerHTML = ajax_object.responseText;
			
			expression = /<script[^>]*>([\S\s]*?)<\/script>/gim;
			while (null != (matches = expression.exec(ajax_object.responseText)))
			{
				eval(matches[1]);
			}
		}
	};
	
	ajax_object.open('GET', uri, true);
	ajax_object.send(null);
	
	return true;
}

function ajaxSubmit(formId, uri, container)
{
	var ajax_object = getAjaxObject();
	var submit_string = getSubmitString(formId);
	
	ajax_object.onreadystatechange = function ()
	{
		if (4 == ajax_object.readyState)
		{
			document.getElementById(container).innerHTML = ajax_object.responseText;
			
			expression = /<script[^>]*>([\S\s]*?)<\/script>/gim;
			while (null != (matches = expression.exec(ajax_object.responseText)))
			{
				eval(matches[1]);
			}
		}
	};
	
	ajax_object.open('POST', uri, true);
	ajax_object.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
	ajax_object.setRequestHeader('Content-length', submit_string.length);
	ajax_object.setRequestHeader('Connection', 'close');
	ajax_object.send(submit_string);
	
	return true;
}

function getAjaxObject()
{
	var ajax_object;
	
	try
	{
		ajax_object = new XMLHttpRequest();
	}
	catch (e)
	{
		try
		{
			ajax_object = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				ajax_object = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e)
			{
				return false;
			}
		}
	}
	
	return ajax_object;
}

function getSubmitString(formId)
{
	var formObject = document.getElementById(formId);
	var submit_string = '';
	
	var length = formObject.getElementsByTagName('input').length;
	for (var index = 0; index < length; ++index)
	{
		if ('button' != formObject.getElementsByTagName('input')[index].type &&
			'submit' != formObject.getElementsByTagName('input')[index].type)
		{
			if ('checkbox' != formObject.getElementsByTagName('input')[index].type ||
				('checkbox' == formObject.getElementsByTagName('input')[index].type &&
				formObject.getElementsByTagName('input')[index].checked))
			{
				submit_string += (formObject.getElementsByTagName('input')[index].name + '=' + encodeURIComponent(formObject.getElementsByTagName('input')[index].value)) + '&';
			}
		}
	}
	
	length = formObject.getElementsByTagName('select').length;
	for (var index = 0; index < length; ++index)
	{
		submit_string += (formObject.getElementsByTagName('select')[index].name + '=' + encodeURIComponent(formObject.getElementsByTagName('select')[index].value)) + '&';
	}
	
	length = formObject.getElementsByTagName('textarea').length;
	for (var index = 0; index < length; ++index)
	{
		submit_string += (formObject.getElementsByTagName('textarea')[index].name + '=' + encodeURIComponent(formObject.getElementsByTagName('textarea')[index].value)) + '&';
	}
	
	return submit_string.substr(0, submit_string.length - 1);
}
