/////////////////////////////////////////////////////////////////////////////
// Function : frag_shure_site_map
// Comments : 
/////////////////////////////////////////////////////////////////////////////

// this version is heavily parameterised with "mainColor" and "hotColor" 
// just like the navigation fragments
// it might be better to leave it all to stylesheet edits...
// or - better still, leave it as server side stuff to generate the <style> defs 
// and the display code...

function nav_find_node(nodeId, node) {
    if (node.m_id == nodeId) {
        return node;
    }
    var subNode = null;
    for (var i = 0 ; i < node.m_subNodes.length ; i++) {
        subNode = nav_find_node(nodeId, node.m_subNodes[i]);
        if (subNode != null) break;
    }
    return subNode;
}

function frag_shure_site_map(strTextColor, strHoverColor, strFocusColor, strClassName, strShowHome, strShowFocus)
{
	this.m_TextColor  = '';
	this.m_HoverColor = '';
	this.m_FocusColor = '';
	this.m_ClassName  = 'frag_shure_site_map';
	
	this.m_ShowHome   = false;
	this.m_ShowFocus  = false;	
	
	this.m_NavPath    = g_navNode_Path;
		
	frag_shure_site_map.prototype.Display = frag_shure_site_map_Display;
	frag_shure_site_map.prototype.DisplayNode = frag_shure_site_map_DisplayNode;
	
	if (strTextColor != '')
		this.m_TextColor = strTextColor;
		
	if (strHoverColor != '')
		this.m_HoverColor = strHoverColor;

	if (strFocusColor != '')
		this.m_FocusColor = strFocusColor;

	if (strClassName != '')
		this.m_ClassName = strClassName;

	if (strShowHome == 'true')
		this.m_ShowHome = true;
		
	if (strShowFocus == 'true')
		this.m_ShowFocus = true;
}

function frag_shure_site_map_Display (node)
{
	document.write ('<div class="' + this.m_ClassName + '"');
	
	if (this.m_TextColor != '')
		document.write (' style="color: ' + this.m_TextColor + ';"');
		
	document.write ('>');

	this.DisplayNode(node);
	
	document.write ('</div>');
}

function frag_shure_site_map_DisplayNode(node)	
{
	var nodeColor = this.m_TextColor;
	var nodeClass = this.m_ClassName;
	var nodeLevel = node.m_level;
	
	if (nodeLevel > 6)
		nodeLevel = 6;

	if (node.m_level > 0 || this.m_ShowHome)
	{
		var ds = new Array();
		var di = 0;

		if (this.m_ShowFocus && this.m_NavPath.length > 0 && node.m_level < this.m_NavPath.length)
		{
			if (this.m_NavPath[node.m_level] == node.m_id)
			{
				if (node.m_level > 0 || (node.m_level == 0 && this.m_NavPath.length == 1))
				{
					bSelected = true;
					nodeColor = this.m_FocusColor;
					nodeClass += '-focus';
				}
			}
		}
	
		if (node.m_level > 0)
			nodeClass += '-' + nodeLevel;

		ds[di++] = '<div';
		ds[di++] = ' class="' + nodeClass + '"';
		ds[di++] = '>';
				
		ds[di++] = '<a href="' + node.m_href + '"';
		
		ds[di++] = ' class="' + nodeClass + '"';
		
		if (nodeColor != '')
		{
			ds[di++] = ' style="color: ' + nodeColor + ';"';
			
			if (this.m_HoverColor != '')
			{
				ds[di++] = ' onmouseover="this.style.color=\'' + this.m_HoverColor + '\'"';
				ds[di++] = ' onmouseout="this.style.color=\'' + nodeColor + '\'"';
			}
		}
		ds[di++] = '>'
		ds[di++] = node.m_label;
		ds[di++] = '</a></div>';
		
		document.write(ds.join(''));
	}
	
	// expand sub-levels (if any)
	for (var i = 0; i < node.m_subNodes.length; i++)
	{
		this.DisplayNode(node.m_subNodes[i]);
	}
}


