

//<![CDATA[

var map;
var route;
var markers = null;
var geocoder;
var MilesPerKM = 0.6214;
var cEnterAddr;
var cAddrNotFound;
var cEnterFindAddr;
var eventlineupdated;
var eventzoomend;

var mPiD180 = Math.PI  / 180;
var FeetPerSMile  = 5280;
var mNMtoR = 180 * 60 / Math.PI; //Converts Nautical Miles to Radians (when used to divide)
var m180DPi = 180 / Math.PI;
var mSupressSubmit = false;
var cErr = "Maroon";
var mMapControl
                
function PointXY (x,y)
{
    this.x = x;
    this.y = y;
}

function ClearRoute ()
{
    if (route != null)
    {
        route.disableEditing();
        if (eventlineupdated != null)
            GEvent.removeListener (eventlineupdated);
		
		map.removeOverlay(route);
		route = null;
    }
    
    RemoveMarkers ();
}

function cmdSearch_Click()
{
	
	var txt = document.getElementById("txtJumpTo")
	if (txt.value != null && txt.value != "" && txt.value != cAddrNotFound && txt.value !=cEnterAddr)
	{
	    var lblErrNotFoundCenter = document.getElementById("lblErrNotFoundCenter");
	    lblErrNotFoundCenter.style.display = "none";
	    lblErrNotFoundCenter.style.color  = cErr;
		geocoder.getLatLng(txt.value,this.geocoder_getdata);
	}
}

function geocoder_getdata(point)
{
	if (point != null)
	{
	    var zoom = map.getZoom();
	    map.setCenter(point, Math.max (zoom,15));
	}
	else
	{
		var lblErrNotFoundCenter = document.getElementById("lblErrNotFoundCenter");
		lblErrNotFoundCenter.style.color = cErr;
	    lblErrNotFoundCenter.style.display = "block";
	}
}

function optDistanceUnits_Changed()
{
	var optDistanceUnits = document.getElementById("optDistanceUnits");
    var lblUnits = document.getElementById("lblDistanceUnits");
	
	if (optDistanceUnits == null)
	    optDistanceUnits = document.getElementById("ctl00_ContentPlaceHolder1_optDistanceUnits");
	
	if (optDistanceUnits != null && lblUnits != null)
    {
        if (optDistanceUnits.selectedIndex == 0)
            lblUnits.value = "0";
        else
            lblUnits.value = "1";
            
        UpdateInfo();
    }
 
}

function RemoveMarkers ()
{
	if (markers != null)
    {
        var marker;
        
        var j;
        for (j=0;j<markers.length;j++)
               map.removeOverlay(markers[j]);
               
        markers = null;
    }   
}

