
	var clockValue = 0;
	var ticker;
	var menuFadeDelay = 1;

	var currentDepth = '';
	
	var currentItem = '';
	var currentGroup = '';
	
	var maxDepth = 10;
	
	var openMenus = new Array();
	var highlightedItems = new Array();
	
	for (var i=0; i<=maxDepth; i++)
	{
		openMenus[i] = '';	
		highlightedItems[i] = '';
	}
		
	function vm_debug(msg)
	{
		try {
			var olayer = document.getElementById('debug');
			olayer.innerHTML = olayer.innerHTML + '<br>' + msg;
		} catch (ex) {
			alert("function 'vm_debug' error");
		}
	}
	
	function vm_startTick()
	{
		if (clockValue >= menuFadeDelay)
		{
			vm_stopTick();
			vm_closeSubMenus('', 0) // Close All
		}
		else
		{
			clockValue++;
			ticker = setTimeout("vm_startTick();", 500);
		}				
	}
	
	function vm_stopTick()
	{
		clockValue = 0;
		clearTimeout(ticker);		
	}
	
	function vm_closeSubMenus(parentid, depth)
	{		
		try {				
			for (var i=0; i<=maxDepth; i++)
			{
				if (i > depth)
				{
					if (openMenus[i] != '')
					{
						document.getElementById(openMenus[i]).style.display = 'none';
						openMenus[i] = '';
					}				
				}
				
				
				if (i >= depth)
				{
					if (highlightedItems[i] != '')
					{
						//debug(i + ' - ' + highlightedItems[i]);
						vm_unhighlight(highlightedItems[i]);
						highlightedItems[i] = '';
					}
				}
							
			}				
		} catch (ex) {
			alert("function 'vm_closeSubMenus' error");
		}
	}
		
	function vm_menuItemOver(itemid, parentid, childid, depth, expandDirection)
	{

		vm_stopTick();
		vm_closeSubMenus(parentid, depth);

		if (currentItem != '')
		{
			//debug(parentid + ' - ' + currentGroup);
			
			if (parentid == currentGroup)
			{							
				//debug(highlightedItems[depth-1]);
				if (highlightedItems[depth-1] != '')
				{
					vm_highlight(highlightedItems[depth-1]);
				}
			}
			else
			{
				//vm_unhighlight(currentItem);
			}
		}
				
		vm_itemOver(itemid);
		if (childid != null && expandDirection != '')
		{	
			openMenus[depth + 1] = childid;
			vm_expandGroup(itemid, childid, expandDirection);
		}	
				
		currentDepth = depth;	

		currentGroup = parentid;
		highlightedItems[currentDepth] = itemid;
						
	}
	
	function vm_menuItemOut(itemid)
	{				
		vm_startTick();
		currentItem = itemid;
		//vm_toggleClass(itemid);				
	}
		
	function vm_showstack()
	{
		try {
			var stack = '';
			for (var i = openMenus.length-1; i>-1; i--)
			{
				stack = stack + openMenus[i] + '\n';
			}
			var olayer = document.getElementById('stack');
			olayer.innerHTML = stack;
		} catch (ex) {
			alert("function 'vm_showstack' error");
		}
	}
	
	function vm_itemOver(itemid)
	{

		try {
			var oItem = document.getElementById(itemid); 
			var currentClassName = oItem.className;
			var newClassName = '';
			switch (currentClassName)
			{
				case 'MenuItem':
					newClassName = 'MenuItemOver';
					break;							
				case 'MenubarItem':
					newClassName = 'MenubarItemOver';
					break;											
			}
					
			if (newClassName != '')
			{
				oItem.className = newClassName;
			}
		} catch (ex) {
			alert("function 'vm_itemOver' error");
		}
	}
		
	function vm_unhighlight(itemid)
	{

		try {
			if (itemid != null)
			{

				var oItem = document.getElementById(itemid); 
				var currentClassName = oItem.className;
				var newClassName = '';
				switch (currentClassName)
				{
					case 'MenuItem':
						newClassName = 'MenuItem';
						break;
					case 'MenuItemOver':
						newClassName = 'MenuItem';
						break;								
					case 'MenubarItem':
						newClassName = 'MenubarItem';
						break;
					case 'MenubarItemOver':
						newClassName = 'MenubarItem';
						break;								
				}
							
				if (newClassName != '')
				{
					oItem.className = newClassName;
				}

			}
		} catch (ex) {
			alert("function 'vm_unhighlight' error");
		}
	}	

	function vm_highlight(itemid)
	{
		try {
			if (itemid != null)
			{

				var oItem = document.getElementById(itemid); 
				var currentClassName = oItem.className;
				var newClassName = '';
				switch (currentClassName)
				{
					case 'MenuItem':
						newClassName = 'MenuItemOver';
						break;
					case 'MenuItemOver':
						newClassName = 'MenuItemOver';
						break;								
					case 'MenubarItem':
						newClassName = 'MenubarItemOver';
						break;
					case 'MenubarItemOver':
						newClassName = 'MenubarItemOver';
						break;								
				}
							
				if (newClassName != '')
				{
					oItem.className = newClassName;
				}

			}
		} catch (ex) {
			alert("function 'vm_highlight' error");
		}
	}
		
	function vm_expandGroup(itemid, childid, expandDirection)
	{
		try {
			if (childid != null)
			{
				var newLeft = 0; 
				var newTop = 0; 
				var oItem = document.getElementById(itemid); 
				var oChild = document.getElementById(childid); 

				switch (expandDirection)
				{
				case 'bl': 
					newLeft = vm_pageX(oItem); 
					if (newLeft + oChild.offsetWidth > window.document.body.clientWidth)
					newLeft = vm_pageX(oItem) + oItem.offsetWidth - oChild.offsetWidth; 
					newTop = vm_pageY(oItem) + oItem.offsetHeight; 
					break; 
				case 'br': 
					newLeft = vm_pageX(oItem) + oItem.offsetWidth - oChild.offsetWidth; 
					newTop =  vm_pageY(oItem) + oItem.offsetHeight; 
					break; 
				case 'al': 
					newLeft = vm_pageX(oItem); 
					newTop =  vm_pageY(oItem) - oChild.offsetHeight; 
					break; 
				case 'ar': 
					newLeft = vm_pageX(oItem) + oItem.offsetWidth - oChild.offsetWidth; 
					newTop =  vm_pageY(oItem) - oChild.offsetHeight; 
					break; 
				case 'rd': 
					newLeft = vm_pageX(oItem) + oItem.offsetWidth;				
					if (newLeft + oChild.offsetWidth > window.document.body.clientWidth)
					newLeft = vm_pageX(oItem) - ochild.offsetWidth; 
					newTop = vm_pageY(oItem); 
					if (newTop + oChild.offsetHeight > window.document.body.clientHeight)
					newTop = vm_pageY(oItem) - oChild.offsetHeight + oItem.offsetHeight; 
					break; 
				case 'ru': 
					newLeft = vm_pageX(oItem) + oItem.offsetWidth; 
					newTop = vm_pageY(oItem) - oChild.offsetHeight + oItem.offsetHeight; 
					break; 
				case 'ld': 
					newLeft = vm_pageX(oItem) - oChild.offsetWidth; 
					newTop = vm_pageY(oItem); 
					break; 
				case 'lu': 
					newLeft = vm_pageX(oItem) - oChild.offsetWidth; 
					newTop = vm_pageY(oItem) - oChild.offsetHeight + oItem.offsetHeight; 
					break; 
				default: 
					newLeft = vm_pageX(oItem) + oItem.offsetWidth; 
					newTop = vm_pageY(oItem); 
					break; 
				} 
	    		  		         
				oChild.style.left = newLeft + 'px'; 
				oChild.style.top = newTop + 'px'; 
			    
				oChild.style.visibility = 'visible'; 
				oChild.style.display = '';  
			     
			}
		} catch (ex) {
			alert("function 'vm_expandGroup' error");
		}
	}
	  
  function vm_toggleClass(itemid)
  {
	/* This Function Determines The Current Class Of The Object And Returns The
	Appropriate Toggled Class Name */
	
	try {
		var obj = document.getElementById(itemid);
		var currentClassName = obj.className;

		var newClassName = '';
		switch (currentClassName)
		{
			case 'MenuItem':
				newClassName = 'MenuItemOver';
				break;
			case 'MenuItemOver':
				newClassName = 'MenuItem';
				break;								
			case 'MenubarItem':
				newClassName = 'MenubarItemOver';
				break;
			case 'MenubarItemOver':
				newClassName = 'MenubarItem';
				break;												
		}	
		
		if (newClassName != '')
		{
			obj.className = newClassName;
		}
	} catch (ex) {
		alert("function 'vm_toggleClass' error");
	}
  }
 

