﻿
		var zoomFactor = 1.0;
        var lastImage = null;
        var imgSrc = "";
        var imageParam = "";
        var lastX = 0;
        var lastY = 0;

        function imageZoom(ev)
        {
            if (!ev)
            {
                ev = window.event;
            }
    
            var srcImage = null;
            
            if (ev.target)
            {
                srcImage=ev.target;
            }
            else if (ev.srcElement)
            {
                srcImage=ev.srcElement;
            }
  
            if (srcImage.nodeType==3)
            {
                // safari issue Safari bug
                srcImage = srcImage.parentNode;
            }
            
            var offsetLeft = srcImage.offsetLeft;
            if(ev.pageY ) 
            {
                //FireFox
                var element = srcImage.offsetParent;
                while (element!=null)
                {
                    offsetLeft += element.offsetLeft;
                    element = element.offsetParent
                }
            }
            //alert("offsetLeft:  " + offsetLeft);
            var offsetTop = srcImage.offsetTop;
            if(ev.pageY ) 
            {
                //FireFox
                var element = srcImage.offsetParent;
                while (element!=null)
                {
                    offsetTop += element.offsetTop;
                    element = element.offsetParent
                }
            }
            //alert("offsetTop:  " + offsetTop);
    
            var scrollLeft = document.body.scrollLeft;
            if(ev.pageX )
                scrollLeft = ev.pageX - ev.clientX; //firefox
            //alert("scrollLeft:  " + scrollLeft);
            var scrollTop = document.body.scrollTop;
            if(ev.pageY )
                scrollTop = ev.pageY - ev.clientY; //firefox
        //    alert("scrollTop:  " + scrollTop);
            
            var posX = ev.clientX - offsetLeft + scrollLeft;
            if(ev.offsetX)
                posX = ev.offsetX; //ie, skipp all the "work" above...
            var posY = ev.clientY - offsetTop + scrollTop;
            if(ev.offsetY)
                posY = ev.offsetY; //ie
    
            //var x = posX / srcImage.width;
            //var y = posY / srcImage.height;  
            //alert("x: " + x+ ", y: " + y );
            
            if(lastImage != srcImage)
            {
                lastImage = srcImage;
                imagePara = "";
                zoomFactor = 1;
                lastX = 0;
                lastY = 0;
                imgSrc = srcImage.src;
                if(imgSrc.indexOf("imageParam") > 0)
                {
                    imageParam = "&" + imgSrc.substring(imgSrc.indexOf("imageParam") ); //take the imageParam and the rest of the URL
                }                
                if(imgSrc.indexOf("?") > 0)
                    imgSrc = imgSrc.substring(0, imgSrc.indexOf("?"));
            }
    
            lastX += posX * zoomFactor / srcImage.width - zoomFactor / 4;
            lastY += posY * zoomFactor / srcImage.height - zoomFactor / 4;

            zoomFactor /= 2;

            //make sure we are within the image
            if (lastX + zoomFactor > 1)
                lastX = 1 - zoomFactor;
            lastX = Math.max(0, lastX);
            if (lastY + zoomFactor > 1)
                lastY = 1 - zoomFactor;
            lastY = Math.max(0, lastY);

            var nextUrl = imgSrc + "?zoomFactor=" + zoomFactor + "&imageXPos=" + lastX + "&imageYPos=" + lastY + imageParam;
            //prompt("imageUrl", nextUrl);
            srcImage.src = nextUrl;
            return false;
        }

