function showLoadingInfo(content_holder)
{
	$(content_holder).scrollTop = 0;

	var dimensions = $(content_holder).getDimensions();
	var positions = $(content_holder).viewportOffset();
	
	var loadInd = document.createElement('div');
	
	loadInd.id = content_holder + "_loadingIndicator";
	
	loadInd.style.position = 'absolute'; 
	loadInd.style.zIndex = '999';
	loadInd.style.width = dimensions.width + "px";
	loadInd.style.height = dimensions.height + "px";
	loadInd.style.paddingTop = "5px";

	loadInd.style.left = positions.left + "px";
	loadInd.style.top = (positions.top + $(content_holder).scrollTop) + "px";

	var loadHTML = "<table width='95%' height='30px' align='center' border='0' cellspacing='0' cellpadding='0'>";
		loadHTML = loadHTML + "<tr><td align='right' valign='top' width='100%' style='padding-top: 5px; padding-right: 18px;background-image: url("+app_host+"/images/loading.gif); background-position: 100% 0%; background-repeat: no-repeat;'>";
		loadHTML = loadHTML + "<table cellspacing='0' cellpadding='0'><tr><td><img src='"+app_host+"/images/loading_spin.gif' />&nbsp;&nbsp;</td><td style='color: #FFFFFF;font-family: Courier New;font-size: 18px;font-weight: bold;'>Loading</td></tr></table>";
		loadHTML = loadHTML + "</td>";
		loadHTML = loadHTML + "</table>";
	
	loadInd.innerHTML = loadHTML;
	loadInd.style.display = 'block';
	
	$(content_holder).height = '150px';
	$(content_holder).appendChild(loadInd);
}

function hideLoadingInfo(content_holder)
{
	var loadInd = $(content_holder + "_loadingIndicator");
	loadInd.innerHMTL = '';
	$(content_holder).removeChild(loadInd);
}

function ajaxPost(content_holder, action, formId)
{
	if (action.lastIndexOf("/") == (action.length - 1))
	{
		action = action + "partial/content/";
	}
	else
	{
		action = action + "/partial/content/";
	}
	var parameters = '';
	if (formId)
	{
		parameters = $(formId).serialize();
	}
	showLoadingInfo(content_holder);
	new Ajax.Request(action, {
								  method: 'POST',
								  asynchronous: true,
								  evalScripts: true, 
								  parameters: parameters,
								  onSuccess: function(transport) 
								  {
									hideLoadingInfo(content_holder);
								  	$(content_holder).innerHTML = transport.responseText;
								  	transport.responseText.evalScripts();
									$(content_holder).scrollTop = 0;
								  },
								  onFailure: function(transport)
								  {
								  	alert("ajaxPost error: Failure transport.");
								  }
								}
						);
}

function ajaxGet(content_holder, action, formId)
{
	if (action.lastIndexOf("/") == (action.length - 1))
	{
		action = action + "partial/content/";
	}
	else
	{
		action = action + "/partial/content/";
	}
	var parameters = '';
	if (formId)
	{
		parameters = $(formId).serialize();
	}
	showLoadingInfo(content_holder);
	new Ajax.Request(action, {
								  method: 'GET',
								  asynchronous: true,
								  evalScripts: true, 
								  parameters: parameters,
								  onSuccess: function(transport) 
								  {
									hideLoadingInfo(content_holder);
								  	$(content_holder).innerHTML = transport.responseText;
								  	transport.responseText.evalScripts();
									$(content_holder).scrollTop = 0;
								  },
								  onFailure: function(transport)
								  {
								  	alert("ajaxGet error: Failure transport.");
								  }
								}
						);
}