$(function()
{
  var hideDelay = 500;  
  var hideTimer = null;

  // One instance that's reused to show info for the current person
  var container = $('<div id="personPopupContainer">'
      + '<table width="" border="0" cellspacing="0" cellpadding="0" align="center" class="personPopupPopup">'
      + '<tr>'
      + '   <td class="corner topLeft"></td>'
      + '   <td class="top"></td>'
      + '   <td class="corner topRight"></td>'
      + '</tr>'
      + '<tr>'
      + '   <td class="left">&nbsp;</td>'
      + '   <td><div id="personPopupContent"></div></td>'
      + '   <td class="right">&nbsp;</td>'
      + '</tr>'
      + '<tr>'
      + '   <td class="corner bottomLeft">&nbsp;</td>'
      + '   <td class="bottom">&nbsp;</td>'
      + '   <td class="corner bottomRight"></td>'
      + '</tr>'
      + '</table>'
      + '</div>');

  $('body').append(container);

  $('.personPopupTrigger').live('mouseover', function()
  {
      var ID = $(this).attr('rel');

     if (hideTimer)
          clearTimeout(hideTimer);

      var pos = $(this).offset();
      var width = $(this).width();
      var container_width = $(container).width();
      
      if ($(this).hasClass('popupFloatLeft')) 
      {
        container.css({
            left: (pos.left - container_width) + 'px',
            top: pos.top - 5 + 'px'
        });
      }
      else 
      {
        container.css({
            left: (pos.left + width) + 'px',
            top: pos.top - 5 + 'px'
        });
      }
      
      $('#personPopupContent').html('&nbsp;');

      $.ajax({
          type: 'GET',
          url: '/ajax.php',
          //data: 'page=' + pageID + '&guid=' + currentID,
          data: ID,
          success: function(data)
          {
              // Verify that we're pointed to a page that returned the expected results.
              /*if (data.indexOf('personPopupResult') < 0)
              {
                  $('#personPopupContent').html('<span >Page ' + pageID + ' did not return a valid result for person ' + currentID + '. Please have your administrator check the error log.</span>');
              }*/

              // Verify requested person is this person since we could have multiple ajax
              // requests out if the server is taking a while.
              //if (data.indexOf(currentID) > 0)
              //{                  
                  //var text = $(data).find('.personPopupResult').html();
                  $('#personPopupContent').html(data);
              //}
          }
      });

      container.css('display', 'block');
  });

  $('.personPopupTrigger').live('mouseout', function()
  {
      if (hideTimer)
          clearTimeout(hideTimer);
      hideTimer = setTimeout(function()
      {
          container.css('display', 'none');
      }, hideDelay);
  });

  // Allow mouse over of details without hiding details
  $('#personPopupContainer').mouseover(function()
  {
      if (hideTimer)
          clearTimeout(hideTimer);
  });

  // Hide after mouseout
  $('#personPopupContainer').mouseout(function()
  {
      if (hideTimer)
          clearTimeout(hideTimer);
      hideTimer = setTimeout(function()
      {
          container.css('display', 'none');
      }, hideDelay);
  });
});
