﻿// JScript File

    function load()
    {
       google.load("maps", "2");
       google.setOnLoadCallback(initialize);
    }

    function initialize() {
        var map = new google.maps.Map2(document.getElementById("map"));
        //map.setCenter(new google.maps.LatLng(37.4419, -122.1419), 13);
        setMapsCenterAndZoom(map);
        setMapMarkers(map);

        addMapControls(map);
    }

    function setMapsCenterAndZoom(map)
    {
        var items = document.getElementById(hfGoogleMapInfo).value.split("|");
        if (items.length > 2)
        {
            if(Number(items[0]) == 0) // have to use geocoder...
            {
                var geocoder = new GClientGeocoder();
                geocoder.getLatLng(items[3],
                    function(latlang) {
                     if(latlang != null)
                     {
                        map.setCenter(new GLatLng(latlang.y, latlang.x), Number(items[2]))}
                     }
                );
            }
            else
            {
                map.setCenter(new GLatLng(Number(items[0]), Number(items[1])), Number(items[2]));
            }
        }
    }

    function addMapControls(map)
    {
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
    }


//    function createMarker(point, name)
//    {
//        var marker = new GMarker(point, {icon:createIcon()});
//        GEvent.addListener(marker, "click", function() {
//            marker.openInfoWindowHtml(name);
//        });
//        //return marker;
//        return createMarkerWithToAndFromDirections(point, name, name);
//    }

    function createIcon()
    {
        var tinyIcon = new GIcon();
        tinyIcon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
        tinyIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
        tinyIcon.iconSize = new GSize(12, 20);
        tinyIcon.shadowSize = new GSize(22, 20);
        tinyIcon.iconAnchor = new GPoint(6, 20);
        tinyIcon.infoWindowAnchor = new GPoint(5, 1);
        return tinyIcon;
    }


    function setMapMarkers(map)
    {
        var markers = document.getElementById(hfGoogleMarkers).value.split("<>");
        var geocoder = new GClientGeocoder();
        for(var x=0;x<markers.length-1;x++)
        {
            if(typeof(markers[x]) != "undefined" && markers[x] != "")
            {
                var markerData = markers[x].split("|");

                if(Number(markerData[0]) == 0)
                {
                    var markerData2 = new String(markerData[2]);
                    geocoder.getLatLng(markerData[3], //callCreateMarkerFromGeoCoder);
                    function(latlang) {
                        if(latlang != null)
                        {
                            createMarkerWithToAndFromDirections(new GLatLng(latlang.y, latlang.x), markerData2, markerData2, map);
                        }
                    });
                        //createMarkerWithToAndFromDirections(latlng, markerData[2], markerData[2], map);
                    //    alert(latlang);
                    //});
                }
                else
                {
                   var point = new GLatLng(Number(markerData[0]), Number(markerData[1]));
                   createMarkerWithToAndFromDirections(point, markerData[2], markerData[2], map);
                }
            }
        }
    }








      var gmarkers = [];
      var htmls = [];
      var to_htmls = [];
      var from_htmls = [];
      var i=0;





// A function to create the marker and set up the event window
      function createMarkerWithToAndFromDirections(point,name,html,map) {
        //var marker = new GMarker(point);
        var marker = new GMarker(point, {icon:createIcon()});

        // The info window version with the "to here" form open
        to_htmls[i] = html + '<br>Directions: <b>To here</b> - <a href="javascript:fromhere(' + i + ')">From here</a>' +
           '<br>Start address:<form action="http://maps.google.com/maps" method="get" target="_blank">' +
           '<input type="text" SIZE=40 MAXLENGTH=48 name="saddr" id="saddr" value="" /><br>' +
           '<INPUT value="Get Directions" TYPE="SUBMIT">' +
           '<input type="hidden" name="daddr" value="' + point.lat() + ',' + point.lng() +
                  // "(" + name + ")" +
           '"/>';
        // The info window version with the "to here" form open
        from_htmls[i] = html + '<br>Directions: <a href="javascript:tohere(' + i + ')">To here</a> - <b>From here</b>' +
           '<br>End address:<form action="http://maps.google.com/maps" method="get"" target="_blank">' +
           '<input type="text" SIZE=40 MAXLENGTH=48 name="daddr" id="daddr" value="" /><br>' +
           '<INPUT value="Get Directions" TYPE="SUBMIT">' +
           '<input type="hidden" name="saddr" value="' + point.lat() + ',' + point.lng() +
                  // "(" + name + ")" +
           '"/>';
        // The inactive version of the direction info
        html = html + '<br>Directions: <a href="javascript:tohere('+i+')">To here</a> - <a href="javascript:fromhere('+i+')">From here</a>';

        GEvent.addListener(marker, "click", function() {
          marker.openInfoWindowHtml(html);
        });
        gmarkers[i] = marker;
        htmls[i] = html;
        i++;
        map.addOverlay(marker);
        //return marker;
      }

      // functions that open the directions forms
      function tohere(i) {
        gmarkers[i].openInfoWindowHtml(to_htmls[i]);
      }
      function fromhere(i) {
        gmarkers[i].openInfoWindowHtml(from_htmls[i]);
      }





