/**
* hoverIntent r5 // 2007.03.27 // jQuery 1.1.2+
* <http://cherne.net/brian/resources/jquery.hoverIntent.html>
* 
* @param  f  onMouseOver function || An object with configuration options
* @param  g  onMouseOut function  || Nothing (use configuration options object)
* @author    Brian Cherne <brian@cherne.net>
*/
(function($){$.fn.hoverIntent=function(f,g){var cfg={sensitivity:7,interval:100,timeout:0};cfg=$.extend(cfg,g?{over:f,out:g}:f);var cX,cY,pX,pY;var track=function(ev){cX=ev.pageX;cY=ev.pageY;};var compare=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);if((Math.abs(pX-cX)+Math.abs(pY-cY))<cfg.sensitivity){$(ob).unbind("mousemove",track);ob.hoverIntent_s=1;return cfg.over.apply(ob,[ev]);}else{pX=cX;pY=cY;ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}};var delay=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);ob.hoverIntent_s=0;return cfg.out.apply(ob,[ev]);};var handleHover=function(e){var p=(e.type=="mouseover"?e.fromElement:e.toElement)||e.relatedTarget;while(p&&p!=this){try{p=p.parentNode;}catch(e){p=this;}}if(p==this){return false;}var ev=jQuery.extend({},e);var ob=this;if(ob.hoverIntent_t){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);}if(e.type=="mouseover"){pX=ev.pageX;pY=ev.pageY;$(ob).bind("mousemove",track);if(ob.hoverIntent_s!=1){ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}}else{$(ob).unbind("mousemove",track);if(ob.hoverIntent_s==1){ob.hoverIntent_t=setTimeout(function(){delay(ev,ob);},cfg.timeout);}}};return this.mouseover(handleHover).mouseout(handleHover);};})(jQuery);

// JavaScript Document
$(function()
{
  var hideDelay = 500;  
  var currentID;
  var hideTimer = null;
	var ajax = null;  	

	var hideFunction = function()  
	{  
		if (hideTimer)  
			clearTimeout(hideTimer);  
		hideTimer = setTimeout(function()  
		{  
			currentPosition = { left: '0px', top: '0px' };  
			container.css('display', 'none');  
		}, hideDelay);  
	};  

	var currentPosition = { left: '0px', top: '0px' };

  // One instance that's reused to show info for the current person
  var container = $('<div id="personPopupContainer">'
			+'<div id="personPopupContent"></div>'
      + '</div>');

  $('body').append(container);

  $('.personPopupTrigger').live('mouseover', function()
  {
		if (!$(this).data('hoverIntentAttached'))  
		{  
			$(this).data('hoverIntentAttached', true);  
			$(this).hoverIntent  
			(  
				// hoverIntent mouseOver  
				function()  
				{  
					if (hideTimer)
						clearTimeout(hideTimer);
									
					var domainname = $(this).attr('rel');					
					if(domainname=='')
						return;
					
					var pos = $(this).offset();  
					var width = $(this).width();  
					var reposition = { left: (pos.left + width) + 'px', top: pos.top - 40 + 'px' };  
					
					// If the same popup is already shown, then don't requery  
					if (currentPosition.left == reposition.left &&  currentPosition.top == reposition.top)  
						return;  
					
					container.css({  
							left: reposition.left,  
							top: reposition.top  
					});  
					
					currentPosition = reposition;  
							
					$('#personPopupContent').html('&nbsp;');  
							
					if (ajax)  
					{  
						ajax.abort();  
						ajax = null;  
					}  

					$.ajax({
							type: 'GET',
							url: 'store/popup.html',
							data: 'domain=' + domainname,
							success: function(data)
							{
								$('#personPopupContent').html(data);
							}
					});

      		container.css('display', 'block');
  			},hideFunction
			);
 			$(this).trigger('mouseover');
    }  
  });   

  // Allow mouse over of details without hiding details
  $('#personPopupContainer').mouseover(function()
  {
		if (hideTimer)
    	clearTimeout(hideTimer);
  });

  // Hide after mouseout
  $('#personPopupContainer').mouseout(hideFunction);
	
});