function UpdateInfo ()
{
	var lbl = document.getElementById("lblDistance");
	var optDistanceUnits = document.getElementById("optDistanceUnits");
	var lblData = document.getElementById("lblData");
	var lblData2 = document.getElementById("lblDataFromServer");
	var lblUnits = document.getElementById("lblDistanceUnits");
	var lblComma = document.getElementById("lblUseCommaForDecimal");
	
	var lblSplitsPaceMiles = document.getElementById("lblSplitsPaceMiles");
	var lblSplitsPaceKM = document.getElementById("lblSplitsPaceKM");
	var lblSplitsTotalsMiles = document.getElementById("lblSplitsTotalsMiles");
	var lblSplitsTotalsKM = document.getElementById("lblSplitsTotalsKM");
	
	var dist;
	var MidMarkersOK = true ;
	var DistMeters = 0;
	
	if (lblData2 == null)
	    lblData2 = document.getElementById("ctl00_ContentPlaceHolder1_lblDataFromServer");
	
	if (optDistanceUnits == null)
	    optDistanceUnits = document.getElementById("ctl00_ContentPlaceHolder1_optDistanceUnits");
	
    RemoveMarkers ();

    if (route != null && route.getVertexCount() > 0 )
    {
        DistMeters = route.getLength(); 
        
        if (map != null)
        {
            var z = map.getZoom();
            
            if (z < 13 || DistMeters > 161000) //Approx 100 miles
            {
                    MidMarkersOK = false ;
                    route.disableEditing();
            }                   
	    }
	        
	    lblData.value = "";

	    var i;
	    var LatLon = "";
	    var VC = route.getVertexCount();
	    var v;
	    var lastV;
        var distSoFar=0;
        var distLast=0;
        var lastMarkerAt = 0;
        var distUpToLastPoint=0;
        var nextMarkerAt = 1;
        var inc;
        var markerLatLng;
        var marker ;
        var TotalGap;
        var pct ;
        var distMeters;
        var icon;
        var opts;
        var distUnit;
        var distUnitShort;
        var distUnitSingular;
        var vOffset = -31;
        var hOffset = -22;
        var vOffsetLarge = -63;
        var hOffsetLarge = -60;
        var showSplits = false;
        var splitIndex =0;
        var splitsPace = new Array;
        var splitsTotals = new Array;
        var maxSplits = -1;
        
        if (lblSplitsPaceKM != null && lblSplitsPaceKM.value !="")
            showSplits = true;
        
        if (lblUnits.value == "1")
        {
            //KM
            distUnit = " km(s)";
            distUnitShort = "km";
            distUnitSingular =" kilometer";
            
            if (showSplits)
            {
                splitsPace = lblSplitsPaceKM.value.split("|");
                splitsTotals = lblSplitsTotalsKM.value.split("|");
                maxSplits = splitsTotals.length -1;
            }
         }
         else
         {   //Miles
            distUnit = " mile(s)";
            distUnitShort = "mi";
            distUnitSingular = " mile"
            
            if (showSplits )
            {
                splitsPace = lblSplitsPaceMiles.value.split("|");
                splitsTotals = lblSplitsTotalsMiles.value.split("|");
                maxSplits = splitsTotals.length -1;
            }
         }
         
	    //Add start marker
	    icon = new GIcon(); 

	    if (!showSplits)
	    { 
            icon.image = 'images/StartMarker.png';
            icon.iconSize = new GSize(32, 32); 
            icon.iconAnchor = new GPoint(32, 32); 
            icon.infoWindowAnchor = new GPoint(25, 7); 
        
            opts = { 
              "icon": icon, 
              "clickable": false, 
              "title": "Start" , 
              "labelText": "S", 
              "labelOffset": new GSize(hOffset, vOffset) 
            }; 
         }
         else
         {
            icon.image = 'images/StartMarkerLarge.png';
            icon.iconSize = new GSize(64, 64); 
            icon.iconAnchor = new GPoint(64, 64); 
            icon.infoWindowAnchor = new GPoint(25, 7); 
        
            opts = { 
              "icon": icon, 
              "clickable": false, 
              "title": "Start" , 
              "labelText": "Start", 
              "labelOffset": new GSize(hOffsetLarge, vOffsetLarge) 
            }; 
         }

        marker = new LabeledMarker(route.getVertex(0), opts); 
        if (markers == null)
            markers = new Array;

        map.addOverlay(marker);
        markers.push(marker);

        if (MidMarkersOK)
        {
	        for (i = 0; i < VC; i++)
	        {	
		        v = route.getVertex(i);
       
		        if (v != null )
                {
                    LatLon = LatLon + v.lng() + "x" + v.lat(); //Don't use , since that can mean something else if the lang is not English
	                if (i != VC - 1)
		                LatLon = LatLon + "|";
    		        
		            if (lastV != null)
		            {
                        //#s
                        //Add Start and Stop
                                            		        
		                //Do we need a marker?
		                distMeters = distVincenty(v.lat(),v.lng(),lastV.lat(),lastV.lng());
    		            
		                if (lblUnits.value == "1")
		                    //KM
		                    distSoFar += distMeters / 1000;
		                else
		                    //Miles
    		                distSoFar += DistanceMetersToMiles(distMeters);
    		            
		                while (Math.floor(distSoFar) >= nextMarkerAt)
		                {
    	                
	                        //Yes need a marker.  But where?  And we could need > 1
	                        inc = nextMarkerAt - distLast;
	                        TotalGap = distSoFar - distLast;
	                        pct = inc / TotalGap;

	                        markerLatLng = ComputeLatLongMidpoint(lastV,v,pct);

	                        if (markers == null)
	                            markers = new Array;

	                        icon = new GIcon(); 
                           
                           if (!showSplits ) 
                           {
                                icon.image = 'images/distMarker.png';
                                icon.iconSize = new GSize(32, 32); 
                                icon.iconAnchor = new GPoint(32, 32); 
                                icon.infoWindowAnchor = new GPoint(25, 7); 
                         
                                opts = { 
                                  "icon": icon, 
                                  "clickable": false, 
                                  "title": (markers.length) + distUnit , 
                                  "labelText": markers.length, 
                                  "labelOffset": new GSize(hOffset - (markers.length.toString().length -1) * 5, vOffset) 
                                }; 
                            }
                            else
                            {
                                icon.image = 'images/distMarkerLarge.png';
                                icon.iconSize = new GSize(64, 64); 
                                icon.iconAnchor = new GPoint(64, 64); 
                                icon.infoWindowAnchor = new GPoint(25, 7); 
                         
                                opts = { 
                                  "icon": icon, 
                                  "clickable": false, 
                                  "title": (markers.length) + distUnit + " / " + splitsTotals[splitIndex]  + ".  Preceeding" + distUnitSingular + " @ " + splitsPace[splitIndex] + " pace" , 
                                  "labelText": (markers.length) + distUnitShort + "<br />" + splitsPace[splitIndex], 
                                  "labelOffset": new GSize(hOffsetLarge, vOffsetLarge) 
                                }; 
                                splitIndex += 1;    
                            }
                            
                            marker = new LabeledMarker(markerLatLng, opts); 
                            
	                        map.addOverlay(marker);
	                        markers.push(marker);

	                        lastMarkerAt = nextMarkerAt;
	                        nextMarkerAt++;
	                    }
	                    distLast = distSoFar;
		            }
    		        
		            lastV = v;
			    }
	        }
        }

    if (optDistanceUnits != null)
    {
        //Miles
        dist = ((DistMeters / 1000) * MilesPerKM ).toFixed(2);

        if (lblComma.value == "-1")
            dist = dist.replace(/\./,",");
        optDistanceUnits.options[0].text = dist + " mi";
        
        //KM
        dist = (DistMeters / 1000).toFixed(2);

        if (lblComma.value == "-1")
            dist = dist.replace(/\./,",");
        optDistanceUnits.options[1].text = dist + " km";
     
    }
    
    if (lblUnits.value == "1")
    {
        //KM
        dist = ((DistMeters / 1000)).toFixed(2);
        
        if (lblComma.value == "-1")
            dist = dist.replace(/\./,",");
        
        if (lbl != null)
            lbl.value = "Distance: " + dist + " km";
            
        if (optDistanceUnits != null && optDistanceUnits.selectedIndex != 1)
            optDistanceUnits.selectedIndex = 1;    
    }
    else
    {
        //Miles
        dist = ((DistMeters / 1000) * MilesPerKM ).toFixed(2);
        
        if (lblComma.value == "-1")
            dist = dist.replace(/\./,",");

        if (lbl != null)
            lbl.value = "Distance: " + dist + " mi";

        if (optDistanceUnits != null && optDistanceUnits.selectedIndex != 0)
            optDistanceUnits.selectedIndex = 0;    
    }
    
    
        if (VC > 1 )
        {
            //Add end marker
	        icon = new GIcon(); 
	        if (!showSplits )
	        {
                icon.image = 'images/EndMarker.png';
                icon.iconSize = new GSize(32, 32); 
                icon.iconAnchor = new GPoint(32, 32); 
                icon.infoWindowAnchor = new GPoint(25, 7); 
                
                opts = { 
                  "icon": icon, 
                  "clickable": false, 
                  "title": "End " + dist + distUnit  , 
                  "labelText": "E", 
                  "labelOffset": new GSize(hOffset, vOffset) 
                }; 
            }
            else
            {
                icon.image = 'images/EndMarkerLarge.png';
                icon.iconSize = new GSize(64, 64); 
                icon.iconAnchor = new GPoint(64, 64); 
                icon.infoWindowAnchor = new GPoint(25, 7); 
                
                if (splitIndex > maxSplits)
                {
                    splitIndex = maxSplits ;
                    
                    opts = { 
                      "icon": icon, 
                      "clickable": false, 
                      "title": "End / " + dist + distUnit, 
                      "labelText": "End<br />" + splitsPace[splitIndex], 
                      "labelOffset": new GSize(hOffsetLarge, vOffsetLarge) 
                    };                
                }
                else
                {
                    opts = { 
                      "icon": icon, 
                      "clickable": false, 
                      "title": "End / " + dist + distUnit  + " / " +  splitsTotals[splitIndex] + ".  Last" + distUnitSingular + " @ " + splitsPace[splitIndex] + " pace", 
                      "labelText": "End<br />" + splitsPace[splitIndex], 
                      "labelOffset": new GSize(hOffsetLarge, vOffsetLarge) 
                    };
                }
            }
            
            marker = new LabeledMarker(route.getVertex(VC -1), opts); 
            if (markers == null)
                markers = new Array;

            map.addOverlay(marker);
            markers.push(marker);
        }
	    lblData.value = LatLon;
    }
    else
	    lblData.value = "";
    
    var center = map.getCenter();

    if (center != null)
        lblData2.value =  center.lng() + "|" + center.lat() + "|" + map.getZoom() + "|" + ((DistMeters / 1000) * MilesPerKM) ;
        
    RefreshTerrain(); 
}

