﻿// JScript File

// Menu
Menu = function(objName)
{
	this.obj = objName;
	
	this.aNodes = [];
	
	this.OLItem = null;
	
	this.objContainer = null;
	
	this.lastNode = 0;
	
	
}
// Node object
function Node(id, pid, object) {

	this.id = id;

	this.pid = pid;

	this.object = object;
	
	this._hc = false;

};
Menu.prototype.add = function(id, pid, object) {

	this.aNodes[this.aNodes.length] = new Node(id, pid, object);

};
Menu.prototype.draw = function()
{
	this.objContainer = this.getElements(this.obj);
	
	var LiContertItem = this.objContainer.getElementsByTagName('div');
	
	for(var i = 0; i < LiContertItem.length; i++)
	{
		if(document.all)
		{
			var object = LiContertItem[i].firstChild;
			
		} else {
			
			var object = LiContertItem[i].getElementsByTagName('a')[0];
		}
		
		this.add(LiContertItem[i].id,  LiContertItem[i].getAttribute("pid"), object);
	}
	
	for(var i = 0; i < this.aNodes.length; i++)
	{
		this.hasChild(this.aNodes[i]);
	}

	this.addNodes();
};

Menu.prototype.addNodes = function()
{

	var OLItem = this.createOL();
	
	OLItem.className = "rootOL";

	for(var i = 0; i < this.aNodes.length; i++)
	{
		var LiItem = this.createLI();

		LiItem.className = "rootLI";
		
		LiItem.appendChild(this.aNodes[i].object);
		
		OLItem.appendChild(LiItem);
		
		if(this.aNodes[i]._hc) {
			
			this.addChild(this.aNodes[i], LiItem);
			
			LiItem.onmouseover = function()
			{
				var olContainer = this.getElementsByTagName('ol');
				
				if(olContainer[0].childNodes.length > 0)
				
					olContainer[0].style.display = "block";
					
					olContainer[0].style.zIndex = 0;
					
					if(document.all)
						olContainer[0].style.left =  this.offsetLeft + 50 + "px";
					else 
						olContainer[0].style.left =  this.offsetLeft + "px";
			}
			LiItem.onmouseout = function()
			{
				var olContainer = this.getElementsByTagName('ol');
				
				if(olContainer[0].childNodes.length > 0)
				
					olContainer[0].style.display = "none";
					
					olContainer[0].style.zIndex = 0;
				
			}
			
			i = this.lastNode++;
		}
	}

	this.objContainer.appendChild(OLItem);
};

Menu.prototype.addChild = function(node, root)
{
	var OLSubItem = this.createOL();

	OLSubItem.className = "childNodeOL";
	
	for(var i = 0; i < this.aNodes.length; i++)
	{
		if(node.id == this.aNodes[i].pid) {

			var LiItem = this.createLI();
			
			LiItem.appendChild(this.aNodes[i].object);
			
			LiItem.className = "childNodeLI";
			
			OLSubItem.appendChild(LiItem);
			
			root.appendChild(OLSubItem);
			
			this.lastNode = i;
			
			if(this.aNodes[i]._hc) {
				
				this.addChild(this.aNodes[i], LiItem);
				
				LiItem.onmouseover = function()
				{
					var olContainer = this.getElementsByTagName('ol');
					
					if(olContainer[0].childNodes.length > 0)
					
						olContainer[0].style.display = "block";
						
						olContainer[0].style.zIndex = 0;

						olContainer[0].style.left =  this.offsetLeft + 30 + "px";
						
				}
				LiItem.onmouseout = function()
				{
					var olContainer = this.getElementsByTagName('ol');
					
					if(olContainer[0].childNodes.length > 0)
					
						olContainer[0].style.display = "none";
						
						olContainer[0].style.zIndex = 0;
					
				}
				
			}
		}
	}
	return OLSubItem;
};

Menu.prototype.hasChild = function(node)
{
	for(var i = 0; i < this.aNodes.length; i++)
	{
		if(node.id == this.aNodes[i].pid) node._hc = true;
	}
};
Menu.prototype.createOL = function()
{
	var listItem = document.createElement('ol');
	return listItem;
};
Menu.prototype.createLI = function()
{
	var listItem = document.createElement('li')
	return listItem;
};
Menu.prototype.getElements = function() {
  
   var elements = new Array();
       
   for (var i = 0; i < arguments.length; i++)
   {
       var element = arguments[i];
       if (typeof element == 'string')
          element = document.getElementById(element);
            
       if (arguments.length == 1)
           return element;
            
          elements.push(element);
   }
            
   return elements;
};
