//<![CDATA[

if (GBrowserIsCompatible()) {
  var gmarkers = [];
  var j = 0;
  var map;
  var mapTitle = document.getElementById("mapTitle");
  var geocoder = new GClientGeocoder();
  var newBounds;
  var oldMarker;
  var oldPolyline;
  var toAddress;
  var objDirections;
  var linkMode = "sef";
  
  ic = new GIcon(G_DEFAULT_ICON);
  ic.image = "images/marker-ushw2.png"
  ic.printImage = "images/marker-ushw2.png"
  ic.mozPrintImage = "images/marker-ushw2.gif"
  ic.shadow="";
  ic.printShadow = ""
  icGreen = new GIcon(G_DEFAULT_ICON);
  icGreen.image = "images/marker-green.png"
  icGreen.printImage = "images/marker-green.png"
  icGreen.mozPrintImage = "images/marker-green.gif"
  icGreen.shadow="";
  ic.printShadow = ""

  setTimeout("MakeMap()", 0); 
}
else {
  alert("Sorry, the Google Maps API is not compatible with this browser");
}
            
//**************************************************************************

//create the map
function MakeMap() { 

  map = new GMap2(document.getElementById("map"));
  //map.addControl(new GLargeMapControl(), new GControlPosition(G_ANCHOR_BOTTOM_LEFT, 0));
  //map.addControl(new GOverviewMapControl());
  map.addControl(new MiniZoomControl(), new GControlPosition(G_ANCHOR_TOP_LEFT, 0));
  //map.addControl(new GMapTypeControl());
  map.enableDoubleClickZoom();
  document.getElementById("map").style.width = "440px";
  document.getElementById("map").style.height = "338px";
  map.checkResize();

  //objDirections = new GDirections(map, directionsPanel);
  objDirections = new GDirections();
  GEvent.addListener(objDirections, "load", processDirections);
  GEvent.addListener(objDirections, "error", processDirectionsError);

  //map.setCenter(new GLatLng(38.48189,-98.34709), 4);  //somewhere near Wichita KS
  //map.savePosition()
  //mapTitle.innerHTML = "<table border=0 cellspacing=0 cellpadding=0><tr><td align=left valign=top class=text style='height:10px'>Click on a (U.S.) balloon to expand the view of the area or use the options to the left.</td></tr><tr><td><IMG height=6 src='images/spacer.gif' width=5></tr></td></table>";
  //mapTitle.style.display = "block";

  //GDownloadUrl("Centers.txt", process_it);
  parts = document.getElementById("ci2_hdnCenterInfo").value.split("|")
  var label = parts[1];
  var lat = parseFloat(parts[9]);
  var lng = parseFloat(parts[10]);
  map.setCenter(new GLatLng(lat, lng), 12); 
  map.savePosition()
  var url = ""
  if (linkMode == "sef") {
    url = parts[1] + "-" + "CenterInfo.html"
  } else {
    url = "Page.aspx?Name=CenterInfo&ID=" + parts[0]
  }

  var html = "<table><tr><td align=center><b>" + parts[1] + "</b><br>" + parts[2] + " " + parts[3] + "<br>" + parts[4] + ", " + parts[5] + "  " + parts[7] + "<br><a href='" + url + "'>Medical Center Info</a><br></td></tr></table>";
  toAddress = parts[2] + " " + parts[3] + ", " + parts[4] + ", " + parts[5] + "  " + parts[7]
  var point = new GLatLng(lat,lng);
  var marker = createMarker(point,label,html);
  gmarkers[j] = marker;
  map.addOverlay(marker);
  
  if (document.getElementById("ci2_hdnFromInfo").value <=  " ") {
    //map.setCenter(marker.getPoint(), map.getBoundsZoomLevel());
  } else {
    geoSearch();
  }
}
      
      
//create the marker and set up the event window
function createMarker(point,name,html) {
  var marker = new GMarker(point, {title:""+name, icon:ic}); 
  GEvent.addListener(marker, "click", function() {
  	marker.openInfoWindowHtml(html);
  });
  return marker;
}

function getDirections() {
  document.getElementById("ci2_hdnFromInfo").value = document.getElementById("address").value + "|" + document.getElementById("city").value + "|" + document.getElementById("state").value + "|" + document.getElementById("zip").value + "||";
  geoSearch();

  return false;
}

//search for address that was entered. Create marker, and adjust for radius
function geoSearch () {
  parts = document.getElementById("ci2_hdnFromInfo").value.split("|")
  fromAddress =  parts[0] + " " + parts[1] + " " + parts[2] + " " + parts[3];
  //alert (fromAddress);
  //var lat = parseFloat(parts[4]);
  //var lng = parseFloat(parts[5]);
  if (parts[4] > "") {
    //alert ("here1");
    //var point = new GLatLng(lat,lng);
    //processFromAddress(point);
    objDirections.load("from: " + fromAddress + " to: " + toAddress,{getPolyline:true, getSteps:true});
  } else {
    //alert ("here2");
    geocoder.getLatLng(
    fromAddress,
    function(point) {
      if (!point) {
        alert("Address or Zip Code was not Found");
      } else {
        //alert ("Point" + point);
        //processFromAddress(point);
        objDirections.load("from: " + document.getElementById("ci2_hdnFromInfo").value + " to: " + toAddress,{getPolyline:true, getSteps:true});

      }
    }
 );
}
return false;
}

