// LyPageScript.js
// Copyright (c) 2000-2009, Lyria-W4.
// All rights reserved.
// @version	$Id: LyPageScript.js,v 1.2 2009/01/06 11:04:03 jls Exp $

// This function closes an area (close a dialog or go back).
function CloseArea(noReload)
{
	var mainFrame = findTarget(null, "main_frame");
	var targetFrame = findTarget(null, "target_frame");

	if (getLeonardiTopFrame().opener != null)
	{
		getLeonardiTopFrame().close();

		if (noReload == null)
			ReloadParent();
	}
	else
	{
		if (targetFrame == null)//(typeof top.frames["main_frame"].frames["target_frame"]) == "undefined")
			window.history.back();
		else
			//top.frames["main_frame"].frames["target_frame"].history.go(-2);
			targetFrame.history.go(-2);
	}
}

// This function reloads the parent object.
function ReloadParent()
{
	if ((getLeonardiTopFrame().opener == null) || ((typeof getLeonardiTopFrame().opener) == "undefined"))
		return;

	var mainFrame = findTarget(null, "main_frame");
	var targetFrame = findTarget(null, "target_frame");

//	if ((typeof top.opener.top.frames["main_frame"] != "undefined") &&
//		(typeof top.opener.top.frames["main_frame"].frames["target_frame"] != "undefined"))
//		top.opener.top.frames["main_frame"].frames["target_frame"].location.reload();
//	else
//		top.opener.top.location.reload();

	if ( (mainFrame != null) && (targetFrame != null))
		targetFrame.location.reload();
	else
		top.openener.top.location.reload();
}


// Extract the base URL from current location
function GetBaseUrl(baseUrl)
{
	var currentUrl = new String(baseUrl);
	var n = currentUrl.indexOf("?", 0);

	if (n > 0)
		return currentUrl.substr(0, n);
	else
		return currentUrl;
}

// This function reloads a page
function ReloadPage(close)
{
	var mainFrame = findTarget(null,"main_frame");
	var targetFrame = findTarget(null,"target_frame");

	if (getLeonardiTopFrame().opener != null)
	{
		if (close != null)
			CloseArea();
		else
			top.location.reload();
	}
	else if ((mainFrame != null) && (targetFrame != null))
	//(typeof top.frames["main_frame"] != "undefined")
	//	&& (typeof top.frames["main_frame"].frames["target_frame"] != "undefined"))
	{
		// Do *not* Loop
		if (targetFrame != this)
		//if (top.frames["main_frame"].frames["target_frame"] != this)
		{
			//top.frames["main_frame"].frames["target_frame"].location.reload();
			targetFrame.location.reload();
		}
		else
		{
			//top.frames["main_frame"].frames["target_frame"].history.go(-1);
			//targetFrame.history.go(-1);
			var hiddenFrame = findTarget(null,"hidden_frame");
			//if (typeof top.frames["hidden_frame"] != "undefined")
			if (hiddenFrame != null)
			{
				//var baseUrl = GetBaseUrl(top.frames["hidden_frame"].location);
				var baseUrl = getBaseUrl(hiddenFrame.location);
				baseUrl = baseUrl + "?_action=_reloadPage";

				//top.frames["hidden_frame"].location = baseUrl;
				hiddenFrame.location = baseUrl;
			}
		}
	}
	else
		getLeonardiTopFrame().location.reload();
}

// This function print the current page
function PrintPage(message)
{
	if (this.print != "undefined")
	{
		setTimeout("this.print()",1000);

		// Wait until data are sent to the printer
		setTimeout("this.close()", 3000);
	}
	else
	{
		if (message == null)
			alert("Printing from Javascript is not supported by this browser.\nPrint the generated page by using the printing features of your browser.");
		else
			alert(message);
	}
}
