var Event_Valid = false;
var Event_Dir;
var Event_Js;
var Event_MapActualItemNumber;
var Event_MapActualItems;
var Event_UseAllMapItems = false;
var Event_CompleteMapItemsToRect = false;
var Event_MapTitle = Event_MapTitleDefault;
var Event_LayerNumber;

var Map_Valid = false;
var Map_Dir;
var Map_Js;

var MinX, MinY, MaxX, MaxY;

function ViewOnLoadingOptions()
{
	MapDB_Dir = ViewMapQualities[ViewMapQualityDefault];
	Event_UseAllMapItems = ViewMapUsageDefault == 3;
	Event_CompleteMapItemsToRect = ViewMapUsageDefault == 2;
}

function OnCheckChange(index)
{
	if (index == 0)
		for(i = 1; i < Event_MapActualItemNumber; i++)
			document.getElementById("mapfrag" + i).style.visibility = document.getElementById("mapbox").checked? "visible" : "hidden";
		else
		{
			if (SimStarted && Event_SimulationRunnables[index])
				document.getElementById("runner" + index).style.visibility = document.getElementById("layerbox" + index).checked? "visible" : "hidden";
			else
				document.getElementById("layer" + index).style.visibility = document.getElementById("layerbox" + index).checked? "visible" : "hidden";
			if (SimShowSplits)
				SimUpdateSplitsTable();
		}
}

function AreRectsIntersect(r1_left, r1_top, r1_right, r1_bottom, r2_left, r2_top, r2_right, r2_bottom)
{
	var n_left = Math.max(r1_left, r2_left);
	var n_top = Math.max(r1_top, r2_top);
	var n_right = Math.min(r1_right, r2_right);
	var n_bottom = Math.min(r1_bottom, r2_bottom);
	return (n_left < n_right) && (n_top < n_bottom);
}

function FindMapActualBounds()
{
	if (Event_UseAllMapItems)
	{
		MinX = 0;
		MinY = 0;
		MaxX = Map_Width;
		MaxY = Map_Height;
	}
	else
	{
		MinX = 65535;
		MinY = 65535;
		MaxX = -65536;
		MaxY = -65536;
		for(i = 1; i < Event_MapItems.length; i++)
		{
			j = Event_MapItems[i];
			if (Map_ItemXs[j] < MinX) MinX = Map_ItemXs[j];
			if (Map_ItemXs[j] + Map_ItemWidths[j] > MaxX) MaxX = Map_ItemXs[j] + Map_ItemWidths[j];
			if (Map_ItemYs[j] < MinY) MinY = Map_ItemYs[j];
			if (Map_ItemYs[j] + Map_ItemHeights[j] > MaxY) MaxY = Map_ItemYs[j] + Map_ItemHeights[j];
		}
	}
}

function FindMapActualItems()
{
	if (Event_UseAllMapItems)
	{
		Event_MapActualItems = new Array(Map_ItemSrcs.length);
		Event_MapActualItemNumber = Map_ItemSrcs.length;
		for(i = 1; i < Map_ItemSrcs.length; i++)
			Event_MapActualItems[i] = i;
	}
	else
	{
		if (!Event_CompleteMapItemsToRect)
		{
			Event_MapActualItems = new Array(Event_MapItems.length);
			Event_MapActualItemNumber = Event_MapItems.length;
			for(i = 1; (i < Event_MapItems.length); i++)
				Event_MapActualItems[i] = Event_MapItems[i];
		}
		else
		{
			Event_MapActualItems = new Array(Map_ItemSrcs.length);
			Event_MapActualItemNumber = 1;
			for(i = 1; (i < Map_ItemSrcs.length); i++)
			{
				var i_left = Map_ItemXs[i];
				var i_top = Map_ItemYs[i];
				var i_right = i_left + Map_ItemWidths[i];
				var i_bottom = i_top + Map_ItemHeights[i];
				if (AreRectsIntersect(MinX, MinY, MaxX, MaxY, i_left, i_top, i_right, i_bottom))
					Event_MapActualItems[Event_MapActualItemNumber++] = i;
			}
		}
	}
}
