$(document).ready(function () {
  var index = 1;
  $('li.has-submenu').live('mouseover', function (event) {
    $(this).addClass('mouse-is-over');
    i = 0;
    par = $(event.originalTarget).parent();
    while (par != null && par.length > 0) {
      if($(par).hasClass('submenu'))
        return;
      if($(this).get(0) == $(par).get(0)) {
        break;
      }
      par = $(par).parent();
      i++;
      if(i > 100) {
        return;
      }
    }
    pos = $(this).position();
    pos.top += $(this).height();
    $(this).oneTime(10, function () {
      submenu_width = $($(this).children()).filter('.submenu-container').outerWidth();
      max_pos = $('#main_menu_outer').offset().left + $('#main_menu_outer').width()
      if(pos.left + submenu_width > max_pos) {
        pos.left = max_pos - submenu_width;
      }
      if($(this).hasClass('mouse-is-over'))
        $($(this).children()).filter('.submenu-container').css({position: 'absolute'}).css(pos).slideDown('slow');
    })
  });
  $('li.has-submenu').live('mouseout', function (event) {
    $(this).removeClass('mouse-is-over');
    $(this).oneTime(200, function() {
      if(!$(this).hasClass('mouse-is-over')) {
        $($(this).children()).filter('.submenu-container').fadeOut('slow');
      }
    })
  });
});