var bIsCompatibleBrowser = is_ie5_5up || is_gecko;
var rootNode = null;
var sActiveLinkGUIDPlaceholderName = "activeLinkGUID";
var sActiveLinkGUIDSentinel = "@";
var sPageHREF = location.href;
if((sASPActiveLinkGUID != "") && (sASPActiveLinkGUID != "0")) {
  var cQueryStringDelimiter = (sPageHREF.indexOf('?') > 0) ? '&' : '?';
  sPageHREF = sPageHREF + cQueryStringDelimiter + sActiveLinkGUIDPlaceholderName + "=" + sASPActiveLinkGUID + sActiveLinkGUIDSentinel;
 }
var sActiveLinkGUID = 0;
var iActiveLinkIndex = sPageHREF.indexOf(sActiveLinkGUIDPlaceholderName);
var bActiveLinkGUIDFound = (iActiveLinkIndex > 0) ? true : false;
if(bActiveLinkGUIDFound) {
  sPageHREF = sPageHREF.substr(iActiveLinkIndex,sPageHREF.length - iActiveLinkIndex);
  sActiveLinkGUID = sPageHREF.substr(sPageHREF.indexOf("=") + 1, sPageHREF.indexOf(sActiveLinkGUIDSentinel) - sPageHREF.indexOf("=") - 1);
 }
function getIcon(isLeaf, isActive) {
  var sIcon = "";
  if(isLeaf && isActive) {
   sIcon = sNodeIconLeafActive;
  }
  if(isLeaf && !isActive) {
   sIcon = sNodeIconLeafInactive;
  }
  if(!isLeaf && isActive) {
   sIcon = sNodeIconExpanded;
  }
  if(!isLeaf && !isActive) {
   sIcon = sNodeIconCollapsed;
  }
  return sIcon;
 }
function node(guid,labelText,labelImage,href,showIcon,childNodes) {
  
  this.guid	= guid;
  this.labelText = labelText;
  this.labelImage = labelImage;
  this.href = href;
  this.showIcon = showIcon;
  this.childNodes = childNodes;
  this.render = bIsCompatibleBrowser ? renderDynamic : renderStatic;
  this.isLeaf = (this.childNodes == null) ? true : false;
  this.hasChildNodes = !this.isLeaf;
  this.isActive = (this.guid == sActiveLinkGUID);
  this.icon = getIcon(this.isLeaf, this.isActive);
 }
var sNodeRendering = "";
function renderStatic(indent) {
var sNodeCSSClass = ((this.isLeaf) && (sActiveLinkGUID == this.guid)) ? sNodeCSSActive : sNodeCSSInactive;
var sNodeIcon = this.showIcon ? "<img src=\"" + this.icon + "\" border=\"0\" alt=\"" + this.labelText + "\" id=\"ico_" + this.guid + "\">" : "<img src=\"" + sNodeIconBullet + "\" border=\"0\" alt=\"" + this.labelText + "\" id=\"ico_" + this.guid + "\">";
//sNodeIcon += this.showIcon ? "<img src=\"" + sTransparentImageSrc + "\" border=\"0\" width=\"2\" height=\"1\">" : "";
var sNodeLabel = (this.labelImage == "") ? this.labelText : "<img src=\"" + this.labelImage + "\" border=\"0\" alt=\"" + this.labelText + "\">";
var sNodeHREF = "";
var sNodeHash = "#";
if((this.href == sNodeHash) || (this.href == "")) {
sNodeHREF = sNodeHash;
  } else {
   sNodeHREF = this.href;
  }
sNodeLabel = ((this.href == "") || (!this.isLeaf) && (!bForceShowNodeAsLink)) ? sNodeLabel : "<a href=\"" + sNodeHREF + "\">" + sNodeLabel + "</a>";
sNodeLabel = "<span class=\"" + sNodeCSSClass + "\" >" + sNodeLabel + "</span>";
sNodeRendering += "<table><tr><td width=20 align=right>" + sNodeIcon + "</td><td width=130 align=left>" + sNodeLabel + "</td></tr></table>";
var sNodeIndentImage = "<img src=\"" + sTransparentImageSrc + "\" height=\"" + iNodePaddingHeight + "\" width=\"" + iNodePaddingWidth + "\" align=\"left\">";
if(this.hasChildNodes) {
   sNodeRendering += "<table class=\"" + sNodeCSSTable + "\"><tr><td width=\"1\">" + sNodeIndentImage + "</td><td width=\"100%\">";
   buildNode(this.childNodes);
   sNodeRendering += "</td></tr></table>";
  }
 }
