function NodeClick(treeId, nodeId) 
{
	UpdateEventFields("NodeClick", treeId, nodeId);
}

function UpdateEventFields(name, treeid, nodeid)
{
	var tree = igtree_getTreeById("UcCategoryList1uwtCategoryList");		
	var selectedNode = tree.getSelectedNode();
}


function newSiteMapNode()
{

	
		
	var sFeatures=fnSetValues();
	var tree = igtree_getTreeById("uwtSiteMap");		
	var selectedNode = tree.getSelectedNode();	
	if (selectedNode)
	{		
		var resp=SiteMapAdmin.SessionActive();
		if (resp.value!=""){
			window.location.href=resp.value;
			return;		
		}
										
		var valor=window.showModalDialog("SiteMapNodeEditContainer.aspx?Mode=N&SiteMapNodeParentId=" + selectedNode.getTag(), "", sFeatures);					
		try{
			if(valor[0]=='Y')
			{
				if (valor[1]=='N')
				{
					AddNode(valor[2],valor[3],valor[4]);
				}						
			}
	
		}
		catch (e)
		{
	
		}
	}
	else
	{
		alert("You must select a Procedure");
	}
}

function editSiteMapNode()
{
	var sFeatures=fnSetValues();
	var tree = igtree_getTreeById("uwtSiteMap");		
	var selectedNode = tree.getSelectedNode();	
	
	if (selectedNode && selectedNode.getParent())
	{
		var resp=SiteMapAdmin.SessionActive();
		if (resp.value!=""){
			window.location.href=resp.value;
			return;		
		}
		var valor=window.showModalDialog("SiteMapNodeEditContainer.aspx?Mode=E&SiteMapNodeId=" + selectedNode.getTag(), "", sFeatures);
		try{
			if(valor[0]=='Y')
			{
				if (valor[1]=='E')
				{
					UpdaNode(valor[2], valor[2]);
				}
			}
		}
		catch (e)
		{
		
		}
	}
	else
	{
		if(!selectedNode)
			alert("You must select a Node");
	}
}

function deleteSiteMapNode()
{
	var sFeatures=fnSetValues();
	var tree = igtree_getTreeById("uwtSiteMap");		
	var selectedNode = tree.getSelectedNode();	
	
	
	if (selectedNode && selectedNode.getParent())
	{
		var resp=SiteMapAdmin.SessionActive();
		if (resp.value!=""){
			window.location.href=resp.value;
			return;		
		}
		if (confirm('Are you sure you want to delete the node ' + selectedNode.getText() + ' and sub-nodes of the Site Map?'))
		{
			SiteMapAdmin.DeleteSiteMapNode(selectedNode.getTag());
			selectedNode.remove();
		}
	}
	else
	{
		if(!selectedNode)
			alert("You must select a Node");
	}
}
		
function fnSetValues()
{
	var sFeatures="dialogHeight: 850px;dialogWidth: 1000px";
	return sFeatures;
}


function AddNode(tag, name, displayName)
{
	var tree = igtree_getTreeById("uwtSiteMap");		
	var selectedNode = tree.getSelectedNode();				
	var child = selectedNode.addChild();
	child.setTag(tag);
	child.setText(name);
	
}

function UpdaNode(name, displayName)
{
	var tree = igtree_getTreeById("uwtSiteMap");		
	var selectedNode = tree.getSelectedNode();
	selectedNode.setText(displayName);
}

function moveUpSiteMapNode()
{

	var tree = igtree_getTreeById("uwtSiteMap");		
	var selectedNode = tree.getSelectedNode();
	
	if (selectedNode && selectedNode.getParent())
	{
		var resp=SiteMapAdmin.SessionActive();
		if (resp.value!=""){
			window.location.href=resp.value;
			return;		
		}
		SiteMapAdmin.MoveSiteMap(selectedNode.getTag(), 'up');
		var node = selectedNode.getPrevSibling();
		while(node != null && !node.getEnabled())
			node = node.getPrevSibling();
			
		if (node != null)
		{			
		  var selectedNodeObj = new Node(selectedNode.getTag(), selectedNode.getText(), selectedNode.element.title, null, false)
      var nodeObj = new Node(node.getTag(), node.getText(), node.element.title, null, false);

      selectedNode.setTag(nodeObj.Tag);
			selectedNode.setText(nodeObj.Text);
			selectedNode.getElement().title = nodeObj.Title;
				
			node.setTag(selectedNodeObj.Tag);
			node.setText(selectedNodeObj.Text);
			node.getElement().title = selectedNodeObj.Title;

      ReBuildTree(selectedNode, node);
      
      node.setSelected(true);
		}
	}
	else
	{
		if(!selectedNode)
			alert("You must select a Node");
	}
}

