var adrMenuCache = Array();

function adrMenuCreate(id ,tableClass, rowOverClass, rowClass, cellClass)
{
  var aMenu = document.createElement("DIV");
  
  aMenu.id = id;
  aMenu.style.zIndex = 1001;
  aMenu.elements = Array();
  aMenu.aTableClass = tableClass?tableClass:"";
  aMenu.aRowClass = rowClass?rowClass:"";
  aMenu.aCellClass = cellClass?cellClass:"";
  aMenu.aRowOverClass = rowOverClass?rowOverClass:"";
  aMenu.aSpacer = null;
  aMenu.Items = Array();
  aMenu.builded = false;
  aMenu.appended = false;
  return aMenu;
}
function adrMenuSetSpacerImg(menuDiv, imgSrc, width, height)
{
	aImg = document.createElement("IMG");
	aImg.src = imgSrc;
	aImg.style.width=width?width:"";
	aImg.style.height=height?height:"";
	aImg.border=0;
	menuDiv.aSpacer = aImg;
	return aImg;
}
function adrMenuAttach(menuDiv, elementId)
{
    element = document.getElementById(elementId);
    if (!element) return null;
    if (!menuDiv.builded)
    	adrMenuBuild(menuDiv);
    menuDiv.AttachedElement = element;
    menuDiv.style.position = "absolute";
    var P = element;
    var X = 0;
    var Y = 0;
    while (P)
    {
	    X = X+P.offsetLeft;
	    Y = Y+P.offsetTop;
        P = P.offsetParent;
    }
    menuDiv.style.left = X+ "px";
    menuDiv.style.top = Y + element.offsetHeight + "px";
    menuDiv.style.display = "none";


    element.onclick = function(){ adrMenu_Click(menuDiv.id); };
    element.onmouseout = function(){ adrMenu_MouseOut(menuDiv.id); };
    element.onmouseover = function(){ adrMenu_MouseOver(menuDiv.id); };
    if (document.body.insertAdjacentElement)
		document.body.insertAdjacentElement('afterBegin', menuDiv);    
    else
		document.body.appendChild(menuDiv);

}
function adrMenuInitPosition(menuDivId)
{
	menuDiv = document.getElementById(menuDivId);
    element = menuDiv.AttachedElement;
    
    var P = element;
    var X = 0;
    var Y = 0;
    while (P)
    {
	    X = X+P.offsetLeft;
	    Y = Y+P.offsetTop;
        P = P.offsetParent;
    }
    menuDiv.style.left = X + "px";
    menuDiv.style.top = Y + element.offsetHeight + "px";
}
function adrMenuAddItem(menuDiv, caption, url, action, overClass)
{
    var item = Array();
    item['caption'] = caption;
    item['action'] = action;
    item['overClass'] = overClass?overClass:"";
    item['url'] = "";
    item['target'] = "";
	if (url && url != "")
	{
		if (url.substring(0,7).toLowerCase() == "target:")
		{
			var targetLength = url.indexOf("|");
		    item['target'] = url.substring(7,targetLength);
		    item['url'] = url.substring(targetLength+1,url.length);
		} else
			item['url'] = url;
	} 
    menuDiv.Items[menuDiv.Items.length]=item;
    return item;
}
function adrMenuBuild(menuDiv)
{
	menuDiv.builded = true;
	//menuDiv.id = "adrMenu_"+rootElement;

	var menuTable = document.createElement("TABLE");

    menuTable.cellPadding=0;
    menuTable.cellSpacing=0;
    menuTable.border=0;
    menuTable.className = menuDiv.aTableClass;

    for (i=0;i<menuDiv.Items.length;i++)
    {
	    aRow = menuTable.insertRow(-1);
	    aRow.className = menuDiv.aRowClass;
	    aRow.aOverClass = menuDiv.aRowOverClass;
	    aRow.aOutClass = menuDiv.aRowClass;

	    aRow.aMenuDivId = menuDiv.id;
	    aRow.aUrl = menuDiv.Items[i]['url'];
	    aRow.aTarget = menuDiv.Items[i]['target'];
	    aRow.aAction = menuDiv.Items[i]['action'];
	    
	    aRow.onmouseover = function() { adrMenu_RowOver(this); };
	    aRow.onmouseout = function() { adrMenu_RowOut(this); };
	    aRow.onclick = function() { adrMenu_RowClick(this); };
	
	    aCell = aRow.insertCell(-1);
	    aCell.className = menuDiv.aCellClass;
	    aCell.innerHTML = menuDiv.Items[i]['caption'];
		if (menuDiv.aSpacer && i<menuDiv.Items.length-1)
		{
		    aRow = menuTable.insertRow(-1);
		    aRow.className = "";
		    aCell = aRow.insertCell(-1);
		    aCell.className = "";
		    aCell.align="center";
		    aCell.appendChild(menuDiv.aSpacer.cloneNode(false));
		}
 	}

    menuDiv.appendChild(menuTable);

    menuDiv.onmouseout = function(){ adrMenu_MouseOut(menuDiv.id); };
    menuDiv.onmouseover = function(){ adrMenu_MouseOver(menuDiv.id); };
    return menuDiv;
}
function adrMenu_RowOver(item)
{
    item.className = item.aOverClass;
}
function adrMenu_RowOut(item)
{
    item.className = item.aOutClass;
}
function adrMenu_RowClick(item)
{
  adrMenu_Close(item.aMenuDivId);

  if (item.aAction) item.aAction();
  if (item.aTarget=="" && item.aUrl!="") location.replace(item.aUrl);
  else
  if (item.aTarget=="_BLANK" && item.aUrl!="") 
  {
      aWin=window.open(item.aUrl,"","");
      aWin.focus();
  }
  else
  if (item.aTarget!="_BLANK" && item.aUrl!="") window.frames[item.aTarget].location.replace(item.aUrl);
}
function adrMenu_Click(menuDivId)
{
  if (document.getElementById(menuDivId).style.display == "block")
      adrMenu_Close(menuDivId);
  else
      adrMenu_Open(menuDivId);
}

