﻿/*
Map.js controls basic map functions such as load
*/

/*
API Keys:  FAN 1 Server:  ABQIAAAAE6MCe8qamsTcb-AFRjQIfBS4ivHMGu3Y6DcqRlV6meiWXGLbUBSNRoqkqzkyUrztWXNrESxyBVUKLg
           localhost:  ABQIAAAAE6MCe8qamsTcb-AFRjQIfBQ9XSFuKiZnR9pKebOJ3cT4Jp8I8hSfGwQSMZ_ZKrE3APLcGPDV7ZoHNA
*/

var _map = null; //The map object
var _geocoder = null; //Geocoder object
var _searchPrefs = null; //Search Prefs object
var _searchResultsGrid = null; //Search Results Grid object
var _searchGeometryObject = null; //Search Geometry object
var _foot = null; //Footer object
var _geofuseLogoScreenOverlay = null; // GeoFUSE Logo on Map Screen Overlay Object

/// <summary>
/// Initializes the Google Map and supporting objects
/// </summary>
/// <returns>null</returns>
function InitializeMap()
{
  if (GBrowserIsCompatible())
  {
    
    _map = new GMap2($("wrapper-map"));
    //Center map
    _map.setCenter(_defaultMapCenter, _defaultMapZoom);

	//Add Standard Google Maps Controls
    _map.addControl(new GLargeMapControl());
    _map.addControl(new GScaleControl());
    //_map.addControl(new GOverviewMapControl());
    
    //Setup Map Control
	new GKeyboardHandler(_map);
	_map.enableContinuousZoom();
    _map.enableScrollWheelZoom();
	_map.enableDoubleClickZoom();
    _map.enableScrollWheelZoom();

    // Custom My Maps Toolbar (MapTools.js)
    // Grant: Note that the functionality is still in dev.
    _map.addControl(new MapToolControl());
    
    _map.addMapType(G_PHYSICAL_MAP);
    //_map.addMapType(G_SATELLITE_3D_MAP);
    _map.removeMapType(G_HYBRID_MAP);
    _map.removeMapType(G_SATELLITE_MAP);
    _map.addControl(new GMapTypeControl());
    
    
    
    // For displaying SqKM & Coords of extent / polygon / point.
    featureTable_ = $("featuretbody");
    
    //Load Featured Locations
    LoadFeaturedLocations();
    
    //Create MapExtension utility class
    _mapExtension = new esri.arcgis.gmaps.MapExtension(_map);

    // ArcGIS Custom Query Task
    _qtask = new geoeye.webmaps.QueryTask(GetArcGISServerRESTURL());
//    _qtask = new geoeye.webmaps.QueryTask("http://hilife/handler/ArcGIS/rest/services/GeoEyeCatalogFeatures/MapServer/2");
    
    //_qtask = new esri.arcgis.gmaps.QueryTask(GetArcGISServerRESTURL());
       
    //Listen for map clicks - used to highlight footprints onClick.
    GEvent.addListener(_map, "click", HandleMapClick);
    
    //Initialize ESRI Query Object
    _query = new esri.arcgis.gmaps.Query();
    
    //Create Geocoder Object 
    _geocoder = new GClientGeocoder();
    
    //Initiate Catalog Search Preferences Object
    _searchPrefs = new Preferences();
    _searchPrefs.Init();
    
    //Initiate search geometry object
    _searchGeometryObject = new SearchGeometryObject();
    
    //Initialize Search Grid
    _searchResultsGrid = new SearchResultsGrid(0);
    
    //Set Default End Date to Todays Date;
    $("uxToDate").value = GetTodaysDate();
    
    //Initialize footer, depends on Search Prefs
    _foot = new Footer();
    _foot.CreateHTML();
    
    //Mouse Position Listener - Depends on Footer
    //  Accessed by Footer & Polygon tool in toolbar
    GEvent.addListener(_map, 'mousemove', UpdateMousePosition);
        
    //Listen for map zooming. 
    GEvent.addListener(_map, "zoomend", function(){ExecuteZoomCheck();});
    
    ResizeApp();
    
    //Recenter after resizing
    _map.setCenter(_defaultMapCenter, _defaultMapZoom);
    
    //Initiate Zoom Level check on load, AFTER resizing
    ExecuteZoomCheck(); 
    }
}

/// <summary>
/// Zooms to point on map.
/// </summary>
/// <returns>null</returns>
function ZoomToPoint(lat,lng,zoom)
{
    _map.setCenter(new GLatLng(lat,lng),zoom);
}

