     // ---------------------------------------------
     //         Main page
     // ---------------------------------------------
     
var GlobalMainPageXML;
var DefaultPageWidth = 870;
var PageWidth = DefaultPageWidth;
var Spacing	= new Object();
	Spacing.w = 8;
	Spacing.h = 8;

var x_PageTitle = document.title;
     
function InitMainPage()
{	
	LoadXMLDocument("./work/index.xml", RegisterMainPage, true);
}

var MainPageItemList;

var MainPageAppliedFilter = 0;
var MainPageAppliedFilterApproved = false;
var MainPageHeight = 0;
var ItemShowName = 0;
var ItemShowIcon = -1;
var _MagicPreventClose;
var PopupPageItemList;
var OldScrollTop;
var OldMargins;

var BaseTitle = "JeroenStout.net - Work";
var BaseEditTitle = "";

MainPageAppliedFilter	= GetPageVar("Filter");
ItemFullName			= GetPageVar("Full");
ItemShowName			= GetPageVar("Show");
ItemShowNameSub			= GetPageVar("ShowSub");

LastDocumentWidth       = document.width;
        
/*

		RegisterMenuItemsFromList
		
	function:
		IN goes a list and a pointer to a list that will go OUT
		the IN list is an array of XML nodes that describe
		items in a thumbnail list
	
*/

function RegisterMenuItemsFromList(inItemList, outItemList)
{
	var ItemCount = inItemList.length;
	
	outItemList.Items	= new Array();
	outItemList.Groups	= new Array();
	outItemList.Filters	= new Array();
		
		// Build a comprehensive list from the XML list of inItemList
		
	for (var I = 0; I < ItemCount; I++)
	{			
			// Read from the item list
	
		var CurrentItem = inItemList[I];
		
		var NewItem = new Object();
		NewItem.Name			= CurrentItem.getElementsByTagName("title")[0].childNodes[0].nodeValue;
		NewItem.ThumbSize		= CurrentItem.getElementsByTagName("size")[0].childNodes[0].nodeValue;
		NewItem.ThumbURL		= CurrentItem.getElementsByTagName("thumb")[0].childNodes[0].nodeValue;
		NewItem.Date			= CurrentItem.getElementsByTagName("date");
		NewItem.Icons			= CurrentItem.getElementsByTagName("icons");
		NewItem.RenderSettings	= CurrentItem.getElementsByTagName("render")[0];
		NewItem.RenderFull		= NewItem.RenderSettings && (NewItem.RenderSettings.getAttribute("type") == "full");
		NewItem.Hidden			= CurrentItem.getElementsByTagName("hidden");
		NewItem.Align			= "center center";
		NewItem.Group			= NewItem.Name;
		NewItem.Filters			= new Array();
		NewItem.Description    	= "";
				
			// Should we hide the item?
				
		NewItem.Hidden = (NewItem.Hidden.length > 0)? NewItem.Hidden[0].childNodes[0].nodeValue : "normal";
		
			// Group (if we want to override the name-based group)
		
		if (CurrentItem.getElementsByTagName("group").length != 0)
			NewItem.Group = CurrentItem.getElementsByTagName("group")[0].childNodes[0].nodeValue;
		
			// Append to a group or create a new one
		
		NewItem.Group = NewItem.Group.split(' ').join('');
		
		var Found = false;
		for (var J = 0; J < outItemList.Groups.length; J++)
		{
			if (outItemList.Groups[J].Name == NewItem.Group)
			{
				outItemList.Groups[J].Members.push(NewItem);
				NewItem.GroupPtr = outItemList.Groups[J];
				NewItem.GroupID = J;
				if (NewItem.Description == 0)
					NewItem.Description = outItemList.Groups[J].ItemPtr.Description;
				NewItem.Icons = 0;
				NewItem.RenderFull = NewItem.GroupPtr.ItemPtr.RenderFull;
				Found = true;
				break;
			}
		}
		if (!Found)
		{
			NewGroup = new Object();
			NewGroup.ItemPtr	= NewItem;
			NewGroup.Name		= NewItem.Group.split(' ').join('');
			NewGroup.Members	= new Array();
			NewGroup.Members.push(NewItem);
			NewItem.GroupPtr = NewGroup;
			NewItem.GroupID = outItemList.Groups.length;
			outItemList.Groups.push(NewGroup);
		}
		
			// Categories
		
		var addCategories = CurrentItem.getElementsByTagName("categories");
		if (NewItem.Hidden != "always" && addCategories.length > 0)
		{
			addCategories = addCategories[0].getElementsByTagName("category");
			
			for (var J = 0; J < addCategories.length; J++)
			{
				var NewName = addCategories[J].getAttribute("name");
				var NewSize = -1;
				var NewSubCat = "No category";
				var newFilter;
				
				if (addCategories[J].getAttribute("size") != undefined)
				{
					NewSize = addCategories[J].getAttribute("size");
					if (NewSize .indexOf(",") == -1)
						NewSize  += "," + NewSize;
				
					var evThumbSize = new Object();
					NewSize = NewSize.split(",");
					evThumbSize.x = NewSize[0];
					evThumbSize.y = NewSize[1];
					NewSize = evThumbSize;
				}
				if (addCategories[J].getAttribute("cat") != undefined)
				{
					NewSubCat = addCategories[J].getAttribute("cat");
				}
				
				var newFilter = new Object();
				newFilter.Name = NewName;
				newFilter.Size = NewSize;
				newFilter.Cat  = NewSubCat;
					
				for (var K = 0; K < outItemList.Filters.length; K++)
				{
					if (outItemList.Filters[K].Name == NewName)
					{
						NewName = 0;
						break;
					}
				}
					
				if (NewName != 0)
				{				
					var InsertPos = outItemList.Filters.length;

					for (var K = 0; K < outItemList.Filters.length; K++)
					{
						if (newFilter.Cat < outItemList.Filters[K].Cat)
							continue;
						if (newFilter.Cat == outItemList.Filters[K].Cat && newFilter.Name > outItemList.Filters[K].Name)
							continue;

						InsertPos = K;
						break;
					}
			
					InsertIntoArray(outItemList.Filters, InsertPos, newFilter);
				}
				
				NewItem.Filters.push(newFilter);
			}
		}
	
			// Date (for ordering, in format YYYYMMDD, can have any count of numbers, is filled up with appending 0's)
			
		if (NewItem.Date.length > 0)
			NewItem.Date = Number(NewItem.Date[0].childNodes[0].nodeValue);
		else
			NewItem.Date = 0;

		if (NewItem.Date > 0)
		{
			while (NewItem.Date < 9999999)
				NewItem.Date *= 10;
		}
		else
		{
			NewItem.Date = 0;
		}
			
			// Description
			
		if (HasXMLChild(CurrentItem, "description") != 0)
			NewItem.Description = FindXMLChildren(CurrentItem, "description")[0].childNodes[0].nodeValue;
		
			// Thumbnail size (two values in text, separted by comma)
		
		if (NewItem.ThumbSize.indexOf(",") == -1)
			NewItem.ThumbSize += "," + NewItem.ThumbSize;
			
		var evThumbSize = new Object();
		NewItem.ThumbSize = NewItem.ThumbSize.split(",");
		evThumbSize.x = NewItem.ThumbSize[0];
		evThumbSize.y = NewItem.ThumbSize[1];
		NewItem.ThumbSize = evThumbSize;
		
			// Overlay text (pased over the thumbnail, not pretty, but ok)
		
		if (HasXMLChild(CurrentItem, "text"))
			NewItem.Text = FindXMLChildren(CurrentItem, "text")[0].childNodes[0].nodeValue;
		else
			NewItem.Text = "";
			
		NewItem.Text = NewItem.Text.replace(/\]/g, ">");
		NewItem.Text = NewItem.Text.replace(/\[/g, "<");
		
			// Thumbnail alignment

		if (CurrentItem.getElementsByTagName("thumb")[0].getAttribute("align") != undefined)
			NewItem.Align = CurrentItem.getElementsByTagName("thumb")[0].getAttribute("align");
		
			// Give the item icons
				
		if (NewItem.Icons && NewItem.Icons.length != 0)
		{							
			var newIcons = new Array();
			
			NewItem.Icons = NewItem.Icons[0].getElementsByTagName("icon");
			
			for (var J = 0; J < NewItem.Icons.length; J++)
			{			
				var newIcon = new Object();
				newIcon.Type		= NewItem.Icons[J].getAttribute("type");
				newIcon.Render		= NewItem.Icons[J].getElementsByTagName("render");
				newIcon.Description	= FindXMLChildren(NewItem.Icons[J], "description");
				if (newIcon.Render.length != 0)
					newIcon.Render = newIcon.Render[0];
				else
					newIcon.Render = 0;
				if (newIcon.Description.length != 0)
					newIcon.Description = newIcon.Description[0].childNodes[0].nodeValue;
				else
					newIcon.Description = 0;
				newIcons.push(newIcon);
			}
			
			NewItem.Icons = newIcons;
		}
		
			// Insert item at the right place

		var InsertPos = outItemList.Items.length;

		for (var J = 0; J < outItemList.Items.length; J++)
		{
			if (NewItem.Date <= outItemList.Items[J].Date)
				continue;

			InsertPos = J;
			break;
		}
		
		InsertIntoArray(outItemList.Items, InsertPos, NewItem);
	}
	
		// Finally, as a curtesy, sort the filters

	//outItemList.Filters.sort();
}

