/**********************************************************
 * Does a delayed popup for a menu
 * @Author Scott Benes (sbenes)
 * @Required jquery.js
 **********************************************************/


jQuery(function($){
  var timerOpen  = null;
  var timerClose = null;
  var timerCheck = null;
  var bPopupOpen = false;
  var delayTimeOff  = 500;
  var delayTimeMenu  = 0;
  var popupClass = 'popup_over';  

  var menuButtons = '#main_menu .weightloss, #main_menu .sportsnutr, #main_menu .genhealth';
  var menuPopups  = '.catalog_nav';
  var everything  = menuButtons + ', ' + menuPopups;

  var menuButtonsHover = '#main_menu .weightloss:hover, #main_menu .sportsnutr:hover, #main_menu .genhealth:hover';
  var menuPopupsHover  = '.catalog_nav:hover';
  var everythingHover  = menuButtonsHover + ', ' + menuPopupsHover;

  $(everything).hover(function(){
    $(this).addClass('activated');
  }, function(){
    $(this).removeClass('activated');
  });
  
  var delayedShow = function(button){
    clearTimeout(timerOpen);
    timerOpen = setTimeout(function(){openPopup(button)}, delayTimeMenu);
  };

  var openPopup = function(button){
    //check if still hovered on a button

    if(!$(menuButtons).is(".activated")){
      return;
    }

    if(bPopupOpen){
      closePopups();   
    }

    //should look into updating this, it is likely to break but uses 
    //index position of menu to open the same index positioned .catalog_nav menu
    var idx = parseInt($(button).attr('id').substr($(button).attr('id').length-1)) - 1; 
    $(menuPopups).eq(idx).show();
    $(button).find('a').addClass(popupClass);

    bPopupOpen = true;
    //add a check for delayed close once its open
    delayedCloseReset();
  };

  var delayedCloseReset = function() {
    clearTimeout(timerCheck);
    timerCheck = setTimeout(checkPopup, delayTimeOff);
   
  };

  var closePopups = function(){
    $(menuPopups).hide();
    $(menuButtons).find('a').removeClass(popupClass);
    bPopupOpen = false;
  };

  var checkPopup = function(){
    //if anypart of the popup or buttons are hovered don't do anything reset the delayedClose
    if($(everything).is('.activated')){
      delayedCloseReset();      
    } else {
      closePopups();
    };
  };

  $(menuButtons).mouseenter(function(){
    delayedShow(this);
  });

  $(everything).mouseleave(function(){
    delayedCloseReset();
  });

});
