var locations = new Array();
locations.push({ lat: 30.164668, lng: -81.738625, title: "2021 Kingsley Ave", info: "Orange Park, FL 32073<br/><br/><strong>Sunshine Spine and Pain, P.A.</strong><br/>Main Office" });
locations.push({ lat: 30.140822, lng: -81.529793, title: "14546 Old St Augustine Rd", info: "Jacksonville, FL 32204<br/><br/><strong>Sunshine Spine and Pain, P.A.</strong><br/>Location Now Open" });
locations.push({ lat: 30.307087, lng: -81.690007, title: "1800 Barrs St", info: "Jacksonville, FL 32204<br/><br/><strong>Sunshine Spine and Pain, P.A.</strong><br/>Location Now Open" });
locations.push({ lat: 30.386625, lng: -81.688282, title: "1771 Edgewood Avenue West Suite 6-C", info: "Jacksonville, FL 32208<br/><br/><strong>Sunshine Spine and Pain, P.A.</strong><br/>Location Now Open" });
locations.push({ lat: 30.28943, lng: -81.59778, title: "3599 University Blvd. South Suite 405", info: "Jacksonville, FL 32217<br/><br/><strong>Sunshine Spine and Pain, P.A.</strong><br/>Location Now Open" });
locations.push({ lat: 30.27362, lng: -81.78045, title: "3 Shircliff Way Suite 610 (Dillon Bldg.)", info: "Jacksonville, FL 32204<br/><br/><strong>Sunshine Spine and Pain, P.A.</strong><br/>Location Now Open" });




// YOU SHOULD NOT NEED TO CHANGE ANYTHING BELOW
var gdir;
var gmap;
var markers = new Array();

function ClearDirections() {
    gdir.clear();
    document.getElementById("gDirections").innerHTML = "";
}

function getDirections() {
    var opts = {};
    if (document.getElementById("walk") && document.getElementById("walk").checked)
        opts.travelMode = G_TRAVEL_MODE_WALKING;

    if (document.getElementById("highways") && document.getElementById("highways").checked)
        opts.avoidHighways = true;

    var saddr = document.getElementById("saddr").value;
    var daddr = document.getElementById("daddr").value;
    gdir.load("from: " + saddr + " to: " + daddr, opts);
}


function createMarker(i) {
    var locat  = locations[i];
    var point = new GLatLng(locat.lat, locat.lng);
    var marker = new GMarker(point);
    var html   = "<div style='color: #444;'><b>" + locat.title + "</b><br/>" + locat.info + "<br/>\n";

    if (locat.title.indexOf("(") != -1)
        locat.title = locat.title.substr(0, locat.title.indexOf("("));

    html += "<hr style='width: 300px;'/>"; 

    // The info window version with the "to here" form open
    var to_html = html + '<small>Directions: <b>To here<\/b> - <a href="javascript:GEvent.trigger(markers[' + i + '],\'from\');">From here<\/a>' +
                     '<br>Start address:<form action="javascript:getDirections();">' +
                     '<input type="text" SIZE=40 MAXLENGTH=40 name="saddr" id="saddr" value="" /><br>' +
                     '<input type="hidden" name="daddr" id="daddr" value="' + point.lat() + ',' + point.lng() + "(" + locat.title + ")" + '"/>' +
                     '<input type="checkbox" name="walk" id="walk" />walk<br/>' +
            		 '<input type="checkbox" name="highways" id="highways" />avoid highways<br/>' +
                     '<INPUT value="Get Directions" TYPE="SUBMIT"></form></small></div>';

    // The info window version with the "to here" form open
    var from_html = html + '<small>Directions: <a href="javascript:GEvent.trigger(markers[' + i + '],\'to\');">To here<\/a> - <b>From here<\/b>' +
                       '<br>End address:<form action="javascript:getDirections();">' +
                       '<input type="text" SIZE=40 MAXLENGTH=40 name="daddr" id="daddr" value="" /><br>' +
                       '<input type="hidden" name="saddr" id="saddr" value="' + point.lat() + ',' + point.lng() + "(" + locat.title + ")" + '"/>' +
                       '<input type="checkbox" name="walk" id="walk" />walk<br/>' +
            		   '<input type="checkbox" name="highways" id="highways" />avoid highways<br/>' +
                       '<INPUT value="Get Directions" TYPE="SUBMIT"></form></small></div>';

    // The inactive version of the direction info
    html = html + '<small>Directions: <a href="javascript:GEvent.trigger(markers[' + i + '],\'to\');">To here<\/a> - <a href="javascript:GEvent.trigger(markers[' + i + '],\'from\');">From here<\/a></small></div>';

    GEvent.addListener(marker, 'click', function() { marker.openInfoWindowHtml(html) });
    GEvent.addListener(marker, "to", function() { marker.openInfoWindowHtml(to_html); });
    GEvent.addListener(marker, "from", function() { marker.openInfoWindowHtml(from_html); });
    return marker;
}

function loadMap() {


if (GBrowserIsCompatible()) 
  {          
        gmap = new GMap2(document.getElementById("gmap"));
        gmap.addControl(new GLargeMapControl3D());
        gmap.addControl(new GMapTypeControl());
        gmap.enableContinuousZoom();
        gmap.enableScrollWheelZoom();

		var bnd    = new GLatLngBounds();

		for (l = 0; l < locations.length; l++)
		  {
		      bnd.extend(new GLatLng(locations[l].lat, locations[l].lng));
		      var mrk = createMarker(l);
		      gmap.addOverlay(mrk);
		      markers.push(mrk);
		  }


		  gmap.setCenter(bnd.getCenter(), 10);


		  gdir = new GDirections(gmap, document.getElementById('gDirections'));

		  var reasons = [];
		  reasons[G_GEO_SUCCESS] = "Success";
		  reasons[G_GEO_MISSING_ADDRESS] = "Missing Address: The address was either missing or had no value.";
		  reasons[G_GEO_UNKNOWN_ADDRESS] = "Unknown Address:  No corresponding geographic location could be found for the specified address.";
		  reasons[G_GEO_UNAVAILABLE_ADDRESS] = "Unavailable Address:  The geocode for the given address cannot be returned due to legal or contractual reasons.";
		  reasons[G_GEO_BAD_KEY] = "Bad Key: The API key is either invalid or does not match the domain for which it was given";
		  reasons[G_GEO_TOO_MANY_QUERIES] = "Too Many Queries: The daily geocoding quota for this site has been exceeded.";
		  reasons[G_GEO_SERVER_ERROR] = "Server error: The geocoding request could not be successfully processed.";
		  reasons[G_GEO_BAD_REQUEST] = "A directions request could not be successfully parsed.";
		  reasons[G_GEO_MISSING_QUERY] = "No query was specified in the input.";
		  reasons[G_GEO_UNKNOWN_DIRECTIONS] = "Could not compute directions between the points.";

		  GEvent.addListener(gdir, "error", function() {
		      var code = gdir.getStatus().code;
		      var reason = (reasons[code]) ? reasons[code] : "Code " + code;
		      document.getElementById("gDirections").innerHTML = "";
		      alert("Failed to obtain directions, " + reason);
		  });


		  GEvent.addListener(gdir, "load", function() {
		      document.getElementById("gDirections").innerHTML = "";
		      var navi = "<button onclick='ClearDirections();'>Clear Directions</button>";
		      var ddiv = document.getElementById("gDirections");
		      var clr  = document.createElement("div");
		      clr.innerHTML = navi;
		      ddiv.appendChild(clr);
		  });


}      
}

document.onload = loadMap();