function RenderMenuItemsFromList(inItemList, inSettings, outRenderText)
{	
	CurrentRow      = 0;
	LatestDate	    = 0;
	
	var ImageSize = inSettings.ImageSize;
	
	RowItemSize		= Math.floor((inSettings.Width + Spacing.w) / (ImageSize.w + Spacing.w));
	
	outRenderText.Filters	= "";
	outRenderText.Items		= "";
	
		// Render filters
		
	var CurrentCatFilter = -1;
		
	if (!inSettings.AppliedFilter)
		outRenderText.Filters	+= "<span class='Filter Applied' onClick='" + inSettings.FuncFilterSwitch + "(-1)'>All</span> ";
	else
		outRenderText.Filters	+= "<span class='Filter' onClick='" + inSettings.FuncFilterSwitch + "(-1)'>All</span> ";
	for (var I = 0; I < inItemList.Filters.length; I++)
	{
		if (CurrentCatFilter != inItemList.Filters[I].Cat && inItemList.Filters[I].Cat != -1)
		{
			CurrentCatFilter = inItemList.Filters[I].Cat;
			outRenderText.Filters	+= "<br/>";
			outRenderText.Filters	+= "<span class='Filter Category'>By " + CurrentCatFilter + "</span>";
		}
		
		if (inItemList.Filters[I].Name == inSettings.AppliedFilter)
			outRenderText.Filters += "<span class='Filter Applied' onClick='" + inSettings.FuncFilterSwitch + "(" + I + ")'>" + inItemList.Filters[I].Name + "</span> ";
		else
			outRenderText.Filters += "<span class='Filter' onClick='" + inSettings.FuncFilterSwitch + "(" + I + ")'>" + inItemList.Filters[I].Name + "</span> ";
	}
	
		// Render items
		
	MaxHeight = 0;
		
	var ImagePosition = new Object();
	ImagePosition.x = 0;
	ImagePosition.y = 0;
	var ImageDescriptionPosition = new Object();
	
	RowList		= new Array();
	for (var I = 0; I < inItemList.Items.length * 4; I++)
	{
		RowList[I] = new Array();
		for (var J = 0; J < RowItemSize; J++)
		{
			RowList[I][J] = true;
		}
	}
	
	for (var I = 0; I < inItemList.Items.length; I++)
	{		
		var Skip = (inSettings.AppliedFilter !== 0);
		var PermaSkip = false;

		if (inItemList.Items[I].Hidden != "normal")
		{
			if (inItemList.Items[I].Hidden == "filteronly")
			{
				PermaSkip = !Skip;
			}
			else
			{
				Skip = PermaSkip = inItemList.Items[I].Hidden == "always";
			}
		}
	
		OverridenSize = -1;
		
		if (!PermaSkip && Skip)
		{
			for (var J = 0; J < inItemList.Items[I].Filters.length; J++)
			{
				if (inItemList.Items[I].Filters[J].Name == inSettings.AppliedFilter)
				{
					Skip = false;
					OverridenSize = inItemList.Items[I].Filters[J].Size;
					break;
				}
			}
		}
		if (PermaSkip || Skip)
			continue;

			// Fill in the holes
				
		ImagePosition._x = 0;
		ImagePosition._y = 0;
		
		var ImageThumbSize = inItemList.Items[I].ThumbSize;
		if (OverridenSize != -1)
			ImageThumbSize = OverridenSize;

		while (true)
		{

			if (ImagePosition._x >= RowItemSize)
			{			
				ImagePosition._x  = 0;
				ImagePosition._y += 1;

				if (RowList[ImagePosition._y] == undefined)
				{
					RowList[ImagePosition._y] = new Array();
					for (var J = 0; J < RowItemSize; J++)
					{
						RowList[ImagePosition._y][J] = true;
					}
				}
			}
			
			var foundGoodSpot = true;
			
			for (var chX = 0; foundGoodSpot && chX < ImageThumbSize.x; chX++)
			{
				for (var chY = 0; foundGoodSpot && chY < ImageThumbSize.y; chY++)
				{
					if (ImagePosition._x + chX > RowItemSize)
					{
						foundGoodSpot = false;
						continue;
					}
					if (!RowList[ImagePosition._y + chY][ImagePosition._x + chX])
					{
						foundGoodSpot = false;
						continue;
					}
				}
			}
			
			if (!foundGoodSpot)
			{
				ImagePosition._x += 1;
				continue;
			}
			
			break;
		}
		
		for (var chX = 0; chX < ImageThumbSize.x; chX++)
		{
			for (var chY = 0; chY < ImageThumbSize.y; chY++)
			{
				RowList[ImagePosition._y + chY][ImagePosition._x + chX] = false;
			}
		}

			// Determine actual position

		ImagePosition.x = (Spacing.w * (ImagePosition._x-1) + ImageSize.w * ImagePosition._x);
		ImagePosition.y = (Spacing.h * (ImagePosition._y-1) + ImageSize.h * ImagePosition._y);

		thisImageSize = new Object();
		thisImageSize.x = Spacing.w * (ImageThumbSize.x-1) + ImageSize.w * ImageThumbSize.x;
		thisImageSize.y = Spacing.h * (ImageThumbSize.y-1) + ImageSize.h * ImageThumbSize.y;

		ImageDescriptionPosition.w  = 150 + (ImageThumbSize.x * 75)
		ImageDescriptionPosition.x  = ImagePosition.x - (ImageDescriptionPosition.w/2);
		ImageDescriptionPosition.x += thisImageSize.x / 2;
		ImageDescriptionPosition.y  = ImagePosition.y + thisImageSize.y + 2;
		
		MaxHeight = Math.max(MaxHeight, ImagePosition.y + thisImageSize.y);
		
		inItemList.Items[I].DivID = I;
		
		outRenderText.Items += '<div ID="Item' + I + '" class="Thumbnail" ' +
									' style="width:' + thisImageSize.x + 'px;height:' + thisImageSize.y + 'px;' +
									'left:' + ImagePosition.x + 'px;top:' + ImagePosition.y + 'px;"' +
									' onMouseOver="'+inSettings.FuncItemHover+'(' + inItemList.Items[I].DivID + ', ' + inItemList.Items[I].GroupID + ', -1, true);"' + 
									'  onMouseOut="'+inSettings.FuncItemHover+'(' + inItemList.Items[I].DivID + ', ' + inItemList.Items[I].GroupID + ', -1, false);"' + 
									'     onClick="'+inSettings.FuncItemClick+'(' + inItemList.Items[I].DivID + ', ' + inItemList.Items[I].GroupID + ', -1);"' + 
									'>' +
								'<div class="Throbber"></div>' +
								'<div class="Image" style="' +
									'background-image:url(\':image:' + inItemList.Items[I].ThumbURL +
									':minsize.' + thisImageSize.x + '.' + thisImageSize.y + '\');background-position:' +
									inItemList.Items[I].Align + '"></div>' +
								'<div class="ImageBlurred" style="' +
									'background-image:url(\':image:' + inItemList.Items[I].ThumbURL +
									':minsize.' + thisImageSize.x + '.' + thisImageSize.y + ':blur\');background-position:' +
									inItemList.Items[I].Align + '"></div>';
		if (inItemList.Items[I].Text)
		{
			outRenderText.Items +=	'<div class="TextOverlay Shadow">' + inItemList.Items[I].Text + '</div>';
			outRenderText.Items +=	'<div class="TextOverlay">' + inItemList.Items[I].Text + '</div>';
		}
		if (inItemList.Items[I].RenderFull)
		{
			outRenderText.Items +=	'<div class="RenderFullLT"></div>'
			outRenderText.Items +=	'<div class="RenderFullRT"></div>'
			outRenderText.Items +=	'<div class="RenderFullLB"></div>'
			outRenderText.Items +=	'<div class="RenderFullRB"></div>'
		}
		
		
		var Right = 5;
		if (inItemList.Items[I].Icons)
		{
			for (var J = 0; J < inItemList.Items[I].Icons.length; J++)
			{
				outRenderText.Items +=	'<div class="Icon ' + inItemList.Items[I].Icons[J].Type + '" style="' +
										'right: ' +  Right + 'px"'+
										' onMouseOver="DoNotPropagate(event); '+inSettings.FuncItemHover+'(' + inItemList.Items[I].DivID + ', ' + inItemList.Items[I].GroupID + ', ' + J + ', true);"' + 
										'  onMouseOut="DoNotPropagate(event); '+inSettings.FuncItemHover+'(' + inItemList.Items[I].DivID + ', ' + inItemList.Items[I].GroupID + ', ' + J + ', false);"' + 
										'     onClick="DoNotPropagate(event); '+inSettings.FuncItemClick+'(' + inItemList.Items[I].DivID + ', ' + inItemList.Items[I].GroupID + ', ' + J + ');"' + 
										'></div>';
				Right += 25;
			}
		}
		
		outRenderText.Items +=		'<div class="Coating"></div>' +
									'</div>';
						
		outRenderText.Items += '<div ID="ItemDescription' + I + '" class="ThumbnailDescription" ' +
								' style="' +
									'left:' + ImageDescriptionPosition.x + 'px;top:' + ImageDescriptionPosition.y + 'px;' +
									'width:' + ImageDescriptionPosition.w + 'px;' +
								'">' +
								'<div class="Header">' + inItemList.Items[I].Name  + '</div>' +
								'<div class="Description">' + inItemList.Items[I].Description  + '</div>' +
								'</div>';
							
		if (inItemList.Items[I].Icons)
		{
			for (var J = 0; J < inItemList.Items[I].Icons.length; J++)
			{	
				outRenderText.Items += '<div ID="ItemDescription' + I + '_' + J + '" class="ThumbnailDescription" ' +
										' style="' +
											'left:' + ImageDescriptionPosition.x + 'px;top:' + ImageDescriptionPosition.y + 'px;' +
											'width:' + ImageDescriptionPosition.w + 'px;' +
										'">' +
										'<div class="Header">' + inItemList.Items[I].Name  + '</div>' +
										'<div class="Description">' + inItemList.Items[I].Icons[J].Description + '</div>' +
										'</div>';
			}
		}
	}
	
	outRenderText.MaxHeight = MaxHeight;
}

