/*
 * jQuery Popup v1.0 - url
 *
 * By Sebastian Nitu - Copyright 2009 - All rights reserved
 * 
 */

(function(jQuery) {
	jQuery.fn.popup = function() {
		
		jQuery(this).each(function() {
		
		// options
		var distance = 10;
		var time = 250;
		var hideDelay = 250;
		
		var hideDelayTimer = null;
				
		// tracker
		var beingShown = false;
		var shown = false;
		
		var trigger = jQuery(this);
		var popup = trigger.siblings('.info_box').css('opacity', 0);
		
		// size calculations
		
		var topPosition = (popup.height()) + 5;
		
		var triggerWidth = trigger.width();
		var popupWidth = popup.width();
		
		var leftPosition = triggerWidth;
		
		// set the mouseover and mouseout on both elements
		jQuery(trigger).mouseover(function () {
		
			// stops the hide event if we move from the trigger to the popup element
			if (hideDelayTimer) clearTimeout(hideDelayTimer);
	
			// don't trigger the animation again if we're being shown, or already visible
			if (beingShown || shown) {
				return;
			} else {
				beingShown = true;
	
			// reset position of popup box
			popup.css({
				top: -topPosition,
				left: -70,
				display: 'block' // brings the popup back in to view
			})
	
			// (we're using chaining on the popup) now animate it's opacity and position
			.animate({
				top: '-=' + distance + 'px',
				opacity: 1
			}, time, 'swing', function() {
			
					// once the animation is complete, set the tracker variables
					beingShown = false;
					shown = true;
				
				});
			}
			
		}).mouseout(function () {
		
		// reset the timer if we get fired again - avoids double animations
		if (hideDelayTimer) clearTimeout(hideDelayTimer);
	      
		// store the timer so that it can be cleared in the mouseover if required
		hideDelayTimer = setTimeout(function () {
		
			hideDelayTimer = null;
			popup.animate({
				top: '-=' + distance + 'px',
				opacity: 0
			}, time, 'swing', function () {
				
					// once the animate is complete, set the tracker variables
					shown = false;
					
					// hide the popup entirely after the effect (opacity alone doesn't do the job)
					popup.css('display', 'none');
				
				});
			}, hideDelay);
		});
		
		});
	};
})(jQuery);