﻿$(document).ready(function() {
    // opens external rel anchors in new window
    $("a[rel='external']").live('click', function(e) {
         $(this).attr('target','_blank');
    });
});

$(document).ready(function() {
    // check for map container existance
    if($('#geo-map').length == 0) {
        return;
    }

    // map layout handler - initializes the controls on the map
    function layoutMapControls(instance) {
        instance.addControl(new GLargeMapControl());

        var markerIcons = [];
        markerIcons['default'] = new GIcon(G_DEFAULT_ICON);
        
        var lyrId = $.url.param("lyr");
        var layers_morebutton = [
            { checked:true, name:lyrId, iconUrl:null, obj:new o8.Gis.MapLayer(lyrId, markerIcons['default']) }
        ];

        // add map layer control
        instance.addControl(new o8.Gis.LayerControl(layers_morebutton), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(-100, -100)));
        
        // for debugging
        //instance.addControl(new o8.Gis.CoordboxControl());
        //instance.addControl(new o8.Gis.CrosshairControl());
    }
    
    // marker info window provider
    function markerInfoHtmlContentProvider(markerId, markerType, properties) {
        var tmpString = '<div id="six-gmap-info" style="width:200px;">';
        tmpString += '<h3>' + properties.Title + '</h3>';
        
        tmpString += properties.Address1 + '<br />';
        tmpString += properties.Zip + ' ' + properties.City + '<br />';

        tmpString += '</div>';
        return tmpString;
    }
    
    // instantiate and initialize the google map
    var gisMap = new o8.Gis.Map(layoutMapControls, markerInfoHtmlContentProvider);
    var startLat = parseFloat($.url.param("lat"));
    var startLon = parseFloat($.url.param("lon"));
    var zoomLevel = parseFloat($.url.param("zoom"));
    //gisMap.initialize('geo-map', { 'Lat': 46.70633, 'Lon': 7.53043 }, 9);
    gisMap.initialize('geo-map', { 'Lat': startLat, 'Lon': startLon }, zoomLevel);
    gisMap.setBounds({ 'Lat': 45.8, 'Lon': 5.95 }, { 'Lat': 47.8, 'Lon': 10.5 });
    gisMap.setAllowedZoomLevels(6, 18);
    
    function moveEndhandler() {
        var maxResults = 60;
        var mapBounds = gisMap.getBounds(); 
        var data = new Object;
        var lyrId = $.url.param("lyr");
        data.layerId = lyrId;
        data.southWest = mapBounds.SouthWest;
        data.northEast = mapBounds.NorthEast;
        data.maxResults = maxResults + 1;      
        var jsonData = $.toJSON(data);
        
        o8.Gis.fetchDataFromService('GetMarkersEx', jsonData, function(response) {           
response.GeoMarkers = response.d.GeoMarkers;
response.GeoMarkerClusters = response.d.GeoMarkerClusters;
response.LayerId = response.d.LayerId;
response.__type = response.d.__type;
            if((response == null) || response.GeoMarkers == null) {
                $('#poi-address-msg').hide();
                $('#poi-address-list').hide();
                return;
            }

            if(response.GeoMarkers.length > maxResults) {
                $('#poi-address-msg').show();
                $('#poi-address-list').hide();
                return;
            }
            
            $('#poi-address-msg').hide();
            $('#poi-address-list').fillTemplate(response);
            $('#poi-address-list').show();
        });
    }
 
    // add modeend handler
    gisMap.addMoveEndListener(moveEndhandler);
    // force loading of poi list
    moveEndhandler();
    // ensure that the allocated memory will be freed
    $(window).unload( function () { GUnload(); } );
});

