function registerFacetHandlers() {
   
   // get the lists of opened and closed search ids and apply their values
   var opened = getCookieList('searchnav-opened');
   var closed = getCookieList('searchnav-closed');
   var i = 0;
   var label = null;
   if (opened) {
      for (i = 0; i < opened.length; i++) {
         label = $('a#' + opened[i]);
         if (label.length) {
            if (!label.parent().hasClass('open'))
            label.parent().addClass('open');
         }
      }
   }
   if (closed) {
      for (i = 0; i < closed.length; i++) {
         label = $('a#' + closed[i]);
         if (label.length) {
            if (label.parent().hasClass('open'))
            label.parent().removeClass('open');
         }
      }
   }   
   
   // close any non-opened uls in the facets
   $('ul.collapse li[class!=open] a.label').each(function() {
      // slide up
      $(this).siblings('ul').slideUp(0);
   });
   
   // register clicks on facets
   $('ul.collapse li a.label').click(function() {
      
      // toggle states
      var neighbor = $(this).siblings('ul');
      neighbor.slideToggle();
      neighbor.parent().toggleClass('open');

      // store open / closed states
      var id = $(this).attr('id');
      if (neighbor.parent().hasClass('open')) {
         if (id) {
            removeFromCookieList('searchnav-closed', id);
            addToCookieList('searchnav-opened', id);
         }
      } else {
         if (id) {
            removeFromCookieList('searchnav-opened', id);
            addToCookieList('searchnav-closed', id);
         }
      }
      
      // that's all
      return false;
   });
}

function registerOptionsHandlers() {
   
   // hide the change button
   $('form#drink-search-options-form input.submit').hide();
   
   // register change handlers
   function handleChange() {
      
      $(this.form).submit();
   }
   
   $('select#id_view_as').change(handleChange);
   $('select#id_sort_by').change(handleChange);
}