var mapdiv;
var loading;
var map;
var geocoder;
var icon;
var place;
          

function loadMap()
{ if(window.location.href.indexOf("servicesmap.shtml")!=-1)
  { mapdiv = document.getElementById("mapdiv");
    if(GBrowserIsCompatible())
    { mapdiv.style.height = "350px";
      map = new GMap2(mapdiv);
      map.addControl(new GLargeMapControl());
      map.addControl(new GMapTypeControl());
      map.setCenter(new GLatLng(43.1088, -89.293), 15);
      icon = new GIcon();
      icon.image = "/images/greenmarker.png";
      icon.shadow = "/images/markershadow.png";
      icon.iconSize = new GSize(12, 20);
      icon.shadowSize = new GSize(22, 20);
      icon.iconAnchor = new GPoint(6, 20);
      icon.infoWindowAnchor = new GPoint(5, 1);
      var marker = new GMarker(new GLatLng(43.1062, -89.2944),icon);
      var churchaddress = "CrossPoint Church<br>5011 Commercial Ave<br>Madison, WI 53704<br>608-249-1810";
      churchaddress += "<br><br>Need <a href='http://maps.google.com/maps?f=d&daddr=5011+Commercial+Ave,+Madison,+WI' target='_blank'>directions</a>?";
      GEvent.addListener(marker, "click", function(){marker.openInfoWindowHtml(churchaddress);});
      map.addOverlay(marker);
      marker.openInfoWindowHtml(churchaddress);
    } else
      { mapdiv.innerHTML = "Sorry, your browser is not compatible with Google Maps.";
      }
  }
}

var maploaded = false;
var mapbutton;
var maparea;

function contactMap(address)
{ mapbutton = document.getElementById("mapbutton");
  maparea = document.getElementById("maparea");
  if(mapbutton.innerHTML=="Show Map")
  { if(!maploaded)
    { mapdiv = document.getElementById("mapdiv");
      loading = document.getElementById("loading");
      maparea.style.display = "block";
      if(GBrowserIsCompatible())
      { geocoder = new GClientGeocoder();
        geocoder.getLocations(address, showContactAddress);
      }
      else
      { maparea.style.display = "block";
        loading.innerHTML = "Sorry, your browser is not compatible with Google Maps.";
        window.location="#map";
        mapbutton.innerHTML = "Hide Map";
        maploaded = true;
      }
    }
    else
    { maparea.style.display = "block";
      window.location="#map";
      mapbutton.innerHTML = "Hide Map";
    }
  }
  else
  { maparea.style.display = "none";
    mapbutton.innerHTML = "Show Map";
  }
}

function showContactAddress(response)
{ if(!response || response.Status.code!=200)
  { mapError();
  } 
  else
  { place = response.Placemark[0];
    if(place.AddressDetails==null || place.AddressDetails.Country==null || place.AddressDetails.Country.AdministrativeArea==null)
    { mapError();
    }
    else if(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea==null)
    {  if(place.AddressDetails.Country.AdministrativeArea.Locality==null ||
           place.AddressDetails.Country.AdministrativeArea.Locality.Thoroughfare==null ||
           place.AddressDetails.Country.AdministrativeArea.Locality.PostalCode==null)
       { mapError();
       }
       else
       { showMap(0);
       }
    }
    else if(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality==null ||
        place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare==null ||
        place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode==null)
    { mapError();
    }
    else
    { showMap(1);
    }
  }
}

function mapError()
{ loading.innerHTML = "Sorry, an error occurred in loading the map.";
  window.location="#map";
  mapbutton.innerHTML = "Hide Map";
  maploaded = true;
}

function showMap(hasSubAdminArea)
{ icon = new GIcon();
  icon.image = "/images/greenmarker.png";
  icon.shadow = "/images/markershadow.png";
  icon.iconSize = new GSize(12, 20);
  icon.shadowSize = new GSize(22, 20);
  icon.iconAnchor = new GPoint(6, 20);
  icon.infoWindowAnchor = new GPoint(5, 1);
  var point = new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]);
  var marker = new GMarker(point,icon);
  var formattedaddress;
  if(hasSubAdminArea)
  { formattedaddress = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare.ThoroughfareName+"<br>"+
      place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName+", "+
      place.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName+" "+
      place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode.PostalCodeNumber+"<br><br>"+
      "Need <a href='http://maps.google.com/maps?f=d&daddr="+place.address+"' target='_blank'>directions</a>?";
  }
  else
  { formattedaddress = place.AddressDetails.Country.AdministrativeArea.Locality.Thoroughfare.ThoroughfareName+"<br>"+
      place.AddressDetails.Country.AdministrativeArea.Locality.LocalityName+", "+
      place.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName+" "+
      place.AddressDetails.Country.AdministrativeArea.Locality.PostalCode.PostalCodeNumber+"<br><br>"+
      "Need <a href='http://maps.google.com/maps?f=d&daddr="+place.address+"' target='_blank'>directions</a>?";
  }
  GEvent.addListener(marker, "click", function(){marker.openInfoWindowHtml(formattedaddress);});
  mapdiv.style.display = "block";
  mapdiv.style.height = "350px";
  map = new GMap2(mapdiv);
  map.addMapType(G_PHYSICAL_MAP);
  map.addControl(new GLargeMapControl());
  map.addControl(new GMapTypeControl());
  map.setCenter(point, 13);
  map.addOverlay(marker);
  GEvent.trigger(marker, "click");
  loading.style.display = "none";
  document.getElementById("mapnote").style.display = "block";
  window.location="#map";
  mapbutton.innerHTML = "Hide Map";
  maploaded = true;
}

function unLoadMap()
{ if(window.location.href.indexOf("servicesmap.shtml")!=-1 || window.location.href.indexOf("map.php")!=-1)
  { GUnload();
  }
}