function ComputeLatLongMidpoint(LatLong1,LatLong2, Percent) 
{
    var lat = (1-Percent) * LatLong1.lat() + Percent * LatLong2.lat();
    var lng = (1-Percent) * LatLong1.lng() + Percent * LatLong2.lng();
    
    return new GLatLng(lat,lng);
}

function ComputeDistance(LatLong1, LatLong2)
{
    //Return is in Statute miles but the computation is in NM
    
        var d;
        var l1; //In radians
        var l2; //In radians


        l1 = AngleDegreesToRadiansLatLongXY(LatLong1);
        l2 = AngleDegreesToRadiansLatLongXY(LatLong2);

        l1.x = -l1.x;
        l2.x = -l2.x;
        
        d = 2 * Math.asin(Math.sqrt((Math.sin((l1.y - l2.y) / 2)) ^ 2 + Math.cos(l1.y) * Math.cos(l2.y) * (Math.sin((l1.x - l2.x) / 2)) ^ 2));
        
        return DistanceNMToSM(d);
 }

function AngleDegreesToRadians(Degrees)
{
     return Degrees * mPiD180;
}

function AngleRadiansToDegrees(LatRLongR)
{
    // input is PointXY, output is GLatLng
    // GLatLng is Y,X not X,Y!
        return new GLatLng (LatRLongR.y * m180DPi,LatRLongR.x * m180DPi);
}

