function wsTCtrl()
{
// Methods 
this.initializeDocument= initializeDocument;
this.InsItem= InsItem;
this.GenerateCode= GenerateCode;
this.ToggleTree= ToggleTree;
this.ResetItem= ResetItem;
this.ExpandAllTree= ExpandAllTree;
this.RecudeAllTree= RecudeAllTree;
// constant 
var nCount= 0;
var LastRootItem= 0;
var ImgDir= "./Images/";
var ItemImg= "./Images/folder.gif";
// variable
var Doc;
var browserVersion;
var id= "";
var Item= new Array();

function initializeDocument() 
{ 
if (document.all) { //IE4
Doc = document.all;
browserVersion = 1;  
}else if (document.layers) { //NS4 
Doc = document.layers;
browserVersion = 2; 
}else if(document.getElementById) {//NS6
Doc = document;
browserVersion = 3;
}else {//other 
Doc = document.all;
browserVersion = 0; 
}
} 

function InsItem(parentItem, description, hreference, iIcon, target)
{
var iDepth = 0;
var iLength = Item.length;
if(parentItem == null) {
parentItem = iLength;
}
if(Item[parentItem] != null) {
iDepth = Item[parentItem][3];
iDepth++;
}
Item[iLength]= new Array();
Item[iLength][0]= parentItem;
Item[iLength][1]= description;
Item[iLength][2]= hreference;
Item[iLength][3]= iDepth;
Item[iLength][4]= true;
Item[iLength][5]= iIcon;
Item[iLength][6]= target;
nCount++;
return iLength;
}

function GenerateCode()
{
var NextItemDepth= 0;
var CurItemDepth= 0;
document.write("<table border='0' cellpadding='0' cellspacing='0'>");
for(var i=0; i<nCount; i++) {
	document.write("<tr id=wsT_" + i + "><td><table border='0' cellpadding='0' cellspacing='0'><tr><td>" + GetSpace(i, Item[i][3], false) + "</td><td><a href='#' onfocus='this.blur()' onclick=javascript:ToggleTree('" + i + "','" + GetChildItems(i) + "')>");
			var MyNodeImg;
			var TempNodeImg;
			if(GetItemCount(i, Item[i][4]) == 1) { 
				if(Item.length == 1) { 
					TempNodeImg = "r.gif"; 
					}
				else { 
					TempNodeImg = "L.gif";
					 }
			} else {
				if(i == 0) { 
					TempNodeImg = "f.gif";
					}
				else { 
					TempNodeImg = "T.gif";
					}
			}
		MyNodeImg= Item[i][5]+ ".gif"; 
		document.write("<img id=wsTNodeImg_" + i + " src='" + ImgDir + TempNodeImg + "' border='0'></a></td><td><img id=wsTItemImg_" + i + " src='" + ImgDir + MyNodeImg + "' border='0'></td><td>&nbsp;");
		if(Item[i][2] != "" && Item[i][2] != null) {
				document.write("<a href='" + Item[i][2] + "'");
				if(Item[i][6] != "undefined" && Item[i][6] != null && Item[i][6] != "") {
					document.write(" target='" + Item[i][6] + "'");
				}
				document.write(">");
			}		
		document.write(Item[i][1]);
		if(Item[i][2] != "" && Item[i][2] != null) {
		document.write("</a>");
		}
	document.write("</td></tr></table></td></tr>");
	}
document.write("</table>");
LastRootItem = GetRootItem(nCount-1);
}

function GetSpace(CurItem, Depth, bBlank)
{
var Space = "";
for(var i=0; i<Depth; i++) {
if(bBlank == false) {
if(bHaveSameDepthChildItem(CurItem, i)) {
Space += "<img src=" + ImgDir + "i.gif>";
}else {
Space += "<img src=" + ImgDir + "white.gif>";
}
}else {
Space += "<img src=" + ImgDir + "white.gif>";
}
}
return Space;
}

function bHaveSameDepthChildItem(CurItem, Depth)
{
if(CurItem < 0 || CurItem > Item.length) { return false; }
var PItem= Item[CurItem][0];
var RootItem= GetRootItemEx(PItem, Depth);
if(GetItemCount(RootItem, Depth) >= 2) {
return true;
}else {
return false;
}
}

function GetChildItems(iNode)
{
var ChildItems= "";
var CurDepth= Item[iNode][3];
for(var i=iNode+1; i<Item.length; i++) {
if(CurDepth >= Item[i][3]) { return ChildItems; }
if(Item[i][3] > Item[iNode][3]) {
ChildItems += i + ";"
}
}
return ChildItems;
}

function ToggleTree(CurNode, NodeItem)
{
if(NodeItem == "") { return; }
var NodeStatus;
var arr= new Array();
arr = NodeItem.split(";");
if(Item[CurNode][4] == true) {
ToggleDisplayLayer(arr, CurNode, "none");
Item[CurNode][4] = false;
}else {
ToggleDisplayLayer(arr, CurNode, "");
Item[CurNode][4] = true;
ResetItem(CurNode);
}
}

function ToggleDisplayLayer(ItemArray, CurNode, Display)
{
var NodeImg;
var ItemImg;
var bShow;
if(Display == "none") { bShow = false; }
else{ bShow = true; }
if(!bShow) {
ItemImg = ImgDir + "folder.gif";
if(GetItemCount(CurNode,Item[CurNode][3]) == 1) {
if(GetItemCount(GetRootItemEx(CurNode, 0),0) == 1 && CurNode == 0) {
NodeImg = ImgDir + "R+.gif"; 
}else {
NodeImg = ImgDir + "L+.gif"; 
}
}else {
if(CurNode == 0) {
NodeImg = ImgDir + "f+.gif"; 
}else {
NodeImg = ImgDir + "T+.gif"; 
}
}
}
else {
ItemImg = ImgDir + "folderopen.gif";
if(GetItemCount(CurNode,Item[CurNode][3]) == 1) {
if(GetItemCount(GetRootItemEx(CurNode, 0),0) == 1 && CurNode == 0) {
NodeImg = ImgDir + "R-.gif"; 
}else {
NodeImg = ImgDir + "L-.gif"; 
}
}else {
if(CurNode == 0) {
NodeImg = ImgDir + "f-.gif"; 
}else {
NodeImg = ImgDir + "T-.gif"; 
}
}
}
for(var i=0; i<ItemArray.length-1; i++) {
SetTreeVisible(ItemArray[i], bShow);
SetImgVisible(CurNode, NodeImg, 1);
SetImgVisible(CurNode, ItemImg, 2);
}
}

function ResetItem(iNode)
{
for(var i=iNode; i<Item.length; i++) {
if(!Item[i][4]) {
var arr = new Array();
arr = GetChildItems(i).split(";");
for(var j=0; j<arr.length-1; j++) {
SetTreeVisible(arr[j], false);
}
}
}
}

function SetTreeVisible(iItem, bShow)
{
if(!bShow) {
if(browserVersion == 1) {
Doc["wsT_" + iItem].style.display = "none";
}else if(browserVersion == 3) {
document.getElementById("wsT_" + iItem).style.display = "none";
}else {
Doc["wsT_" + iItem].visibility = "hiden";
}
}else {
if(browserVersion == 1) {
Doc["wsT_" + iItem].style.display = "block";
}else if(browserVersion == 3) {
Doc.getElementById("wsT_" + iItem).style.display = "";
}else {
Doc["wsT_" + iItem].visibility = "show";
}
}
}

function SetImgVisible(iItem, ImgName, iType)
{
var ItemName;
switch(iType) {
case 1:ItemName = "wsTNodeImg_"; break;
case 2:ItemName = "wsTItemImg_"; break;
default:ItemName = "wsTItemImg_"; break;
}
if(browserVersion == 3) {
Doc.getElementById(ItemName + iItem).src = ImgName;
}else {
Doc[ItemName + iItem].src = ImgName;
}
}

function ExpandAllTree()
{
for(var i=Item.length-1; i>=0; i--) {
Item[i][4] = false;
ToggleTree(i, GetChildItems(i));
}
}

function RecudeAllTree()
{
for(var i=Item.length-1; i>=0; i--) {
Item[i][4] = true;
ToggleTree(i, GetChildItems(i));
}
}

function GetRootItem(ChildItem)
{
if(Item[ChildItem][3] == 0) {
return ChildItem;
}else {
return GetRootItem(Item[ChildItem][0]);
}
}

function GetRootItemEx(ChildItem, Depth)
{
if(Item[ChildItem][3] == Depth) {
return ChildItem;
}else {
return GetRootItem(Item[ChildItem][0], Depth);
}
}

function GetItemCount(CurItem, Depth)
{
var nRet = 0;
for(var i=CurItem; i<Item.length; i++) {
if(Item[i][3] < Depth) break;
if(Item[i][3] == Depth) {
nRet++;
}
}
return nRet;
}
}

function ToggleTree(CurNode, NodeItem)
{
m_wsTCtrl.ToggleTree(CurNode, NodeItem);
}

function Recude()
{
m_wsTCtrl.RecudeAllTree();
}
	
function Expand() 
{
m_wsTCtrl.ExpandAllTree();
}


