<%

//
// Spreadsheet Tools Help Library tree generator
//

var g_aHelpItems = new Array();
var g_oHelpMap = new Object();
var g_nHelpItemId = 1;
var g_nHelpItemCount = 0;

//
// Help item
//

function stHelpItem()
{
	this.m_nID = 0;
	this.m_sCaption = "";
	this.m_sURL = "";
	
	this.m_aSubItems = new Array();
	
	this.addSubItem = stHelpItem_addSubItem;
	this.addSubItemEx = stHelpItem_addSubItemEx;
}

function stAddRootHelpItem( sURL, sCaption)
{
	var pItem = new stHelpItem;
	
	pItem.m_nID = g_nHelpItemId;
	++g_nHelpItemId;
	pItem.m_sCaption = sCaption;
	pItem.m_sURL = sURL;
	
	g_aHelpItems.push( pItem );
	
	g_oHelpMap[ pItem.m_nID ] = sURL;
	
	++g_nHelpItemCount;
	
	return pItem;
}

function stHelpItem_addSubItemEx( sURL, sCaption )
{
	var pItem = new stHelpItem;
	
	pItem.m_nID = g_nHelpItemId;
	++g_nHelpItemId;
	pItem.m_sCaption = sCaption;
	pItem.m_sURL = sURL;
	
	this.m_aSubItems.push( pItem );
	
	g_oHelpMap[ pItem.m_nID ] = sURL;
	
	++g_nHelpItemCount;
	
	return pItem;
}

function stHelpItem_addSubItem( sURL, sCaption )
{
	this.addSubItemEx( sURL, sCaption );
	
	return this;
}

function stGetHidPath( aItems )
{
	var sResult = "";
	
	for( var n = 0; n < aItems.length; ++n )
	{
		var rHelpItem = aItems[ n ];
		
		if( hid == rHelpItem.m_sURL )
		{
			sResult = "/" + hid + "/";
			break;
		}
		else
		if( rHelpItem.m_aSubItems.length > 0 )
		{
			sResult = stGetHidPath( rHelpItem.m_aSubItems );
			if( "" != sResult )
			{
				sResult = "/" + rHelpItem.m_sURL + "/" + sResult;
				break;
			}
		}
	}
	
	return sResult;
}

function isHelpItemExpanded( sHidPath, rItem )
{
	var s = "/" + rItem.m_sURL + "/";
	return -1 != String(sHidPath).indexOf( s );
}

//
// Generate tree control code
//
function stGenerateHelpTreeHTML( aItems, sHidPath, bExpanded )
{
	var sResult = "";
	
	for( var n = 0; n < aItems.length; ++n )
	{
		var rHelpItem = aItems[ n ];
		
		var sId = "" + rHelpItem.m_nID;
		
		sResult += "\n";
		
		if( 0 == rHelpItem.m_aSubItems.length )
		{
			//
			// add item
			//
			sResult +=
				"<table class=\"help_content_table\" border=0 cellspacing=0>\n" + 
				"<tr>\n" +
				"<td class=\"help_tree_node\"><img src=\"./help/images/no_items.gif\" /></td>\n";

			if( hid == rHelpItem.m_sURL )
			{
				sResult +=
					"<td class=\"h_link\"><b>" + rHelpItem.m_sCaption + "</b></td>\n";
			}
			else
			{
				sResult +=
					"<td class=\"h_link\"><a href=\"./help.asp?hid=" + rHelpItem.m_sURL + "\">" + rHelpItem.m_sCaption + "</a></td>\n";
			}

			sResult +=
				"</tr>\n" +
				"</table>";
		}
		else
		{
			//
			// add folder - initially collapsed
			//
			
			var sDisplay = "none";
			var sFolderImg = "folder_closed";
			if( bExpanded || isHelpItemExpanded( sHidPath, rHelpItem ) )
			{
				sDisplay = "block";
				sFolderImg = "folder_opened";
			}
			
			sResult +=
				"<table class=\"help_content_table\" border=0 cellspacing=0>\n" +
				"<tr>\n" +
				"<td class=\"folderItem help_tree_node\" onclick=\"javascript:openFolder( " + sId + " );\"><img id=\"folder_ptr_" + sId + "\" src=\"./help/images/" + sFolderImg + ".gif\" /></td>\n";
				
			if( hid == rHelpItem.m_sURL )
			{
				sResult +=
					"<td class=\"h_link\"><b>" + rHelpItem.m_sCaption + "</b></td>\n";
			}
			else
			{
				sResult +=
					"<td class=\"h_link\"><a href=\"./help.asp?hid=" + rHelpItem.m_sURL + "\">" + rHelpItem.m_sCaption + "</a></td>\n";
			}
				
			sResult +=
				"</tr>\n" +
				"</table>\n";

			sResult +=
				"<div id=\"folder_" + sId + "\" style=\"padding-left:20px;display:" + sDisplay + ";\">\n";
				
			sResult += stGenerateHelpTreeHTML( rHelpItem.m_aSubItems, sHidPath, bExpanded );
				
			sResult +=
				"</div>";
		}
	}
	
	return sResult;
}

function stGenerateHelpHTML( bExpanded )
{
	if( null == bExpanded )
	{
		bExpanded = true;
	}
	
	var sHidPath = new String( stGetHidPath( g_aHelpItems ) );
	
	return stGenerateHelpTreeHTML( g_aHelpItems, sHidPath, bExpanded );
}

//
// expand tree to show item we need
//

function makeItemVisible( aItems, sURL )
{
	var bResult = false;
	
	if( aItems.length > 0 )
	{
		var nIndex = 0;
		for( ; nIndex < aItems.length; ++nIndex )
		{
			var oItem = aItems[ nIndex ];
			
			if( oItem.m_sURL == sURL )
			{
				bResult = true;
				break;
			}
			if( makeItemVisible( oItem.m_aSubItems, sURL ) )
			{
				// make this object expanded
				openFolder( oItem.m_nID, true );
				bResult = true;
				break;
			}
		}
	}

	return bResult;
}



%>
