﻿
function ShowMenu(elem, MenuItemID)
{
    var ElemPosition = GetElementPosition(elem); 
    
    var menuItem = document.getElementById(MenuItemID);
    
    var menuDiv =  document.getElementById('menuDiv');
    
    var DivPosition = GetElementPosition(menuDiv);
    
    hideall();
    SetVisibility(menuItem, true);
    
    SetPosition(
            menuItem, 
            ElemPosition.x - DivPosition.x, 
            ElemPosition.y + ElemPosition.height - DivPosition.y,
            ElemPosition.width
            );
}
function SetVisibility(element, val)
{
    element.style.visibility = (val) ? "visible" : "hidden";
    element.style.display = (val) ? "block" : "none";
}
function SetPosition(elem, x, y, w)
{
    elem.style.left = x + 'px';
    elem.style.top = y + 'px';
    
    var parElement = GetElementByTagName(elem, "table");
    
    if (parElement.offsetWidth && parElement.offsetWidth < w) 
	{
		parElement.style.width = w + 'px';
	}
	else if (parElement.style && parElement.style.pixelWidth && parElement.style.pixelWidth < w) 
	{
		parElement.style.width = w + 'px';
	}
}

function GetElementByTagName(element, tagName) 
{
    var elements = GetElementsByTagName(element, tagName);
    if (elements && elements.length > 0) 
    {
        return elements[0];
    }
    else 
        return null;
}


function GetElementsByTagName(element, tagName) 
{
    if (element && tagName) 
    {
        if (element.getElementsByTagName) 
        {
            return element.getElementsByTagName(tagName);
        }
        if (element.all && element.all.tags) 
        {
            return element.all.tags(tagName);
        }
    }
    return null;
}


var start = 0;
var tim;
function hideall()
{
    var menuDiv =  document.getElementById('menuDiv');
    var elements = GetElementsByTagName(menuDiv, 'div');
    if (elements && elements.length>0)
    {
        for (var i=0; i<elements.length;i++)
        {
            var CurElement = elements[i];
            if (CurElement.id && CurElement.id.indexOf('menu_div_item_') != -1)
            {
                hidemenu(CurElement.id);
            }
        }
    }
}

function hidemenu(el) 
{
     var element = document.getElementById(el);
     if (element && element.tagName.toLowerCase() == "div") 
     {
        SetVisibility(element, false);
     }
}
function timeactiv(el)
{
    tim = setTimeout('hidemenu("'+el+'")','200');
}

function timedisable()
{
    if (start != 0) 
	    {clearTimeout(tim)}
    else start = 1
}

function GetElementPosition(element) 
{
	var result = new Object();
	result.x = 0;
	result.y = 0;
	result.width = 0;
	result.height = 0;
	if (element.offsetParent) 
	{
		result.x = element.offsetLeft;
		result.y = element.offsetTop;
		var parent = element.offsetParent;
		while (parent) 
		{
			result.x += parent.offsetLeft;
			result.y += parent.offsetTop;
			var parentTagName = parent.tagName.toLowerCase();
			if 
			(
				parentTagName != "table" &&
				parentTagName != "body" && 
				parentTagName != "html" && 
				parentTagName != "div" && 
				parent.clientTop && 
				parent.clientLeft
			) 
			{
				result.x += parent.clientLeft;
				result.y += parent.clientTop;
			}
			parent = parent.offsetParent;
		}
	}
	else if (element.left && element.top) 
	{
		result.x = element.left;
		result.y = element.top;
	}
	else {
		if (element.x) 
		{
			result.x = element.x;
		}
		if (element.y) 
		{
			result.y = element.y;
		}
	}
	if (element.offsetWidth && element.offsetHeight) 
	{
		result.width = element.offsetWidth;
		result.height = element.offsetHeight;
	}
	else if (element.style && element.style.pixelWidth && element.style.pixelHeight) 
	{
		result.width = element.style.pixelWidth;
		result.height = element.style.pixelHeight;
	}
	return result;
}   