function RenderMainPage()
{
	var Settings	= new Object();
	var OutputText	= new Object();
	
	var RenderBox   = document.getElementById('EverythingGoHere');
	PageWidth       = RenderBox.clientWidth - 50;
	
	Settings.AppliedFilter		= MainPageAppliedFilter;
	Settings.FuncFilterSwitch	= "MPSwitchFilter";
	Settings.FuncItemHover		= "MainPageHover";
	Settings.FuncItemClick		= "MainPageClick";
	Settings.RowList			= 0;
	Settings.Width				= PageWidth;
	Settings.ImageSize			= new Object();

//	if (MainPageAppliedFilter == 0)
//	{
//		Settings.ImageSize.w		= 105;
//		Settings.ImageSize.h		= 105;
//	}
//	else
	{
		Settings.ImageSize.w		= Math.min((Math.floor(PageWidth / 15 / 25) * 25) + 25, 250);
		Settings.ImageSize.h		= Math.floor(Settings.ImageSize.w * 0.8);
	}

	Settings.Jumpline			= -1;
	RenderMenuItemsFromList(MainPageItemList, Settings, OutputText);
	
	NewInnerHTML = "";
	NewInnerHTML += '<div class="SubHeader">Filters</div>';
	NewInnerHTML += '<div class="DefaultText" id="FiltersGoHere">';
	NewInnerHTML += OutputText.Filters;
	NewInnerHTML += '</div><div class="SubHeader">Work ';
	if (MainPageAppliedFilter !== 0)
		NewInnerHTML += '(' + MainPageAppliedFilter + ')';
	NewInnerHTML += '</div><div class="DefaultText" id="ListGoesHere">';
	NewInnerHTML += OutputText.Items;
	MainPageHeight = OutputText.MaxHeight;//Math.max(MainPageHeight, OutputText.MaxHeight);
	NewInnerHTML += '<div style="height:' + MainPageHeight + 'px;"></div>';

	RenderBox.innerHTML = NewInnerHTML;
		
	ThisElement = document.getElementById("PageTitle");
	ThisElement.innerHTML = "Work";
}

