// --------------------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------------------
// behaviours - Displays overlay on hover of hub;
// depends: 	jQuery library;
// author:		nr;
// --------------------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------------------

(function hubOverlay() {
	
	var showDelay = 500;
	var showDelayTimer = null;
	var visible = false;
	var $trigger = $('.sliderDisplay .overlay, .nonSliderDisplay .overlay');
	var cX, cY, pX, pY;
	var paddingLeft = 25, paddingTop = 17;
	var rightOffset = 428;
	var overlayRightClass = 'overlayRight';
	
	$trigger.mouseover(function(event) {
		var $target = $(event.target);
		if (!$target.is('img')) {
			return;
		}
		
		if(showDelayTimer) {
			clearTimeout(showDelayTimer);
			showDelayTimer = null;
		}
		
		// possibly IE will require this.
		//var event = jQuery.extend( {}, e);
		
		$().bind('mouseover', getMousePosition);

		var that = this;
		
		showDelayTimer = setTimeout(function(e) {
			// Original mouse co-ordinates
			pX = event.pageX;
			pY = event.pageY;
			
			// Compare current mouse co-ordinates with original
			if (!visible && pX !== cX && pY !== cY) {
				return;
			}
			
			visible = true;
			var $overlay = $('#overlay');
			
			$overlay.append($('<div>').append( $(that).eq(0).clone() ).html());
			
			// position overlay based on image position
			var offset = $target.offset();
			
			var topPos = offset.top - paddingTop;
			var leftPos = offset.left - paddingLeft;
			var scrollContainerLeftPos = $(".scrollContainer").offset().left;
			
			var windowWidth = $(document).width();
			var overlayWidth = $overlay.width();
			var scrollContainerWidth = $(".scrollContainer").width();
			
			var midPoint = scrollContainerLeftPos + (scrollContainerWidth / 2);
			if ( ( (leftPos > midPoint) && (leftPos - overlayWidth + $target.width() > 0) ) || (leftPos + overlayWidth > windowWidth)  ) {
				$('#overlay .overlay').addClass(overlayRightClass);
				leftPos = leftPos - rightOffset;
			}
														
			$overlay.css( { 'left' : leftPos + 'px', 'top' : topPos + 'px' });
			
			$overlay.fadeIn(function() {
				$(this).mouseleave(function() {
					$(this).fadeOut(function() {
						$(this).empty();
					});
					visible = false;
				});
			});
			 
			$().unbind('mouseover', getMousePosition);
			
		}, showDelay);
		
		
	});
	
	function getMousePosition(e) {
		cX = e.pageX;
		cY = e.pageY;
	}
	
})();


// --------------------------------------------------------------------------------------------------------------------------------
// --- end of file --- 
// -------------------------------------------------------------------------------------------------------------------------------