//function processFromAddress (point) {

  //objDirections.clear();
  //lladdress = point + " to " + gmarkers[0].getPoint();
  //lladdress = lladdress.replace(/\(/g,"");
  //lladdress = lladdress.replace(/\)/g,"");
  //objDirections.load(lladdress,{getSteps:true});
  //objDirections.load("from: " + document.getElementById("ci2_hdnFromInfo").value + " to: " + fromAddress,{getPolyline:true, getSteps:true});
//}

function processDirectionsError() {

alert("Address or Zip Code was not Found");

}
function processDirections() {

//alert("in processDirections");
  mapTitle.style.display = "none";

  parts = document.getElementById("ci2_hdnFromInfo").value.split("|")
  cparts = document.getElementById("ci2_hdnCenterInfo").value.split("|")

  document.getElementById("direction_bar").innerHTML = "<table cellspacing=0 cellpadding=0><tr class=text><td width=40px><b>From:</b></td><td>" + parts[0] + " " + parts[1] + " " + parts[2] + " " + parts[3] + "</td></tr><tr class=text><td><b>To:</b></td><td>" + cparts[2] + " " + cparts[3] + " " + cparts[4] + " " + cparts[5] + " " + cparts[7] + "</td></tr></table>"

  var html = "<table><tr><td align=center>" + parts[0] + "<br>" + parts[1] + " " + parts[2] + "  " + parts[3] + "<br></td></tr></table>";

  //polyline not printing correctly using IE.  Comment out until resolved.
  polyline = objDirections.getPolyline()
  map.addOverlay(polyline)
  if (oldPolyline != null) {
    //Remove previous polyline
    map.removeOverlay(oldPolyline);
  }

  objRoute = objDirections.getRoute(0); 

  //adjust end point to polyline
  gmarkers[0].setPoint(objRoute.getEndLatLng()); 

  //make sure the marker is in synch with the drirections location
  point = objRoute.getStep(0).getLatLng();
  var marker = new GMarker(point,  {title:"From Location", icon:icGreen});
  GEvent.addListener(marker, "click", function() {        	
    marker.openInfoWindowHtml(html);
  });
  
  //document.getElementById("map").style.width = "366px";
  document.getElementById("map").style.height = "165px";
  map.checkResize();
  newBounds = new GLatLngBounds();
  newBounds.extend(point);
  newBounds.extend(gmarkers[0].getPoint());
  map.setCenter(newBounds.getCenter(), map.getBoundsZoomLevel(newBounds));
  map.savePosition()

  map.addOverlay(marker);

  if (oldMarker != null) {
    //Remove previous marker
    map.removeOverlay(oldMarker);
  }
  
  oldMarker = marker;
  oldPolyline = polyline
  
  map.getInfoWindow().hide();
   
  directions = "<div id=divdir>"
  directions = directions + "<table>"; 
  for (var k = 0; k < objRoute.getNumSteps(); k++) {
    objStep = objRoute.getStep(k);
    number = k+1;
    text = objStep.getDescriptionHtml();
    distance = objStep.getDistance().html;
    directions = directions + "<tr class=text><td align=right><b>" + number + "." + "</b></td><td width=360px>" + text + "</td><td align=right>" + distance + "</td></tr>";
  }
  directions = directions + "<tr class=text><td></td><td width=80%><b>Total Distance</b></td><td align=right>" + objRoute.getDistance().html + "</td></tr>";
  directions = directions + "<tr class=text><td></td><td width=80%><b>Estimated Time:</b> " + objRoute.getDuration().html + "</td><td align=right></td></tr>";
  directions = directions + "</table></div>";
  document.getElementById("direction_bar").innerHTML = document.getElementById("direction_bar").innerHTML + directions;
}