function RegisterMainPage(Document)
{	
	GlobalMainPageXML = Document;
	
		// Read the items
	
	var ItemList			= FindXMLChildren(GlobalMainPageXML, "item");
	MainPageItemList		= new Object();
	
	RegisterMenuItemsFromList(ItemList, MainPageItemList);

	RenderMainPage();

	if (ItemFullName !== 0)
		RenderFullPage();
	else if (ItemShowName !== 0)
	{
		RenderShowPage(MainPageItemList);
	}

	window.setTimeout(KeepPageUpdated, 100);
}

function MainPageHover(ID, GroupID, IconID, nowHover)
{		
//	if (IconID == -1)
//	{
		Group = MainPageItemList.Groups[GroupID];
		for (var I = 0; I < Group.Members.length; I++)
		{
			ThisElement = document.getElementById("Item" + Group.Members[I].DivID);
			if (ThisElement == undefined)
				continue;
			if (nowHover)
				ThisElement.className = "Thumbnail GroupHover";
			else
				ThisElement.className = "Thumbnail";
		}
		
		if (nowHover)
			document.getElementById('ListGoesHere').className = "DefaultText GroupHover";
		else
			document.getElementById('ListGoesHere').className = "DefaultText";
			
		ItemID = ID;
		
		document.getElementById("ItemDescription" + ItemID).className = "ThumbnailDescription";
		
		if (IconID != -1)
			ItemID = ID + "_" + IconID;
			
		if (nowHover)
			document.getElementById("ItemDescription" + ItemID).className = "ThumbnailDescription Hovered";
		else
			document.getElementById("ItemDescription" + ItemID).className = "ThumbnailDescription";
		
//	if (IconID != -1)
//	{
//		document.getElementById("ItemDescription" + ID).className = "ThumbnailDescription";
//		return;
//		alert("?! " + nowHover);
//	}
}

function MainPageClick(ItemID, GroupID, IconID)
{
	var RenderFull = MainPageItemList.Groups[GroupID].ItemPtr.RenderFull;
		
	ItemShowIcon = IconID;

	var newSub = undefined;

	if (IconID == -1)
	{
		newSub = MainPageItemList.Items[ItemID].RenderSettings;
	}
	else
	{
		newSub = MainPageItemList.Items[ItemID].Icons[ItemShowIcon].Render;
	}
	
	if (newSub != undefined)
		newSub = newSub.getAttribute("sub");
		
	if (RenderFull && IconID == -1)
	{
		ItemFullName = MainPageItemList.Groups[GroupID].Name;
		SetPageVar("Full", ItemFullName, true);
		RenderFullPage();
	}
	else
	{		
		ItemShowName = MainPageItemList.Groups[GroupID].Name;
		if (IconID == -1)
			SetPageVar("Show", ItemShowName, true);
		if (newSub != undefined && newSub != null)
			SetPageVar("ShowSub", newSub, true);
		RenderShowPage(MainPageItemList);
	}
}

function MPSwitchFilter(ID)
{
	if (ID == -1)
		MainPageAppliedFilter = 0;
	else
		MainPageAppliedFilter = MainPageItemList.Filters[ID].Name;

	if (MainPageAppliedFilter == 0)
		RemovePageVar("Filter", true);
	else
		SetPageVar("Filter", MainPageAppliedFilter, true);

	RenderMainPage();
}

function RenderShowPage(usedItemList)
{
	var curGroup = 0;
	for (var I = 0; I < usedItemList.Groups.length; I++)
	{
		if (usedItemList.Groups[I].Name == ItemShowName)
		{
			curGroup = usedItemList.Groups[I];
		}
	}
	
	if (curGroup == undefined)
		curGroup = 0;

	curRenderSettings = 0;
	
	if (curGroup != 0)
	{
		if (ItemShowIcon == -1)
		{
			if (undefined != curGroup.ItemPtr.RenderSettings)
			{
				curRenderSettings = curGroup.ItemPtr.RenderSettings;
			}
		}
		else
		{
			if (undefined != curGroup.ItemPtr.Icons[ItemShowIcon].Render)
			{
				curRenderSettings = curGroup.ItemPtr.Icons[ItemShowIcon].Render;
			}
		}
	}
	
	if (curRenderSettings.getAttribute("type") == "refer")
	{
		ItemShowName = curRenderSettings.getAttribute("name");
		ItemShowIcon = -1;
		SetPageVar("Show", ItemShowName, true);
		RenderShowPage(usedItemList);
		return;
	}
	
//	else // if (curRenderSettings.getAttribute("type") == 0)
//	{
		RenderPopupPage(curGroup, curRenderSettings);
//	}

	if (BaseEditTitle != "")
		document.title = BaseEditTitle + ": " + curGroup.ItemPtr.Name + " - " + BaseTitle;
	else
		document.title = curGroup.ItemPtr.Name + " - " + BaseTitle;
}

