var HIDE_DELAY = 150;
var IMAGE_URL_CACHE = {};
var hide_timers = {};

function revokeHide(selector) {
  if(hide_timers[selector] != null) {
    clearTimeout(hide_timers[selector]);
    hide_timers[selector] = null;
  }
}

function delayedHide(selector) {
  hide_timers[selector] = null;
  jQuery(selector).hide();
}

function showCategoryDropDown(menu_item) {
  var selector = '#' + menu_item.attr('id') + '_dropdown';
  var ul = jQuery(selector);
  menu_item.addClass('hover');
  revokeHide(selector);
  var t = menu_item.offset().top + menu_item.outerHeight();
  var l = menu_item.offset().left;
  ul.css('top', t + 'px');
  ul.css('left', l);
  ul.show();
}

function hideCategoryDropDown(menu_item) {
  var selector = '#' + menu_item.attr('id') + '_dropdown';
  hide_timers[selector] = setTimeout(function() {
    menu_item.removeClass('hover');
    delayedHide(selector);
  }, HIDE_DELAY);
}

function showSubcategories(li, key) {
  var dropdown = jQuery(li.closest('.category-dropdown'))
  if(dropdown.length > 0) {
    revokeHide('#' + dropdown.attr('id'));
  }
  revokeHide('#' + li.attr('id') + ' #' + key + '_children');
  var ul = jQuery(li.find('#' + key + '_children'));
  ul.show();
}

function hideSubcategories(li, key) {
  var selector = '#' + li.attr('id') + ' #' + key + '_children';
  hide_timers[selector] = setTimeout(function () {
    delayedHide(selector);
  }, HIDE_DELAY);
}

