 
    var m_imgLoading;
    var m_imgMapCanvas;
    var m_divMapBorder;
    var m_divZoomBox;
	var m_divMapTools;
	var m_divNorth;
	var m_divSouth;
	var m_divEast;
	var m_divWest;
    var	m_hvMinX;
    var	m_hvMinY;
    var	m_hvMaxX;
    var	m_hvMaxY;
	var m_hvMapPage;
    var m_projectDate;
    var m_ZoomMinLevel = 1;   
    var m_ZoomMaxLevel = 7;

    var m_mapViewer;  // Object of type map.  Handles map coordinate management.

    var m_zbxZoom;      // Object of type zoombox.  Handles drawing the zoombox.  
				        // Operates entirely within page coordinates and has no 
				        // awareness of the map space or even the image that 
				        // represents the map on the page.

    var m_iToolMode=1;  

	var m_sClientBrowserType;	// Possible values: "IE", "Netscape"
	var m_sClientPlatform;		// Possible values: "Windows","Mac"
    
    var m_ExtentWidths= new Array(2400, 4000, 5600, 7200, 8800, 10400, 12000);

	var m_lTimerID = 1; // used only for hiding the "Wait" image for Netscape 6.x

	// Determine browser type and platform.

	if (navigator.appName.indexOf("Netscape")>=0) {
		m_sClientBrowserType = 'Netscape';
	} else if (navigator.appName.indexOf('Microsoft') >=0) {
		m_sClientBrowserType = 'IE';
	} else {
		window.location = "unsupported.htm";
	}

	if (navigator.userAgent.indexOf("Win") >= 0) {
		m_sClientPlatform = 'Windows';
	} else if (navigator.platform.indexOf("Mac") >= 0) {
		m_sClientPlatform = 'Mac';
	} else {
		window.location = "unsupported.htm";
	}
    

// *******************************************************************
// *********************** STARTUP FUNCTION **************************
// *******************************************************************


function startUp() {	
	m_imgMapCanvas = document.getElementById("imgMapCanvas");
    m_imgLoading = document.getElementById("imgLoading");
	m_divZoomBox = document.getElementById("divZoomBox");
	m_divMapBorder = document.getElementById("divMapBorder");
  	m_divNorth = document.getElementById("divNorth");
  	m_divSouth = document.getElementById("divSouth");
  	m_divEast = document.getElementById("divEast");
  	m_divWest = document.getElementById("divWest");
  	m_divMapTools = document.getElementById("divMapTools");
	m_hvMinX = document.getElementById("hvMinX");
	m_hvMinY = document.getElementById("hvMinY");
	m_hvMaxX = document.getElementById("hvMaxX");
	m_hvMaxY = document.getElementById("hvMaxY");
	

	
	m_hvMapPage = document.getElementById("hvMapPage");
    m_projectDate =  document.getElementById("txtProjectDate").value;
		// Create a map coordinate manager.
	m_mapViewer = new map(m_imgMapCanvas.offsetLeft,
  						  m_imgMapCanvas.offsetTop,
						  m_imgMapCanvas.width,	
						  m_imgMapCanvas.height,
						  m_ExtentWidths,
						  new rect(m_hvMinX.value, m_hvMinY.value, m_hvMaxX.value, m_hvMaxY.value)
						  );

		// Create a zoom box.
    m_zbxZoom = new zoomBox(m_divZoomBox);
   
        //Orient other page elements - Map Border, Map Tools, Loading Image, Border Navigation.
    posLoadingImage();
    posBorder();
    posBorderNavigation(); //must be called BEFORE posTools()
  
    posTools();  //must be called AFTER posBorderNavigation()  
  
		// Initialize the tool mode. 
	handleToolClick(returnActiveTool());
		
		// Assign custom event handlers to mousedown, mousemove, 
		// and mouseup.
	if (m_sClientBrowserType == 'Netscape') {
		document.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE | Event.MOUSEUP);
	}
	document.onmousedown = handleMouseDown;
	//document.onmousemove = handleMouseMove;
	//document.onmouseup = handleMouseUp;
	
	// Assign an event handler to the m_imgMapCanvas onload event.
	m_imgMapCanvas.onload = hideWaitImage;
	
	    //Request a map.
	submit();
}

// *******************************************************************
// *********************** EVENT HANDLERS  ***************************
// *******************************************************************

function ResizeMap() {

   
    m_mapViewer = new map(m_imgMapCanvas.offsetLeft,
  				    m_imgMapCanvas.offsetTop,
				    m_imgMapCanvas.width,	
				    m_imgMapCanvas.height,
					m_ExtentWidths,
				    m_mapViewer.getExtent()
				    );


    
    posLoadingImage();
    posBorder();
    posBorderNavigation(); //must be called BEFORE posTools()
    posTools();  //must be called AFTER posBorderNavigation()

    submit();
}

