﻿var Box = new Class(
{
	initialize: function()
	{
		this.typeID = "box";
		this.dataID = "box_data";
		this.boxes = [];

		ui.registerResizeHandler(this.resizeBoxes);
		ui.registerCleanupHandler(this.removeBoxes);

		uiDialog.registerPreInitHandler(this.typeID, this.preInit);
	},

	preInit: function(control, clientData)
	{
		var data = {
			"control": control
		};

		$extend(data, clientData[box.typeID]);

		control.store(this.dataID, data);

		if (!data.fw || !data.fh)
		{
			box.boxes.push(data);
		}
	},

	resizeBoxes: function()
	{
		for (var i = 0; i < box.boxes.length; i++)
		{
			box.resizeBox(box.boxes[i]);
		}
	},

	removeBoxes: function(rootElement)
	{
		var filteredBoxes = [];

		for (var i = 0; i < box.boxes.length; i++)
		{
			var boxContainer = box.boxes[i];
			var boxControl = boxContainer.control;

			if (boxControl != null && !rootElement.hasChild(boxControl))
			{
				filteredBoxes.push(boxContainer);
			}
		}

		box.boxes = filteredBoxes;
	},

	setBoxWidth: function(parentWidth, pnlBox)
	{
		var control = pnlBox.control;

		var t = ui.getSubElement(control, control.id + "_tbl_t");
		var tImg = t.getElement("img");
		var c = ui.getSubElement(control, control.id + "_tbl_c");
		var b = ui.getSubElement(control, control.id + "_tbl_b");
		var bImg = b.getElement("img");

		var innerWidth = parentWidth - pnlBox.bw * 2;

		t.set("width", innerWidth);
		tImg.set("width", innerWidth);
		c.set("width", innerWidth);
		b.set("width", innerWidth);
		bImg.set("width", innerWidth);
	},

	setBoxHeight: function(parentHeight, pnlBox)
	{
		var control = pnlBox.control;

		var l = ui.getSubElement(control, control.id + "_tbl_l");
		var lImg = l.getElement("img");
		var c = ui.getSubElement(control, control.id + "_tbl_c");
		var r = ui.getSubElement(control, control.id + "_tbl_r");
		var rImg = r.getElement("img");

		var innerHeight = parentHeight - pnlBox.bh * 2;

		l.set("height", innerHeight);
		lImg.set("height", innerHeight);
		c.setStyle("backgroundColor", "#ffffff");
		c.set("height", innerHeight);
		r.set("height", innerHeight);
		rImg.set("height", innerHeight);
	},

	resizeBox: function(pnlBox)
	{
		var control = pnlBox.control;
		var parent = control.getParent();
		var lcSizerElement = control.getElement(".lcSizer");

		if (parent == null || control == null)
		{
			return;
		}

		var parentSize = parent.getSize();

		if (lcSizerElement != null)
		{
			var lcSizerSize = lcSizerElement.getSize();
			var lcSizerHeight = lcSizerSize.y + pnlBox.bh * 2;
			parentSize.y = lcSizerHeight;
		}

		if (!pnlBox.fw)
		{
			box.setBoxWidth(parentSize.x, pnlBox);
		}

		if (!pnlBox.fh)
		{
			box.setBoxHeight(parentSize.y, pnlBox);
		}
	}
});

var box = new Box();