/**************************************************************************************************
*                                                                        VARIABLE DECLARATIONS                                                                        *
**************************************************************************************************/

var mapframe = top.mapframe, infoframe = top.infoframe, zoomdir = 1, mode = 'browse', qlayer = 'none', quid = 
	'none', data = 'none', shptype = 'none', zscale = 'none', hasResized = 'no', ResizeToggle = 'no', 
	HeaderErrorString = 'START', hasRunLoadFunction = 'no', currentTool, currentHTML, backColor = 
	'rgb(234,244,234)', ShapeOne, ShapeType, curcursor;

var TogPlusImage = new Image();     TogPlusImage.src = '../images/expandPlus.png';
var TogMinusImage = new Image();    TogMinusImage.src = '../images/expandMinus.png';
var ZoomInImage = new Image();      ZoomInImage.src = '../images/zoomInUnSel.png';
var ZoomInImageSel = new Image();   ZoomInImageSel.src = '../images/zoomInSel.png';
var ZoomOutImage = new Image();     ZoomOutImage.src = '../images/zoomOutUnSel.png';
var ZoomOutImageSel = new Image();  ZoomOutImageSel.src = '../images/zoomOutSel.png';
var ReCntrImage = new Image();      ReCntrImage.src = '../images/recenterUnSel.png';
var ReCntrImageSel = new Image();   ReCntrImageSel.src = '../images/recenterSel.png';
var PanImage = new Image();         PanImage.src = '../images/panUnSel.png';
var PanImageSel = new Image();      PanImageSel.src = '../images/panSel.png';
var IDImage = new Image();          IDImage.src = '../images/idUnSel.png';
var IDImageSel = new Image();       IDImageSel.src = '../images/idSel.png';
var MsrImage = new Image();         MsrImage.src = '../images/msrUnSel.png';
var MsrImageSel = new Image();      MsrImageSel.src = '../images/msrSel.png';
var AreaImage = new Image();        AreaImage.src = '../images/areaUnSel.png';
var AreaImageSel = new Image();     AreaImageSel.src = '../images/areaSel.png';
var LabelImage = new Image();       LabelImage.src = '../images/labelUnSel.png';
var LabelImageSel = new Image();    LabelImageSel.src = '../images/labelSel.png';
var LabelIndivImage = new Image();     LabelIndivImage.src = '../images/labelUnSel.png';
var LabelIndivImageSel = new Image();  LabelIndivImageSel.src = '../images/labelSel.png';
var ExtentImage = new Image();      ExtentImage.src = '../images/extentUnSel.png';
var ExtentImageSel = new Image();   ExtentImageSel.src = '../images/extentSel.png';
var RefreshImage = new Image();     RefreshImage.src = '../images/refreshUnSel.png';
var RefreshImageSel = new Image();  RefreshImageSel.src = '../images/refreshSel.png';
var PrintImage = new Image();       PrintImage.src = '../images/printUnSel.png';
var PrintImageSel = new Image();    PrintImageSel.src = '../images/printSel.png';
var HelpImage = new Image();        HelpImage.src = '../images/helpUnSel.png';
var HelpImageSel = new Image();     HelpImageSel.src = '../images/helpSel.png';
var PrevExtImage = new Image();     PrevExtImage.src = '../images/prevExtOn.png';
var PrevExtImageSel = new Image();  PrevExtImageSel.src = '../images/prevExtOnSel.png';
var NextExtImage = new Image();     NextExtImage.src = '../images/nextExtOn.png';
var NextExtImageSel = new Image();  NextExtImageSel.src = '../images/nextExtOnSel.png';
var GetCoordImage = new Image();     GetCoordImage.src = "../images/graticule.png";
var GetCoordImageSel = new Image();  GetCoordImageSel.src = "../images/graticuleSel.png";



/**************************************************************************************************
*                                                                      ONLOAD EVENT HANDLER                                                                            *
**************************************************************************************************/

function OnLoad()
{
	SetUp();
	RegisterEvents();
	Tool_Select('Load');
}



/**************************************************************************************************
*                                                            EVENT HANDLERS (ALPHABETIZED)                                                                    *
**************************************************************************************************/