function handleMouseDown(evt) {

	var eventX;
	var eventY;
    
    if (document.getElementById("ignoreClick").value == 1) {
        document.getElementById("ignoreClick").value = 0;
        return;
    }        
    
    if (m_sClientBrowserType == 'Netscape') {
		eventX = evt.clientX+window.pageXOffset ;//+m_imgMapCanvas.offsetLeft;
		eventY = evt.clientY+window.pageYOffset ;//+m_imgMapCanvas.offsetTop;
	} else {
		eventX = event.clientX+document.body.scrollLeft;
		eventY = event.clientY+document.body.scrollTop;

    
	}
		
	// Check to see if click is over map
	 
	if (!(m_mapViewer.isEventOverMap(eventX, eventY))) {	
		return;
	} 

  			var ptUserClick = m_mapViewer.toMapPoint(eventX, eventY);  			
	        var eLeft=m_mapViewer.getExtent().getLeft();
	        var eRight=m_mapViewer.getExtent().getRight();
	        var eTop=m_mapViewer.getExtent().getTop();
	        var eBottom=m_mapViewer.getExtent().getBottom();
	
	        var sURL = "identify.aspx"+	            
		         "?XMIN="+eLeft+
				     "&YMIN="+eBottom+
						 "&XMAX="+eRight+
						 "&YMAX="+eTop+
						 "&WIDTH="+m_mapViewer.getTagWidth()+
						 "&HEIGHT="+m_mapViewer.getTagHeight()+
						 "&midX="+ ptUserClick.x+
						 "&midY="+ ptUserClick.y+
						 "&PD="+ m_projectDate;
			
			 if (m_sClientBrowserType == 'IE'){
			 	getInfo(sURL);
		     }
		     else
		     {
		        var sCURL = sURL + "&c=1";
		        //makeWin(sCURL,"Info");
		        window.open(sCURL);
	         }   	     
	         
}

function getInfo(sURL)
{
	var strCR 	 
	var xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP");
	var xmlDOM = new ActiveXObject("Microsoft.XMLDOM");
	xmlHTTP.open("POST", sURL, false);
	xmlHTTP.send("<REQUEST><ID>1</ID></REQUEST>");	
	
	xmlDOM.loadXML(xmlHTTP.ResponseText);
	if (xmlDOM.parseError != 0)
	{
		alert("Error occurred: " + xmlDOM.parseError.reason);
		return "";
	}
  
	var objNode = xmlDOM.selectNodes("/RESPONSE/ACCS");
	var strCR = objNode[0].text;
	if (strCR == "identify.aspx") {
	    return;
	} else if (strCR.indexOf("no_project_update_available.aspx")!=-1)
	{
	    window.open("llmc.aspx");
	  
	}
	else
	{  
	    //document.location.href = strCR;
	    window.open(strCR);
	}
	

}

function handleToolClick(iToolMode) {	
    m_imgMapCanvas.style.cursor = "hand";	
	m_iToolMode = iToolMode;
}


function ZoomIn(){
var iLevel = m_mapViewer.getLevel()
if (iLevel >  m_ZoomMinLevel )
    ZoomToLevel(iLevel-1);
  
}

function ZoomOut(){
var iLevel = m_mapViewer.getLevel()
if (iLevel< m_ZoomMaxLevel )
    ZoomToLevel(iLevel+1);
}


function ZoomToLevel(iLevel) {           
	m_mapViewer.setLevel(iLevel);
    //Request a new map.
    submit();
}

// *******************************************************************
// ********************** HELPER FUNCTIONS  **************************
// *******************************************************************

function hideWaitImage() {
    m_zbxZoom.hide();
    m_imgLoading.style.visibility = 'hidden';
}

function hideWaitImageForNetscape6() {
	if (m_imgMapCanvas.complete) {
		clearInterval(m_lTimerID);
		m_divZoomBox.style.visibility = 'hidden';
		m_imgLoading.style.visibility = 'hidden';
	}
}

function moveEast() {
    m_mapViewer.moveEast();
    submit();
}

function moveNorth() {
    m_mapViewer.moveNorth();
    submit();
}

function moveSouth() {
    m_mapViewer.moveSouth();
    submit();
}

function moveWest() {
    m_mapViewer.moveWest();
    submit();
}

function persistExtent() {
	m_hvMinX.value = m_mapViewer.getExtent().getLeft();
	m_hvMinY.value = m_mapViewer.getExtent().getBottom();
	m_hvMaxX.value = m_mapViewer.getExtent().getRight();
	m_hvMaxY.value = m_mapViewer.getExtent().getTop();
}

