(function($) {
	$.fn.GillProductHover = function(attachEl, container) {

		var attachDiv = $(attachEl);
		var containerDiv = $(container);
		var containerOffset = containerDiv.offset();
		var containerWidth = containerDiv.width();
		var rolloverEl = attachDiv.find(".shop-item-rollover");

		if(rolloverEl.length == 0) {
			rolloverEl = $('<div class="shop-item-rollover"><div class="shop-rollover-title"><p class="altDesc"></p></div><div class="shop-rollover-image"></div><div class="shop-rollover-price"><p class="price"></p></div></div>')
							.appendTo(attachDiv);
		}

		var rolloverCode = rolloverEl.find('p.code');
		var rolloverTitle = rolloverEl.find('p.altDesc');
		var rolloverImgEl = rolloverEl.find('.shop-rollover-image');
		var rolloverPrice = rolloverEl.find('p.price');

		var rolloverDivWidth = rolloverEl.width();
		var rolloverDivHeight = rolloverEl.height();

		var rolloverTimeout, rolloverEl;

		var getImgData = function(img) {
			var mainParts = img.attr('alt').split(" | ");
			var priceParts = mainParts[1].split("=");

			return {
				desc:	mainParts[0],
				price:	priceParts[1],
				code:	mainParts[2]
			};
		};

		var getNewImgSrc = function(src, newSrc) {
			return src
					.replace('_small.gif',newSrc)
					.replace('_med.jpg',newSrc)
					.replace('_large.png',newSrc);
		};

		var updateRollover = function(el) {
			//if(this.working || !this.doHover)
			//	return;

			var imgData = el.data('imgData');

			if(!imgData) {
				imgData = getImgData(el);
				el.data('imgData', imgData);
			}

			var srcImage = getNewImgSrc(el.attr('src'), '_large.png');

			rolloverTitle.html(imgData.desc+' <span class="product-code">'+imgData.code+'</span>');
			rolloverPrice.html(price_text + ': <span>' + imgData.price + '</span>'); // price_text is defined inline in each view

			var rolloverImg = rolloverImgEl.children('img');
			var hasImg = true;

			if(rolloverImg.length == 0) {
				hasImg = false;
				rolloverImg = $('<img/>')
			}

			rolloverImg
					.attr('src', srcImage)
					.attr('alt', imgData.desc);

			if(!hasImg) {
				rolloverImgEl.append(rolloverImg);
			}

			rolloverEl.show();
		};

		var moveRollover = function(e) {
			//if(this.working || !this.doHover)
			//	return;

			var mousePosX = e.pageX - containerOffset.left;//containerDiv.offset().left;
			var mousePosY = e.pageY - containerOffset.top;//containerDiv.offset().top;
			
			var maxHeight = $(document).scrollTop() + $(window).height() - containerOffset.top;

			var top = mousePosY + 20 + rolloverDivHeight < maxHeight;
			var left = mousePosX + 20 + rolloverDivWidth < containerWidth;

			rolloverEl.css({
				'left': left ? mousePosX + 60 : mousePosX  - rolloverDivWidth - 60 + 'px',
				'top': top ? mousePosY + 10 : mousePosY + 10 - rolloverDivHeight,
				'backgroundImage':'url(/images/shop-overview/rollover-bg-' + (top ? 'top' : 'bottom') + '-' + (left ? 'left' : 'right') + '.png)'
			});
		};

		this
			.mouseenter(function(e) {
				clearTimeout(rolloverTimeout);
				updateRollover($(this));
			})
			.mouseleave(function(e) {
				rolloverTimeout = setTimeout(function() {
					rolloverEl.hide();
				}, 5);
			});

		containerDiv
				.mousemove(function(e) {
					moveRollover(e);
				})
				.mouseleave(function(e) {
					clearTimeout(rolloverTimeout);
					rolloverEl.hide();
				});

		return this;
	};
})(jQuery);

$(function() {
	
});

