﻿var mapsInitCallback;

//Laddar Google Maps API in i dokumentet, görs efter att sidan är färdigladdad.
function loadGoogleMaps(callback) {
    mapsInitCallback = callback;
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src = "http://maps.google.com/maps/api/js?sensor=false&region=SE&language=sv&callback=InitMap";
    document.body.appendChild(script);
}


//Initierar kartan direkt efter att Google Maps API är laddat. Anropas via callback från API laddningen.
function InitMap() {
    InitializeMapSettings();
}

function InitMap2() {
    var myLatlng = new google.maps.LatLng(lat, lng);
    var myOptions = {
        zoom: zoom,
        center: myLatlng,
        mapTypeControl: false,
        streetViewControl: false,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    }

    map = new google.maps.Map(document.getElementById("divMap"), myOptions);

    cityMarkerSize = -1;

    //Lägger till lyssnare för kartförändringsevent.
    //zoomChangedListener = google.maps.event.addListener(map, 'zoom_changed', function () { ZoomChangedEventHandler(); });
    google.maps.event.addListener(map, 'zoom_changed', function () { ZoomChangedEventHandler(); });
    google.maps.event.addListener(map, 'center_changed', function () { CenterChangedEventHandler(); });
    google.maps.event.addListener(map, 'dragend', function () { DragEndEventHandler(); });

    mapsInitCallback();
}

function InitializeMapSettings() {
    ReadHashValues();

    allowedBounds = new google.maps.LatLngBounds(new google.maps.LatLng(setting.southBoundary, setting.westBoundary),
                                      new google.maps.LatLng(setting.northBoundary, setting.eastBoundary));

    if (lat == null || lng == null || zoom == null) {
        if (IsBaseURL()) {
            lat = setting.lat;
            lng = setting.lng;
            zoom = setting.zoom;
            InitMap2();
        }
        else {
            var urlName = window.location.pathname.replace(/\//gi, "");
            CityService.GetCityHash(urlName, GetCityHashCallBack, null, null);
        }
    }
    else {
        InitMap2();
    }

}

function GetCityHashCallBack(cityHash) {
    ReadHashValuesFromString(cityHash);
    InitMap2();
}

/**
* The HomeControl adds a control to the map that simply
* returns the user to Chicago. This constructor takes
* the control DIV as an argument.
*/

function HomeControl(controlDiv, map) {
    var innerDivHTML = $('#div_map_control_title_template').html();

    var innerDiv = $(innerDivHTML);
    controlDiv.append(innerDiv);

    // Setup the click event listeners: simply set the map to
    // Chicago
    google.maps.event.addDomListener(innerDiv[0], 'click', function () {
        map.setCenter(chicago)
    });

}