function moveDownSiteMapNode()
{

	var tree = igtree_getTreeById("uwtSiteMap");		
	var selectedNode = tree.getSelectedNode();

	if (selectedNode && selectedNode.getParent())
	{

		var resp=SiteMapAdmin.SessionActive();
		if (resp.value!=""){
			window.location.href=resp.value;
			return;		
		}
		SiteMapAdmin.MoveSiteMap(selectedNode.getTag(), 'down');
	
		var node = selectedNode.getNextSibling();
		while(node != null && !node.getEnabled())
			node = selectedNode.getNextSibling();
			
		if (node != null)
		{			
		  var selectedNodeObj = new Node(selectedNode.getTag(), selectedNode.getText(), selectedNode.element.title, null, false)
      var nodeObj = new Node(node.getTag(), node.getText(), node.element.title, null, false);

      selectedNode.setTag(nodeObj.Tag);
			selectedNode.setText(nodeObj.Text);
			selectedNode.getElement().title = nodeObj.Title;
				
			node.setTag(selectedNodeObj.Tag);
			node.setText(selectedNodeObj.Text);
			node.getElement().title = selectedNodeObj.Title;

      ReBuildTree(selectedNode, node);
      
      node.setSelected(true);
		}
	}
	else
	{
		if(!selectedNode)
			alert("You must select a Node");
	}
}

/*
  NODES MANAGER
*/

function Node(tag, text, title, parentTag, moved)
{
    this.Tag = tag; 
    this.Text = text;
    this.Title = title;
    this.ParentTag = parentTag;
    this.Moved = moved;
}

function ReBuildTree(selectedNode, node){
  //debugger;
  if(!selectedNode.hasChildren() && !node.hasChildren()) return;
  
  var SelectedNodes = new Array();
  var Nodes = new Array();
  
  SelectedNodes = loopNodes(selectedNode.getChildNodes(), selectedNode.getTag());
  Nodes = loopNodes(node.getChildNodes(), node.getTag());
  
  removeChilds(selectedNode);
  removeChilds(node);
  
  AddChildsFromObject(SelectedNodes, node, selectedNode.getTag(), null, SelectedNodes);
  AddChildsFromObject(Nodes, selectedNode, node.getTag(), null, Nodes);
}

function loopNodes(nodes, ParentTag) {
  var Nodes = new Array();
  var nodeObj = null;
 
	for(var i=0;i<nodes.length;i++) {
	  
	  nodeObj = new Node(nodes[i].getTag(), nodes[i].getText(), nodes[i].element.title, ParentTag, false);
		Nodes.push(nodeObj);
		
		if(nodes[i].hasChildren())
		{
			Nodes = Nodes.concat(loopNodes(nodes[i].getChildNodes(), nodeObj.Tag));
		}
	}
	
	return Nodes;
}

function AddChildsFromObject(nodes, treeNodes, ParentTag, nodeInsert, totalNodes){

  var currentNode;
  for(var i=0;i<nodes.length;i++) {
    if(nodes[i].Moved){continue;}
    
    if(ParentTag == nodes[i].ParentTag && nodeInsert == null)
    {
      currentNode = treeNodes.addChild(nodes[i].Text);
    }else{
      if(nodeInsert == null){nodeInsert = currentNode;}
      currentNode = nodeInsert.addChild(nodes[i].Text);
    }
    currentNode.setTag(nodes[i].Tag);
    currentNode.getElement().title= nodes[i].Title;
    nodes[i].Moved = true;
    
    if(HasChildsObj(nodes[i], totalNodes))
		{
		  AddChildsFromObject(GetChildsObj(totalNodes, nodes[i].Tag), treeNodes, nodes[i].Tag, currentNode, totalNodes)
	  }
  }
}

function GetChildsObj(nodes, ParentTag){
  var vFrom = 0;
  var vTo = 0;
  var bFrom = false;
  var bTo = false;
  
  for(var i=0;i<nodes.length;i++) {
    if(nodes[i].ParentTag == ParentTag && !bFrom){
      bFrom = true;
      vFrom = i;
    }
    
    if(bFrom){
      if(nodes[i].ParentTag != ParentTag){
        bTo = true;
        vTo = i;
        return nodes.slice(vFrom, vTo)
      }
    }
    
  }
  
  if(bFrom && !bTo){
    vTo = nodes.length;
    return nodes.slice(vFrom, vTo);
  }
  
  if(!bFrom && !bTo){
    return null;
  }
  
}

function HasChildsObj(node, nodes){
  var ParentTag = node.Tag;
  
  for(var i=0;i<nodes.length;i++) {
    if(nodes[i].ParentTag == ParentTag){return true;}
  }
  
  return false;
}

function removeChilds(Node){
  while (Node.hasChildren())
  {
    Node.getChildNodes()[0].remove();
  }
}

/*
  END NODES MANAGER
*/

// Funtion Test
function  ShowArray()
{
	alert(CategoryAdmin.ShowArray().value);
}

function close()
{
	//window.opener = self;
	window.close();
} 


