absGpsMarkerArr = new Array();
absGpsTracksArr = new Array();
absGpsMapIsLoaded = false;

jQuery(document).ready(function ()
{
    var latlng = new google.maps.LatLng(51.6, 10);

    var myOptions = {
            zoom: 6,
            center: latlng,
            mapTypeId: google.maps.MapTypeId.TERRAIN
    };

    var element = document.getElementById("absMap");
    if (element != null) {
        var map = new google.maps.Map(element, myOptions);

        google.maps.event.addListener(map, "tilesloaded", function() {

            if(!absGpsMapIsLoaded)
            {

                jQuery('.absolutGpsMapPoiOverlay').each(function(){

                    var container = jQuery(this).parent().next().next();
                    jQuery(container).append(this);

                })
                absGpsMapIsLoaded = true
            }

          });


        var minLat = 180, maxLat = -180, minLon = 180, maxLon = -180;

        for (var i=0; i<absGpsMarkerArr.length; i++)
        {
            var marker = absGpsMarkerArr[i];
            var myLatLng = new google.maps.LatLng(marker.lat, marker.lon);
            var m = new google.maps.Marker({
                position: myLatLng,
                map: map,
                zIndex: 0,
                icon: marker.icon
            });

            addPoiOverlayToMarker(m, map, marker.title, i, marker.link);

            if (marker.lat < minLat)
                minLat = marker.lat;
            if (marker.lat > maxLat)
                maxLat = marker.lat;
            if (marker.lon < minLon)
                minLon = marker.lon;
            if (marker.lon > maxLon)
                maxLon = marker.lon;

        }

        var polyOptions1 = {strokeColor: '#999999',strokeOpacity: 1.0,strokeWeight: 7};
        var polyOptions2 = {strokeColor: '#ff9900',strokeOpacity: 1.0,strokeWeight: 5};

        poly1 = new google.maps.Polyline(polyOptions1);
        poly2 = new google.maps.Polyline(polyOptions2);

        poly1.setMap(map);
        poly2.setMap(map);




        for (var i=0; i<absGpsTracksArr.length; i++)
        {
            var trackpoints = absGpsTracksArr[i];
            var track = new AbsGpsTrack(jQuery.parseJSON(trackpoints));

              var a = new Array();
              var tp;

              for(var n = 0; n<track.getTrackpoints().length; n++)
              {
                    tp = track.getTPat(n);
                a.push(new google.maps.LatLng(tp.lat, tp.lon));

                if (tp.lat < minLat)
                    minLat = tp.lat;
                if (tp.lat > maxLat)
                    maxLat = tp.lat;
                if (tp.lon < minLon)
                    minLon = tp.lon;
                if (tp.lon > maxLon)
                    maxLon = tp.lon;
              }
              poly1.setPath(a);
              poly2.setPath(a);
        }



        var southWest = new google.maps.LatLng(minLat, minLon);
        var northEast = new google.maps.LatLng(maxLat, maxLon);
        var bounds = new google.maps.LatLngBounds(southWest,northEast);
        map.fitBounds(bounds);

    }

})


function addPoiOverlayToMarker(marker, map, title, i, link)
{
    var overlayPoi = new OverlayPoi({
        map: map,
        icon: marker.icon,
        title: title
   }, i);

   overlayPoi.bindTo('position', marker, 'position');

   google.maps.event.addListener(marker, 'mouseover', function(e) {
        overlayPoi.mouseover(marker);
   });

   google.maps.event.addListener(marker, 'mouseout', function(){
       overlayPoi.mouseout(marker);
   });

   google.maps.event.addListener(marker, 'click', function() {
       window.location.href = link;
   });

}