function RenderPopupPage(curGroup, curRenderSettings)
{
	var RenderImageSizeX = document.documentElement.clientWidth;
	var RenderImageSizeY = document.documentElement.clientHeight;
		
	RenderImageSizeX = Math.max(600, Math.floor((RenderImageSizeX - 100) / 50) * 50);
	RenderImageSizeY = Math.max(600, Math.floor((RenderImageSizeY - 200) / 50) * 50);

	ThisElement = document.getElementById("FullscreenOverlay");
	ThisElement.className = "Viewed";
	ThisElement.innerHTML = '<div class="Throbber"></div>';

	if (curGroup == 0)
	{
		ThisElement.innerHTML = "<div class='Title'>" + ItemShowName + " was not found!</div>" +
									"<div class='Small'>(click to close)</div>";
		return;
	}

	newContent = "";

	var curRenderType = "undefined render settings";
	if (curRenderSettings != undefined)
	{
		curRenderType = curRenderSettings.getAttribute("type");
	}
	if (curRenderType == undefined)
		curRenderType = "undefined type";

	switch (curRenderType)
	{
		case "download":
		{
			DlUrl	= curRenderSettings.getAttribute("name");
			window.open("./work/" + DlUrl, "Download", '')
			ClosePopupPage();
			
			break;
		}
		case "link":
		{
			LinkUrl	= curRenderSettings.getElementsByTagName("path")[0].childNodes[0].nodeValue;
			window.open(LinkUrl, "Link", '')
			ClosePopupPage();
			
			break;
		}
		case "written":
		{
			ListPath	= curRenderSettings.getElementsByTagName("path")[0].childNodes[0].nodeValue;
			ListXML		= LoadXMLDocument("work/" + ListPath + ".xml", null, false);
			
			if (!ListXML)
			{
				newContent += "<div class='Title'>" + curGroup.ItemPtr.Name + " is not valid!<br/>No document found.</div>";
				newContent += "<div class='Small'>(click to close)</div>";
				
				ThisElement = document.getElementById("FullscreenOverlay");
				ThisElement.innerHTML = newContent;
				
				return;
			}
			
			WrittenName		= ListXML.getElementsByTagName("name")[0].childNodes[0].nodeValue;
			WrittenImage	= ListXML.getElementsByTagName("image")[0].childNodes[0].nodeValue;
			WrittenDesc		= ListXML.getElementsByTagName("description")[0].childNodes[0].nodeValue;
			WrittenFiles		= ListXML.getElementsByTagName("file");
			
			WrittenDesc = WrittenDesc.replace(/\]/g, ">");
			WrittenDesc = WrittenDesc.replace(/\[/g, "<");
			
			newContent += "<div class='Title'>" + WrittenName + "</div>";
			
			newContent += "<div class='Written Description' onMouseDown='DoNotPropagate(event)' >";
							
			newContent += "<div class='InlineImage'><img src=':image:" + WrittenImage + ":maxsize.400.750' /><br/>";
			newContent += '<a href=":image:' + WrittenImage + ':show" target="_new" onMouseDown="DoNotPropagate(event)">View cover full size in new window <img src="./page/newwindow.png" /></a>';
			newContent += "</div><div class='Text'>";
			
			newContent += WrittenDesc + "</div>";

			for (F = 0; F < WrittenFiles.length; F++)
			{
				FileIcon = WrittenFiles[F].getAttribute("icon");
				FileName = WrittenFiles[F].getAttribute("name");
				FilePath = WrittenFiles[F].getAttribute("path");
				newContent += '<a class="writtenLink ' + FileIcon + '"';
				newContent += ' href="work/' + FilePath + '" target="_new">' + FileName + '</a>';
			}

			newContent 

			newContent += "</div><br/>";
			
			ThisElement = document.getElementById("FullscreenOverlay");
			ThisElement.innerHTML = newContent;
			
			break;
		}
		case "image":
		{
			ImageUrl		= curRenderSettings.getElementsByTagName("path")[0].childNodes[0].nodeValue;
			ImageDescription	= curRenderSettings.getElementsByTagName("description");

			if (ImageDescription.length != 0)
			{
				ImageDescription = ImageDescription[0].childNodes[0].nodeValue;
				ImageDescription = ImageDescription.replace(/\]/g, ">");
				ImageDescription = ImageDescription.replace(/\[/g, "<");
			}
			else
			{
				ImageDescription  = 0;
			}

			ImageDate		= curRenderSettings.getElementsByTagName("date");
			if (ImageDate.length != 0)
				ImageDate = ImageDate[0].childNodes[0].nodeValue;
			else
				ImageDate = 0;
		
			newContent += "<div class='Title'>" + curGroup.ItemPtr.Name + "</div>";
		//	newContent += "<div class='Small'>(click to close)</div>";
			if (ImageDescription != 0)
			{
				newContent += "<div class='Description' " +
							" onMouseDown='DoNotPropagate(event)' " +
							">" + ImageDescription;
				if (ImageDate != 0)
					newContent += " <i>(" + ImageDate + ")</i></div>";
				else
					newContent += "</div>";
			}
			else if (ImageDate != 0)
			{
				newContent += "<div class='Date'>(" + ImageDate + ")</div>";
			}
			newContent += "<div class='Thumb'>";
			newContent += "<div class='Throbber'></div>";
			newContent += '<image id="OverlayImage" src=":image:' + ImageUrl + ':maxsize.' +
					RenderImageSizeX + '.' + RenderImageSizeY + '" onClick="ClosePopupPage()" onMouseDown="DoNotPropagate(event)" />';
			newContent += "</div>";
			newContent += '<div class="Links"><a href=":image:' + ImageUrl + ':show" target="_new" onMouseDown="DoNotPropagate(event)">Open full size in new window <img src="./page/newwindow.png" /></a></div>';

			ThisElement = document.getElementById("FullscreenOverlay");
			ThisElement.innerHTML = newContent;
	
			LoadXMLDocument("./image/info.php?image=" + ImageUrl + ':maxsize.' + RenderImageSizeX + '.' + RenderImageSizeY, AdjustPopupImage, true);
					
			break;
		}
		case "list":
		{
			ListPath	= curRenderSettings.getElementsByTagName("path")[0].childNodes[0].nodeValue;
			ListXML		= LoadXMLDocument("work/" + ListPath + ".xml", null, false);
			
			if (!ListXML)
			{
				newContent += "<div class='Title'>" + curGroup.ItemPtr.Name + " is not valid!<br/>No document found.</div>";
				newContent += "<div class='Small'>(click to close)</div>";
				
				ThisElement = document.getElementById("FullscreenOverlay");
				ThisElement.innerHTML = newContent;
				
				return;
			}

			ImageDescription	= curRenderSettings.getElementsByTagName("description");

			if (ImageDescription.length != 0)
			{
				ImageDescription = ImageDescription[0].childNodes[0].nodeValue;
				ImageDescription = ImageDescription.replace(/\]/g, ">");
				ImageDescription = ImageDescription.replace(/\[/g, "<");
			}
			else
			{
				ImageDescription  = 0;
			}

			ImageDate		= curRenderSettings.getElementsByTagName("date");
			if (ImageDate.length != 0)
				ImageDate = ImageDate[0].childNodes[0].nodeValue;
			else
				ImageDate = 0;

			PopupPageItemList = new Array();
			
			ListElementsChildren = ListXML.getElementsByTagName("item");
			for (var I = 0; I < ListElementsChildren.length; I++)
			{
				newObject = new Object();
				newObject.Path			= ListElementsChildren[I].getElementsByTagName("path")[0].childNodes[0].nodeValue;
				if (ListElementsChildren[I].getElementsByTagName("name").length > 0)
					newObject.Name			= ListElementsChildren[I].getElementsByTagName("name")[0].childNodes[0].nodeValue;
				else
					newObject.Name = 0;
				if (ListElementsChildren[I].getElementsByTagName("description").length > 0)
					newObject.Description		= ListElementsChildren[I].getElementsByTagName("description")[0].childNodes[0].nodeValue;
				else
					newObject.Description = 0;
				if (ListElementsChildren[I].getElementsByTagName("date").length > 0)
					newObject.Date			= ListElementsChildren[I].getElementsByTagName("date")[0].childNodes[0].nodeValue;
				else
					newObject.Date = 0;
				
				newObject.ID = newObject.Path.split(' ').join('');

				PopupPageItemList.push(newObject);
			}
			
	//		newContent += "<div class='Title'>" + curGroup.ItemPtr.Name + "</div>";
	//		newContent += "<div class='Small'>(click to close)</div>";
			
			newContent += "<div class='ListThumbnails' onMouseDown='DoNotPropagate(event)'>";
			
				newContent += '<span class="ThumbnailText">'
				newContent += curGroup.ItemPtr.Name
				newContent += '</span>'; 
			for (var I = 0; I < PopupPageItemList.length; I++)
			{
				newContent += '<span class="Thumbnail" onClick="' +
							'ChangePopupListImage(\'' + PopupPageItemList[I].ID + '\', ' +
								RenderImageSizeX + ', ' + RenderImageSizeY +
							')">'; 
				newContent += '<image src=":image:' + PopupPageItemList[I].Path + ':minsize.1.90" />';
				newContent += '<div class="Overlay"></div>'; 
				newContent += '</span>'; 
			}
			
			newContent += "</div>";

			if (ImageDescription != 0)
			{
				newContent += "<div class='Description' " +
							" onMouseDown='DoNotPropagate(event)' " +
							">" + ImageDescription;
				if (ImageDate != 0)
					newContent += " <i>(" + ImageDate + ")</i></div>";
				else
					newContent += "</div>";
			}
			else if (ImageDate != 0)
			{
				newContent += "<div class='Date'>(" + ImageDate + ")</div>";
			}

			newContent += "<div id='FullscreenImage' class='FullscreenImage'>(larger)";
			newContent += "</div>";
			
			ThisElement = document.getElementById("FullscreenOverlay");
			ThisElement.innerHTML = newContent;

			showPage = GetPageVar("ShowSub");
			if (showPage == 0)
				showPage = PopupPageItemList[0].ID;
			
			ChangePopupListImage(showPage, RenderImageSizeX, RenderImageSizeY);
		
			break;
		}
		case "music":
		case "audio":
		{
			ListPath	= curRenderSettings.getElementsByTagName("path")[0].childNodes[0].nodeValue;
			ListXML		= LoadXMLDocument("work/" + ListPath + ".xml", null, false);
			
			if (!ListXML)
			{
				newContent += "<div class='Title'>" + curGroup.ItemPtr.Name + " is not valid!<br/>No playlist found.</div>";
				newContent += "<div class='Small'>(click to close)</div>";
				
				ThisElement = document.getElementById("FullscreenOverlay");
				ThisElement.innerHTML = newContent;
				
				return;
			}
			
			MusicDescription	= ListXML.getElementsByTagName("description");

			if (MusicDescription.length != 0)
			{
				MusicDescription = MusicDescription[0].childNodes[0].nodeValue;
				MusicDescription = MusicDescription.replace(/\]/g, ">");
				MusicDescription = MusicDescription.replace(/\[/g, "<");
			}
			else
			{
				MusicDescription  = 0;
			}

			MusicPageItemList = new Array();
			
			ListElementsChildren = ListXML.getElementsByTagName("item");
			for (var I = 0; I < ListElementsChildren.length; I++)
			{			
				newObject = new Object();
				newObject.Path			= ListElementsChildren[I].getElementsByTagName("path")[0].childNodes[0].nodeValue;
				if (ListElementsChildren[I].getElementsByTagName("name").length > 0)
					newObject.Name			= ListElementsChildren[I].getElementsByTagName("name")[0].childNodes[0].nodeValue;
				else
					newObject.Name			= newObject.Path;
				if (ListElementsChildren[I].getElementsByTagName("description").length > 0)
					newObject.Description		= ListElementsChildren[I].getElementsByTagName("description")[0].childNodes[0].nodeValue;
				else
					newObject.Description = 0;
				
				newObject.ID = newObject.Path.split(' ').join('');

				MusicPageItemList.push(newObject);
			}
			
			newContent += "<div class='Title'>" + curGroup.ItemPtr.Name + "</div>";
			
			if (MusicDescription != 0)
			{
				newContent += "<div class='Description' " +
							" onMouseDown='DoNotPropagate(event)' " +
							">" + MusicDescription + "</div>";
			}
			
			newContent += "<div id='MusicPlayer'></div>";
			
			newContent += "<div id='MusicItems' onMouseDown='DoNotPropagate(event)'>";
			
			for (var I = 0; I < MusicPageItemList.length; I++)
			{
				newContent += '<div class="Item" id="Item' + I + '" onClick="' +
							'ChangeMusicListPlay(\'' + I + '\')">'; 
				newContent += '<div class="Name">' + MusicPageItemList[I].Name + '</div>';
				if (MusicPageItemList[I].Description)
					newContent += '<div class="Description">' + MusicPageItemList[I].Description + '</div>';
				newContent += '</div>'; 
			}
			
			newContent += "</div>";
			
			ThisElement = document.getElementById("FullscreenOverlay");
			ThisElement.innerHTML = newContent;
			
			ChangeMusicListPlay(0);
					
			break;
		}
		case "video":
		{
			VideoHost		= curRenderSettings.getElementsByTagName("clip")[0].getAttribute("host");
			VideoUrl		= curRenderSettings.getElementsByTagName("clip")[0].childNodes[0].nodeValue;
			VideoDescription	= curRenderSettings.getElementsByTagName("description");

			if (VideoDescription.length != 0)
			{
				VideoDescription = VideoDescription[0].childNodes[0].nodeValue;
				VideoDescription = VideoDescription.replace(/\]/g, ">");
				VideoDescription = VideoDescription.replace(/\[/g, "<");
			}
			else
			{
				VideoDescription  = 0;
			}

			VideoDate		= curRenderSettings.getElementsByTagName("date");
			if (VideoDate.length != 0)
				VideoDate = VideoDate[0].childNodes[0].nodeValue;
			else
				VideoDate = 0;

			
			newContent += "<div class='Title'>" + curGroup.ItemPtr.Name + "</div>";

			if (VideoDescription != 0)
			{
				newContent += "<div class='Description' " +
							" onMouseDown='DoNotPropagate(event)' " +
							">" + VideoDescription;
				if (VideoDate != 0)
					newContent += " <i>(" + VideoDate + ")</i></div>";
				else
					newContent += "</div>";
			}
			else if (VideoDate != 0)
			{
				newContent += "<div class='Date'>(" + VideoDate + ")</div>";
			}

			newContent += "<div class='Video'>";
			newContent += "<div class='Throbber'></div>";

			if (VideoHost == "vimeo")
			{
				newVars =	'clip_id=' + VideoUrl +
							'&server=vimeo.com' +
							'&autoplay=0' +
							'&fullscreen=1' +
							'&md5=0' +
							'&show_portrait=0' +
							'&show_title=1' +
							'&show_byline=1' +
							'&context=undefined' +
							'&context_id=undefined' +
							'&force_embed=1' +
							'&multimoog=&color=00ADEF';
			
				newContent += '<object width="' + RenderImageSizeX + '" height="' + RenderImageSizeY + '">' +
						'<param name="allowfullscreen" value="true" />' +
						'<param name="allowscriptaccess" value="always" />' +
						'<param name="movie" value="http://vimeo.com/moogaloop_local.swf?ver=false" />' +
						'<param name="wmode" value="transparent" />' +
						'<param name="bgcolor" value="#ffffff" />' +
						'<param name="flashvars" value="' + newVars + '" />' +
						'<embed src="http://vimeo.com/moogaloop_local.swf?ver=false" flashvars="' + newVars + '"' +
						' allowfullscreen="true" allowscriptaccess="always" width="' + RenderImageSizeX + '" height="' + RenderImageSizeY +
						' wmode="transparent" bgcolor="#ffffff" ></embed>'+
						'</object>';
			}
			
	//		newContent += '<image id="OverlayImage" src=":image:' + ImageUrl + ':maxsize.' +
	//				RenderImageSizeX + '.' + RenderImageSizeY + '" onClick="ClosePopupPage()" onMouseDown="DoNotPropagate(event)" />';
			newContent += "</div>";
	//		newContent += '<div class="Links"><a href=":image:' + ImageUrl + ':show" target="_new" onMouseDown="DoNotPropagate(event)">Open full size in new window <img src="./page/newwindow.png" /></a></div>';

			ThisElement = document.getElementById("FullscreenOverlay");
			ThisElement.innerHTML = newContent;
					
			break;
		}
		default:
		{
			if (curRenderType != "error" && curRenderType != "undefined render settings")
				curRenderType += " is unknown type";

			newContent += "<div class='Title'>" + curGroup.ItemPtr.Name + " is not valid!<br/>\"" + curRenderType + "\"</div>";
			newContent += "<div class='Small'>(click to close)</div>";
			
			ThisElement = document.getElementById("FullscreenOverlay");
			ThisElement.innerHTML = newContent;
			
			break;
		}
	}
}

