//***DHTML and Javascript Global Objects//
//Arrays used for Image swapping on Map Nav border.
var aMapNavStandard = new Array();
var aMapNavON = new Array();
//Objects used for vertically resizing the map navigation border
var oMapHeightSeg1 = document.images['MapNavSeg9'];  //West bar upper segment//
var oMapHeightSeg2 = document.images['MapNavSeg11']; //West bar lower segment//
var oMapHeightSeg3 = document.images['MapNavSeg14']; //East bar upper segment//
var oMapHeightSeg4 = document.images['MapNavSeg16']; //East bar lower segement//
var oMapCell = GetObj('MAP_CELL');
var bZoomBox = false;
var bCenterZoom = false;
var drag, startX, startY, posX, posY, endX, endY;
var MUPPX, MUPPY;
var MinX, MinY, MaxX, MaxY;
var MUX1, MUY1, MUX2, MUY2;
var curPosMUX, curPosMUY;
var sImagePath = '';

//SCRIPT EXECUTION PATH.. 
	PopulateMapNavObjects();
//END SCRIPT EXECUTION//

//***********************//
//EVENT RELATED FUNCTIONS//
//***********************//
function CaptureMapEvents()
{
	document.ondrag = function () { return false; };
	document.onselectstart = function () { return false; };
	if (oMapCell)
	{
		addEventListeners(oMapCell,"mousedown",mouseDownHandle);
		addEventListeners(oMapCell,"mousemove",mouseMoveHandle);
	}
}
function mouseDownHandle(evt) 
{		 
    if (!oPMOFrm)
    {
		return false;
    }
    switch (sToolMode)
	{
		case 'ZBI':
			StartZoomBox(evt);
	      	break;
	    case 'ZBO':
			StartZoomBox(evt);
			break;
	    default:
			//event.cancelBubble = true;
			break;
	}
	addEventListeners(oMapCell,"mouseup",mouseUpHandle,false);
	bubbleCancel(evt);
}
function mouseMoveHandle(evt) 
{
    if (!oPMOFrm)
    {
		return false;
    }
	TrackCoordinates(evt);
	if (bZoomBox)
	{
		ResizeZoomBox(evt);
	}
	bubbleCancel(evt);
}
		 
