var offsetX;
var offsetX;
var offsetY;
var startX;
var startY;
var minX;
var maxX;
var minY;
var maxY;
var ZoomIn;
var ZoomOut;
var theButton;
var mapSize;
var rbIdentify;


   function startRubber (evt){
	//startRubber fires on a mousedown event. Add this as an event in your TD:  onmousedown="startRubber();      
       if (document.all) //IE4+
        {
//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.
//alert(document.body.scrollTop);
			offsetX=(event.x - event.offsetX)+document.body.scrollLeft;
			offsetY=(event.y - event.offsetY)+document.body.scrollTop;

			minX=(event.x - event.offsetX);
			minY=(event.y - event.offsetY);
			mapSize=document.all.inpMapSize.value;

			switch(mapSize)
//Note:  Use the Width and Height of your image button control for maxX and maxY.
				{
					case '2' :
						maxX=450 + offsetX;
						maxY=360 + offsetY;
						break;
					case '3' :
						maxX=650 + offsetX;
						maxY=520 + offsetY;
				}
			ZoomIn=document.all.rbzoomin;
			ZoomOut=document.all.rbzoomout;
			rbIdentify=document.all.rbidentify;
			
			theButton=event.button
			
			if ((ZoomIn.checked||ZoomOut.checked||rbIdentify.checked) && (theButton==1))
			{
				startX = event.x + document.body.scrollLeft;
				startY = event.y + document.body.scrollTop;

				if ((startX >= minX) && (startX <= maxX) && (startY >= minY) && (startY <= maxY))
				{	
					//var r = document.all.rubberBand;
					//r.style.width = 1;
					//r.style.height = 1;
					//r.style.pixelLeft=event.x;
					//r.style.pixelTop=event.y;
					document.onmousemove = moveRubber;
					document.onmouseup = stopRubber;
					window.status = "Start(" + (startX - offsetX) + ";" + (startY - offsetY) + ")";
				}
			}
		}
        else if (document.getElementById) //Netscape 6 and 7
        {
			//alert(document.body.scrollTop);
			offsetX = (evt.clientX - evt.layerX)+document.body.scrollLeft;
			offsetY = (evt.clientY - evt.layerY)+document.body.scrollTop;
			
			minX = (evt.pageX - evt.layerX);
			minY = (evt.pageY - evt.layerY);

			ZoomIn=document.getElementById("rbzoomin");
			ZoomOut=document.getElementById("rbzoomout");
			theButton=evt.which;	
			
			if ((ZoomIn.checked||ZoomOut.checked||rbIdentify.checked) && (theButton==1))
			{
				startX = evt.clientX + document.body.scrollLeft;
				startY = evt.clientY + document.body.scrollTop;
				mapSize=document.getElementById("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))
				{           			
					var r = document.getElementById('rubberBand');
					//r.style.width = 0;
					//r.style.height = 0;
					//r.style.left = evt.clientX + 'px';
					//r.style.top = evt.clientY + 'px';
           			document.onmousemove = moveRubber;
           			document.onmouseup = stopRubber;
					window.status = "Start(" + (startX - offsetX) + ";" + (startY - offsetY) + ")";
				}
			}
         }
        else if (document.layers) //Netscape 4
        //*****NOTE:  This will work in Netwcape 4.7, but not with an image button in front.*****
         {
			theButton=evt.which
			if (theButton==1)
			{
				startX = evt.x;
				startY = evt.y;
				if ((startX >= minX) && (startX <= maxX) && (startY >= minY) && (startY <= maxY))
				{
					var r = document.rubberBand;
					r.visibility = "show";
					r.clip.width = 0; r.clip.height = 0;
					r.left = evt.x;
					r.top = evt.y;
					document.onmousemove = moveRubber;
					document.captureEvents(Event.MOUSEMOVE)
				}
			}
        }
    }
    

   function moveRubber (evt)
   //moveRubber fires on a mousemove event.  The startRubber function instantiates moveRubber.
    {//alert('move');
		var curX;
		var curY;
        if (document.all)
        {
		   var r = document.all.rubberBand;
		   
		   curX = event.x + document.body.scrollLeft;
           curY = event.y + document.body.scrollTop;
           
		   r.style.visibility = "visible";
           r.style.width  = Math.abs(startX - curX);
           r.style.height = Math.abs(startY - curY);


           if (startX < curX)
               r.style.pixelLeft = startX;
           else
               r.style.pixelLeft = curX;
               
           if (startY < curY)
               r.style.pixelTop = startY;
           else
               r.style.pixelTop = curY;
        }
         else if (document.getElementById)
        {
                var r = document.getElementById('rubberBand');

				curX = evt.clientX + document.body.scrollLeft;
                curY = evt.clientY + document.body.scrollTop;
                
                r.style.visibility = "visible";
                r.style.width  = Math.abs(startX - curX);
                r.style.height = Math.abs(startY - evt.pageY);
                

                if (startX < curX)
                	r.style.left = startX + "px";
				else
					r.style.left = curX + "px";

				if (startY < curY)
					r.style.top = startY + "px";
				else
					r.style.top = curY + "px";

					
                
        }
        else if (document.layers)
        {/*
                var r = document.rubberBand;
                curX=evt.x;
                curY=evt.y;
                
                 if (startX < curX)
					r.left = startX;
				else
					r.left = curX;

				if (startY < curY)
					r.top = startY;
				else
					r.top = curY;
                
                r.clip.width  = Math.abs(evt.x - startX);
                r.clip.height = Math.abs(evt.y - startY);
                r.document.open();
                r.document.write('<TABLE WIDTH="' + r.clip.width + '" HEIGHT="' + r.clip.height + '" BORDER="1" borderColor="red"><TR><TD><\/TD><\/TR><\/TABLE>');r.document.close();
				document.captureEvents(Event.MOUSEUP)*/
        }
        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();
		}
    }

    function stopRubber (evt)
    //stopRubber fires on a mouseup event.  The startRubber function instantiates stopRubber.
    {
		var endX;
		var endY;
        var xMin;
        var yMin;
        var xMax;
        var yMax;
        
		if (document.all)
		{
           var r = document.all.rubberBand;
           r.style.visibility = "hidden";
           endX=event.x + document.body.scrollLeft;
           endY=event.y + document.body.scrollTop;
           document.onmousemove = null;
        }
         else if (document.getElementById)
        {
                var r = document.getElementById('rubberBand');
                r.style.visibility = "hidden";
				endX = evt.clientX + document.body.scrollLeft;
                endY = evt.clientY + document.body.scrollTop;
                document.onmousemove = null;
        }
        else if (document.layers)
        {/*
		   var r = document.rubberBand;
		   r.visibility = "hide";
		   endX=evt.x;
           endY=evt.y;
           document.releaseEvents(Event.MOUSEMOVE);*/
        }
        
        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.
//		 An AIMS envelope is created to zoom to. 
		if (document.all)
		{
		    document.all.inpMinXClick.value = xMin;
			document.all.inpMaxXClick.value = xMax;
			document.all.inpMinYClick.value = yMin;
			document.all.inpMaxYClick.value = yMax;
        }
         else if (document.getElementById)
        {
            document.getElementById("inpMinXClick").value = xMin;
			document.getElementById("inpMaxXClick").value=xMax;	
			document.getElementById("inpMinYClick").value=yMin;	
			document.getElementById("inpMaxYClick").value=yMax;	       
        }
        else if (document.layers)
        {
			document.Form1.inpMinXClick.value = xMin;
			document.Form1.inpMaxXClick.value = xMax;
			document.Form1.inpMinYClick.value = yMin;
			document.Form1.inpMaxYClick.value = yMax;
        }
    }

