
jQuery(document).ready(function($){
    $('.expander').each(function(){
        var menu = this;
        // Primary navigation closes the menu
        $('#primary-navigation a').click(function(){
            $.cookie(menu.id + '_current',null);
          });
        $(menu).find('a').click(function(){
            var alreadyOpen;
            $(this).next('ul').each(function(){
                if ($(this).is(':visible')) alreadyOpen = true;
              });
            var currentId =  $.cookie(menu.id + '_current');
            if (this.id == currentId) return false;
            //if (alreadyOpen) return false; // doesn't change page if already open
            if (this.href == 'javascript:') $(this).each(dropDown);
            $(this).each(setCurrent);
          });
        doHighlights();
        doDrop();
        function doHighlights(){
          $(menu).find('a').each(highlightCurrent);
        }
        function doDrop(){
          var currentId =  $.cookie(menu.id + '_current');
          if (currentId){
            $('#' + currentId).each(dropDown);
          }
        }
        function highlightCurrent(){
          if ($.cookie(menu.id + '_current') == this.id)
            $(this).addClass('current');
          else if ($(this).hasClass('current'))
            $(this).removeClass('current');
        }
        function setCurrent(){
          if (this.href == 'javascript:') return;
          $.cookie(menu.id + '_current',this.id);
          doHighlights();
        }
        function dropDown(){
          var a = this;
          $(menu).find('ul').each(function(){
              if (!isParentOf(this,a))
                $(this).slideUp();
            });
          $(this).parents('ul').show();
          $(this).next('ul').show();
        }
        function isParentOf(parent,child){
          var isParent = false;
          $(child).parents().each(function(){
              if (this == parent)
                { isParent = true; return false; }
            });
          return isParent;
        }
      });
  });