function mouseUpHandle(evt) 
{
    if (!oPMOFrm)
    {
		return false;
    }
    switch (sToolMode)
	{
		case 'ZBI':
	      	if (bCenterZoom)
	      	   {
	      		   SetXMark();
	      		   CenterZoom('IN');
	      	   }
	      	else
	      	   {
	      		   EndZoomBox(evt,'IN');
	      	   }
		    break;
	    case 'ZBO':
	      	if (bCenterZoom)
	      	   {
	      		   SetXMark();
	      		   CenterZoom('OUT');
	      	   }
	      	else
	      	   {
	      		   EndZoomBox(evt,'OUT');
	      	   }
			break;
	    case 'CENTER':
			SetXMark();
			CenterMap(curPosMUX,curPosMUY);
			break;
		case 'IDENTIFY':
			SetXMark();
			Identify(curPosMUX,curPosMUY);
			break;
	    default:
			bubbleCancel(evt);
			break;
	}
	removeEventListeners(oMapCell,"mouseup",mouseUpHandle);
	bubbleCancel(evt);
}
function StartZoomBox(evt)
{
	evt = getEvent(evt);
    if (oZoomBox && !bZoomBox)
    {
	   bZoomBox = true;
	   bCenterZoom = true;
       oZoomBox.style.left = evt.clientX;
       oZoomBox.style.top = evt.clientY;
       oZoomBox.X1 = evt.clientX;
       oZoomBox.X2 = evt.clientX;
       oZoomBox.Y1 = evt.clientY;
       oZoomBox.Y2 = evt.clientY;
       oZoomBox.startX = evt.offsetX;
       oZoomBox.startY = evt.offsetY;
	   oZoomBox.endX = evt.offsetX;
	   oZoomBox.endY = evt.offsetY;
   	   addEventListeners(oZoomBox,"mousemove",mouseMoveHandle,false);
	   SetVisible(oZoomBox,true);
    }
    else
    {
       return false;
    }
}
function ResizeZoomBox(evt)
{	
	evt = getEvent(evt);
	if (oZoomBox && bZoomBox)
	{
		oZoomBox.X2 = evt.clientX - 5;
		oZoomBox.Y2 = evt.clientY - 5;
		oZoomBox.endX = evt.offsetX;
		oZoomBox.endY = evt.offsetY;
		var ScreenX1 = new Number(oZoomBox.X1);
		var ScreenX2 = new Number(oZoomBox.X2);
		var ScreenY1 = new Number(oZoomBox.Y1);
		var ScreenY2 = new Number(oZoomBox.Y2);
		var OffsetX1 = new Number(oZoomBox.startX);
		var OffsetX2 = new Number(oZoomBox.endX);
		var OffsetY1 = new Number(oZoomBox.startY);
		var OffsetY2 = new Number(oZoomBox.endY);
		if (ScreenX2 < ScreenX1)
		{
			ScreenX2 = ScreenX1;
			ScreenX1 = evt.clientX + 5;
	    }
	    if (ScreenY2 < ScreenY1)
	    {
			ScreenY2 = ScreenY1;
	        ScreenY1 = evt.clientY + 5;
	    }
	    if (OffsetX2 < OffsetX1)
	    {
			OffsetX2 = OffsetX1;
			OffsetX1 = evt.offsetX;
	    }
	    if (OffsetY2 < OffsetY1)
	    {
			OffsetY2 = OffsetY1;
			OffsetY1 = evt.offsetY;
	    }
	    if (OffsetX1 < 0)
	    {
			OffsetX1 = 0;
	    }
	    if (OffsetY1 < 0)
	    {
		    OffsetY1 = 0;
	    }
	    if ((ScreenX2 - ScreenX1) > 10 && (ScreenY2 - ScreenY1) > 10)
	    {
			oZoomBox.MINX = new Number(Math.round(MinX + (OffsetX1 * MUPPX)));
			oZoomBox.MAXX = new Number(Math.round(MinX + (OffsetX2 * MUPPX)));
			oZoomBox.MAXY = new Number(Math.round(MaxY - (OffsetY1 * MUPPY)));
			oZoomBox.MINY = new Number(Math.round(MaxY - (OffsetY2 * MUPPY)));
	        if (oMTDistance)
	        {
				if (sToolMode == 'ZBI')
	            {
					var numFeet = Math.round(((ScreenX2 - ScreenX1) * MUPPX));
					if (numFeet > 5280)
	                {
						numFeet = (numFeet / 5280);
						numFeet = Math.round(numFeet * 100) / 100;
						oMTDistance.innerText = numFeet + ' miles';
	                }
					else
					{
						oMTDistance.innerText = numFeet + ' feet';
					}
				}
				else if (sToolMode == 'ZBI')
				{
				}
			}
			SetVisible(oZoomBox,true);
			clipLayer(oZoomBox,ScreenX1,ScreenY1,ScreenX2,ScreenY2);
			bCenterZoom = false;
		}
		else
		{
			SetVisible(oZoomBox,false);
			bCenterZoom = true;
		}
	}
	else
	{
		return false;
	}
}