function Extent_Button_MOUSEDOWN() { document.getElementById('Extent_Button').setAttribute('src', ExtentImageSel.src); }

function Extent_Button_MOUSEOUT() { document.getElementById('Extent_Button').setAttribute('src', ExtentImage.src); }

function Extent_Button_MOUSEUP()
{
	document.getElementById('Extent_Button').setAttribute('src', ExtentImage.src);
	infoframe.Submit_Extent();
}

function Header_MouseOut(e)
{
	if (!e) var e = window.event;
	var oTarget = (e.target) ? e.target : e.srcElement;
	
	if (oTarget.id != "")
	{
		theSrcE = document.getElementById(oTarget.id);
		theSrc = theSrcE.id;
		thePos = theSrc.indexOf("_");
		theSrcE.style.borderColor = "rgb(234,244,234)";
	}
}

function Header_MouseOver(e)
{
	if (!e) var e = window.event;
	var oTarget = (e.target) ? e.target : e.srcElement;
	
	if (oTarget.id != "")
	{
		if (oTarget.src.indexOf("prevExtOff.png") == -1 && oTarget.src.indexOf("nextExtOff.png") == -1)
		{
			theSrcE = document.getElementById(oTarget.id);
			theSrc = theSrcE.id;
			thePos = theSrc.indexOf("_");
			theSrcE.style.borderColor = "darkred";
			
			if (thePos == -1) HelpHTML = "";
			else
			{
				theBase = theSrc.substr(0,thePos);
				HelpE = document.getElementById(theBase + "_HelpText");
				if (HelpE != null) HelpHTML = HelpE.innerHTML;
				else HelpHTML = "";
			}
		}
		else HelpHTML = "";
	}
	else HelpHTML = "";
	
	HelpText.innerHTML = HelpHTML;
}

function Help_Button_MOUSEDOWN() { document.getElementById('Help_Button').setAttribute('src', HelpImageSel.src); }

function Help_Button_MOUSEOUT() { document.getElementById('Help_Button').setAttribute('src', HelpImage.src); }

function Help_Button_MOUSEUP()
{
	document.getElementById('Help_Button').setAttribute('src', HelpImage.src);
	infoframe.Help_OpenPage();
}

function Label_Button_MOUSEDOWN() { document.getElementById('Label_Button').setAttribute('src', LabelImageSel.src); }

function Label_Button_MOUSEOUT() { document.getElementById('Label_Button').setAttribute('src', LabelImage.src); }

function Label_Button_MOUSEUP()
{
	document.getElementById('Label_Button').setAttribute('src', LabelImage.src);
	
	//var sURI = top.frames["infoframe"].theWebRoot + "bin/html/labelManager.html";
	var sURI = "..\\html\\labelManager.html";
	var iHeight = 400, iWidth = 700;
	
	var iPageWidth = 0, iPageHeight = 0;
	if (self.innerWidth)
	{
		iPageWidth = top.self.innerWidth;
		iPageHeight = top.self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientWidth)
	{
		iPageWidth = top.document.documentElement.clientWidth;
		iPageHeight = top.document.documentElement.clientHeight;
	}
	else if (document.body)
	{
		iPageWidth = top.document.body.clientWidth;
		iPageHeight = top.document.body.clientHeight;
	}
	
	var iLeft = (iPageWidth / 2) - (iWidth / 2);
	var iTop = (iPageHeight / 2) - (iHeight / 2);
	var sFeatures = "width=" + iWidth + ",height=" + iHeight + ",left=" + iLeft + ",top=" + iTop + 
	",scrollbars=yes,resizable=1";
	window.open(sURI,"name",sFeatures);
}

function Print_Button_MOUSEDOWN() { document.getElementById('Print_Button').setAttribute('src', PrintImageSel.src); }

function Print_Button_MOUSEOUT() { document.getElementById('Print_Button').setAttribute('src', PrintImage.src); }

function Print_Button_MOUSEUP()
{
	document.getElementById('Print_Button').setAttribute('src', PrintImage.src);
	infoframe.Print_Window_Open('portrait.html');
}

function ReDraw_Button_MOUSEDOWN() { document.getElementById('ReDraw_Button').setAttribute('src', RefreshImageSel.src); }

