var offsetX;
var offsetY;
var startX;
var startY;
var minX;
var maxX;
var minY;
var maxY;
var ZoomIn;
var ZoomOut;
var mapSize;


   function startRubber (evt){    
//Note: 1:	Event.x (or y) is the coord of the mouse click.
//		2:	offsetX (or Y) retrieves the x (or y) coord of the mouse pointer 
//			with respect to the element firing the event.
//		3:	scrollLeft retrieves the distance between the left edge of the object
//			and the leftmost portion of the content currently visible in the window.
//		4:  same as scrollLeft but for the top.

        var evt = evt || window.event;
		var mapcell = getElement("mapcell");
        var oParent = mapcell.offsetParent;
              
		offsetX = (mapcell.offsetLeft + oParent.offsetLeft + (document.documentElement.clientLeft || 0));
		offsetY = (mapcell.offsetTop + oParent.offsetTop + (document.documentElement.clientTop || 0));
		
        minX = (offsetX);
        minY = (offsetY);
		ZoomIn=getElement("rbzoomin");
		ZoomOut=getElement("rbzoomout");

		if ((ZoomIn.checked||ZoomOut.checked) && (evt.button<=1))
		{	
			var cursor = {x:0, y:0};
            cursor = getPosition(evt);
            startX = cursor.x;
            startY = cursor.y;
            
			mapSize=getElement("inpMapSize").value;

			switch(mapSize)
			{
				case '2' :
					maxX=450 + offsetX;
					maxY=360 + offsetY;
					break;
				case '3' :
					maxX=650 + offsetX;
					maxY=520 + offsetY;
			}
			if ((startX >= minX) && (startX <= maxX) && (startY >= minY) && (startY <= maxY))
			{         			
       			document.onmousemove = moveRubber;
       			document.onmouseup = stopRubber;
				window.status = "Start(" + (startX - offsetX) + ";" + (startY - offsetY) + ")";
			}
		}
   }
    
   function moveRubber (evt){
   //moveRubber fires on a mousemove event.  The startRubber function calls moveRubber.
        var evt = evt || window.event;
        var r = getElement("rubberBand");
        r.style.visibility = "visible";
        var cursor = {x:0, y:0};
        cursor = getPosition(evt);
        curX = cursor.x;
        curY = cursor.y;
            
        if (startX < curX)
            r.style.left = (startX) + "px";
        else
            r.style.left = (curX + 1) + "px";
        if (startY < curY)
            r.style.top = (startY) + "px";
        else
            r.style.top = (curY + 1) + "px"; 
                
        if (Math.abs(startX - curX) >= (2 * parseInt(r.style.borderWidth)))
            r.style.width = Math.abs(startX - curX) - (2 * parseInt(r.style.borderWidth));
        else
            r.style.width  = 0 + "px";

        if (Math.abs(startY - curY) >= (2 * parseInt(r.style.borderWidth)))     
            r.style.height = Math.abs(startY - curY) - (2 * parseInt(r.style.borderWidth)) + "px";
        else
            r.style.height = 0 + "px";
               

        window.status = "Start(" + (startX - offsetX) + ";" + (startY - offsetY) + ") " + "End(" + (curX - offsetX) + ";" + (curY - offsetY) + ")";

       
            
		
		//If the map control boundaries have been exceeded then stop zoom box.
		if ((curX > maxX) || (curX < minX) || (curY > maxY) || (curY < minY))
		{
			stopRubber(evt);
		}
		
    }

    function stopRubber (evt)
    //stopRubber fires on a mouseup event.  The startRubber function instantiates stopRubber.
    {
        var evt = evt || window.event;
		var endX;
		var endY;
        var xMin;
        var yMin;
        var xMax;
        var yMax;
        var r = getElement("rubberBand");
        r.style.visibility = "hidden";
        r.style.width = 0;
        r.style.height = 0;

        document.onmousemove = null;
        
        var cursor = {x:0, y:0};
        cursor = getPosition(evt);
        
        endX = cursor.x;
        endY = cursor.y;
        if (endX > maxX)
            endX = maxX;
        if (endX < minX)
            endX = minX; 
        if (endY > maxY)
            endY = maxY;
        if (endY < minY)
            endY = minY;

               
        if (startX < endX)
        {
            xMin = startX - offsetX;
            xMax = endX - offsetX;
        }
        else
        {
            xMin = endX - offsetX;
            xMax = startX - offsetX;
        }

        if (startY < endY)
        {
			yMin = startY - offsetY;
            yMax = endY - offsetY;
            //alert(yMin);
        }
        else
        {
            yMin = endY - offsetY;
            yMax = startY - offsetY;   
        }
//Note:  The following passes the X and Y values back to the map so an envelope can be created.        
        getElement("inpMinXClick").value = xMin;
		getElement("inpMaxXClick").value=xMax;	
		getElement("inpMinYClick").value=yMin;	
		getElement("inpMaxYClick").value=yMax;	     

    }
function getPosition(evt) {
    evt = evt || window.event;
    var cursor = {x:0, y:0};
    if (evt.pageX || evt.pageY) {//alert('pagex');
        cursor.x = evt.pageX;
        cursor.y = evt.pageY;
    } 
    else {
        var de = document.documentElement;
        var b = document.body;
        cursor.x = evt.clientX + 
            (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
        cursor.y = evt.clientY + 
            (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
    }
    return cursor;
}