function vm_pageX(element)
{
	var x = 0;
	if (element != null)
	{
	  do 
	  {
	    if (element.style.position == 'absolute') 
	    {
	      return x + element.offsetLeft; 
	    }
	    else
	    {
	      x += element.offsetLeft;
	      if (element.offsetParent) 
	        if (element.offsetParent.tagName == 'TABLE') 
	          if (parseInt(element.offsetParent.border) > 0)
	          {
	            x += 1; 
	          }
	    }
	  }
	  while ((element = element.offsetParent));
	}
  return x; 
}

function vm_pageY(element)
{
  var y = 0;
  if (element != null)
  {
	  do 
	  {
	    if (element.style.position == 'absolute') 
	    {
	      return y + element.offsetTop; 
	    }
	    else
	    {
	      y += element.offsetTop;
	      if (element.offsetParent) 
	        if (element.offsetParent.tagName == 'TABLE') 
	          if (parseInt(element.offsetParent.border) > 0)
	          {
	            y += 1; 
	          }
	    }
	  }
	  while ((element = element.offsetParent));
  }  
  return y; 
}

function vm_pausecomp(Amount)
{ 
	d = new Date() //today's date
	while (1)
	{
		mill=new Date() // Date Now
		diff = mill-d //difference in milliseconds
		if( diff > Amount ) {
			break;
		}
	}
}

		

	