﻿//********************************************
// Tree function
//********************************************

var nodeHighlighted=null;

//Node on click event
function Node(id)
{
    var plus=$("EX" + id);
    if(plus)
    {
        if(plus.className=="nodePlus")
        {//open node
            NodeExpand(id,true);
        }
        else
        {//close node
            NodeExpand(id,false);
        }
    }
}
function NodeExpand(id,expand)
{
    var plus=$("EX" + id);
    var childs=$("CH" + id);
    if(plus && childs)
    {
        if(expand)
        {//open node
            plus.className="nodeMinus";
            childs.style.display="block";
            
            if(childs.getAttribute("hasData")!="yes")
            {
                //call clinet function to display child nodes
                RefreshNode(id);
            }
        }
        else
        {//close node
            plus.className="nodePlus";
            childs.style.display="none";
        }
    }
}
function NodeHighlight(id)
{
    if(nodeHighlighted) nodeHighlighted.className="node";
    
    var obj=$("N" + id);
    if(obj && obj.className=="node")
    {
        obj.className="nodeSelected";
        nodeHighlighted=obj;
    }
}
function TreeExpand()
{
    var nodes=document.getElementsByTagName("span");
    for(var i=0;i<nodes.length;i++)
    {
        var n=nodes[i];
        if(n.className=="node" || n.className=="nodeSelected") NodeExpand(n.id.replace("N",""),true);
    }
}
function TreeCollapse()
{
    var nodes=document.getElementsByTagName("span");
    for(var i=0;i<nodes.length;i++)
    {
        var n=nodes[i];
        if(n.className=="node" || n.className=="nodeSelected") NodeExpand(n.id.replace("N",""),false);
    }
}
//********************************************
// Tree function
//********************************************




//********************************************
// Context menu
//********************************************
var ie	= document.all
var ns6	= document.getElementById&&!document.all
var menuId="menudiv";

var isMenu 	= false ;

var menuSelObj = null ;
var overpopupmenu = false;


function mouseSelect(e)
{
	//var obj = ns6 ? e.target.parentNode : event.srcElement.parentElement;
	//var obj = ns6 ? e.target : event.srcElement;
    
	if( isMenu )
	{
		//if( overpopupmenu == false || force==true)
		{
			isMenu = false ;
			overpopupmenu = false;
			$(menuId).style.display = "none" ;
			
			NodeHighlight(0);
			return true ;
		}
		return true ;
	}
	return false;
}

// POP UP MENU
function ItemSelMenu(e)
{
	//var	obj = ns6 ? e.target.parentNode : event.srcElement.parentElement;
	var obj = ns6 ? e.target : event.srcElement;	
    //if(obj.className=="node")
    if($(menuId))
    {
        $(menuId).style.top="-10000px";
        $(menuId).style.display = "";
        
        AddMenuItems(obj.id.replace("N",""));
        
        var mh=$H(menuId);
        
        //alert(document.body.clientHeight)
        
        menuSelObj = obj ;
	    if (ns6)
	    {
	        var top=e.clientY+document.body.scrollTop;
	        if(document.body.clientHeight<(e.clientY + mh)) top-=mh;
		    $(menuId).style.left = (e.clientX + document.body.scrollLeft) + "px";
		    $(menuId).style.top = (top) + "px";
	    } else
	    {
	        var top=event.clientY+document.body.scrollTop;
	        if(document.body.clientHeight<(event.clientY + mh)) top-=mh;
		    $(menuId).style.pixelLeft = event.clientX+document.body.scrollLeft;
		    $(menuId).style.pixelTop = top;
	    }
	    
	    isMenu = true;
	    
	    //highlight node
	    NodeHighlight(obj.id.replace("N",""));
	    
	    return false;
	}
	return true;
}


function AddMenuItems(id)
{
    var m=$(menuId);
    var str="";
    var n=$("N" + id);
    
    
    if(n && (n.className=="node" || n.className=="nodeSelected"))
    {
        //var type=n.getAttribute("type");
        
        str+="<a href='javascript:Add(" + id + ",1);' class='ctMenuItem'><span>New</span></a>";
        str+="<a href='javascript:Edit(" + id + ");' class='ctMenuItem'><span>Edit</span></a>";
        str+="<a class='ctMenuItem'><div><hr></div></a>";

        str+="<a href='javascript:Cut(" + id + ");' class='ctMenuItem'><span>Cut</span></a>";
        str+="<a href='javascript:Copy(" + id + ");' class='ctMenuItem'><span>Copy</span></a>";
        str+="<a href='javascript:Paste(" + id + ");' class='ctMenuItem'><span>Paste</span></a>";

        str+="<a class='ctMenuItem'><div><hr></div></a>";

        str+="<a href='javascript:Del(" + id + ");' class='ctMenuItem'><span>Delete sub tree</span></a>";
        str+="<a href='javascript:DelNode(" + id + ");' class='ctMenuItem'><span>Delete node</span></a>";

        str+="<a class='ctMenuItem'><div><hr></div></a>";
        str+="<a href='javascript:RefreshNode(" + id + ");' class='ctMenuItem'><span>Refresh</span></a>";
    }
    else
    {
        str+="<a href='javascript:Add(0,1);' class='ctMenuItem'><span>New</span></a>";
        str+="<a href='javascript:Paste(0);' class='ctMenuItem'><span>Paste</span></a>";
        str+="<a href='javascript:RefreshNode(0);' class='ctMenuItem'><span>Refresh</span></a>";
    }
    
    m.innerHTML=str;
}

document.onmouseup 	= mouseSelect;
document.oncontextmenu 	= ItemSelMenu;
//********************************************
// Context menu
//********************************************