function ReDraw_Button_MOUSEOUT() { document.getElementById('ReDraw_Button').setAttribute('src', RefreshImage.src); }

function ReDraw_Button_MOUSEUP()
{
	document.getElementById('ReDraw_Button').setAttribute('src', RefreshImage.src);
	infoframe.Submit_Refresh();
}

function PrevExtent_Button_mousedown()
{
	var oPEButton = document.getElementById('PrevExtent_Button');
	if (oPEButton.getAttribute('src').indexOf("prevExtOff.png") == -1) 
		oPEButton.setAttribute('src', PrevExtImageSel.src);
}

function PrevExtent_Button_mouseout()
{
	var oPEButton = document.getElementById('PrevExtent_Button');
	if (oPEButton.getAttribute('src').indexOf("prevExtOff.png") == -1) 
		oPEButton.setAttribute('src', PrevExtImage.src);
}

function PrevExtent_Button_mouseup()
{
	if (infoframe.iMapExtIndex > 0)
	{
		infoframe.iMapExtIndex--;
		
		var s = infoframe.sMapExtents[infoframe.iMapExtIndex];
		if (s.indexOf("MAPEXT:") != -1)
		{
			s = "&MAPEXT=" + s.replace("MAPEXT:", "");
		}
		else
		{
			s = "&MAPXY=" + s.substring(s.indexOf("MAPXY:") + 6, s.indexOf("SCALE:")) + 
				"&SCALE=" + s.substring(s.indexOf("SCALE:") + 6, s.length);
		}
		
		infoframe.SubmitHistoricExtent(s);
		
		var oButton = document.getElementById("PrevExtent_Button");
		if (infoframe.iMapExtIndex == 0)
		{
			oButton.setAttribute("src", "../images/prevExtOff.png");
			oButton.style.cursor = "default";
			oButton.style.borderColor = "rgb(234,244,234)";
		}
		else oButton.setAttribute("src", "../images/prevExtOn.png");
		
		oButton = document.getElementById("NextExtent_Button");
		oButton.setAttribute("src", "../images/nextExtOn.png");
		oButton.style.cursor = "hand";
		oButton.style.cursor = "pointer";
	}
}

function NextExtent_Button_mousedown()
{
	var oNEButton = document.getElementById('NextExtent_Button');
	if (oNEButton.getAttribute('src').indexOf("nextExtOff.png") == -1) oNEButton.setAttribute('src', NextExtImageSel.src);
}

function NextExtent_Button_mouseout()
{
	var oNEButton = document.getElementById('NextExtent_Button');
	if (oNEButton.getAttribute('src').indexOf("nextExtOff.png") == -1) oNEButton.setAttribute('src', NextExtImage.src);
}

function NextExtent_Button_mouseup()
{
	if (infoframe.iMapExtIndex < (infoframe.sMapExtents.length - 1))
	{
		infoframe.iMapExtIndex++;
		
		var s = infoframe.sMapExtents[infoframe.iMapExtIndex];
		if (s.indexOf("MAPEXT:") != -1)
		{
			s = "&MAPEXT=" + s.replace("MAPEXT:", "");
		}
		else
		{
			s = "&MAPXY=" + s.substring(s.indexOf("MAPXY:") + 6, s.indexOf("SCALE:")) + 
				"&SCALE=" + s.substring(s.indexOf("SCALE:") + 6, s.length);
		}
		
		infoframe.SubmitHistoricExtent(s);
		
		var oButton = document.getElementById("NextExtent_Button");
		if (infoframe.iMapExtIndex == (infoframe.sMapExtents.length - 1))
		{
			oButton.setAttribute("src", "../images/nextExtOff.png");
			oButton.style.cursor = "default";
			oButton.style.borderColor = "rgb(234,244,234)";
		}
		else oButton.setAttribute("src", "../images/nextExtOn.png");
		
		oButton = document.getElementById("PrevExtent_Button");
		oButton.setAttribute("src", "../images/prevExtOn.png");
		oButton.style.cursor = "hand";
		oButton.style.cursor = "pointer";
	}
}

