// THIS JAVASCRIPT FILE SUPPORTS IE4, AND NS4 IN ADDITION TO IE5 AND NS6. IN DOING SO,
// WE HAD TO COMMENT OUT THE TRY-CATCH BLOCKS TO MAKE THINGS WORKING IN IE4 AND NS4.


// variable declaration

var currentDocID;
var currentDocParentID;
var ImageList = new Array();
var line = 1;
var space = 0;
var docTimeoutId;
var displayDocAfterInterval = 3000; //in milisecs.

function objNode(ID,ParentID,Text,Link,isLeaf,altText)
{
	//alert("objNode");

	this.ID = ID;
	this.ParentID = ParentID;
	this.Text = Text;
	this.Link = Link;
	this.isLeaf = isLeaf;
	this.altText = altText;
	this.isExpanded = 0;
	this.isDisplayed = 0;
	this.isSelected = 0;
	this.isTerminal = 0;
}

function RenderTree(objContainer,ParentID,varLevel)
{
	//alert("Render Tree");
	var objImg = document.createElement("IMG");
	var arrTreeDataSet = GetChildNode(ParentID);
	//alert("Render Tree");

	if (ParentID == 0)	
	{

		var Level = 0;

	}	
	else
	{
	  	var Level = varLevel + 1;
	}
	
	var objDir = document.createElement("DIV");
	
	//try	{
	//alert(arrTreeDataSet.length);

	for( var i = 0; i < arrTreeDataSet.length ; i++ )
	{	
		objDir.id = "DIR_" + ParentID;



		if (i == (arrTreeDataSet.length - 1))
		{
			
			ImageList[Level] = space;
			arrTreeDataSet[i].isTerminal = 1;
		}
		else
		{
			ImageList[Level] = line;
		}
		var objDiv = document.createElement("DIV");
		objDiv.id = "DIV_" + arrTreeDataSet[i].ParentID + "_" + arrTreeDataSet[i].ID;
		AddNode(objDiv,arrTreeDataSet[i],Level);
		RenderTree(objDiv,arrTreeDataSet[i].ID,Level);
		objDiv.style.width = "500";
		/* if ( navigator.appName == "Netscape" )
		{
			objDiv.addEventListener("mouseout",NormalColor,false);
		}
		else
		{
			objDiv.attachEvent("onmouseout",NormalColor);
		} */
		objDir.appendChild(objDiv);
		if (arrTreeDataSet[i].ParentID == 0 || arrTreeDataSet[i].isExpanded == 1 || arrTreeDataSet[i].isDisplayed == 1) 
		{
		  	arrTreeDataSet[i].isDisplayed = 1;
			objDiv.style.visiblility = "visible";
			objDiv.style.display = "block";
		}
		else
		{
		 	arrTreeDataSet[i].isDisplayed = 0;
			objDiv.style.visibility = "hidden";
			objDiv.style.display = "none";
		}
	}
	//}catch(e)	{
	//	alert(e);
	//}
	objContainer.appendChild(objDir);
	if (ParentID == 0)
	{
		
	  	document.write ('<p align="left"><a href="http://www.netChalk.com" target="_blank">'
	  	             + '<img src="../tree/images/netChalk.gif" border="0"></a></p>'); 
	}
}

function GetChildNode(ParentID)
{
	//alert("GetChildNode");
	var arrTreeDataSet = new Array();
	for(var i = 0; i < arrNode.length ; i++ )
	{
		if( arrNode[i].ParentID == ParentID)
			arrTreeDataSet[arrTreeDataSet.length] = arrNode[i];
	}
	return arrTreeDataSet;
}