//old mapquest function for obtaining and formatting driving directions
function setDrivingDirections (startPoint, endPoint) {

  var request = GXmlHttp.create();
  var directions = "";
  //retrieve driving directions from mapquest.  If Google offers this service in the future then MapQuest license can be eliminated.
  url = "http://xml.sa.mapquest.com/?clientId=32649&transaction=route&origcountry=us&destcountry=us";
  url = url + "&origlatitude=" + startPoint.lat() + "&origlongitude=" + startPoint.lng();
  url = url + "&destlatitude=" + endPoint.lat() + "&destlongitude=" + endPoint.lng();
  url = url + "&routeMaps=0";
  
  url = encodeURIComponent(url);
  //alert (url);
  request.open("GET","directions.aspx?url=" + url, true);
  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      var xmlDoc = request.responseXML;
      //alert (request.responseText);
      // obtain the array of maneuvers and loop through it
      var oTotDist =  xmlDoc.documentElement.getElementsByTagName("totalDistance");
	  var totDist = oTotDist[0].firstChild.data;
      var oTotTime =  xmlDoc.documentElement.getElementsByTagName("totalTime");
	  var totTime = oTotTime[0].firstChild.data;
	  
      seconds = totTime % 60;
      total_minutes = totTime / 60;
      minutes = parseInt(total_minutes % 60);
      total_hours = parseInt(total_minutes / 60);
      //hours = parseInt(total_hours % 24);
      mintext = minutes + " minutes";
      if (minutes == 1) mintext = minutes + " minute"
      hourtext = total_hours + " hours";
      if (total_hours == 1) hourtext = total_hours + " hour";
      if (total_hours == 0) hourtext = "";
      
	  //alert ("Tot Dist = " + totDist);
      var maneuvers = xmlDoc.documentElement.getElementsByTagName("maneuver");
      //alert ("manlen=" + maneuvers.length);
      //directions = "<div id=divdir style='vertical-align: top; overflow:auto; width: 100%; height: 160px; scrollbar-arrow-color: Red; scrollbar-base-color: #0F1030;scrollbar-track-color: #C0C0C0;'>"
      directions = "<div id=divdir class=mid_scroll style='height:150px'>"
      directions = directions + "<table>"; 
      for (var k = 0; k < maneuvers.length; k++) {
        var numbers = maneuvers[k].getElementsByTagName("number")
        var number = numbers[0].firstChild.data;
        //var number = maneuvers[k].getAttribute("number");
        var texts = maneuvers[k].getElementsByTagName("text")
        var text = texts[0].firstChild.data;
        //var text = maneuvers[k].getAttribute("text");
        var times = maneuvers[k].getElementsByTagName("time")
        var time = times[0].firstChild.data;
        //var time = maneuvers[k].getAttribute("time");
        var distances = maneuvers[k].getElementsByTagName("distance")
        var distance = distances[0].firstChild.data;
        //var distance = maneuvers[k].getAttribute("distance");
        //directions = directions + number + "|" + text + "|" + time + "|" + distance + "\n";
        directions = directions + "<tr class=text><td align=right><b>" + number + "." + "</b></td><td width=80%>" + text + "</td><td align=right>" + distance + " miles</td></tr>";
      }
      directions = directions + "<tr class=text><td></td><td width=80%><b>Total Distance</b></td><td align=right>" + totDist + " miles</td></tr>";
      directions = directions + "<tr class=text><td></td><td width=80%><b>Estimated Time:</b> " + hourtext + " " + mintext + "</td><td align=right></td></tr>";
      directions = directions + "</table></div>";
      document.getElementById("direction_bar").innerHTML = document.getElementById("direction_bar").innerHTML + directions;
      //alert (directions);
    }
  }
  request.send(null);
}

function MiniZoomControl() {}
MiniZoomControl.prototype = new GControl();

// Creates a DIV for each of the buttons and places them in a container
// DIV which is returned as our control element. Add the control to
// to the map container and return the element for the map class to
// position properly.
MiniZoomControl.prototype.initialize = function(map) {
  var container = document.createElement("div");

  var zoomInDiv = document.createElement("div");
  container.appendChild(zoomInDiv);
  zoomInImg = document.createElement("img");
  zoomInDiv.appendChild(zoomInImg);
  zoomInDiv.style.cursor = "pointer"; 
  zoomInImg.src = "http://www.google.com/intl/en_ALL/mapfiles/zoom-plus.png"; 
  zoomInImg.title = "Zoom In"
  GEvent.addDomListener(zoomInDiv, "click", function() {
    map.zoomIn();
  });

  var zoomCenterDiv = document.createElement("div");
  container.appendChild(zoomCenterDiv);
  centerImg = document.createElement("img");
  zoomCenterDiv.appendChild(centerImg);
  zoomCenterDiv.style.cursor = "pointer"; 
  centerImg.src = "http://www.google.com/intl/en_ALL/mapfiles/center.png"; 
  centerImg.title = "Return to Original Position"
  GEvent.addDomListener(zoomCenterDiv, "click", function() {
    map.getInfoWindow().hide();
    //document.getElementById("side_bar").innerHTML = "";
    //document.getElementById("map").style.width = "600px";
    //document.getElementById("map").style.height = "347px";
    //map.checkResize();
    //document.getElementById('allCenters').value = "ALL";
    mapTitle.style.display = "block";
    map.returnToSavedPosition();
  });

  var zoomOutDiv = document.createElement("div");
  container.appendChild(zoomOutDiv);
  zoomOutImg = document.createElement("img");
  zoomOutDiv.appendChild(zoomOutImg);
  zoomOutDiv.style.cursor = "pointer"; 
  zoomOutImg.src = "http://www.google.com/intl/en_ALL/mapfiles/zoom-minus.png"; 
  zoomOutImg.title = "Zoom Out"
  GEvent.addDomListener(zoomOutDiv, "click", function() {
    map.zoomOut();
  });
  
  map.getContainer().appendChild(container);
  return container;
}

//]]>


