/* ³]©w */
var menu_array = new Array();
var menu_display_timeout = 0;

var menu_current_actived='';
var mouse_in_button ='';
var mouse_in_menu ='';

$(function() {
  setupMenuBtn("menu1", "menubtn1", 0, 0, 1);
  setupMenuBtn("menu2", "menubtn2", 0, 0, 1);
  setupMenuBtn("menu3", "menubtn3", 0, 0, 1);
  setupMenuBtn("menu4", "menubtn4", 0, 0, 1);
});

function setupMenuBtn(menu, button, off_x, off_y, inc_height) {
  //menu_array.push(menu);
  //menubtn_array.push(button);
  var mo = { 'menu':menu, 'button': button};
  menu_array.push({
    'obj': mo,
    'menu': menu,
    'button': button,
    'active': false
    }) ;
  
  
  $("#"+button).hover(
    function() {
      mouse_in_button=true;
      mouse_in_menu=false;
      clearMenuTimeout();
      popupMenu(menu, button, off_x, off_y, inc_height);
    },
    function () {
      mouse_in_button=false;
			clearMenuTimeout();
      check_closemenu(mo);
    }
  );
  $("#"+menu).hover(
    function() {
      mouse_in_button=false;
      mouse_in_menu=true;
			clearMenuTimeout();
    },
    function() {
      mouse_in_menu=false;
			clearMenuTimeout();
      check_closemenu(mo);
    }
  );
}

function popupMenu(menu, button, off_x, off_y, inc_height) {
 
  last_popupMenuSetting={
    'menu':menu,
    'button':button,
    'off_x':off_x,
    'off_y':off_y,
    'inc_height':inc_height
  };
  //menu_display_timeout = window.setTimeout(do_popupMenu, 500);
  do_popupMenu();
}
/*
function do_popupMenu(menu, button, off_x, off_y, inc_height) {
  closeother(menu);
  removeOtherHoverCSS(button);
  var offset = $("#"+button).offset();
  var p = $("#"+button).position();
  var h = $("#"+button).height();
  var oy = off_y;
  if( inc_height==1 ) oy += h;
  if( inc_height==-1 ) oy -= h;
  applyHoverCSS(button);
  do_showmenu( menu,
    p.left+off_x ,//+offset.left ,
    p.top+oy //+offset.top
  );
}*/
var last_popupMenuSetting=null;
function do_popupMenu() {
  //menu, button, off_x, off_y, inc_height
  closeother(last_popupMenuSetting.menu);
  removeOtherHoverCSS(last_popupMenuSetting.button);
  var offset = $("#"+last_popupMenuSetting.button).offset();
  var p = $("#"+last_popupMenuSetting.button).position();
  var h = $("#"+last_popupMenuSetting.button).height();
  var oy = last_popupMenuSetting.off_y;
  if( last_popupMenuSetting.inc_height==1 ) oy += h;
  if( last_popupMenuSetting.inc_height==-1 ) oy -= h;
  applyHoverCSS(last_popupMenuSetting.button);
  do_showmenu( last_popupMenuSetting.menu,
    p.left+last_popupMenuSetting.off_x ,//+offset.left ,
    p.top+oy //+offset.top
  );
}

function clearMenuTimeout() {
  window.clearTimeout(menu_display_timeout);
  menu_display_timeout=0;
}

function showmenu(m, posx, posy) {
  /*$("#"+m).css("left", posx);
  $("#"+m).css("top", posy);
  $("#"+m).show();*/
  menu_display_timeout = window.setTimeout(do_showmenu, 300, m, posx, posy);
}
function do_showmenu(m, posx, posy) {
  $("#"+m).css("left", posx);
  $("#"+m).css("top", posy);
  $("#"+m).show();
}
function closemenu(mo) {
  menu_display_timeout = window.setTimeout(do_closemenu, 300, mo);
}
function do_closemenu(mo) {
  $("#"+mo.menu).hide();
  removeHoverCSS(mo.button);
}
function check_closemenu(mo) {
  last_check_closemenu_mo=mo;
  menu_display_timeout = window.setTimeout(do_check_closemenu, 300);
}
var last_check_closemenu_mo=null;
function do_check_closemenu() {
  if( mouse_in_button || mouse_in_menu ) return;
  
  var mo=last_check_closemenu_mo;
  if(mo==null)return;
  $("#"+mo.menu).hide();
  removeHoverCSS(mo.button);
}
function closeallmenu() {
  menu_display_timeout = window.setTimeout(do_closeallmenu, 300);
}
function do_closeallmenu() {
  for(var i=0;i< menu_array.length;i++) {
    do_closemenu(menu_array[i].obj);
  }
}

function closeother(m) {
  for(var i=0;i< menu_array.length;i++) {
    if( m!= menu_array[i].menu ) do_closemenu(menu_array[i].obj);
  }
}
function removeOtherHoverCSS(b){
  for(var i=0;i< menu_array.length;i++) {
    if( b!= menu_array[i].button ) removeHoverCSS(menu_array[i].button);
  }
}
function isAnyMenuPopuped() {
  for(var i=0;i< menu_array.length;i++) {
    if( menu_array[i].active ) return true;
  }
  return false;
}
function applyHoverCSS(b) {
  $("#"+b).addClass('hover');
}
function removeHoverCSS(b) {
  $("#"+b).removeClass('hover');
}