function AddNode(objContainer,objNode,varLevel)
{
	//alert("AddNode");
	var objAnc = document.createElement("A");
	var objText = document.createTextNode(objNode.Text);
	var objImg = document.createElement("IMG");
	var objDiv = document.createElement("DIV");
	var srcID = objNode.ID;
	var arrTreeDataSet = GetChildNode(srcID);
	
	if( ! objNode.isLeaf )
	{
		//alert(objNode.ID);
		if (objNode.isTerminal )
		{
			if (arrTreeDataSet.length > 0 ) // has subnodes 
			{
				objImg.src = "../tree/images/Plus.gif";					
			}
			else
			{
				objImg.src = "../tree/images/cross1.gif";
			}
		}	
		else
		{
			if (arrTreeDataSet.length > 0 ) // has subnodes 
			{
				//alert(arrTreeDataSet.length);
				objImg.src = "../tree/images/Plus.Gif";					
				//alert(objImg.src);
			}	
			else
			{			
				objImg.src = "../tree/images/expand.gif";
			}
		}
	}
	else
	{
		objImg.src = "../tree/images/Leaf.gif";
		objImg.alt = objNode.altText;
	}
	if ( navigator.appName == "Netscape" )
	{
		if( ! objNode.isLeaf )
		{
			objImg.addEventListener("click",ShowHide,false);
			objAnc.addEventListener("click",ShowHide,false);
		}
		else
		{
			objImg.addEventListener("click",Navigate,false);
			objAnc.addEventListener("click",Navigate,false);
		}
		/* objAnc.addEventListener("mouseover",MouseOverTextColor,false);
		objAnc.addEventListener("mouseout",NormalColor,false);
		objImg.addEventListener("mouseover",MouseOverTextColor,false);
		objImg.addEventListener("mouseout",NormalColor,false); */
		objAnc.style.cursor = "pointer";
		objImg.style.cursor = "pointer";
	}
	else
	{
		if( ! objNode.isLeaf )
		{
			objImg.attachEvent("onclick",ShowHide);
			objAnc.attachEvent("onclick",ShowHide);
		}
		else
		{
			objImg.attachEvent("onclick",Navigate);
			objAnc.attachEvent("onclick",Navigate);
		}	
		/* Anc.attachEvent("onmouseover",MouseOverTextColor);
		//objAnc.attachEvent("onmouseout",NormalColor);
		objImg.attachEvent("onmouseover",MouseOverTextColor);
		//objImg.attachEvent("onmouseout",NormalColor); */
		objAnc.style.cursor = "hand";
		objImg.style.cursor = "hand";
	}
	objImg.id = "IMG_" + objNode.ParentID + "_" + objNode.ID;

	objImg.setAttribute("PARENTID",parseInt(objNode.ParentID));
	objImg.setAttribute("ISDISPLAYED",parseInt(objNode.isDisplayed));
	objImg.setAttribute("ISEXPANDED",parseInt(objNode.isExpanded));
	objImg.setAttribute("LINK",objNode.Link);
	objImg.className = "ImgIndent";
	objAnc.id = "ANC_" + objNode.ParentID + "_" + objNode.ID;
	objAnc.setAttribute("LINK",objNode.Link);
	objAnc.setAttribute("SELECTED",objNode.isSelected);
	objAnc.setAttribute("ISEXPANDED",parseInt(objNode.isExpanded));
	objAnc.setAttribute("ISLEAF",parseInt(objNode.isLeaf));	
	objDiv.id = "IND_" + objNode.ParentID + "_" + objNode.ID; //Inner div element
	objAnc.cursor = "hand";
	objAnc.className = "NormalText";
	for (j=0;j<varLevel;j++)
	{
		var objParentImg = document.createElement("IMG");
		if (ImageList[j] == space)
		  	objParentImg.src = "../tree/images/spacer.gif";
		else
		  	objParentImg.src = "../tree/images/line.gif";
		objParentImg.className = "ImgIndent";
	  	objDiv.appendChild(objParentImg);
	}
	objDiv.appendChild(objImg);
	objAnc.appendChild(objText);
	objDiv.appendChild(objAnc);
	objContainer.appendChild(objDiv);
}

function DeselectAllNodes()
{
	//alert("DeselectAllNodes");
	var arrAnc = document.getElementsByTagName("A");
	for(var i = 0 ; i < arrAnc.length ; i++ )
	{
		if( arrAnc[i].id.split("_")[0] == "ANC" ) 
		{
			arrAnc[i].className = "NormalText";
			arrAnc[i].setAttribute("SELECTED",0);
		}
	}	
}


function Navigate(event)
{
	//alert("Navigate");
	DeselectAllNodes();
	var objSrc;
	if ( navigator.appName == "Netscape" )
	{
		objSrc = event.currentTarget;
	}
	else
	{
		objSrc = event.srcElement;
	}
	objSrc.className = "SelectedText";
	objSrc.setAttribute("SELECTED",1);
	var srcID = objSrc.getAttribute("ID");
	var nodeID = srcID.split("_")[1];
	setExpandedFlagForNodes(nodeID,true);
	showExpandedNodes();
	parent.frames[2].location.href = objSrc.getAttribute("Link");
	//try	{
		currentDocID = objSrc.getAttribute("ID").split("_")[2];
	//}catch(e)	{
	//	alert(e);
	//}
}