function AngleDegreesToRadiansLatLongXY(LatDLongD)
{
        return new PointXY(LatDLongD.lng() * mPiD180,LatDLongD.lat() * mPiD180);
}

function DistanceNMToSM(NM)
{
        return NM * 1.15077945;
}

function DistanceMetersToFeet(Meters)
{
        return Meters * 3.28084;
}

function DistanceMetersToMiles (Value)
{
    return DistanceMetersToFeet(Value) / FeetPerSMile;
}

function DistanceKMtoNM(Kilometers)
{
        return Kilometers / 1.852;
}

function DistanceMetersToNM(Meters)
{
    return DistanceKMtoNM(Meters / 1000);
}
/*
 * Calculate geodesic distance (in m) between two points specified by latitude/longitude (in numeric degrees)
 * using Vincenty inverse formula for ellipsoids
 */
function distVincenty(lat1, lon1, lat2, lon2) {
  var a = 6378137, b = 6356752.3142,  f = 1/298.257223563;  // WGS-84 ellipsiod
  var L = (lon2-lon1).toRad();
  var U1 = Math.atan((1-f) * Math.tan(lat1.toRad()));
  var U2 = Math.atan((1-f) * Math.tan(lat2.toRad()));
  var sinU1 = Math.sin(U1), cosU1 = Math.cos(U1);
  var sinU2 = Math.sin(U2), cosU2 = Math.cos(U2);
  
  var lambda = L, lambdaP = 2*Math.PI;
  var iterLimit = 20;
  while (Math.abs(lambda-lambdaP) > 1e-12 && --iterLimit>0) {
    var sinLambda = Math.sin(lambda), cosLambda = Math.cos(lambda);
    var sinSigma = Math.sqrt((cosU2*sinLambda) * (cosU2*sinLambda) + 
      (cosU1*sinU2-sinU1*cosU2*cosLambda) * (cosU1*sinU2-sinU1*cosU2*cosLambda));
    if (sinSigma==0) return 0;  // co-incident points
    var cosSigma = sinU1*sinU2 + cosU1*cosU2*cosLambda;
    var sigma = Math.atan2(sinSigma, cosSigma);
    var sinAlpha = cosU1 * cosU2 * sinLambda / sinSigma;
    var cosSqAlpha = 1 - sinAlpha*sinAlpha;
    var cos2SigmaM = cosSigma - 2*sinU1*sinU2/cosSqAlpha;
    if (isNaN(cos2SigmaM)) cos2SigmaM = 0;  // equatorial line: cosSqAlpha=0 (§6)
    var C = f/16*cosSqAlpha*(4+f*(4-3*cosSqAlpha));
    lambdaP = lambda;
    lambda = L + (1-C) * f * sinAlpha *
      (sigma + C*sinSigma*(cos2SigmaM+C*cosSigma*(-1+2*cos2SigmaM*cos2SigmaM)));
  }
  if (iterLimit==0) return NaN  // formula failed to converge

  var uSq = cosSqAlpha * (a*a - b*b) / (b*b);
  var A = 1 + uSq/16384*(4096+uSq*(-768+uSq*(320-175*uSq)));
  var B = uSq/1024 * (256+uSq*(-128+uSq*(74-47*uSq)));
  var deltaSigma = B*sinSigma*(cos2SigmaM+B/4*(cosSigma*(-1+2*cos2SigmaM*cos2SigmaM)-
    B/6*cos2SigmaM*(-3+4*sinSigma*sinSigma)*(-3+4*cos2SigmaM*cos2SigmaM)));
  var s = b*A*(sigma-deltaSigma);
  
  return s;
}

