	var zoomImage;
	var imageWidth, imageHeight;
	var imageX, imageY;
	var zoomImageWidth, zoomImageHeight;
	var positionX, positionY;
	var primaryTimer, secondaryTimer;
	var scale;
	var shadowBox, shadowSize;
	var loading,imgwait;

	var faktor_x=1.0;  // 1

	function doZoom(image) {
		loading=true;
		zoomImage = document.getElementById("zoomimg");
		shadowBox  = document.getElementById("shadowBox");
		shadowSize = document.getElementById("shadowSize");

		zoomImage.src = image.getAttribute("zoomsrc");
		zoomImage.style.width   = "auto";
		zoomImage.style.height  = "auto";
		zoomImage.style.display = "none";

		imageX = imageY = 0;

		var smallImage = image;

///	imageX = smallImage.offsetLeft;
///	imageY = smallImage.offsetTop;



		while(smallImage != null) {
			imageX += smallImage.offsetLeft; 
			imageY += smallImage.offsetTop; 
			smallImage = smallImage.offsetParent;
		}

		imageWidth  = image.offsetWidth;
		imageHeight = image.offsetHeight;


	//	imageWidth  = 1;
	//	imageHeight = 5;

		clearTimeout(primaryTimer);
		primaryTimer = setTimeout(triggerZoom,750);
	}

	function triggerZoom() {
		zoomImage.style.display = "block";

		zoomImageWidth  = zoomImage.width;
		zoomImageHeight = zoomImage.height;

		zoomX = imageX + (imageWidth/2)  - (zoomImageWidth/2);
		zoomY = imageY + (imageHeight/2) - (zoomImageHeight/2);

		zoomX = Math.max(zoomX, document.body.parentNode.scrollLeft);
		zoomY = Math.max(zoomY, document.body.parentNode.scrollTop);

		zoomX = Math.min(zoomX, document.body.parentNode.scrollLeft + document.body.parentNode.scrollWidth  - zoomImageWidth);
		zoomY = Math.min(zoomY, document.body.parentNode.scrollTop  + document.body.parentNode.scrollHeight - zoomImageHeight);
		scale = 0.2; 

		loading=false;

		setZoom();
	}

	function setZoom() {
		clearTimeout(secondaryTimer);
		if (scale < faktor_x){
			scale += 0.2;

			zoomImage.style.width  = (imageWidth + (zoomImageWidth - imageWidth) * scale)+"px";
			zoomImage.style.height = (imageHeight + (zoomImageHeight - imageHeight) * scale)+"px";
	//		zoomImage.style.left = (imageX + (zoomX - imageX) * scale)+"px";
	//		zoomImage.style.top  = (imageY + (zoomY - imageY) * scale)+"px";

			zoomImage.style.left = (imageX - (imageWidth/4) - (imageWidth/2) * scale)+"px";
			zoomImage.style.top  = (imageY ) - (20) +"px";


			secondaryTimer = setTimeout(setZoom,40);
		}
		if (scale == faktor_x) {
			shadowBox.style.left = (imageX + (zoomX - imageX) * scale)+"px";
			shadowBox.style.top  = (imageY + (zoomY - imageY) * scale)+"px";
			shadowSize.width  = zoomImageWidth  - 18;
			shadowSize.height = zoomImageHeight - 24;

			shadowBox.style.display  = 'block';
		}
	}

	function hideZoom() {
		if(loading == false) {
			shadowBox.style.display="none";
			clearTimeout(secondaryTimer);
			if (scale >= .25) {
					scale -= 0.25;
					zoomImage.style.width  = (imageWidth + (zoomImageWidth - imageWidth) * scale)+"px";
					zoomImage.style.height = (imageHeight + (zoomImageHeight - imageHeight) * scale)+"px";
					zoomImage.style.left = (imageX + (zoomX - imageX) * scale)+"px";
					zoomImage.style.top  = (imageY + (zoomY - imageY) * scale)+"px";
					secondaryTimer = setTimeout(hideZoom,20);
			} else {
				zoomImage = document.getElementById("zoomimg");
				shadowBox = document.getElementById("shadowBox");
				zoomImage.style.display='none';
			}
		}
	}

	function moveEvent(e) { 
		mX = e.clientX + document.body.parentNode.scrollLeft;
		mY = e.clientY + document.body.parentNode.scrollTop;

		if (mX > imageX+imageWidth || mY > imageY+imageHeight || mX < imageX || mY < imageY) {
			hideZoom();
		}	
	}

	function setZoomLink(link) {
		var zoomLink=link;
	}