function adrMenu_Open(menuDivId)
{
	adrMenuInitPosition(menuDivId);
    document.getElementById(menuDivId).style.display = "block";
}
function adrMenu_Close(menuDivId)
{
    document.getElementById(menuDivId).style.display = "none";
}

function adrMenu_MouseOver(menuDivId)
{
	if (!document.getElementById(menuDivId)) return;
    if (document.getElementById(menuDivId).timerId)
      window.clearTimeout(document.getElementById(menuDivId).timerId);
}

function adrMenu_MouseOut(menuDivId)
{
	if (!document.getElementById(menuDivId)) return;
    document.getElementById(menuDivId).timerId = window.setTimeout('adrMenu_Close("'+menuDivId+'");', 500);  
}


/*

function adrAddMenuItem(menu, rootElement, caption, url, action, overClass)
{
    if (!menu['elements'][rootElement]) menu['elements'][rootElement]=Array();

    var item = Array();
    item['caption'] = caption;
    item['url'] = url?url:"";
    item['action'] = action;
    item['overClass'] = overClass?overClass:"";
    menu['elements'][rootElement][menu['elements'][rootElement].length]=item;
    return item;
}
function adrAttachMenu(menuItems, rootElement, linkElement)
{
  var link      = document.getElementById(linkElement);
  var menuDiv   = document.createElement("DIV");
  var menuTable = document.createElement("TABLE");

  menuDiv.id = "adrMenu_"+rootElement;

  menuDiv.style.position = "absolute";
  menuDiv.style.left = link.offsetLeft;
  menuDiv.style.top = link.offsetTop + link.offsetHeight;
  menuDiv.style.display = "none";

  menuTable.cellPadding=0;
  menuTable.cellSpacing=0;
  menuTable.border=0;
  menuTable.borderColor="black";
  menuTable.className = menuItems['tableClass'];

  for (i=0;i<(menuItems['elements'][rootElement]).length;i++)
  {
    aRow = menuTable.insertRow(-1);
    aRow.aOverClass = menuItems['rowSelectedClass'];
    aRow.aOutClass = menuItems['rowClass'];
    aRow.onmouseover = function() { adrMenu_RowOver(this); };
    aRow.onmouseout = function() { adrMenu_RowOut(this); };
    aRow.className = menuItems['rowClass'];

    aCell = aRow.insertCell(-1);
    aCell.className = menuItems['cellClass'];
    aCell.innerHTML = menuItems['elements'][rootElement][i]['caption'];
    aCell.aMenuDivId = menuDiv.id;
    aCell.aUrl = menuItems['elements'][rootElement][i]['url'];
    aCell.aAction = menuItems['elements'][rootElement][i]['action'];
    aCell.onclick = function() { adrMenu_ItemClick(this); };
  }
  menuDiv.appendChild(menuTable);
  document.body.appendChild(menuDiv);

  link.onclick = function(){ adrMenu_Click(menuDiv.id); };

  link.onmouseout = function(){ adrMenu_MouseOut(menuDiv.id); };
  menuDiv.onmouseout = function(){ adrMenu_MouseOut(menuDiv.id); };

  link.onmouseover = function(){ adrMenu_MouseOver(menuDiv.id); };
  menuDiv.onmouseover = function(){ adrMenu_MouseOver(menuDiv.id); };


  return menuDiv;
}

function adrCreateMenu(tableClass, rowOverClass, rowClass, cellClass)
{
  var menu = Array();
  menu['elements'] = Array();
  menu['tableClass']=tableClass?tableClass:"";
  menu['rowClass']=rowClass?rowClass:"";
  menu['cellClass']=cellClass?cellClass:"";
  menu['rowSelectedClass']=rowSelected?rowSelected:"";

  return menu;
}
*/