Number.prototype.toRad = function() {  // convert degrees to radians
  return this * Math.PI / 180;
}

function ZoomChanged (OldZoom,NewZoom)
{
    UpdateInfo();    
}

function ShowRoute (Data)
{
        ClearRoute();
    
        if (Data != null && Data != "")
	    {
	        // We have data getting passed to us about a route.
	        // This is very similar to the Load() routine but not
	        // identical since this one has the Center as element 0
	        
	        var i;
	        var LatLons = Data.split("|");
	        var Lat;
	        var Lng;
            var LongLat;
            var Point;
            var center;
            var zoom;
            var comments;
            var IsPublic;
            var MapID;
            var txtComments = document.getElementById("lblDescription");
            var txtName = document.getElementById("lblTitle");
            var optPublic = document.getElementById("optPublic");
            var optPrivate = document.getElementById("optPrivate");
            var lblOriginalname = document.getElementById("lblOriginalname");
            var tblRowFind = document.getElementById("tblRowFind");
            var lblMapID = document.getElementById("lblMapID");
            var Name;
            var UserName;
            var lblCreatedBy = document.getElementById ("lblCreatedBy");
            
  	        if (LatLons != null)
	        {
	            // First element is the Center
	            LongLat = LatLons[0].split("x");
	            center = new GLatLng(LongLat[1],LongLat[0]);
               
                //Second element is the Zoom
                zoom = LatLons[1];
                IsPublic =  LatLons[2];
                comments = LatLons[3];
                Name = LatLons[4];
                MapID = LatLons[5];
                UserName = LatLons[6];
                
                if (txtComments != null)
                    txtComments.value = comments;
                if (txtName != null)
                    txtName.value = Name;
                
                lblOriginalname.value = Name;   
                lblMapID.value = MapID;
                
                if (lblCreatedBy != null)
                    lblCreatedBy.innerHTML ="Created by <a href='Personal.aspx?User=" + escape (UserName ) + "'>" + UserName + "</a> / ";    
                
	            if (LatLons[7] != "" && LatLons[7] != null)
	            { 
	                map.setCenter(center, parseFloat(zoom));                
                    
                    var Points = new Array;
                    
                    for (i=7;i < LatLons.length;i++)
                    {
                        LongLat = LatLons[i].split("x");
                        Point = new GLatLng(LongLat[1],LongLat[0]);

                        Points.push (Point);
                    }
                        
                    if (Points.length > 0)
                    {
                        route = new GPolyline(Points, "#ff0000", 10);
                        map.addOverlay(route);
                        route.disableEditing();
                        eventlineupdated = GEvent.addListener (route,"lineupdated",this.UpdateInfo);
                    }
                }
                
                UpdateInfo();	  
	        }
	    }
}