function NormalColor(event)
{
	//alert("NormalColor");
	var objSrc;
	if ( navigator.appName == "Netscape" )
	{
		objSrc = event.currentTarget;
	}
	else
	{
		objSrc = event.srcElement;
	}
	var srcID = objSrc.getAttribute("ID");
	
	//suppressed because it was causing problems in netscape during navigation.
	if (srcID.substring(0,3) != "DIV" && srcID.substring(0,3) != "IND") 
	{
		//if (srcID.substring(0,3) == "ANC")
		//{
		//	alert(objSrc.offsetLeft);
		//}
		if (srcID != "")
		{
			var objAnc = document.getElementById("ANC" + srcID.substr(3));
			if (parseInt(objAnc.getAttribute("ISLEAF")))
		  	{	
				clearTimeout(docTimeoutId);
			}
			if ( parseInt(objAnc.getAttribute("SELECTED")) == 0 )
			{
				objAnc.className = "NormalText";
			}
		  	if (srcID.split("_")[0]=="DIV")
		  	{
				setDisplayedFlagForNodes(srcID.split("_")[2],0);
				if (!parseInt(objAnc.getAttribute("ISLEAF")))
				{
			  		ExpandCollapseMO(0);
				}
		  	}
		}
	}
}

function MouseOverTextColor(event)
{
	//alert("MouseOverTextColor");
  	clearDisplay();
	var objSrc;
	if (navigator.appName == "Netscape" )
	{
		objSrc = event.currentTarget;
	}
	else
	{
		objSrc = event.srcElement;
	}
	var srcID = objSrc.getAttribute("ID");
	
	//suppressed because it was causing problems in netscape during navigation.
	if (srcID.substring(0,3) != "DIV" && srcID.substring(0,3) != "IND") 
	{
		//if (srcID.substring(0,3) == "ANC")
		//{
		//	alert(objSrc.offsetLeft);
		//}
		//scrollTo(objSrc.offsetLeft-20, objSrc.offsetTop);
		var objAnc = document.getElementById("ANC" + srcID.substr(3));
		if (parseInt(objAnc.getAttribute("SELECTED")) == 0)
		{
			if ( !parseInt(objAnc.getAttribute("ISLEAF")))
			{
				objAnc.className = "MouseOverText";
			}
			else
			{
				objAnc.className = "MouseOverDocText";
			}
		}
		setDisplayedFlagForNodes(srcID.split("_")[2],1);
		ExpandCollapseMO(0);
		if (parseInt(objAnc.getAttribute("ISLEAF")))
		{	
			docTimeoutId = setTimeout('showDoc("' + srcID + '");',displayDocAfterInterval);
	  	}
	}
}

function showDoc(srcID)
{
//  if (docMouseOverId == srcID)
//  {
	//alert("showDoc");
	  DeselectAllNodes();
	  var objSrc = document.getElementById(srcID);
	  objSrc.className = "SelectedText";
	  objSrc.setAttribute("SELECTED",1);
	  var srcID = objSrc.getAttribute("ID");
	  var nodeID = srcID.split("_")[1];
	  setExpandedFlagForNodes(nodeID,true);
	  showExpandedNodes();
	  parent.frames[2].location.href = objSrc.getAttribute("Link");
	  currentDocID = objSrc.getAttribute("ID").split("_")[2];
//  }
}


function CloseCurrDocIfChild(objSrc)	{
	//try	{
	//alert("CloseCurrDocIfChild");
		var srcID = objSrc.getAttribute("ID");
		
		var arrTreeDataSet = GetChildNode(srcID.split("_")[2]);
		
		for(var i=0; i< arrTreeDataSet.length; i++ )
		{
			if(arrTreeDataSet[i].isLeaf)	{
				if(arrTreeDataSet[i].ID == currentDocID)	{
					parent.frames[2].location.href = "DefaultPage.asp";
					return 1;
				}
			}else	{
				if(CloseCurrDocIfChild(document.getElementById("ANC_" + arrTreeDataSet[i].ParentID + "_" + arrTreeDataSet[i].ID)) == 1)
					return 1;
			}
		}
		return 0;
	//}catch(e)	{
	//	alert(e);
	//}
}

