﻿var footerControlsSorted = [];
var footerControls = {};

function SortFootersByOffsetTop(a, b)
{
    var aY = parseInt(a[0].style["top"]);
    var bY = parseInt(b[0].style["top"]);
    if (aY < bY)
        return -1;

    return aY == bY ? 0 : 1;
}

function AddFooter(id)
{
    footerControlsSorted.push([$get(id), id]);
    footerControls[id] = id;
}


//
function FooterControlUpdateLabel()
{
    var label = embeddedControl_PresentationControls[this.controlObject.id];
    label.innerHTML = unescape(this.GetContent());
}

//
function FooterControlContextMenu(contentType)
{
	//Editing in template mode
	if (contentType == "EditDesign" && !this.IsInlineEditing())
		return CONTROLCONTEXTMENU_ENABLEDISABLE | CONTROLCONTEXTMENU_MAKENEWSCONTENTCONTROL | CONTROLCONTEXTMENU_UNMAKENEWSCONTENTCONTROL | CONTROLCONTEXTMENU_CLEAR | CONTROLCONTEXTMENU_EDIT | CONTROLCONTEXTMENU_INLINEEDIT | CONTROLCONTEXTMENU_PROPERTIES | CONTROLCONTEXTMENU_CUSTOMPROPERTIES | CONTROLCONTEXTMENU_DEPTHORDERING | CONTROLCONTEXTMENU_DELETERESTORE;
    else if (contentType == "EditDesign" && this.IsInlineEditing())
    	return CONTROLCONTEXTMENU_INLINEEDITSAVE | CONTROLCONTEXTMENU_INLINEEDITCANCEL;
    //Editing in content mode
    else if (contentType == "EditContent" && !this.IsInlineEditing())
    	return CONTROLCONTEXTMENU_CLEAR | CONTROLCONTEXTMENU_EDIT | CONTROLCONTEXTMENU_INLINEEDIT | CONTROLCONTEXTMENU_DELETERESTORE;
    else if (contentType == "EditContent" && this.IsInlineEditing())
    	return CONTROLCONTEXTMENU_INLINEEDITSAVE | CONTROLCONTEXTMENU_INLINEEDITCANCEL;

    return 0;
}

function UpdateFooters()
{
	var offsetY = 0;
	var items = Template.GetContainer().childNodes;
	for (var i = 0; i < items.length; i++)
	{
		//iterate through all controls except for the footers
		if (items[i].id != null && items[i].style["display"] != "none" && footerControls[items[i].id] == null && ((parseInt(items[i].offsetTop) + items[i].offsetHeight) > offsetY))
			offsetY = parseInt(items[i].offsetTop) + items[i].offsetHeight;
	}

	var bypassUndoHistory = true;
	footerControlsSorted.sort(SortFootersByOffsetTop);
	var footer = null;
	for (var i = 0; i < footerControlsSorted.length; i++)
	{
		footer = $get(footerControlsSorted[i][1]);
		footer.style["top"] = offsetY + "px";

		try
		{
			eval("_" + footer.id).SetProperties(footer.style.getAttribute("cssText"), bypassUndoHistory);
		} catch (err) { }

		offsetY += footer.offsetHeight;
	}
}

function InitializeFooterControl(contentType, controlID, labelID)
{
	var control = eval("_" + controlID);
	embeddedControl_PresentationControls[controlID] = $get(labelID);
	control.OnInitialized = FooterControlUpdateLabel;

	if (contentType != "View")
	{
		control.GetEditorControlID = function() { return "HTMLEditor"; }
		control.ContentUpdated = FooterControlUpdateLabel;
		control.OnContextMenu = FooterControlContextMenu;
		control.PreProcessEditorContent = PreProcessContent_SaveFileReferences;
		control.GetCustomPropertyControlID = function() { return "HTMLTextEditSettings"; }
		control.GetCustomContent = function() { return [control.GetCustomProperties(), control.GetContent()]; }
	}
	AddFooter(controlID);
}

Page.AddOnInit(function() { UpdateFooters(); });

//if (document.addEventListener)
//	document.addEventListener("DOMContentLoaded", OnBodyLoad_Footers, false);
//else
//	document.body.onload = OnBodyLoad_Footers;

try
{
	if (null != EventManager)
	{
		EventManager.AddListener("EVENT_ENDDRAG", EventManager.CreateEventListener("CONTROL_FOOTER:EVENT_ENDDRAG", UpdateFooters, null));
		EventManager.AddListener("EVENT_ENDRESIZE", EventManager.CreateEventListener("CONTROL_FOOTER:EVENT_ENDRESIZE", UpdateFooters, null));
		EventManager.AddListener("EVENT_CONTROLPROPERTIESUPDATED", EventManager.CreateEventListener("CONTROL_FOOTER:EVENT_CONTROLPROPERTIESUPDATED", UpdateFooters, null));
		EventManager.AddListener("EVENT_CONTROLCONTENTCHANGED", EventManager.CreateEventListener("CONTROL_FOOTER:EVENT_CONTROLCONTENTCHANGED", UpdateFooters, null));
	}
}
catch (err)
{
}