function Tool_Select(e)
{
	if (!window.ActiveXObject && e != "Load")
	{
		mapframe.RemoveOldLineDivs();
		mapframe.document.getElementById('divSegment').style.visibility = 'hidden';
		mapframe.document.getElementById('h5SegInfo').style.visibility = 'hidden';
	}
	
	if (e == "Load") var sTool = "ZoomIn_Tool";
	else
	{
		if (!e) var e = window.event;
		var oTarget = (e.target) ? e.target : e.srcElement;
		var sTool = oTarget.id;
	}
	
	var element = document.getElementById("ZoomIn_Tool");
	if (sTool == "ZoomIn_Tool") element.src = ZoomInImageSel.src;
	else element.src = ZoomInImage.src;
	element = document.getElementById("ZoomOut_Tool");
	if (sTool == "ZoomOut_Tool") element.src = ZoomOutImageSel.src;
	else element.src = ZoomOutImage.src;
	element = document.getElementById("ReCntr_Tool");
	if (sTool == "ReCntr_Tool") element.src = ReCntrImageSel.src;
	else element.src = ReCntrImage.src;
	element = document.getElementById("ID_Tool");
	if (sTool == "ID_Tool") element.src = IDImageSel.src;
	else element.src = IDImage.src;
	element = document.getElementById("Pan_Tool");
	if (sTool == "Pan_Tool") element.src = PanImageSel.src;
	else element.src = PanImage.src;
	element = document.getElementById("Msr_Tool");
	if (sTool == "Msr_Tool") element.src = MsrImageSel.src;
	else element.src = MsrImage.src;
	element = document.getElementById("Area_Tool");
	if (sTool == "Area_Tool") element.src = AreaImageSel.src;
	else element.src = AreaImage.src;
	element = document.getElementById("GetCoord_Tool");
	if (sTool == "GetCoord_Tool") element.src = GetCoordImageSel.src;
	else element.src = GetCoordImage.src;
	
	currentTool = sTool;
	
	//var oRubberBand = top.frames["mapframe"].document.getElementById("vmlRubberBand");
	
	switch (sTool)
	{
		case "ID_Tool":
			bLabelIndivMode = false;
			Tool_Cursor_Set("help");
			/*if (window.ActiveXObject && oRubberBand)
			{
				oRubberBand.setAttribute("strokecolor","blue");
				oRubberBand.setAttribute("fillcolor","blue");
			}*/
			break;
		case "Msr_Tool":
			bLabelIndivMode = false;
			Tool_Cursor_Set("crosshair");
			break;
		case "Area_Tool":
			bLabelIndivMode = false;
			Tool_Cursor_Set("crosshair");
			break;
		case "Pan_Tool":
			bLabelIndivMode = false;
			if (window.ActiveXObject) Tool_Cursor_Set("hand");
			else Tool_Cursor_Set("pointer");
			break;
		case "ReCntr_Tool":
			bLabelIndivMode = false;
			Tool_Cursor_Set("crosshair");
			break;
		case "ZoomIn_Tool":
			bLabelIndivMode = false;
			Tool_Cursor_Set("crosshair");
			/*if (window.ActiveXObject && oRubberBand)
			{
				oRubberBand.setAttribute("strokecolor","red");
				oRubberBand.setAttribute("fillcolor","red");
			}*/
			break;
		case "ZoomOut_Tool":
			bLabelIndivMode = false;
			Tool_Cursor_Set("crosshair");
			/*if (window.ActiveXObject && oRubberBand)
			{
				oRubberBand.setAttribute("strokecolor","red");
				oRubberBand.setAttribute("fillcolor","red");
			}*/
			break;
		case "GetCoord_Tool":
			bLabelIndivMode = false;
			Tool_Cursor_Set("crosshair");
			break;
	}
	
	thePos = sTool.indexOf("_");
	
	if (thePos == -1) HelpHTML = "";
	else
	{
		theBase = sTool.substr(0,thePos);
		HelpE = document.getElementById(theBase + "_HelpText");
		if (HelpE != null) currentHTML = HelpE.innerHTML;
		else currentHTML = "";
		
		if (theBase == "Msr" && !window.ActiveXObject) currentHTML = '<B>Measure Tool:</B> Click and drag to start a new line segment. Click again to end the line.';
	}
	
	if (mapframe.document.getElementById("Map_Image") != null) mapframe.Shapes_Clear();
}



