function FindParent(Data, NodeName, Level) {

  if( typeof Level == "undefined" )
    Level = 0;

  Data["Level"] = Level;

  // если нет детей - дальше не ходим
  if( !Data["I"] )
    return null;

  for(var i in Data["I"] ) {

    // это индекс, но не ассоциативный массив
    i = parseInt(i);

    if( typeof Data["I"][i] == "function" )
      continue;

    Data["I"][i]["Level"] = Level + 1;

    if( Data["I"][i]["N"] == NodeName )
      return Data;

    // погружаемся в ребёнка
    var Node = FindParent(Data["I"][i], NodeName, Level + 1);

    if( Node )
      return Node;
  }

  return null;
}

function ItemOver(Obj, Id, Mode) {

  var result;

  //сначала всех прячем
  hideAll();
  
  //теперь ищем всех родителей выбранной вершины, и показываем их
  var parent = Id;
  do{
    result = FindParent(menu["root"], parent);
    
    if(result == null)
      break;
      
    if(result["N"] != 'root')
      $('menu-node-'+result["N"]).show();
      
    parent = result["N"];
  }
  while(1)
         
  $('menu-node-'+Id).show();

  if(Mode == 1){
    $('menu-node-'+Id).style.top = $('menu-item-'+Id).getHeight() + Position.cumulativeOffset($('menu-item-'+Id))[1] + 'px';
    $('menu-node-'+Id).style.left = Position.cumulativeOffset($('menu-item-'+Id))[0] + 'px';
  }
  else{
    $('menu-node-'+Id).style.left = Position.cumulativeOffset($('menu-item-'+Id))[0] + $('menu-item-'+Id).getWidth() + 'px';
    $('menu-node-'+Id).style.top =  Position.cumulativeOffset($('menu-item-'+Id))[1] + 'px';
  } 
}

function hideAll(){

  $$('.menu-node').each(function(value){
    value.hide();
  });
}
