var is_menu_div_over = false;
var menu_div_timer_id = 0;
var menu_div_timeout = 500;

// Функция срабатывает при наведении на всплывающее меню.
function menu_div_over(main_obj_name)
{
  is_menu_div_over = true;
  var main_obj = get_object(main_obj_name);
  if (is_object(main_obj))
  {
    is_menu_list_over = true;
    if (!is_substring("_over", main_obj.className) &&
      !is_substring("_select", main_obj.className))
      main_obj.className = main_obj.className + "_over";
    set_img_src(main_obj.id + '_img_left', true);
    set_img_src(main_obj.id + '_img_right', true);
  }
}

// Функция срабатывает при уходе от всплывающего меню.
function menu_div_out(div_name, main_obj_name)
{
  is_menu_div_over = false;
	menu_div_timer_id = setTimeout("menu_div_hide('" + div_name + "','" + main_obj_name + "')", menu_div_timeout);
  var div = get_object(div_name);
  div_item = get_object(div.lang.split('__')[1]);
  if (is_object(div_item))
    div_item.className = div_item.className.replace("_over", "");
}

// Функция скрывает всплывающее меню.
function menu_div_hide(div_name, main_obj_name)
{
  if (is_menu_div_over)
    return;
  var div = get_object(div_name);
  if (!is_object(div))
    return;
	div.style.visibility = "hidden";
  menu_div_hide_by_parent(div.id);
  menu_div_hide_by_child(div);
  var main_obj = get_object(main_obj_name);
  if (is_object(main_obj) && is_substring("_over", main_obj.className))
  {
    main_obj.className = main_obj.className.replace("_over", "");
    set_img_src(main_obj.id + '_img_left', false);
    set_img_src(main_obj.id + '_img_right', false);
  }
}

// Функция скрывает все всплывающие меню.
function menu_div_hide_all()
{
  div_array = document.getElementsByTagName("div");
	for (var i = 0; i < div_array.length; i++)
    if (is_substring("menu_div_", div_array[i].lang.split('__')[0]))
			get_object(div_array[i].id).style.visibility = "hidden";
}

// Функция скрывает всплывающие меню одного уровня.
function menu_div_hide_by_parent(parent_name)
{
  div_array = document.getElementsByTagName("div");
	for (var i = 0; i < div_array.length; i++)
    if (div_array[i].lang.split('__')[0] == parent_name)
			get_object(div_array[i].id).style.visibility = "hidden";
}

// Функция скрывает родительские всплывающие меню дочернего меню.
function menu_div_hide_by_child(div)
{
  var div_temp = div;
  while (true)
  {
    if (is_substring("_link", div_temp.id))
      break;
    div_parent_temp = get_object(div_temp.lang.split('__')[0]);
    div_temp.style.visibility = "hidden";
    div_temp = div_parent_temp;
  }
}

// Функция показывает всплывающее меню.
function menu_div_show(div_name, obj_name, left, top)
{
  var div = get_object(div_name);
  if (!is_object(div))
    return;
  menu_div_hide_all();
  var obj = get_object(obj_name);
  var div_parent_temp = get_object(div.lang.split('__')[0]);
  var point = get_absolute_position(obj);
  clearTimeout(menu_div_timer_id);
  is_menu_div_over = true;

  if (is_substring("_link", div_parent_temp.id))
    div.style.left = point.x + left;
  else
    div.style.left = point.x + left + parseInt(div_parent_temp.style.width);
  div.style.top = point.y + top;
  var div_temp = div;
  while (true)
  {
    if (is_substring("_link", div_temp.id))
      break;
    div_parent_temp = get_object(div_temp.lang.split('__')[0]);
    div_temp.style.visibility = "visible";
    div_temp = div_parent_temp;
  }
}

// Функция срабатывает при наведении на пункт всплывающего меню.
function menu_div_item_over(div_item, menu_div_name, menu_div_next_name, left, top)
{
  if (!is_substring("_over", div_item.className))
    div_item.className = div_item.className + "_over";
  if (menu_div_next_name)
    menu_div_show(menu_div_next_name, div_item.id, left, top);
  else
    menu_div_hide_by_parent(menu_div_name);

  var div = get_object(menu_div_name);
  var div_temp = div;
  while (true)
  {
    if (is_substring("_link", div_temp.id))
      break;
    div_parent_temp = get_object(div_temp.lang.split('__')[0]);
    div_item = get_object(div_temp.lang.split('__')[1]);
    if (is_object(div_item) && !is_substring("_over", div_item.className))
      div_item.className = div_item.className + "_over";
    div_temp = div_parent_temp;
  }
}

// Функция срабатывает при уходе от пункта всплывающего меню.
function menu_div_item_out(div_item)
{
  div_item.className = div_item.className.replace("_over", "");
}