var FullItemList;
var FullSideList;

function RenderFullPage()
{
	OldScrollTop    = document.getElementById("PageContainerInner").scrollTop;
	OldMargins      = "20px";//document.getElementById("PageContentContainer").style["margin-left"]
    document.getElementById("PageContentContainer").style["margin-left"] = "auto";
    document.getElementById("PageContentContainer").style["margin-right"] = "auto";
    document.getElementById("PageContentContainer").style.width = DefaultPageWidth + 110 + "px";
	document.getElementById("PageContainerInner").scrollTop = 0;

		// Find which group & settings

	var curGroup = 0;
	for (var I = 0; I < MainPageItemList.Groups.length; I++)
	{
		if (MainPageItemList.Groups[I].Name == ItemFullName)
		{
			curGroup = MainPageItemList.Groups[I];
		}
	}
	
	if (curGroup == undefined)
		curGroup = 0;
	
	if (curGroup == 0)
	{
		alert("curGroup == 0 | in RenderFullPage()");
		return;
	}

	curRenderSettings = 0;
	if (undefined != curGroup.ItemPtr.RenderSettings)
	{
		curRenderSettings = curGroup.ItemPtr.RenderSettings;
	}
	
	if (curRenderSettings == undefined)
	{
		alert("This item was not found!");
		return;
	}
	
		// Render the page
	
	NewInnerHTML = "";
	NewInnerHTML += "<div class='Throbber'></div>";
	ThisElement = document.getElementById("EverythingGoHere");
	ThisElement.innerHTML = NewInnerHTML;
	
		//-----
	
	FilePath	= curRenderSettings.getElementsByTagName("path")[0].childNodes[0].nodeValue;
	FileXML		= LoadXMLDocument("work/" + FilePath + ".xml", null, false);
			
	if (!FileXML)
	{
		newContent += "<div class='Title'>" + curGroup.ItemPtr.Name + " is not valid!<br/>No document found.</div>";
		newContent += "<div class='Small'>(click to close)</div>";
		
		ThisElement = document.getElementById("EverythingGoHere");
		ThisElement.innerHTML = newContent;
		
		return;
	}
	
	Layout				= FileXML.getElementsByTagName("layout")[0].childNodes[0].nodeValue;
	var FullTitle;	

	if (Layout == "default")
	{
		FullTitle			= FileXML.getElementsByTagName("title")[0].childNodes[0].nodeValue;
		FullCapitalImage	= FileXML.getElementsByTagName("capimage")[0].childNodes[0].nodeValue;
		FullDescription		= FileXML.getElementsByTagName("about")[0].childNodes[0].nodeValue;
		FullItems			= FileXML.getElementsByTagName("items")[0];
		FullSideList		= FileXML.getElementsByTagName("sidebar");
		if (FullSideList.length > 0)
			FullSideList = FullSideList[0].getElementsByTagName("item");
		FullDescription		= FullDescription.replace(/\[\/title\]/g, "</div><div class='DefaultText'>");
		FullDescription		= FullDescription.replace(/\[title\]/g, "</div><div class='SubHeader'>");
		FullDescription		= FullDescription.replace(/\[br\]/g, "</div><div class='DefaultText'>");
		FullDescription		= FullDescription.replace(/\]/g, ">");
		FullDescription		= FullDescription.replace(/\[/g, "<");
		
		FullItems			= FindXMLChildren(FullItems, "item");
		
		FullItemList = new Object();
		RegisterMenuItemsFromList(FullItems, FullItemList);
	
		var Settings = new Object();
		var OutputText = new Object();
		
		Settings.AppliedFilter		= 0;
		Settings.FuncFilterSwitch	= "";
		Settings.FuncItemHover		= "FullPageHover";
		Settings.FuncItemClick		= "FullPageClick";
		Settings.RowList			= 0;
		Settings.Width				= 650;
		Settings.ImageSize			= new Object();
		Settings.ImageSize.w		= 72;
		Settings.ImageSize.h		= 65;
		Settings.Jumpline			= 2;
		RenderMenuItemsFromList(FullItemList, Settings, OutputText);
		
		NewInnerHTML = "";
		NewInnerHTML += "<div class='Full'>";
		NewInnerHTML += "<div class='FullSide'>";
		NewInnerHTML += "<div class='Item Back' onClick='CloseFullPage()'>Back to all work</div>";
		NewInnerHTML += "<div class='Item Back Bottom' onClick='CloseFullPage()'>Back to all work</div>";
		
		if (FullSideList)
		{
			for (var I = 0; I < FullSideList.length; I++)
			{			
				var barTitle		= FullSideList[I].getElementsByTagName("title")[0].childNodes[0].nodeValue;
				var barDesc			= FindXMLChildren(FullSideList[I], "description");
				if (barDesc.length != 0)
					barDesc			= barDesc[0].childNodes[0].nodeValue;
				else
					barDesc			= "";
				var barIcon			= FullSideList[I].getElementsByTagName("icon")[0].childNodes[0].nodeValue;
				var barRequirements	= FullSideList[I].getElementsByTagName("requirements");
				var barRequirementsName = 0;
				if (barRequirements.length != 0)
				{
					barRequirementsName	= barRequirements[0].getAttribute("name");
					barRequirements		= barRequirements[0].getElementsByTagName("requirement");
				}
				else
					barRequirements	= 0;
				
				NewInnerHTML += "<div class='Item " + barIcon + "' onClick='FullPageSideClick(" + I + ")'>";
				NewInnerHTML += "<span class='Title'>";
				NewInnerHTML += barTitle;
				NewInnerHTML += "</span><br/><span class='Description'>";
				NewInnerHTML += barDesc;
				NewInnerHTML += "</span></div>";
				if (barRequirements)
				{
					NewInnerHTML += "<div class='Item Requirements'>";
					NewInnerHTML += "<span class='Title'>";
					NewInnerHTML += barRequirementsName;
					NewInnerHTML += "</span><br/><span class='Description'>";
					
					for (var J = 0; J < barRequirements.length; J++)
					{
						if (J != 0)
							NewInnerHTML += "<br/>";
							
						var Url = barRequirements[J].getAttribute("url");
						if (Url != null)
						{
							NewInnerHTML += "<a href='" + Url + "' target='_new'>";
						}
						
						NewInnerHTML += barRequirements[J].getAttribute("name");
						
						if (Url != null)
						{
							NewInnerHTML += "</a>";
						}
					}
					
					NewInnerHTML += "</span></div>";
				}
			}
		}
		
		NewInnerHTML += "</div>";
		
		NewInnerHTML += "<div class='FullMain'>";
		NewInnerHTML += "<div class='ImageHeader' style='background-image:url(\":image:" + FullCapitalImage + ":minsize.700.500\");'>"
						+	"<div class='Fader'></div></div>";
		NewInnerHTML += '<div class="FullTitle">' + FullTitle + '</div>';
		NewInnerHTML += '<div id="ListGoesHere">' + OutputText.Items
		NewInnerHTML += '<div style="height:' + (OutputText.MaxHeight + 20) + 'px;"></div>';
		NewInnerHTML += '</div><div class="DefaultText">' + FullDescription + '</div>';
		NewInnerHTML += "</div>";
		NewInnerHTML += "</div>";
		
		ThisElement = document.getElementById("EverythingGoHere");
		ThisElement.innerHTML = NewInnerHTML;
	}

	document.title = FullTitle + " - " + BaseTitle;
	BaseEditTitle = FullTitle;
	
	if (ItemShowName !== 0)
		RenderShowPage(FullItemList);
}

