﻿var OpenAll = false;
document.write("<style type='text/css'>.hideme{display:none;} .showme{display:block;} .DXSOFTMenu td{font-size:12px} </style>");
function MenuTree(treeNo)
{
	this.iconfolder = "/menutree/";
	this.treeNodes = new Array();
	this.treeStatus = new Array();
	this.parentCount=0;
	this.showhideit = function(n,i,cf,hide)
	{
		var itemNo = n+'_'+i;
		var showfolder=document.images["openedfolderimage"+itemNo];
		var hidefolder=document.images["closedfolderimage"+itemNo];
		var subfiles=document.getElementById("item"+itemNo);
		var folderimg=document.images["folderimage"+itemNo];
		if(subfiles.className=="hideme")
		{
			hidefolder.className="hideme";
			showfolder.className="showme";
			subfiles.className="showme";
			if (cf){folderimg.src=this.iconfolder + "/folderopen.gif";}
		}
		else
		{
		    if(hide)
		    {
			   showfolder.className="hideme";
			   hidefolder.className="showme";
			   subfiles.className="hideme";
			if (cf){folderimg.src=this.iconfolder + "/folderclose.gif";}
			}
		}

	}
  
	this.addtree = function(sublen,text,url,target)
	{
		var node = { 'l':sublen,'t':text,'u':url,'tg':target,'c':0 }
		this.treeNodes.push(node);
	}

	this.createtree = function()
	{
		var lastLen = 0;
		var newNodes = new Array();
		var endNode = new Array();
		var openedNodes = new Array();
		for(var i=this.treeNodes.length-1;i>=0;i--)
		{
			var node = this.treeNodes[i];
			var l = node['l'];
			this.treeStatus[i] = 0;
			if(l<lastLen)
			{
				//有子目录
				endNode[lastLen] = 0;
				this.treeStatus[i] += 1;
			}
			if(!endNode[l])
			{
				//结束位置
				endNode[l] = 1;
				this.treeStatus[i] += 2;
			}
			lastLen = l;
		}
		var echo="<div class='DXSOFTMenu'>";
		for(i=0;i<this.treeNodes.length;i++)
		{
			var node = this.treeNodes[i];
			var l = node['l'];
			var newtext = node['t'];
			var havechild = this.treeStatus[i] % 2;

			if( this.treeStatus[i]==2 || this.treeStatus[i]==3 )
			{
				openedNodes[l]=0;
				var barstatus=2;
			}
			else
			{
				openedNodes[l]=1;
				var barstatus=1;		 
			}
			var li=i-1;
			var showme = (i==0)?0:i==1;
			var openfold = (i==0);
			if(i>0&&(this.treeStatus[li]==1||this.treeStatus[li]==3))
			{
				echo += "<div id='item"+treeNo+'_'+li+"' class='"+(showme?"showme":"hideme")+"'>";
			}
			echo += "<table border='0' cellspacing='0' cellpadding='0' onselectstart='return false;'><tr>\n";
			for(j=0;j<l;j++)
			{
				echo += "<td width='20' valign=bottom><img src='"+this.iconfolder+(openedNodes[j]?"bar3.gif":"spacer.gif")+"' width='20' height='20'></td>\n";
			}

			if(havechild)
			{
				var folderimg= this.iconfolder + "/folderclose.gif";
				if (openfold){folderimg= this.iconfolder + "/folderopen.gif";}
				var menubarNo = 2;
				if(i==0) menubarNo = 1;
				else if(this.treeStatus[i]>=2) menubarNo = 3;
				var clicktoshowhide=" onclick='var m=new MenuTree();m.showhideit(\""+treeNo+"\","+i+",true,true)' style='cursor:pointer;' ";

				echo += "<td width='20' valign=bottom "+clicktoshowhide+"><img name='openedfolderimage"+treeNo+"_"+i+"' src='"+this.iconfolder+"menubar_off_"+menubarNo+".gif' class='"+(openfold?"showme":"hideme")+"' width='20' height='20'><img name='closedfolderimage"+treeNo+"_"+i+"' src='"+this.iconfolder+"menubar_on_"+menubarNo+".gif' class='"+(openfold?"hideme":"showme")+"' width='20' height='20'></td>";
				echo += "<td width='20' valign=bottom "+clicktoshowhide+"><img name='folderimage"+treeNo+"_"+i+"' src='"+folderimg+"'></td><td nowrap valign=bottom><a onmousedown='return false;' "+clicktoshowhide+" "+(node['u']?"href='"+node['u']+"'":"name='#'")+" target='"+node['tg']+"'>"+newtext+"</a></td></tr></table>\n\n";	
			}
			else
			{
				if(l>0)
				{
					echo += "<td width='20' valign=bottom><img src='"+this.iconfolder+"bar"+barstatus+".gif' width='20' height='20'></td>";
				}			
				echo += "<td nowrap valign=bottom>&nbsp;<a onmousedown='return false;' "+(node['u']?"href='"+node['u']+"'":"name='#'")+" target='"+node['tg']+"'>"+newtext+"</a></td></tr></table>\n\n";	
				
			}
			
			if(barstatus==2&&!havechild)
			{
				for(j=l;j>=0;j--)
				{
					if(!openedNodes[j]) echo += "</div>";else break;
				}
			}			
		}
		echo += "</div>";
		document.write(echo);
	}

	this.addImagetree = function(sublen,text,url,preimage,target)
	{
		var node = { 'l':sublen,'t':text,'u':url,'p':preimage,'tg':target,'c':0 }
		this.treeNodes.push(node);
	}

	this.createImagetree = function()
	{
		var lastLen = 0;
		var newNodes = new Array();
		var endNode = new Array();
		var openedNodes = new Array();
		for(var i=this.treeNodes.length-1;i>=0;i--)
		{
			var node = this.treeNodes[i];
			var l = node['l'];
			this.treeStatus[i] = 0;
			if(l<lastLen)
			{
				//有子目录
				endNode[lastLen] = 0;
				this.treeStatus[i] += 1;
			}
			if(!endNode[l])
			{
				//结束位置
				endNode[l] = 1;
				this.treeStatus[i] += 2;
			}
			lastLen = l;
			if(node['l']==0)
			{
			  this.parentCount+=1;
			}
		}
		var echo="<div class='DXSOFTMenu'>";
		for(i=0;i<this.treeNodes.length;i++)
		{
			var node = this.treeNodes[i];
			var l = node['l'];
			var newtext = node['t'];
			var havechild = this.treeStatus[i] % 2;
			if( this.treeStatus[i]==2 || this.treeStatus[i]==3 )
			{
				openedNodes[l]=0;
				var barstatus=2;
			}
			else
			{
				openedNodes[l]=1;
				var barstatus=1;		 
			}
			var li=i-1;
			var showme = (i==0)?0:i==1;
			var openfold = (i==0);
			if(i>0&&(this.treeStatus[li]==1||this.treeStatus[li]==3))
			{
				echo += "<div id='item"+treeNo+'_'+li+"' class='"+(showme?"showme":"hideme")+"'>";
			}
			echo += "<table class='Table' border='0' cellspacing='0' cellpadding='0' onselectstart='return false;'><tr>\n";
			for(j=0;j<l;j++)
			{
				echo += "<td width='20' valign='bottom'><img src='"+this.iconfolder+(openedNodes[j]?"bar3.gif":"spacer.gif")+"' width='20' height='20'></td>\n";
			}

			if(havechild)
			{
				var menubarNo = 2;
				if(i==0) 
				{
				  if(this.parentCount<2)
				  {
				    menubarNo = 3;
				  }
				}
				else if(this.treeStatus[i]>=2) menubarNo = 3;
				var clicktoshowhide=" onclick='var m=new MenuTree();m.showhideit(\""+treeNo+"\","+i+",false,true)' style='cursor:pointer;' ";
				echo += "<td width='20' valign=bottom "+clicktoshowhide+"><img id='openedfolderimage"+treeNo+"_"+i+"' name='openedfolderimage"+treeNo+"_"+i+"' src='"+this.iconfolder+"menubar_off_"+menubarNo+".gif' class='"+(openfold?"showme":"hideme")+"' width='20' height='20'><img name='closedfolderimage"+treeNo+"_"+i+"' src='"+this.iconfolder+"menubar_on_"+menubarNo+".gif' class='"+(openfold?"hideme":"showme")+"' width='20' height='20'></td>";
				echo += "<td width='20' valign=bottom "+clicktoshowhide+"><img name='folderimage"+treeNo+"_"+i+"' src='"+node['p']+"'></td><td nowrap valign=bottom><a onmousedown='return false;' onclick='var m=new MenuTree();m.showhideit(\""+treeNo+"\","+i+",false,false)' style='cursor:pointer;' "+(node['u']?"href='"+node['u']+"'":"name='#'")+" target='"+node['tg']+"'>"+newtext+"</a></td></tr></table>\n\n";	
			}
			else
			{
				if(l>0)
				{
					echo += "<td width='20' valign=bottom><img src='"+this.iconfolder+"bar"+barstatus+".gif' width='20' height='20'></td>";
				}			
				echo += "<td nowrap valign=bottom><img src='"+node['p']+"'>&nbsp;<a onmousedown='return false;' "+(node['u']?"href='"+node['u']+"'":"name='#'")+" target='"+node['tg']+"'>"+newtext+"</a></td></tr></table>\n\n";	
				
			}
			
			if(barstatus==2&&!havechild)
			{
				for(j=l;j>=0;j--)
				{
					if(!openedNodes[j]) echo += "</div>";else break;
				}
			}			
		}
		echo += "</div>";
		document.write(echo);
	}

	this.SwitchMenuTree = function()
	{
		for(i=0;i<this.treeNodes.length;i++)
		{
			var node = this.treeNodes[i];
			var havechild = this.treeStatus[i] % 2;
			
			
			if(havechild)
			{
				var itemNo = treeNo+'_'+i;
				var subfiles=document.getElementById("item"+itemNo);
				var showfolder=document.images["openedfolderimage"+itemNo];
		        var hidefolder=document.images["closedfolderimage"+itemNo];
				if (OpenAll)
				{
					subfiles.className="showme";
					hidefolder.className="hideme";
			        showfolder.className="showme";
				}
				else
				{
					subfiles.className="hideme";
				    showfolder.className="hideme";
			        hidefolder.className="showme";
				}
			}	
			
			
		}
		
		if (OpenAll)
		{
			OpenAll=false;
		}
		else
		{
			OpenAll=true;
		}
	}
} 