(function(){
	jQuery.fn.frescaZoom = function(zoomSrc){
		jQuery("div#mainImageCont").unbind('mousemove');
		jQuery("div#mainImageCont").unbind('hover');
		jQuery("div#zoomCont").unbind('mouseover');
		jQuery("div#zoomCont, div#mouseWindow, img#zoomProductImg, img#mainImageCont, iframe#zoomFrame").remove();
		jQuery(this).wrap("<div id='mainImageCont'></div>");
		jQuery("<div id='zoomCont'></div>").css({"position":"absolute", "top":"-5000px"}).appendTo("div#mainImageCont");
		jQuery("<div id='mouseWindow'></div>").appendTo("div#mainImageCont");
		if(zoomSrc == '') {
			var imageSrc = jQuery(this).attr('src');
			var splitSrc = imageSrc.split("large");
			var newSrc = splitSrc[0] + 'zoom' + splitSrc[1];
		} else {
			newSrc = zoomSrc;
		}
		jQuery("<img id='zoomProductImg'>").attr("src", newSrc).appendTo(jQuery("div#zoomCont"));
		jQuery("<iframe id='zoomFrame' frameBorder='0'></iframe>").css({"display":"block", "width":jQuery("div#zoomCont").width(), "height":jQuery("div#zoomCont").height()}).prependTo(jQuery("div#zoomCont"));
		if(jQuery("img#zoomProductImg").height()>100){ // image has already loaded
			handleZoom();
		} else {
			jQuery("img#zoomProductImg").load(function(){ // preload image
				handleZoom();
			});
		}
	};
})(jQuery);

function handleZoom(){
	var imageRatio = parseFloat(jQuery("img#zoomProductImg").height()) / parseFloat(jQuery("img#mainProductImage").height());
	var maximumX = -(parseFloat(jQuery("img#zoomProductImg").width()) - parseFloat(jQuery("div#zoomCont").width()));
	var maximumY = -(parseFloat(jQuery("img#zoomProductImg").height()) - parseFloat(jQuery("div#zoomCont").height()));
	jQuery("div#mouseWindow").css({"height":(parseFloat(jQuery("div#zoomCont").height())/imageRatio + 'px'), "width":(parseFloat(jQuery("div#zoomCont").width())/imageRatio + 'px')}).hide();
	jQuery("div#zoomCont").hide().css({"position":"absolute", "top":"0px"});
	jQuery("div#mainImageCont").mousemove(function(e){
		var yPosition = this.offsetTop;
		var xPosition = this.offsetLeft;
		var parentElement = this.offsetParent;
		while (parentElement != null){
			yPosition += parentElement.offsetTop;
			xPosition += parentElement.offsetLeft;
			parentElement = parentElement.offsetParent;
		}
		var mouseXPosition = (e.pageX - xPosition - (parseFloat(jQuery("div#mouseWindow").width()) / 2));
		var mouseYPosition = (e.pageY - yPosition - (parseFloat(jQuery("div#mouseWindow").height()) / 2));
		var zoomXPosition = -(e.pageX - xPosition - (parseFloat(jQuery("div#mouseWindow").width()) / 2)) * imageRatio;
		var zoomYPosition = -(e.pageY - yPosition - (parseFloat(jQuery("div#mouseWindow").height()) / 2)) * imageRatio;
		if(zoomXPosition > 0){
			zoomXPosition = 0;
			mouseXPosition = 0;
		}
		else if(zoomXPosition < maximumX){
			mouseXPosition = -maximumX/imageRatio;
			zoomXPosition = maximumX;
		}
		if(zoomYPosition > 0){
			mouseYPosition = 0;
			zoomYPosition = 0;
		}
		else if(zoomYPosition < maximumY){
			mouseYPosition = -maximumY/imageRatio;
			zoomYPosition = maximumY;
		}
		jQuery("img#zoomProductImg").css({"top":zoomYPosition, "left":zoomXPosition});
		jQuery("div#mouseWindow").css({"top":mouseYPosition, "left":mouseXPosition});

	});
	var zoomed = false;
	jQuery("div#mainImageCont, div#productImageInstructions").hover(function(){
		jQuery(this).css("color","#333");
	},function(){
		jQuery(this).css("color","#666");
	}).click(function(e){
		if(zoomed){
			jQuery("div#mouseWindow").hide();
			jQuery("div#zoomCont").hide();
			jQuery("div#productImageInstructions").html('<img src=/fileadmin/templates/main/img/zoom.gif />');
			zoomed = false;
			return false;
		}
		else {
			//jQuery("div#altViewImg").removeClass("withShadow").removeShadow();
			//jQuery("div#altViewCont").css("display","none");
			jQuery("div#zoomCont").show();
			jQuery("div#mouseWindow").show();
			//jQuery("div#productImageInstructions").html(zoomOutText);
			jQuery("div#productImageInstructions").html('<img src=/fileadmin/templates/main/img/zoom.gif />');
			zoomed = true;
			jQuery("div#mainImageCont").hover(function(){},function(){
				jQuery("div#mouseWindow").hide();
				jQuery("div#zoomCont").hide();
				//jQuery("div#productImageInstructions").html(zoomInText);
				jQuery("div#productImageInstructions").html('<img src=/fileadmin/templates/main/img/zoom.gif />');
				zoomed = false;
			});
			return false;
		}
	}).css("cursor","pointer");
}

jQuery(document).ready(function(){
	//var channel = document.domain.substring(0, document.domain.indexOf(".")); // This works on dev, but not staging or live e.g. de.burberry.com
	var channel = document.domain.split(".")[2]; // This works on live but not staging or dev e.g. www.burberry.de
	var zoomIn = new Array(	);
		zoomIn.uk = "Click image to zoom in";
		zoomIn.fr = "Cliquez sur l'image pour zoomer";
		zoomIn.it = "Clicca qui per ingrandire";
		zoomIn.de = "Zum vergr&Ouml;ssern anklicken";
	var zoomOut = new Array();
		zoomOut.uk = "Click image to zoom out";
		zoomOut.fr = "Cliquez sur l'image pour d&eacute;zoomer";
		zoomOut.it = "Clicca qui per ridurre";
		zoomOut.de = "Zum verkleinern anklicken";
	switch(channel){
		case "fr": window.zoomInText = zoomIn.fr; window.zoomOutText = zoomOut.fr; break;
		case "it": window.zoomInText = zoomIn.it; window.zoomOutText = zoomOut.it; break;
		case "de": window.zoomInText = zoomIn.de; window.zoomOutText = zoomOut.de; break;
		default: window.zoomInText = zoomIn.uk; window.zoomOutText = zoomOut.uk; break;
	}
});