$(function () {
  var hide_menu = false;
  var mouse_event = false;
  var oldX = oldY = 0;

  $(document).mousemove(function (e) {
    if (oldX == 0) {
      oldX = e.pageX;
      oldY = e.pageY;
    }

    if (oldX != e.pageX || oldY != e.pageY) {
      mouse_event = true;
    }
  });

  // 주메뉴
  var $gnb = $(".gnb_1dli > a");
  $gnb.mouseover(function () {
    if (mouse_event) {
      $("#hd").addClass("hd_zindex");
      $(".gnb_1dli").removeClass("gnb_1dli_over gnb_1dli_over2 gnb_1dli_on");
      $(this).parent().addClass("gnb_1dli_over gnb_1dli_on");
      menu_rearrange($(this).parent());
      hide_menu = false;
    }
  });

  $gnb.mouseout(function () {
    hide_menu = true;
  });

  $(".gnb_2dli").mouseover(function () {
    hide_menu = false;
  });

  $(".gnb_2dli").mouseout(function () {
    hide_menu = true;
  });

  $gnb.focusin(function () {
    $("#hd").addClass("hd_zindex");
    $(".gnb_1dli").removeClass("gnb_1dli_over gnb_1dli_over2 gnb_1dli_on");
    $(this).parent().addClass("gnb_1dli_over gnb_1dli_on");
    menu_rearrange($(this).parent());
    hide_menu = false;
  });

  $gnb.focusout(function () {
    hide_menu = true;
  });

  $(".gnb_2da").focusin(function () {
    $(".gnb_1dli").removeClass("gnb_1dli_over gnb_1dli_over2 gnb_1dli_on");
    var $gnb_li = $(this).closest(".gnb_1dli").addClass("gnb_1dli_over gnb_1dli_on");
    menu_rearrange($(this).closest(".gnb_1dli"));
    hide_menu = false;
  });

  $(".gnb_2da").focusout(function () {
    hide_menu = true;
  });

  $('#gnb_1dul>li').bind('mouseleave', function () {
    submenu_hide();
  });

  $(document).bind('click focusin', function () {
    if (hide_menu) {
      submenu_hide();
    }
  });
});

function submenu_hide() {
  $("#hd").removeClass("hd_zindex");
  $(".gnb_1dli").removeClass("gnb_1dli_over gnb_1dli_over2 gnb_1dli_on");
}

function menu_rearrange(el) {
  var width = $("#gnb_1dul").width();
  var left = w1 = w2 = 0;
  var idx = $(".gnb_1dli").index(el);
  var max_menu_count = 0;
  var $gnb_1dli;

  for (i = 0; i <= idx; i++) {
    $gnb_1dli = $(".gnb_1dli:eq(" + i + ")");
    w1 = $gnb_1dli.outerWidth();

    if ($gnb_1dli.find(".gnb_2dul").size())
      w2 = $gnb_1dli.find(".gnb_2dli > a").outerWidth(true);
    else
      w2 = w1;

    if ((left + w2) > width) {
      if (max_menu_count == 0)
        max_menu_count = i + 1;
    }

    if (max_menu_count > 0 && (idx + 1) % max_menu_count == 0) {
      el.removeClass("gnb_1dli_over").addClass("gnb_1dli_over2");
      left = 0;
    } else {
      left += w1;
    }
  }
}
