function setupToolTips(){
  identifyEndColumn();
  positionInfoColumn();
  $$('ul.grid > li span.wrapper').each(function(search_result){
    if (search_result.up('li').down('div.description')){
      search_result.observe('mouseover', function(){showToolTip(search_result);})
      search_result.observe('mouseout', function(){hideToolTip(search_result);})
      hideToolTip(search_result);
    }
  });
}

function showToolTip(search_result){
  var description = getDescriptionForElement(search_result);
  description.absolutize();
  description.clonePosition(search_result);
  description.addClassName('hover');
  description.style.visibility = 'visible';
}

function hideToolTip(search_result){
  var description = getDescriptionForElement(search_result);
  description.style.visibility = 'hidden';
  description.removeClassName('hover');
}

function getDescriptionForElement(element){
  return element.up('li').down('div.description');
}

// for some layouts, we've gotta alter the tooltips in the right-most column
//so they don't appear outside the page layout 
function identifyEndColumn(){
  // need this if logged in on search screens
  logged_in_search_page = $$('div.search-results.logged-in')[0];
  if (logged_in_search_page){
    $$('body.search div.works ul.grid > li').each(function(element, index){
      if ([3,7,11,15,19,23,27].include(index)){
        element.addClassName('alternate-tooltip-style');
      }
    });  
  }
  // also need this on group overview screens
  if ($('groups-show')){
    $$('ul.grid > li').each(function(element, index){
      if ([4,5,10,11,16,17].include(index)){
            element.addClassName('alternate-tooltip-style');
          }
    });
  }  
}

function positionInfoColumn(){
  if($$('div.info')[0]){
    $$('div.info')[0].absolutize(); 
  }
}

document.observe('dom:loaded', setupToolTips);