function FullPageHover(ID, GroupID, IconID, nowHover)
{		
	Group = FullItemList.Groups[GroupID];
	for (var I = 0; I < Group.Members.length; I++)
	{
		ThisElement = document.getElementById("Item" + Group.Members[I].DivID);
		if (ThisElement == undefined)
			continue;
		if (nowHover)
			ThisElement.className = "Thumbnail GroupHover";
		else
			ThisElement.className = "Thumbnail";
	}
	
	if (nowHover)
		document.getElementById('ListGoesHere').className = "GroupHover";
	else
		document.getElementById('ListGoesHere').className = "";
		
	ItemID = ID;
	
	document.getElementById("ItemDescription" + ItemID).className = "ThumbnailDescription";
	
	if (IconID != -1)
		ItemID = ID + "_" + IconID;
		
	if (nowHover)
		document.getElementById("ItemDescription" + ItemID).className = "ThumbnailDescription Hovered";
	else
		document.getElementById("ItemDescription" + ItemID).className = "ThumbnailDescription";
}

function FullPageClick(ItemID, GroupID, IconID)
{		
	ItemShowIcon = IconID;

	var newSub = undefined;

	if (IconID == -1)
	{
		newSub = FullItemList.Items[ItemID].RenderSettings;
	}
	else
	{
		newSub = FullItemList.Items[ItemID].Icons[ItemShowIcon].Render;
	}
	
	if (newSub != undefined)
		newSub = newSub.getAttribute("sub");
		
	ItemShowName = FullItemList.Groups[GroupID].Name;
	SetPageVar("Show", ItemShowName, true);
	RenderShowPage(FullItemList);
}