function EndZoomBox(evt,dir)
{
	evt = getEvent(evt);
	if (oZoomBox && bZoomBox)
	{
		bZoomBox = false;
		oZoomBox.style.width = '0px';
		oZoomBox.style.height = '0px';
		SetVisible(oZoomBox,false);
		if (oPMOFrm)
	    {
			oPMOFrm.MINX.value = oZoomBox.MINX;
			oPMOFrm.MAXX.value = oZoomBox.MAXX;
			oPMOFrm.MINY.value = oZoomBox.MINY;
			oPMOFrm.MAXY.value = oZoomBox.MAXY;
			switch (dir)
	        {
	        case 'IN':
	      		oPMOFrm.ACTION.value = 'ZBIN';
	            break;
	        case 'OUT':
	      	    oPMOFrm.ACTION.value = 'ZBOUT';
	            break;
	        }
			//var sZoomBoxOutCoor = 'Output: MinX[' + oZoomBox.MINX + '] MaxX[' + oZoomBox.MAXX + '] MinY[' + oZoomBox.MINY + '] MaxY[' + oZoomBox.MAXY + ']';
	        LoadMap();
	        //alert(sZoomBoxOutCoor);
        }
	}
	else
	{
		return false;
	}
}
function ConfigureCoordinates()
{
	if (oPMOFrm)
	{
		var imgWidth = new Number(oPMOFrm.MAPIMGWIDTH.value);
		var imgHeight = new Number(oPMOFrm.MAPIMGHEIGHT.value);
		MinX = new Number(oPMOFrm.MINX.value);
		MaxX = new Number(oPMOFrm.MAXX.value);
		MinY = new Number(oPMOFrm.MINY.value);
		MaxY = new Number(oPMOFrm.MAXY.value);
		MUPPX = new Number((MaxX - MinX) / imgWidth);
		MUPPY = new Number((MaxY - MinY) / imgHeight);
	}	
}
function TrackCoordinates(evt)
{
	evt = getEvent(evt);
	curPosMUX = new Number(MinX + (evt.offsetX * MUPPX));
	curPosMUY = new Number(MaxY - (evt.offsetY * MUPPY));
	curPosMUX = Math.round(curPosMUX);
	curPosMUY = Math.round(curPosMUY);
	window.status = "Current Map Position: X[" + evt.offsetX + "]  Y[" + evt.offsetY + "]  MUX[" + curPosMUX + "]  MUY[" + curPosMUY + "]";	
}
//END EVENT RELATED FUNCTIONS
//******************//
//LOAD MAP FUNCTIONS//
//******************//
function LoadMap()
{
	if (oPMOFrm)
	{
		oPMOFrm.WINWIDTH.value = oSession.ClientWidth();
		oPMOFrm.WINHEIGHT.value = oSession.ClientHeight();
		if (Process)
		{
			Process();
		}
		else
		{
			oPMOFrm.submit();
		}
	}
}
//END MAP LOADING FUNCTIONS//
//*********//
//PAN TOOLS//
//*********//
function PanMap(dir)
{
	if (oPMOFrm)
	{
		oPMOFrm.ACTION.value = "PANMAP";
		oPMOFrm.SEARCH3.value = dir;
		LoadMap();
	}
}
//END PAN TOOLS//
function CenterZoom(dir)
{
	var CenterZoomFACTOR = new Number(2); //DEFINE THE AMOUNT TO MULTIPLY OR DIVIDE BY FOR ZOOMING
	bZoomBox = false;
	
	if (oZoomBox)
	{
		oZoomBox.style.width = '0px';
		oZoomBox.style.height = '0px';
    	SetVisible(oZoomBox,false);
    }
	if (oPMOFrm)
    {
        oPMOFrm.NAVX1.value = curPosMUX;
        oPMOFrm.NAVY1.value = curPosMUY;
        oPMOFrm.ACTION.value = 'CENTERMU';
        //oPMOFrm.INITACTION.value = '';
        switch (dir)
        {
        	case 'IN':
        		oPMOFrm.MAPWIDTH.value = new Number(Math.round(oPMOFrm.MAPWIDTH.value / CenterZoomFACTOR));
                break;
            case 'OUT':
                oPMOFrm.MAPWIDTH.value = new Number(Math.round(oPMOFrm.MAPWIDTH.value * CenterZoomFACTOR));
               	break;
        }
		LoadMap();
    }
}
			
function CenterMap(x,y)
{
	if (oPMOFrm)
	{
		oPMOFrm.ACTION.value = 'CENTERMU';
		oPMOFrm.NAVX1.value = x;
		oPMOFrm.NAVY1.value = y;
		LoadMap();
	}
}