function renderDynamic(indent) {
var sNodeCSSClass = ((this.isLeaf) && (sActiveLinkGUID == this.guid)) ? sNodeCSSActive : sNodeCSSInactive;
var sClickEventCollapseCode = ((indent == 0) && bCollapseParentNodes) ? "collapseAllChildNodes(rootNode);" : "";
var sClickEventCode = this.isLeaf ? "" : " onClick=\"" + sClickEventCollapseCode + "nodeStateChanged('" + this.guid + "');\"";
var sNodeIcon = this.showIcon ? "<img src=\"" + this.icon + "\" border=\"0\" alt=\"" + this.labelText + "\" id=\"ico_" + this.guid + "\">" : "<img src=\"" + sNodeIconBullet + "\" border=\"0\" alt=\"" + this.labelText + "\" id=\"ico_" + this.guid + "\">";
//sNodeIcon += this.showIcon ? "<img src=\"" + sTransparentImageSrc + "\" border=\"0\" width=\"2\" height=\"1\">" : "";

var sNodeLabel = (this.labelImage == "") ? "<img src=\"" +
sTransparentImageSrc + "\" height=\"3\" border=\"0\" width=\"1\"><br>" +
this.labelText : "<img src=\"" + this.labelImage + "\" border=\"0\" alt=\""
+ this.labelText + "\">";

var sNodeHREF = "";
  var sNodeHash = "#";
  if((this.href == sNodeHash) || (this.href == "")) {
   sNodeHREF = sNodeHash;
  } else {
   sNodeHREF = this.href;
  }
sNodeLabel = ((this.href == "") || (!this.isLeaf) && (!bForceShowNodeAsLink)) ? sNodeLabel : "<a class=navigation href=\"" + sNodeHREF + "\">" + sNodeLabel + "</a>";
sNodeRendering += "<span id=\"" + this.guid + "\"><span" + sClickEventCode + " class=\"" + sNodeCSSClass + "\">" + "<TABLE width=100% height=10 cellpadding=0 cellspacing=0><TR><TD valign=top align=right style=padding-top:5px;>" + sNodeIcon + "</TD><TD width=143 height=20 valign=top>" + sNodeLabel + "</TD></TR></TABLE></span>";
var sNodeIndentImage = "<img src=\"" + sTransparentImageSrc + "\" height=\"" + iNodePaddingHeight + "\" width=\"" + iNodePaddingWidth + "\" align=\"left\">";
if(this.hasChildNodes) {
   sNodeRendering += "<span id='sub_" + this.guid + "' style=\"display:none;\">";
   sNodeRendering += sNodeIndentImage + "<table border=0><tr><td>";
   buildNode(this.childNodes);
   sNodeRendering += "</td></tr></table>";
   sNodeRendering += "</span>";
  }
  sNodeRendering += "</span>";
 }
var indent = -1;
function buildNode(node) {
  for(var i = 0; i < node.length; i++) {
   var thisNode = node[i];
   //indent++;
   thisNode.render(indent);
   //indent--;
  }
 }
function nodeStateChanged(nodeGUID,nodeStateExpanded,isLeaf) {
var sNodeIcon;
var nodeIcon = document.getElementById("ico_" + nodeGUID);
var childNodeSpan = document.getElementById("sub_" + nodeGUID);
if(nodeGUID == sActiveLinkGUID) {
   sNodeIcon = sNodeIconLeafActive;
  } else {
   sNodeIcon = sNodeIconLeafInactive;
  }
if(childNodeSpan != null) {
var childNodeSpanStateCurrent = (childNodeSpan.style.display == "block") ? true : false;
var childNodeSpanStateNew = !childNodeSpanStateCurrent;
if(nodeStateExpanded != undefined) {
    childNodeSpanStateNew = nodeStateExpanded;
   }
if(childNodeSpanStateNew == true) {
    childNodeSpan.style.display = "block";
    sNodeIcon = sNodeIconExpanded;
   } else {
    childNodeSpan.style.display = "none";
    sNodeIcon = sNodeIconCollapsed;
   }
  }
if(nodeIcon != null) {
   nodeIcon.src = sNodeIcon;
  }
 }
var nodeGUIDList = new Array();
var nodeGUIDListIndex = 0;
var bFound = false;
function searchNodeForChildNode(node,nodeGUID) {
for(var i = 0; i < node.length; i++) {
if(bFound == true) { break; }
var thisNode = node[i];
nodeGUIDList[nodeGUIDListIndex] = thisNode.guid;
if(thisNode.guid == nodeGUID) {
if(thisNode.isLeaf && nodeGUIDListIndex == 0) {
     nodeGUIDList = new Array();
     nodeGUIDList[0] = thisNode.guid;
    }
bFound = true;
    break;
   }
   nodeGUIDListIndex++;
if(thisNode.hasChildNodes) {
    searchNodeForChildNode(thisNode.childNodes,nodeGUID);
   }
nodeGUIDListIndex--;
  }
 }
function changeNodeStateBottomUp(node,nodeGUID) {
searchNodeForChildNode(node,nodeGUID);
if(!bFound) {return};
for(var i = 0; i < nodeGUIDList.length; i++) {
   if(i == nodeGUIDList.length-1) {
nodeStateChanged(nodeGUIDList[i],null,true);
   } else {
nodeStateChanged(nodeGUIDList[i]);
   }
  }
 }
function collapseAllChildNodes(node) {
for(var i = 0; i < node.length; i++) {
var thisNode = node[i];
if(thisNode.hasChildNodes) {
nodeStateChanged(thisNode.guid,false);
collapseAllChildNodes(thisNode.childNodes);
   }
  }
 }
function expandAllChildNodes(node) {
for(var i = 0; i < node.length; i++) {
var thisNode = node[i];
if(thisNode.hasChildNodes) {
nodeStateChanged(thisNode.guid,true);
expandAllChildNodes(thisNode.childNodes);
   }
  }
 }
function displayRootNode(node) {
  buildNode(node);
  document.write(sNodeRendering);
  if(bIsCompatibleBrowser && bActiveLinkGUIDFound) {
   changeNodeStateBottomUp(node,sActiveLinkGUID);
  }
 }