var m_bCurrentOuter = false;
var m_oCurrentTarget = null;
var m_oInterval = null;
var m_arrWaitingTargets = new Array();
var m_arrWaitingSources = new Array();
var m_iWaitingPointer = -1;
var m_iWaitingElements = 0;

function AddWaiting(oTarget, sSource)
{
	// Target.
	m_arrWaitingTargets[m_arrWaitingTargets.length] = oTarget;
	// Source.
	m_arrWaitingSources[m_arrWaitingSources.length] = sSource;
	// Update stack size.
	m_iWaitingElements = m_arrWaitingSources.length;
}

function onInterval()
{
	// The iframe it's free?
	if(m_oCurrentTarget == null)
	{
		// Update waiting stack pointer.
		m_iWaitingPointer++;
		// Check stack limit.
		if(m_iWaitingPointer >= m_iWaitingElements)
		{
			// Clear timer.
			window.clearInterval(m_oInterval);
			m_oInterval = null;
			// Clear stack.
			m_arrWaitingTargets.length = 0;
			m_arrWaitingSources.length = 0;
			// Reset stack pointer and counter.
			m_iWaitingPointer = -1;
			m_iWaitingElements = 0;
		}
		else
		{
			// Load source into target.
			m_oCurrentTarget = m_arrWaitingTargets[m_iWaitingPointer];
			GetURL(m_arrWaitingSources[m_iWaitingPointer]);
		}
	}
}

function onLoadEvent()
{
	if(m_oCurrentTarget != null)
	{
		// If this is Internet Explorer...
		if(navigator.appName.indexOf("Internet Explorer") != -1)
		{
			if(!m_bCurrentOuter)
				document.getElementById(m_oCurrentTarget).innerHTML = document.frames("HttpRequestFrame").document.body.innerHTML;
			else
				document.getElementById(m_oCurrentTarget).outerHTML = document.frames("HttpRequestFrame").document.body.innerHTML;
		}
		else if(navigator.appName.indexOf("Netscape") != -1)
		{
			if(!m_bCurrentOuter)
				document.getElementById(m_oCurrentTarget).innerHTML = document.getElementById("oHttpRequestFrame").contentDocument.body.innerHTML;
			else
				document.getElementById(m_oCurrentTarget).outerHTML = document.getElementById("oHttpRequestFrame").contentDocument.body.innerHTML;
		}
/*
		m_oCurrentTarget = null;
		m_bCurrentOuter = false;
*/		
	}
}

function GetURL(sURL)
{
var sParameters;
var sInnerURL;

	// Split parameters and url.
	sParameters = sURL.substring(sURL.indexOf("?") + 1);
	if(sParameters != sURL)
		sURL = sURL.substring(0, sURL.indexOf("?"));
	else
		sParameters = "";
	// Set inner URL to work with Server.Execute.		
	if(sParameters != "")
		sInnerURL = "HttpRequest.asp?Page=" + sURL + "&" + sParameters;
	else
		sInnerURL = "HttpRequest.asp?Page=" + sURL;
	// Get URL.
	document.getElementById("oHttpRequestFrame").src = sInnerURL;
}

function ApplyURL(oTarget, sURL)
{
	m_bCurrentOuter = false;
	m_oCurrentTarget = oTarget;
	GetURL(sURL);
}

function ApplyURLOuter(oTarget, sURL)
{
	m_bCurrentOuter = true;
	m_oCurrentTarget = oTarget;
	GetURL(sURL);
}


//*******************************************
// File functions.

// Load result data into current target.
function LocalHttpRequestLoaded(sResult)
{
/*	if(m_oCurrentTarget != null)
	{
		document.getElementById(m_oCurrentTarget).innerHTML = sResult;
		m_oCurrentTarget = null;
	}*/
	if(m_oCurrentTarget != null)
	{
		// If this is Internet Explorer...
		if(navigator.appName.indexOf("Internet Explorer") != -1)
		{
			if(!m_bCurrentOuter)
				document.getElementById(m_oCurrentTarget).innerHTML = sResult;
			else
				document.getElementById(m_oCurrentTarget).outerHTML = sResult;
		}
		else if(navigator.appName.indexOf("Netscape") != -1)
		{
			if(!m_bCurrentOuter)
				document.getElementById(m_oCurrentTarget).innerHTML = sResult;
			else
				document.getElementById(m_oCurrentTarget).outerHTML = sResult;
		}
		m_oCurrentTarget = null;
		m_bCurrentOuter = false;
	}


}

// Load a file from filesystem.
function LocalHttpRequestGetFile(sFile)
{
var sParameters;
var sInnerURL;

	// Set inner URL to work with Server.Execute.
	sInnerURL = "/Library/HTTPRequest/HttpRequest.htm?Page=" + sFile;
	// Get file.
	document.getElementById("oHttpRequestFrame").src = sInnerURL;
}

// Load "sFile" and apply the result to "oTarget" object.
function LocalHttpRequestApplyFile(oTarget, sFile)
{
	m_oCurrentTarget = oTarget;
	LocalHttpRequestGetFile(sFile);
}

// File functions.
//*******************************************

// ******************************************
// Form functions

// Submits the given form returning the result apparently without doing a reload.
function LocalHTTPRequestSubmit(sHomeURL, sTargetId, sFormId, sURL)
{
var sParameters;
var sInnerURL;
var oForm, oHttpRequestFrame, oHiddenForm;
var oDocument;

	m_bCurrentOuter = false;
	m_sCurrentTarget = sTargetId;
	// Split parameters and url.
	sParameters = sURL.substring(sURL.indexOf("?") + 1);
	// Are there parameters?
	if(sParameters != sURL)
		sURL = sURL.substring(0, sURL.indexOf("?"));
	else
		sParameters = "";
	// Set inner URL to work with Server.Execute. Are there parameters?
	if(sParameters != "")
		sInnerURL = "HttpRequest.htm?Page=" + sURL + "&" + sParameters;
	else
		sInnerURL = "HttpRequest.htm?Page=" + sURL;
	// Is this is Internet Explorer?
	if(navigator.appName.indexOf("Internet Explorer") != -1)
	{
		oHttpRequestFrame = document.frames("HttpRequestFrame");
		oDocument = oHttpRequestFrame.document;
	}
	// Is this is Netscape?
	else if(navigator.appName.indexOf("Netscape") != -1)
	{
		oHttpRequestFrame = document.getElementById("oHttpRequestFrame");
		oDocument = oHttpRequestFrame.contentDocument;
	}
	// Set the action URL and submit the form.
	oForm = document.getElementById(sFormId);
	oDocument.body.innerHTML = oForm.outerHTML;
	oHiddenForm = oDocument.getElementById(sFormId);
//	oHiddenForm.action = sHomeURL + "Library/HTTPRequest/" + sInnerURL;
	oHiddenForm.action = sInnerURL;
	oHiddenForm.submit();
}
// Form functions.
//*******************************************