//************************//
//IMAGE ROLLOVER FUNCTIONS//
//************************//
function PopulateMapNavObjects()
{
	var frm = document.forms['frmPMOIMSProcess'];
	if (frm)
	{
		sImagePath = frm.IMAGE_PATH.value;
	}
	else
	{
		sImagePath = "/WebPMO/images";
	}
	 //MapPan Navigation Graphics//
	 aMapNavStandard[0] = new Image();
	 aMapNavStandard[0].src = sImagePath + '/pixel.gif';
	 aMapNavON[0] = new Image();
	 aMapNavON[0].src  = sImagePath + '/pixel.gif';
	 
	 aMapNavStandard[1] = new Image();
	 aMapNavStandard[1].src = sImagePath + '/MapNav/NorthWestCornerOrange.gif';
	 aMapNavStandard[2] = new Image();
	 aMapNavStandard[2].src = sImagePath + '/MapNav/FILLEastWestOrange.gif';
	 aMapNavStandard[3] = new Image();
	 aMapNavStandard[3].src = sImagePath + '/MapNav/FILLEastWestOrange.gif';
	 aMapNavStandard[4] = new Image();
	 aMapNavStandard[4].src = sImagePath + '/MapNav/NorthSegmentOrange.gif';
	 aMapNavStandard[5] = new Image();
	 aMapNavStandard[5].src = sImagePath + '/MapNav/FILLEastWestOrange.gif';
	 aMapNavStandard[6] = new Image();
	 aMapNavStandard[6].src = sImagePath + '/MapNav/FILLEastWestOrange.gif';
	 aMapNavStandard[7] = new Image();
	 aMapNavStandard[7].src = sImagePath + '/MapNav/NorthEastCornerOrange.gif';
	 
	 aMapNavStandard[8] = new Image();
	 aMapNavStandard[8].src = sImagePath + '/MapNav/FILLNorthSouthOrange.gif';
	 aMapNavStandard[9] = new Image();
	 aMapNavStandard[9].src = sImagePath + '/MapNav/FILLNorthSouthOrange.gif';
	 aMapNavStandard[10] = new Image();
	 aMapNavStandard[10].src = sImagePath + '/MapNav/WestSegmentOrange.gif';
	 aMapNavStandard[11] = new Image();
	 aMapNavStandard[11].src = sImagePath + '/MapNav/FILLNorthSouthOrange.gif';
	 aMapNavStandard[12] = new Image();
	 aMapNavStandard[12].src = sImagePath + '/MapNav/FILLNorthSouthOrange.gif';
	 
	 aMapNavStandard[13] = new Image();
	 aMapNavStandard[13].src = sImagePath + '/MapNav/FILLNorthSouthOrange.gif';
	 aMapNavStandard[14] = new Image();
	 aMapNavStandard[14].src = sImagePath + '/MapNav/FILLNorthSouthOrange.gif';
	 aMapNavStandard[15] = new Image();
	 aMapNavStandard[15].src = sImagePath + '/MapNav/EastSegmentOrange.gif';
	 aMapNavStandard[16] = new Image();
	 aMapNavStandard[16].src = sImagePath + '/MapNav/FILLNorthSouthOrange.gif';
	 aMapNavStandard[17] = new Image();
	 aMapNavStandard[17].src = sImagePath + '/MapNav/FILLNorthSouthOrange.gif';
	
	 aMapNavStandard[18] = new Image();
	 aMapNavStandard[18].src = sImagePath + '/MapNav/SouthWestCornerOrange.gif';
	 aMapNavStandard[19] = new Image();
	 aMapNavStandard[19].src = sImagePath + '/MapNav/FILLEastWestOrange.gif';
	 aMapNavStandard[20] = new Image();
	 aMapNavStandard[20].src = sImagePath + '/MapNav/FILLEastWestOrange.gif';
	 aMapNavStandard[21] = new Image();
	 aMapNavStandard[21].src = sImagePath + '/MapNav/SouthSegmentOrange.gif';
	 aMapNavStandard[22] = new Image();
	 aMapNavStandard[22].src = sImagePath + '/MapNav/FILLEastWestOrange.gif';
	 aMapNavStandard[23] = new Image();
	 aMapNavStandard[23].src = sImagePath + '/MapNav/FILLEastWestOrange.gif';
	 aMapNavStandard[24] = new Image();
	 aMapNavStandard[24].src = sImagePath + '/MapNav/SouthEastCornerOrange.gif';
	
	 aMapNavON[1] = new Image();
	 aMapNavON[1].src = sImagePath + '/MapNav/NorthWestCornerPurple.gif';
	 aMapNavON[2] = new Image();
	 aMapNavON[2].src = sImagePath + '/MapNav/FILLEastWestPurple.gif';
	 aMapNavON[3] = new Image();
	 aMapNavON[3].src = sImagePath + '/MapNav/FILLEastWestPurple.gif';
	 aMapNavON[4] = new Image();
	 aMapNavON[4].src = sImagePath + '/MapNav/NorthSegmentPurple.gif';
	 aMapNavON[5] = new Image();
	 aMapNavON[5].src = sImagePath + '/MapNav/FILLEastWestPurple.gif';
	 aMapNavON[6] = new Image();
	 aMapNavON[6].src = sImagePath + '/MapNav/FILLEastWestPurple.gif';
	 aMapNavON[7] = new Image();
	 aMapNavON[7].src = sImagePath + '/MapNav/NorthEastCornerPurple.gif';
	
	 aMapNavON[8] = new Image();
	 aMapNavON[8].src = sImagePath + '/MapNav/FILLNorthSouthPurple.gif';
	 aMapNavON[9] = new Image();
	 aMapNavON[9].src = sImagePath + '/MapNav/FILLNorthSouthPurple.gif';
	 aMapNavON[10] = new Image();
	 aMapNavON[10].src = sImagePath + '/MapNav/WestSegmentPurple.gif';
	 aMapNavON[11] = new Image();
	 aMapNavON[11].src = sImagePath + '/MapNav/FILLNorthSouthPurple.gif';
	 aMapNavON[12] = new Image();
	 aMapNavON[12].src = sImagePath + '/MapNav/FILLNorthSouthPurple.gif';
	 
	 aMapNavON[13] = new Image();
	 aMapNavON[13].src = sImagePath + '/MapNav/FILLNorthSouthPurple.gif';
	 aMapNavON[14] = new Image();
	 aMapNavON[14].src = sImagePath + '/MapNav/FILLNorthSouthPurple.gif';
	 aMapNavON[15] = new Image();
	 aMapNavON[15].src = sImagePath + '/MapNav/EastSegmentPurple.gif';
	 aMapNavON[16] = new Image();
	 aMapNavON[16].src = sImagePath + '/MapNav/FILLNorthSouthPurple.gif';
	 aMapNavON[17] = new Image();
	 aMapNavON[17].src = sImagePath + '/MapNav/FILLNorthSouthPurple.gif';
	
	 aMapNavON[18] = new Image();
	 aMapNavON[18].src = sImagePath + '/MapNav/SouthWestCornerPurple.gif';
	 aMapNavON[19] = new Image();
	 aMapNavON[19].src = sImagePath + '/MapNav/FILLEastWestPurple.gif';
	 aMapNavON[20] = new Image();
	 aMapNavON[20].src = sImagePath + '/MapNav/FILLEastWestPurple.gif';
	 aMapNavON[21] = new Image();
	 aMapNavON[21].src = sImagePath + '/MapNav/SouthSegmentPurple.gif';
	 aMapNavON[22] = new Image();
	 aMapNavON[22].src = sImagePath + '/MapNav/FILLEastWestPurple.gif';
	 aMapNavON[23] = new Image();
	 aMapNavON[23].src = sImagePath + '/MapNav/FILLEastWestPurple.gif';
	 aMapNavON[24] = new Image();
	 aMapNavON[24].src = sImagePath + '/MapNav/SouthEastCornerPurple.gif';
 }
 
 function HilightGroup(obj,first,second,third)
 {
	if(obj.src)
	{
		if(document.images['MapNavSeg' + first].src)
		{
			document.images['MapNavSeg' + first].src = aMapNavON[first].src;
		}
		if(document.images['MapNavSeg' + second].src)
		{
			document.images['MapNavSeg' + second].src = aMapNavON[second].src;
		}
		if(document.images['MapNavSeg' + third].src)
		{
			document.images['MapNavSeg' + third].src = aMapNavON[third].src;
		}
	}
 }
 function RevertGroup(obj,first,second,third)
 {
	if(obj.src)
	{
		if(document.images['MapNavSeg' + first].src)
		{
			document.images['MapNavSeg' + first].src = aMapNavStandard[first].src;
		}
		if(document.images['MapNavSeg' + second].src)
		{
			document.images['MapNavSeg' + second].src = aMapNavStandard[second].src;
		}
		if(document.images['MapNavSeg' + third].src)
		{
			document.images['MapNavSeg' + third].src = aMapNavStandard[third].src;
		}
	}
 }
//END ROLLOVER FUNCTIONS//