function load(Resize) 
{
    if (GBrowserIsCompatible()) 
    {
        //Generic stuff
        if (Resize)
            ResizeMap (true );
            
	    var divMap = document.getElementById("map");
	    map = new GMap2(divMap,{draggableCursor: "crosshair", draggingCursor: "crosshair"});
	    
	    var UIOptions = new GMapUIOptions(new GSize(divMap.style.width ,divMap.style.height));
        map.setUI(UIOptions);
        map.disableScrollWheelZoom();
	    
         
/*
	    if (document.getElementById("map").style.width < 300)
	    {
	        mMapControl = new GSmallMapControl();
	        map.addControl(mMapControl);
	        map.addControl(new GMapTypeControl());
	        map.addMapType(G_PHYSICAL_MAP);  //Terrain
	    }
	    else
	        map.setUIToDefault() ;
	        //mMapControl = new GLargeMapControl();
*/
	    
	    map.disableScrollWheelZoom();
	    GDraggableObject.setDraggableCursor('crosshair')
        	    
	    geocoder = new GClientGeocoder();
	    
	    cEnterAddr = "Enter an address and click Go";
	    cEnterFindAddr = "Enter a city or address then click Find";
	    cAddrNotFound = "Sorry, couldn't find that address.";
        var lblErrNotFoundCenter = document.getElementById("lblErrNotFoundCenter");
        
        if (lblErrNotFoundCenter != null)
            lblErrNotFoundCenter.style.display = "none";

        var center = new GLatLng(0, 0);
    	var zoom = 1;

	    map.disableDoubleClickZoom();

	    var ds = document.getElementById("lblData");
	    var ctrlCenterAndZoom = document.getElementById("lblDataFromServer");
    	var jt = document.getElementById("txtJumpTo");
    	var fnd = document.getElementById("txtFind");
    	var CenterAndZoom;
    	    	
    	if (ctrlCenterAndZoom == null)
    	    ctrlCenterAndZoom = document.getElementById("ctl00_ContentPlaceHolder1_lblDataFromServer");
    	    	
    	if (jt != null)
    	    jt.value = cEnterAddr;
    	
    	if (fnd != null && fnd.value == "")
    	    fnd.value = cEnterFindAddr;

    	if (ctrlCenterAndZoom != null && ctrlCenterAndZoom.value != null && ctrlCenterAndZoom.value != "")
	    {
	        CenterAndZoom = ctrlCenterAndZoom.value.split("|");
            zoom = CenterAndZoom[2];
            center = new GLatLng(CenterAndZoom[1],CenterAndZoom[0]);
	    }
	    
	    zoom = Math.min(zoom,15);
	    map.setCenter(center, zoom);                
	    
	    if (ds.value != null && ds.value != "")
	    {
	        // We have data getting passed back to us from the server
	        if (ds.value != "null" )
	        {
	            var LatLons = ds.value.split("|");
	            var Lat;
	            var Lng;
                var LongLat;
                var Point;
                
	            if (LatLons != null)
	            {
                    var i;
                    var Points = new Array;
                    
                    for (i=0;i < LatLons.length;i++)
                    {
                        LongLat = LatLons[i].split("x");
                        Point = new GLatLng(LongLat[1],LongLat[0]);
                        Points.push (Point);
                    }
                    
                    if (Points.length > 0)
                    {
                        route = new GPolyline(Points, "#ff0000", 10);
                        map.addOverlay(route);
                        eventlineupdated = GEvent.addListener (route,"lineupdated",this.UpdateInfo);
                     }
                }
                UpdateInfo();	  
	        }
	    }
	    else
        {
            //ClearSaveAsInfo();
            map.setCenter(center, zoom);            
        }
        
        if (eventzoomend == null)	        
            eventzoomend = GEvent.addListener (map,"zoomend",this.ZoomChanged);
        
        var lstRoutes = document.getElementById("lstRoutes");
        if (lstRoutes == null)
            lstRoutes = document.getElementById("ctl00_ContentPlaceHolder1_lstRoutes");
        
        if (route == null && lstRoutes != null && lstRoutes.selectedIndex > -1 )
           ShowRoute(lstRoutes[lstRoutes.selectedIndex].value);
        
        if (Resize)
            ResizeMap (true );
        
    }   
}

    //]]>

