﻿//------------------------------------------------------------------------------
//  Zhuravlev Sergey
//  nitesoft.org (c) 2009
//------------------------------------------------------------------------------

var ElemId = -1;
var ParentId = -1;
var Placement = 'v';

var Stack = new Array(0,1);
var Count = 1;
var TimerOut = null;
var TimerOver = null;

function GetPos(el, sProp) 
{
  var iPos = 0;
  while (el != null) 
  {
    iPos += el["offset" + sProp];
    el = el.offsetParent;
  }
  return iPos;
}

function MenuOver(Id, ParId, Placem)
{
  for (var i=0; i<Count; i++)
  {
    if (Stack[i] == ParId)
    {
      for (var j=i+1; j<Count; j++)
      {
        if ((Stack[j] == 0) || (Stack[j] == Id)) continue;
	var Elem = document.getElementById('menu-' + Stack[j]);
	if (Elem) Elem.style.left = '-1000px';
      }
      Count = i + 1;
      break;
    }
  }
  
  var Elem = document.getElementById('menu-' + Id);
  if (Elem) 
  {
    var ItemEl = document.getElementById('item-' + Id);
    var ParEl = document.getElementById('menu-' + ParId);
    if (ParEl)
    {
      if (Placem == 'v')
      {
        var Left = GetPos(ItemEl, 'Left') + ItemEl.offsetWidth - 1;
        Elem.style.left = Left + 'px';
        var Top = GetPos(ItemEl, 'Top') - 1;
        Elem.style.top = Top + 'px';
      } else {
        var Left = GetPos(ItemEl, 'Left') - 1;
        Elem.style.left = Left + 'px';
        var Top = GetPos(ItemEl, 'Top') + ItemEl.offsetHeight - 1;
        Elem.style.top = Top + 'px';
      }
    }
    Stack[Count] = Id;
    Count++;    
  }
  
  ElemId = -1;
  ParentId = -1; 
  Placement = 'v'; 
}

function MenuOut()
{
  for (var i=0; i<Count; i++)
  {
    if (Stack[i] == 0) continue;
    var Elem = document.getElementById('menu-' + Stack[i]);
    if (Elem) Elem.style.left = '-1000px';
  }
  Count = 1;
  
  ElemId = -1;
  ParentId = -1; 
  Placement = 'v';
}

function MenuStart(Id, ParId, Placem)
{
  if (Id <= 0) return;

  clearTimeout(TimerOver);

  TimerOver = setTimeout("MenuOver(" + Id + ',' + ParId + ",'" + Placem + "')", 40);
  
  clearTimeout(TimerOut);
  TimerOut = null; 
  
  ElemId = -1;
  ParentId = -1; 
  Placement = 'v'; 
}

function MenuClose()
{
  if (TimerOut) return; 
  TimerOut = setTimeout("MenuOut()", 600);
  
  ElemId = -1;
  ParentId = -1; 
  Placement = 'v';
}

