﻿function workAroundHtmlTableWebPartZones(tableCellIDs)
{
	for ( var i = 0; i < tableCellIDs.length; i++ )
	{
		var tableCell = document.getElementById(tableCellIDs[i]);
		if ( tableCell == null || !tableCell.hasChildNodes() )
			continue;
	
		var webPartZone = tableCell.childNodes[0];
		if ( webPartZone == null )
			continue;
	
		webPartZone.width = tableCell.width;
	}
}

function expandButton_OnClick(expandButton, textExpand, textCollapse, expandButtonFieldClientID)
{
	var expandButtonField = document.getElementById(expandButtonFieldClientID);
	if (expandButtonField == null)
		return;

	var expanded = expandButtonField.value == "1";

	expandCell(expandButton, !expanded);

	expandButton.innerText = expanded ? textExpand : textCollapse;
	expandButtonField.value = expanded ? "0" : "1";
}

function expandCell(expandButton, expand)
{
	var tableCellCurrent = expandButton.parentElement;
	var tableRow = expandButton.parentElement;
	var table = expandButton.parentElement;

	while (table.tagName != "TABLE" && tableRow != null)
	{
		if (tableCellCurrent.tagName != "TD")
		{
			tableCellCurrent = table;
		}
		if (tableRow.tagName != "TR")
		{
			tableRow = table;
		}
		table = table.parentElement;
	}
	
	if (tableCellCurrent == null || tableRow == null || table == null)
		return;

	var display = expand ? "none" : "block";
	
	for ( var i = 0; i < tableRow.childNodes.length; i++ )
	{
		var tableCellToHide = tableRow.childNodes[i];
		tableCellToHide.style.display = display;
	}

	tableCellCurrent.style.display = "block";
	var tableWidth = expand ? table.width : tableCellCurrent.width;
	for (var i = 0; i < tableCellCurrent.childNodes.length; i++)
	{
		var webPartZone = tableCellCurrent.childNodes[i];
		if (webPartZone.tagName == "SPAN" && webPartZone.id != expandButton.id)
		{
			webPartZone.style.width = tableWidth + "px";
			break;
		}
	}
}