﻿function CGoogleMapFilter() {
    var Map;
    var Polygon;
    var Markers = [];
    var InfoWindowBlock
    this.Init = function(mapId, startCoordinate, polygonCoordinates, markers) {
        var latlng = new google.maps.LatLng(startCoordinate.Latitude, startCoordinate.Longitude);
//        var latlng =  new google.maps.LatLng(51.4916807, -0.1920284);
        var myOptions = {
            zoom: 13,
            center: latlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        
       

        Map = new google.maps.Map($("#" + mapId)[0], myOptions);


        Polygon = new google.maps.Polygon({
            path: GetPolygonCoordinates(polygonCoordinates),
            strokeColor: "#000000",
            strokeOpacity: 1,
            strokeWeight: 1,
            fillColor: "#58b1f1",
            fillOpacity: 0.5,
            editable: true
        });

        InfoWindowBlock = new google.maps.InfoWindow();

        Polygon.setMap(Map);
        AddMarker(markers);
        google.maps.event.addListener(Map, 'click', OnAddPoint);
        google.maps.event.addListener(Polygon, 'dblclick', OnDbClick);

        /*var service = new google.maps.places.PlacesService(Map);
        var request = {
            location: latlng,
            radius: 100000,
            types: ['parking', 'restaurant', 'store']
        };


        service.search(request, CallBackPlacesService);*/
       



        /*
        
        var polygonCoords = [
        new google.maps.LatLng(40.386566,49.846687),
        new google.maps.LatLng(40.418201,49.846687),
        new google.maps.LatLng(40.386566,49.887886),
        new google.maps.LatLng(40.386566,49.846687)
        ];
    
        */
    };
    var CallBackPlacesService = function(results, status){
        if (status == google.maps.places.PlacesServiceStatus.OK) 
        {
            for (var i = 0; i < results.length; i++) 
            {
                createMarker(results[i]);
            }
        }
    };

    function createMarker(place) {
        var placeLoc = place.geometry.location;
        var marker = new google.maps.Marker({
            map: Map,
            position: place.geometry.location,
            icon: place.icon

        });

    };
    
    var OnAddPoint = function(event) {
        var path = Polygon.getPath();
        path.push(event.latLng);
    };

    var OnDbClick = function() {
        
    };

    var ClearMarkers = function() {
        $(Markers).each(function() {
            this.setMap(null);
        });

        Markers = [];
    }
    
    var ClearPolygon = function() {
        Polygon.setMap(null);
    }

    var GetPolygonCoordinates = function(list) {
        var result = [];
        if (list == null) {
            return result;
        }
    };

    var AddMarker = function(list) {
        if (list == null) {
            return;
        }
        var i = 0;
        for (i = 0; i < list.length; i++) {
            var markerTitle = list[i].Title;
            var image = new google.maps.MarkerImage('/img/key.png',
                new google.maps.Size(129, 42),
                new google.maps.Point(0, 0),
                new google.maps.Point(18, 42)
            );


            var pos = new google.maps.LatLng(list[i].Latitude, list[i].Longitude);
            var marker = new google.maps.Marker({
                position: pos,
                title: markerTitle,
                icon: image
            });

            AddDescription(Map, marker, markerTitle);


            marker.setMap(Map);
            Markers.push(marker);
        }
    };
    var AddDescription = function(map, marker,itext) {
        google.maps.event.addListener(marker, 'click', function() 
            {
                InfoWindowBlock.setContent(itext);
                InfoWindowBlock.open(map, marker);

            });       
    };
}