function PrintNow ()
{
    window.print();
}

function ResizeMap (UseFullPage)
{
    var m = document.getElementById ("map");
    var mc = document.getElementById ("mapCell");
    var ap = document.getElementById ("allPage");
    var mt = document.getElementById ("mapTable");
    var divTerrain = document.getElementById ("divTerrain");
    var NewWidth;
    var NewHeight;
    var vSpacer = 0;
    var NewFullWidth = 0;
    var margin = 0;
    var IsIE = false;
    var TerrainHeight = 100 ;
            
    if (m != null)
    {
        //Have to deal w/ IE differently than everyone else.  Of course
        if (UseFullPage )
        {
            var isSafari = (navigator.userAgent.toLowerCase().indexOf("safari") > -1);
            var isIE8 = (window.navigator.appName == "Microsoft Internet Explorer" && document.documentMode != null && document.documentMode >= 8);

            //unit="%";
            if (window.innerWidth != null ) 
            {
                //Non-IE
                //IE takes the scrollbar into account with ClientWidth - innerWidth does not so adapt
                NewWidth  = window.innerWidth;
                margin = 0;
                NewHeight = Math.max (window.innerHeight -40 - TerrainHeight ,100);
            }
            else
            {
                NewWidth = document.documentElement.clientWidth;
                margin = 0;
                NewHeight = Math.max (document.documentElement.clientHeight - vSpacer-30-TerrainHeight,100);
                IsIE = true;
            }
            
            if (isSafari)
            {
                NewWidth = parseInt(NewWidth) -  15;
                NewHeight = parseInt(NewHeight) - 10;
            }
            
            if (isIE8 )
            {
                NewWidth = parseInt(NewWidth) -  25;
                NewHeight = parseInt(NewHeight) - 20;
            }
            
        }
        else
        {
            //unit="px";
            if (window.innerWidth != null ) 
            {
                //Non-IE
                //IE takes the scrollbar into account with ClientWidth - innerWidth does not so adapt
                NewWidth  = Math.max (window.innerWidth - 300,666);
                margin = Math.max ((NewWidth - window.innerWidth)/2,120);
                NewHeight = Math.max (window.innerHeight - vSpacer,500);
                NewFullWidth = Math.max (window.innerWidth -40 ,906);
            }
            else
            {
                NewWidth = Math.max (document.documentElement.clientWidth - 280,666);
                margin = Math.max ((NewWidth - document.documentElement.clientWidth)/2,120);
                NewFullWidth = Math.max (document.documentElement.clientWidth -20 ,906);
                NewHeight = Math.max (document.documentElement.clientHeight - vSpacer,500);
                IsIE = true;
            }
        }
        
        m.style.width = NewWidth  + "px" ; //The px is required for non-IE browsers
        m.style.marginLeft = margin + "px";
        m.style.height = NewHeight  + "px" ;
        
        if (map != null && UseFullPage)
        {
         var UIOptions = new GMapUIOptions(new GSize(NewWidth ,NewHeight ));
         map.setUI(UIOptions);
         map.disableScrollWheelZoom();
	    
         /*
            if (NewHeight < 300)
            {
                if (mMapControl != null)
                    map.removeControl(mMapControl);
	            mMapControl =  new GSmallMapControl();
                map.addControl(mMapControl);
	        }
	        else   
            {
                map.setUIToDefault() ;
                //map.removeControl(mMapControl);
	            //mMapControl =  new GLargeMapControl();
                //map.addControl(mMapControl);
	        }
	    */
	    }
	    
	    RefreshTerrain ();
    }
    
    
}