function posBorder() {

    if (m_sClientBrowserType == 'Netscape') { 
		m_divMapBorder.style.left = m_imgMapCanvas.offsetLeft - parseInt(m_divMapBorder.style.borderWidth.replace('px',''));
		m_divMapBorder.style.top = m_imgMapCanvas.offsetTop - parseInt(m_divMapBorder.style.borderWidth.replace('px',''));
	} else { // browser must be IE
		m_divMapBorder.style.left = m_imgMapCanvas.offsetLeft;
		m_divMapBorder.style.top = m_imgMapCanvas.offsetTop;
	}
		
    m_divMapBorder.style.width = m_imgMapCanvas.width;
    m_divMapBorder.style.height = m_imgMapCanvas.height;
    m_divMapBorder.style.visibility = "visible";

}

function posBorderNavigation() {

    var borderOffset = 0;    
    if (m_sClientBrowserType == 'Netscape') {
		borderOffset = parseInt(m_divMapBorder.style.borderWidth.replace('px','')) 
	}
   
 }

function posLoadingImage() {
    m_imgLoading.style.top  = m_imgMapCanvas.offsetTop + parseInt(m_imgMapCanvas.style.top.replace('px','')) + (m_imgMapCanvas.height / 2) - (m_imgLoading.height / 2) ;
    m_imgLoading.style.left = m_imgMapCanvas.offsetLeft + parseInt(m_imgMapCanvas.style.left.replace('px','')) + (m_imgMapCanvas.width / 2) - (m_imgLoading.width / 2);
  
}

function posTools() {
  var borderOffset = 0;    
    if (m_sClientBrowserType == 'Netscape') 
        borderOffset = 2;
    m_divMapTools.style.top = m_imgMapCanvas.offsetTop + m_imgMapCanvas.height + borderOffset;
    m_divMapTools.style.width = m_imgMapCanvas.width;
    m_divMapTools.style.left =  m_imgMapCanvas.offsetLeft 
 
    
}

function returnActiveTool() {	
		return 1;
	
}

function showWaitImage() {
	m_imgLoading.style.visibility = 'visible';
}

function submit() {
    m_hvMinX = document.getElementById("hvMinX");
	m_hvMinY = document.getElementById("hvMinY");
	m_hvMaxX = document.getElementById("hvMaxX");
	m_hvMaxY = document.getElementById("hvMaxY");
	
	var webForm=document.frmViewer;
	var eLeft=m_mapViewer.getExtent().getLeft();
	var eRight=m_mapViewer.getExtent().getRight();
	var eTop=m_mapViewer.getExtent().getTop();
	var eBottom=m_mapViewer.getExtent().getBottom();
	webForm.hvMinX.value = eLeft;
	webForm.hvMinY.value = eBottom;
	webForm.hvMaxX.value = eRight;
	webForm.hvMaxY.value = eTop;	

	var sURL = m_hvMapPage.value+	            
		         "?XMIN="+eLeft+
				     "&YMIN="+eBottom+
						 "&XMAX="+eRight+
						 "&YMAX="+eTop+
						 "&WIDTH="+m_mapViewer.getTagWidth()+
						 "&HEIGHT="+m_mapViewer.getTagHeight()+
						 "&PD="+ m_projectDate;
						 

  updateZoomLevel(m_mapViewer.getLevel());
	showWaitImage();

	if (navigator.userAgent.indexOf('Netscape6/6') > -1) {
		m_lTimerID = setInterval("hideWaitImageForNetscape6();",100);
	}

  m_imgMapCanvas.src = sURL;

   	
 	  //Persist extent in Hidden variables

  persistExtent();	

}

function makeWin(url, windowName, p_Width, p_Height) {
	
	agent = navigator.userAgent;
	windowName = windowName
	
	params  = "";
	params += "toolbar=0,";
	params += "location=0,";
	params += "directories=0,";
	params += "status=0,";
	params += "menubar=0,";
	params += "scrollbars=1,";
	params += "resizable=1,left=0,top=0,";
	if (p_Width == null) {
	
	params += "width=1000,";
	params += "height=760";
	}
	else {
	params += "width=" + p_Width + ",";
	params += "height="+ p_Height;
	}


	if (typeof(win) == "object" && !win.closed){
    win.close();
    }
                    
	win = window.open(url, windowName , params);

	if (agent.indexOf("Mozilla/2") != -1 && agent.indexOf("Win") == -1) {
	    win = window.open(url, windowName , params);
	}
	    
	if (!win.opener) {
	    win.opener = window;
	}
	win.location.href = url;
	win.focus();
	
}



function updateZoomLevel(inLevel) {

        var nLevels = m_ExtentWidths.length;

            for (i=1;i<nLevels+1;i++) {
                   document.getElementById('imgZoomLevel' + i).src = 'images/tick' + i + '.gif';
            }

            for (i=1;i<nLevels+1;i++) {
                  if (i>=inLevel) {
                      document.getElementById('imgZoomLevel' + i).src = 'images/tick' + i + '_selected.gif';
                  }
            }
}


