﻿function LoadGoogleMapData(map, dataPathMarker,dataPathCourse, clearOverlays) {
    if (clearOverlays) map.clearOverlays();

    LoadMarkersIntoMap(map, dataPathMarker);
    LoadPolylineIntoMap(map, dataPathCourse);

    var hasLoaded = map.isLoaded();
}

function LoadMarkersIntoMap(map, url) {
    GDownloadUrl(url, function(data, responseCode) {
        var xml = GXml.parse(data);

        if (!xml.documentElement) return;

        var markers = xml.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {

            var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
            var markerOptions = CreateMarkerOptions(markers[i]);
            var marker = new GMarker(point, markerOptions);

            var info = markers[i].getAttribute("info");

            if (info) {

                var reOpen = /{{/g;
                var reClose = /}}/g;
                var infoHtml = info.replace(reOpen, "<").replace(reClose, ">");

                marker.content = infoHtml;


                CreateMarkerClick(marker, infoHtml);
            }

            map.addOverlay(marker);
        }
    });

}

function LoadGoogleMapData( map, dataPath, clearOverlays)
{
    if ( clearOverlays )map.clearOverlays();
    
//    LoadMarkersIntoMap( map, dataPath + "marker.xml");
    //    LoadPolylineIntoMap( map, dataPath + "course.xml" );
    LoadMarkersIntoMap(map, dataPath);
    LoadPolylineIntoMap(map, dataPath);
    
   var hasLoaded = map.isLoaded();

}
function LoadPolylineIntoMap(map, url, color, width, opacity) {

    if (!color) color = '#ff0000';
    if (!width) width = 6;
    if (!opacity) opacity = 1.0;

    GDownloadUrl(url, function(data, responseCode) {
        var xml = GXml.parse(data);

        if (!xml.documentElement) return;

        var polylines = xml.documentElement.getElementsByTagName("polyline");
        var centrePoint;

        for (var l = 0; l < polylines.length; l++) {

            lineColor = polylines[l].getAttribute("color");
            lineWidth = parseInt(polylines[l].getAttribute("width"));
            lineOpacity = parseFloat(polylines[l].getAttribute("opacity"));

            if (!lineColor) lineColor = color;
            if (!lineWidth) lineWidth = width;
            if (!lineOpacity) lineOpacity = opacity;

            var points = polylines[l].getElementsByTagName("point");
            var pointArray = [];



            for (var p = 0; p < points.length; p++) {
                var point = new GLatLng(parseFloat(points[p].getAttribute("lat")), parseFloat(points[p].getAttribute("lng")));
                pointArray.push(point);

                if (p == 0) {
                    centrePoint = point
                }
            }

            var polyline = new GPolyline(pointArray, lineColor, lineWidth, lineOpacity);
            //map.addOverlay( polyline ); 
            AddOverlay(map, polyline);

            map.panTo(centrePoint);
        }

    });

}