function FullPageSideClick(ItemID)
{		
	ItemShowName = FullSideList[ItemID].getElementsByTagName("title")[0].childNodes[0].nodeValue.split(' ').join('');
	SetPageVar("Show", ItemShowName, true);
	RenderShowPage(FullItemList);
}

function AdjustPopupImage(_Document)
{
	Width	= _Document.getElementsByTagName("width")[0].childNodes[0].nodeValue;
	Height	= _Document.getElementsByTagName("height")[0].childNodes[0].nodeValue;
	Name	= _Document.getElementsByTagName("name")[0].childNodes[0].nodeValue;
	
	document.getElementById("OverlayImage").width	= Width;
	document.getElementById("OverlayImage").height	= Height;
	document.getElementById("OverlayImage").alt		= Name;
}

function ChangePopupListImage(_Image, RenderImageSizeX, RenderImageSizeY)
{
	LargerImage = document.getElementById("FullscreenImage");

	newContent = "";

	curItem = PopupPageItemList[0];

	for (var I = 0; I < PopupPageItemList.length; I++)
	{
		if (PopupPageItemList[I].ID == _Image)
		{
			curItem = PopupPageItemList[I];
			break;
		}
	}

	SetPageVar("ShowSub", curItem.ID, true);

	newContent += "<div class='Thumb'>";
	newContent += "<div class='Throbber'></div>";
	newContent += '<image id="OverlayImage" src=":image:' + curItem.Path + ':maxsize.' +
			RenderImageSizeX + '.' + RenderImageSizeY + '" onClick="ClosePopupPage()" onMouseDown="DoNotPropagate(event)" />';
	newContent += "</div>";

	if (curItem.Description != 0)
	{
		newContent += "<div class='Description' " +
					" onMouseDown='DoNotPropagate(event)' " +
					">" + curItem.Description;
		if (curItem.Date != 0)
			newContent += " <i>(" + curItem.Date + ")</i></div>";
		else
			newContent += "</div>";
	}
	else if (curItem.Date != 0)
	{
		newContent += "<div class='Date'>(" + curItem.Date + ")</div>";
	}

	newContent += '<div class="Links"><a href=":image:' + curItem.Path + ':show" target="_new" onMouseDown="DoNotPropagate(event)">Full size in new window <img src="./page/newwindow.png" /></a></div>';

	LargerImage.innerHTML = newContent;

	LoadXMLDocument("./image/info.php?image=" + curItem.Path + ':maxsize.' + RenderImageSizeX + '.' + RenderImageSizeY, AdjustPopupImage, true);
}

function ChangeMusicListPlay(_Number)
{
	curItem = MusicPageItemList[_Number];
	
	newContent = "";
	
	newContent += '<div id="Name">' + curItem.Name + '</div>';
	newContent += '<object type="application/x-shockwave-flash" data="./page/mp3player.swf" width="200" height="20">';
    newContent += '<param name="movie" value="http://flash-mp3-player.net/medias/player_mp3.swf" />';
    newContent += '<param name="bgcolor" value="#ffffff" />';
    newContent += '<param name="wmode" value="transparent" />';
    newContent += '<param name="FlashVars" value="mp3=./work/' + curItem.Path +
								'&amp;autoplay=1&amp;bgcolor1=f06400&amp;bgcolor2=750000" />';
	newContent += '</object>';
	
	ThisElement = document.getElementById("MusicPlayer");
	ThisElement.innerHTML = newContent;
}

function ClosePopupPage(_Event)
{
	ThisElement = document.getElementById("FullscreenOverlay");

	if (_Event != 0 && _Event != undefined)
	{
		mouseX = _Event.pageX;

			// IE FIX :(!

		if (mouseX == undefined)
			mouseX = _Event.clientX;

			// end IE FIX :(!

		if (mouseX > ThisElement.clientWidth)
			return;
	}

	ThisElement.className = "";
	ItemShowName = 0;

	if (BaseEditTitle != "")
	{
		document.title = BaseEditTitle + " - " + BaseTitle;
	}
	else
	{
		document.title = BaseTitle;
	}

	RemovePageVar("ShowSub", false);
	RemovePageVar("Show", true);
}

function CloseFullPage()
{
	RemovePageVar("ShowSub", false);
	RemovePageVar("Show", false);
	RemovePageVar("Full", true);

	document.title = BaseTitle;
	BaseEditTitle = "";

    document.getElementById("PageContentContainer").style["margin-left"] = "20px";//OldMargins;
    document.getElementById("PageContentContainer").style["margin-right"] = "20px";//OldMargins;
    document.getElementById("PageContentContainer").style.width = "auto";
    
	RenderMainPage();
	
	document.getElementById("PageContainerInner").scrollTop = OldScrollTop;
}

function KeepPageUpdated()
{
	if (PageHashChanged() || LastDocumentWidth != document.width)
	{
        LastDocumentWidth = document.width;
        
		AdoptPageHash();

		MainPageAppliedFilter	= GetPageVar("Filter");
		ItemFullName			= GetPageVar("Full");
		ItemShowName			= GetPageVar("Show");
		ItemShowNameSub			= GetPageVar("ShowSub");

		if (ItemFullName == 0 && ItemShowName == 0)
			CloseFullPage();
		if (ItemShowName == 0)
		{
	//		RemovePageVar(ItemShowNameSub, true);
			ItemShowNameSub = 0;
			ClosePopupPage(0);
		}

		RenderMainPage();

		if (ItemFullName !== 0)
			RenderFullPage();
		else if (ItemShowName !== 0)
		{
			RenderShowPage(MainPageItemList);
		}
	}

	setTimeout(KeepPageUpdated, 100);	
}

AddLoadEvent(InitMainPage);