function HierarGrid_toggleRow(sender)
	{
		if(sender == null)
			return;
			
		var state = 1;

		//if the hidden row has not already been generated, clone the panel into a new row
		var existingRow = window.document.getElementById(sender.id + "showRow");
		if (existingRow==null)
		{
			//getting a reference to the table
			var table = GetParentElementByTagName(sender, "TABLE");
			var index = GetParentElementByTagName(sender, "TR").sectionRowIndex + 1;
			//concatenate name of hidden panel => replace "Icon" from sender.id with "Panel"\n
			rowDivName = HierarGrid_ReplaceStr(sender.id, "Icon", "Panel");
			var rowDiv = window.document.getElementById(rowDivName);
			//adding new row to table
			var newRow = table.insertRow(index);
			newRow.id = sender.id + "showRow";
			//adding new cell to row
			var newTD = document.createElement("TD");
			//set the colspan to the number of columns
			var columnCount = table.getAttribute("ColumnCount");
			newTD.colSpan = columnCount;
			
			var myTD = newRow.appendChild(newTD);
			//clone Panel into new cell
			var copy = rowDiv.cloneNode(false);
			copy.innerHTML = rowDiv.innerHTML;
			
			copy.style.display = "";
			myTD.innerHTML = copy.innerHTML;
			rowDiv.parentNode.removeChild(rowDiv);
			
			sender.innerHTML = "<img src='../images/delta_down.gif' alt='Collapse' border='0' />";
			state = 1;
		}
		else
		{
			if (existingRow.style.display=="none")
			{
				existingRow.style.display = "";
				sender.innerHTML = "<img src='../images/delta_down.gif' alt='Collapse' border='0' />";
				state = 1;
			}
			else
			{
				existingRow.style.display = "none";
				sender.innerHTML = "<img src='../images/delta_right.gif' alt='Expand' border='0' />";
				state = 0;
			}
		}
		//ChangeRowState(sender, state);
	}
	
	function HierarGrid_ReplaceStr(orgString, findString, replString)
	{
		pos = orgString.lastIndexOf(findString);
		return orgString.substr(0, pos) + replString + orgString.substr(pos + findString.length);
	}
	
	function GetParentElementByTagName(element, tagName)
	{
		var element=element;
		while(element.tagName != tagName)
			element = element.parentNode;
		return element;
	}