function OnMouseClick(objSrc)	{
	//try
	//{
	//alert("OnMouseClick");
		var srcID = objSrc.getAttribute("ID");
		//alert(srcID);
		var nodeID = srcID.split("_")[2];
		setExpandedFlagForNodes(nodeID);
	
		showExpandedNodes();

		//var objSrc = document.getElementById(srcID);
		//alert (parseInt(objSrc.getAttribute("ISEXPANDED")));
		var arrTreeDataSet = GetChildNode(nodeID);
		// following code displays the first child document if the node is being expanded; if the node is being
		// closed then the default page is displayed in case the document already displayed is on of its children
		// (it need not be its immediate child, it can be one down its children tree. Also when a node collapses 
		// with the current document also being replaced with default page, the program checks to see if the parent
		// category contains any document, if yes, that document is displayed.
		
		if(parseInt(objSrc.getAttribute("ISEXPANDED")) )	
		{
			//alert(srcID);
			//alert(
			//if (srcID.split("_")[0] = "IMG")
			//0{

				if (arrTreeDataSet.length > 0 )
				{

					var IMGID = "IMG_"+srcID.split("_")[1]+"_"+srcID.split("_")[2];
					var IMG = document.getElementById(IMGID);
					IMG.src = "../tree/images/Minus.gif";
				}
			//}
			
			for(var i=0; i< arrTreeDataSet.length; i++ )	
			{
				if(arrTreeDataSet[i].isLeaf)	
				{
					parent.frames[2].location.href = arrTreeDataSet[i].Link;
					currentDocID = arrTreeDataSet[i].ID;
					//try	{
						DeselectAllNodes();
						document.getElementById("ANC_" + arrTreeDataSet[i].ParentID + "_" + arrTreeDataSet[i].ID).className = "SelectedText";
						document.getElementById("ANC_" + arrTreeDataSet[i].ParentID + "_" + arrTreeDataSet[i].ID).setAttribute("SELECTED",1);
					//}catch(e)	{
					//	alert(e);
					//}
					break;
				}
			}
		}
		else	
		{
			if (arrTreeDataSet.length > 0 )
			{
				var IMGID = "IMG_"+srcID.split("_")[1]+"_"+srcID.split("_")[2] 
				var IMG = document.getElementById(IMGID);
				IMG.src = "../tree/images/Plus.Gif";
			}
			if(CloseCurrDocIfChild(objSrc) == 1)	
			{
				DeselectAllNodes();
				if(srcID.split("_")[1] != 0)	
				{
					var arrChildNodes = GetChildNode(srcID.split("_")[1]);
					
					for(var i=0; i< arrChildNodes.length; ++i)	
					{
						if(arrChildNodes[i].isLeaf)	
						{
							parent.frames[2].location.href = arrChildNodes[i].Link;
							currentDocID = arrChildNodes[i].ID;
							//try	{
								document.getElementById("ANC_" + arrChildNodes[i].ParentID + "_" + arrChildNodes[i].ID).className = "SelectedText";
								document.getElementById("ANC_" + arrChildNodes[i].ParentID + "_" + arrChildNodes[i].ID).setAttribute("SELECTED",1);
							//}catch(e)	{
							//	alert(e);
							//}
							break;							
						}
					}
				}
			}
		}
	//}
	//catch(e)
	//{
	//	alert(e);
	//}	
}

function ShowHide(event)
{
	//alert("ShowHide");
	//try
	//{
		var objSrc;
		if ( navigator.appName == "Netscape" )
		{
			objSrc = event.currentTarget;
		}
		else
		{
			objSrc = event.srcElement;
		}	
		OnMouseClick(objSrc);
	//}
	//catch(e)
	//{
	//	alert(e);
	//}
}

function ExpandCollapseMO(srcID,parentID)
{
	//alert("ExpandCollapseMO");
	//try
	//{
		var arrTreeDataSet = GetChildNode(srcID);
		//var objImg = document.getElementById("IMG" + srcID.substr(3)); // Index of 1st char 0
		for(var i=0; i< arrTreeDataSet.length; i++ )
		{	
		  var objNode = arrTreeDataSet[i];
			var strID = objNode.ID;
			if (srcID!=0) {
			  var objDiv = document.getElementById("DIV_" + srcID + "_" + strID);
			  var objImg = document.getElementById("IMG_" + parentID + "_" + srcID);
			  if (!parseInt(objImg.getAttribute("ISEXPANDED")))
			  { 
			  	if(objNode.isDisplayed)	{
			  		objDiv.style.visibility = "visible";
			  		objDiv.style.display = "block";					
			  	}
			  	else	{
			  		objDiv.style.visibility = "hidden";
			  		objDiv.style.display = "none";					
			  	}
			  }
			}
			ExpandCollapseMO(strID,srcID)
		}
		/*if (!parseInt(objImg.getAttribute("ISEXPANDED")))
		{ 
			if(objNode.isDisplayed)	{
				//objImg.src = "../tree/images/expand.gif";
			}
			else	{
				//objImg.src = "../tree/images/collapse.gif";
			}
		}*/		
	//}
	//catch(e)
	//{
	//	alert(e);
	//}
}

