/*
$(document).ready(function() {
	$("#productImage").mouseover(mouseover);
	$("#productImage").mouseout(mouseout);
	$("#productImage").mousemove(mousemove);
});
*/

var PDPImage_width = 300;
var PDPImage_height = 300;
var PDPZoom_width = 2000;
var PDPZoom_height = 2000;

function enableZoom() {
	$("#productImage").mouseover(mouseover);
	$("#productImage").mouseout(mouseout);
	$("#productImage").mousemove(mousemove);
}

function disableZoom() {
	$("#productImage").unbind("mouseover", mouseover);
	$("#productImage").unbind("mouseout", mouseout);
	$("#productImage").unbind("mousemove", mousemove);
}

var zoomGlobalObject = new Object();

function mousemove(e) {
	var offset = $(this).offset();
	var leftMax = offset.left + PDPImage_width - zoomGlobalObject.boxWidth + 20;
	var topMax = offset.top + PDPImage_height - zoomGlobalObject.boxHeight + 20 ;
	var leftMin = offset.left;
	var topMin = offset.top;
			
	var left = e.pageX - (zoomGlobalObject.boxWidth / 2);
	var top = e.pageY - (zoomGlobalObject.boxHeight / 2);
	
	left = Math.min(left, leftMax);
	left = Math.max(leftMin, left);
	top = Math.min(top, topMax);
	top = Math.max(topMin, top);
	
	$("#zoomarea").css({left: left, top: top});

	var x = -1 * (left - leftMin - 10) * zoomGlobalObject.x_ratio;
	var y = -1 * (top - topMin - 10) * zoomGlobalObject.y_ratio;
	
	var pos = Math.round(x) + "px " + Math.round(y) + "px";

	$("#zoomdisplayarea").css("background-position", pos);
}

function mouseover(e) {
	if (!document.getElementById("zoomarea")) {
		$(this).append('<div id="zoomarea"></div>');
		$("#pdp_info").prepend('<div id="zoomdisplayarea"></div>');
		
		zoomGlobalObject = selectedZoomImageObject();
		zoomGlobalObject.width = PDPZoom_width;
		zoomGlobalObject.height = PDPZoom_height;
		zoomGlobalObject.x_ratio = zoomGlobalObject.width / PDPImage_width;
		zoomGlobalObject.y_ratio = zoomGlobalObject.height / PDPImage_height;
	
		zoomGlobalObject.boxWidth = $("#zoomdisplayarea").width() / zoomGlobalObject.x_ratio;
		zoomGlobalObject.boxHeight = $("#zoomdisplayarea").height() / zoomGlobalObject.y_ratio;
		
		var left = e.pageX - (zoomGlobalObject.boxWidth / 2);
		var top = e.pageY - (zoomGlobalObject.boxHeight / 2);
		$("#zoomarea").css({opacity: 0.5, left: left, top: top, width: zoomGlobalObject.boxWidth, height: zoomGlobalObject.boxHeight});

		var bg = "url(" + zoomGlobalObject.url + ")";
		$("#zoomdisplayarea").css({"background-image": bg});
	}
}

function mouseout(e) {
	if (!mouseInObject(e, this)) {
		removeZoom()
	}
}

function removeZoom() {
	$("#zoomarea").remove();
	$("#zoomdisplayarea").remove();	
}

function mouseInObject(e, obj) {
	var offset = $(obj).offset();
	var width = PDPImage_width + 22; // 22 is for 10px padding and 1px border
	var height = PDPImage_height + 22;

	var posx = 0;
	var posy = 0;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY) 	{
		posx = e.pageX;
		posy = e.pageY;
	}
	else if (e.clientX || e.clientY) 	{
		posx = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}

	if (posx > offset.left && posx < offset.left + width && posy > offset.top && posy < offset.top + height)
		return true;
	else
		return false;
}