/**************************************************************************************************
*                                                       SUPPLEMENTAL FUNCTIONS (ALPHABETIZED)                                                     *
**************************************************************************************************/

function RegisterEvents()
{
	// event registration for HTML elements; alphabetically ordered by the element's id
	
	var oElement; // this object is reused for each element's event registration
	
	oElement = document.body;
	oElement.onmouseover = Header_MouseOver;
	oElement.onmouseout = Header_MouseOut;
	
	oElement = document.getElementById("Extent_Button");
	oElement.onmousedown = Extent_Button_MOUSEDOWN;
	oElement.onmouseup = Extent_Button_MOUSEUP;
	oElement.onmouseout = Extent_Button_MOUSEOUT;
	
	oElement = document.getElementById("Help_Button");
	oElement.onmousedown = Help_Button_MOUSEDOWN;
	oElement.onmouseup = Help_Button_MOUSEUP;
	oElement.onmouseout = Help_Button_MOUSEOUT;
	
	oElement = document.getElementById("ID_Tool");
	oElement.onclick = Tool_Select;
	
	oElement = document.getElementById("Msr_Tool");
	oElement.onclick = Tool_Select;
	
	oElement = document.getElementById("Area_Tool");
	oElement.onclick = Tool_Select;
	
	oElement = document.getElementById("Label_Button");
	oElement.onmousedown = Label_Button_MOUSEDOWN;
	oElement.onmouseup = Label_Button_MOUSEUP;
	oElement.onmouseout = Label_Button_MOUSEOUT;
	
	oElement = document.getElementById("Pan_Tool");
	oElement.onclick = Tool_Select;
	
	oElement = document.getElementById("Print_Button");
	oElement.onmousedown = Print_Button_MOUSEDOWN;
	oElement.onmouseup = Print_Button_MOUSEUP;
	oElement.onmouseout = Print_Button_MOUSEOUT;
	
	oElement = document.getElementById("ReCntr_Tool");
	oElement.onclick = Tool_Select;
	
	oElement = document.getElementById("ReDraw_Button");
	oElement.onmousedown = ReDraw_Button_MOUSEDOWN;
	oElement.onmouseup = ReDraw_Button_MOUSEUP;
	oElement.onmouseout = ReDraw_Button_MOUSEOUT;
	
	oElement = document.getElementById("ZoomIn_Tool");
	oElement.onclick = Tool_Select;
	
	oElement = document.getElementById("ZoomOut_Tool");
	oElement.onclick = Tool_Select;
	
	oElement = document.getElementById("PrevExtent_Button");
	oElement.onmousedown = PrevExtent_Button_mousedown;
	oElement.onmouseup = PrevExtent_Button_mouseup;
	oElement.onmouseout = PrevExtent_Button_mouseout;
	
	oElement = document.getElementById("NextExtent_Button");
	oElement.onmousedown = NextExtent_Button_mousedown;
	oElement.onmouseup = NextExtent_Button_mouseup;
	oElement.onmouseout = NextExtent_Button_mouseout;
	
	oElement = document.getElementById("GetCoord_Tool");
	oElement.onclick = Tool_Select;
}

function SetUp()
{
	if (window.ActiveXObject)
	{
		document.getElementById("Label_Button").getAttribute("style").setAttribute("left", "-49");
		document.getElementById("Msr_HelpText").innerHTML = "<B>Measure Tool:</B> Click and drag to start a new polyline segment. Double click ends the polyline.";
		document.getElementById("Area_Tool").getAttribute("style").setAttribute("display", "");
		document.getElementById("GetCoord_Tool").getAttribute("style").setAttribute("display", "");
		top.frames["msrframe"].document.getElementById("divMsr").getAttribute("style").setAttribute("display", "");
	}
}

function Tool_Cursor_Set(cursor)
{
	curcursor = cursor;
	if (window.ActiveXObject && top.frames["mapframe"].document.getElementById("Map_Image")) 
	top.frames["mapframe"].document.getElementById("divMapExtent").style.cursor = cursor;
	else if (top.frames["mapframe"].document.getElementById("divMapExtent"))
	top.frames["mapframe"].document.getElementById("divMapExtent").style.cursor = cursor;
}