function DisplayParent(srcID, DocID)
{
	//alert("DisplayParent");
	for(var i = 0; i < arrNode.length; i++ )
	{
		if (arrNode[i].ID == srcID)
		{
			var arrChild = GetChildNode(arrNode[i].ID);
			for(var j = 0; j < arrChild.length ; ++j)	{
				arrChild[j].isDisplayed = 1;
				if(arrChild[j].altText == DocID)	{
					currentDocID = arrChild[j].ID;
					currentDocParentID = arrNode[i].ID;
				}
			}
			arrNode[i].isDisplayed = 1;
			arrNode[i].isExpanded = 1;
			if (arrNode[i].ParentID != 0)
			{
				DisplayParent (arrNode[i].ParentID);
			}
			break;
		}
	}
}

function setDisplayedFlagForNodes(srcID, isDisplayed)
{
	//alert("setDisplayedFlagForNodes");
	for(var i = 0; i < arrNode.length; i++ )
	{
		if (arrNode[i].ID == srcID)
		{
			var arrChild = GetChildNode(arrNode[i].ID);
			for(var j = 0; j < arrChild.length ; ++j)	{
				arrChild[j].isDisplayed = isDisplayed;
			}
			if (arrNode[i].ParentID != 0)
			{
			  arrNode[i].isDisplayed = isDisplayed;
				setDisplayedFlagForNodes(arrNode[i].ParentID, isDisplayed);
			}
			break;
		}
	}
}

function clearDisplay()
{
	//alert("clearDisplay");
	for(var i = 0; i < arrNode.length; i++ )
	{
	  if (arrNode[i].ParentID != 0)
		{
		  arrNode[i].isDisplayed = 0;
		}		
	}
}

function setExpandedFlagForNodes(srcID,doExpand)
{
	//alert("setExpandedFlagForNodes");
	for(var i = 0; i < arrNode.length; i++ )
	{
		if (arrNode[i].ID == srcID)
		{
			var arrChild = GetChildNode(arrNode[i].ID);
			//for(var j = 0; j < arrChild.length ; ++j)	{
			//	arrChild[j].isExpanded = isExpanded;
			//}
			if (doExpand)
			  arrNode[i].isExpanded = doExpand;
			else
			  arrNode[i].isExpanded = !(arrNode[i].isExpanded);
			if ((arrNode[i].ParentID != 0) && (arrNode[i].isExpanded))
			  setExpandedFlagForNodes(arrNode[i].ParentID,true);
			break;
		}
	}
}

function showExpandedNodes()
{
	//alert("showExpandedNodes");
	for(var i=0; i< arrNode.length; i++ )
	{
		var strID = arrNode[i].ID;
		var parentID = arrNode[i].ParentID;
		var arrTreeDataSet = GetChildNode(strID);
		for(var j = 0; j < arrTreeDataSet.length ; j++)	
		{
		  var objDiv = document.getElementById("DIV_" + strID + "_" + arrTreeDataSet[j].ID);
			if (!(arrNode[i].isExpanded))
			{ 
			  objDiv.style.visibility = "hidden";
			  objDiv.style.display = "none";
			}
			else
		  	{
		  		objDiv.style.visibility = "visible";
		  		objDiv.style.display = "block";
	    	}
		}
		var objImg = document.getElementById("IMG_" + parentID + "_" + strID); // Index of 1st char 0
		var objAnc = document.getElementById("ANC_" + parentID + "_" + strID);
		
		if (!(arrNode[i].isExpanded ))
		{ 
			//objImg.src = "../tree/images/collapse.gif";
			objImg.setAttribute("ISEXPANDED",0);
			objAnc.setAttribute("ISEXPANDED",0);
		}else
		{
			//objImg.src = "../tree/images/expand.gif";
			objImg.setAttribute("ISEXPANDED",1);
			objAnc.setAttribute("ISEXPANDED",1);
		}
	}
}
