function load() {
  if (GBrowserIsCompatible()) {
    // Initialize
    var map = new GMap2(document.getElementById("map"));
    
    // Set up the custom map types
    // The USGS topo maps via terraservice.com
    var topoCopyright = new GCopyright(1,
      new GLatLngBounds(new GLatLng(18,-169),new GLatLng(72,-66) ),
        5, "Copyright USGS");
    var topoCopyrightCollection = new GCopyrightCollection('Topo Maps');
    topoCopyrightCollection.addCopyright(topoCopyright);
    
    var topoTileSize = 256;
    var topoURL = 'http://terraservice.net/ogcmap6.ashx?version=1.1.1&request=GetMap&styles=&srs=EPSG:4326&format=image/jpeg&bgcolor=0xCCCCCC&exceptions=INIMAGE&layers=DRG';
    topoGetTileURL=function(tile, zoom){
	  var southWestPixel = new GPoint(tile.x*topoTileSize,(tile.y+1)*topoTileSize);
	  var northEastPixel = new GPoint((tile.x+1)*topoTileSize,tile.y*topoTileSize);
	  var southWestCoords = G_SATELLITE_MAP.getProjection().fromPixelToLatLng(southWestPixel,zoom);
	  var northEastCoords = G_SATELLITE_MAP.getProjection().fromPixelToLatLng(northEastPixel,zoom);
	  var bbox = southWestCoords.lng()+','+southWestCoords.lat()+','+northEastCoords.lng()+','+northEastCoords.lat();
	  return topoURL+'&bbox='+bbox+'&width='+topoTileSize+'&height='+topoTileSize;
    }
    var topoTileLayers = [new GTileLayer(topoCopyrightCollection,5,17)];
    topoTileLayers[0].getTileUrl = topoGetTileURL;
    var topoMap = new GMapType(topoTileLayers, G_SATELLITE_MAP.getProjection(), "Topo",
      {errorMessage:"Data not found.", tileSize:topoTileSize});
    map.addMapType(topoMap);
    
    // Now the USGS aerial maps via terraservice.com
    var aerialCopyright = new GCopyright(1,
      new GLatLngBounds(new GLatLng(18,-169),new GLatLng(72,-66) ),
        5, "Copyright USGS");
    var aerialCopyrightCollection = new GCopyrightCollection('Aerial Photography');
    aerialCopyrightCollection.addCopyright(aerialCopyright);
    
    var aerialTileSize = 256;
    var aerialURL = 'http://terraservice.net/ogcmap6.ashx?version=1.1.1&request=GetMap&styles=&srs=EPSG:4326&format=image/jpeg&bgcolor=0xCCCCCC&exceptions=INIMAGE&layers=DOQ';
    aerialGetTileURL=function(tile, zoom){
	  var southWestPixel = new GPoint(tile.x*aerialTileSize,(tile.y+1)*aerialTileSize);
	  var northEastPixel = new GPoint((tile.x+1)*aerialTileSize,tile.y*aerialTileSize);
	  var southWestCoords = G_SATELLITE_MAP.getProjection().fromPixelToLatLng(southWestPixel,zoom);
	  var northEastCoords = G_SATELLITE_MAP.getProjection().fromPixelToLatLng(northEastPixel,zoom);
	  var bbox = southWestCoords.lng()+','+southWestCoords.lat()+','+northEastCoords.lng()+','+northEastCoords.lat();
	  return aerialURL+'&bbox='+bbox+'&width='+aerialTileSize+'&height='+aerialTileSize;
    }
    var aerialTileLayers = [new GTileLayer(aerialCopyrightCollection,5,17)];
    aerialTileLayers[0].getTileUrl = aerialGetTileURL;
    var aerialMap = new GMapType(aerialTileLayers, G_SATELLITE_MAP.getProjection(), "Aerial",
      {errorMessage:"Data not found.", tileSize:aerialTileSize});
    map.addMapType(aerialMap);
        
    // Add the controls and set up the map
    map.addControl(new GMapTypeControl());
    map.addControl(new GLargeMapControl());
    map.addControl(new GScaleControl());
    var omc = new GOverviewMapControl();
    map.addControl(omc);
    // omc.hide();
    map.setCenter(new GLatLng(35.69522525087309, -82.55401611328125), 9, G_NORMAL_MAP);

    
    // Info for the base icon
    var baseIcon = new GIcon();
    baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png"; 
    baseIcon.iconSize = new GSize(20, 34);
    baseIcon.shadowSize = new GSize(37, 34);
    baseIcon.iconAnchor = new GPoint(9, 34);
    baseIcon.infoWindowAnchor = new GPoint(9, 2);
    baseIcon.infoShadowAnchor = new GPoint(18, 25);
      
    // Info for the road ride icon
    var roadIcon = new GIcon(baseIcon);
    var roadLetter = String.fromCharCode("R".charCodeAt(0));
    roadIcon.image = "http://www.google.com/mapfiles/marker" + roadLetter + ".png";
    
    // 151 marker
    var m151Marker = new GMarker(new GLatLng(35.453608, -82.733745), 
        {icon:roadIcon, title:"151"});
    var m151HTML = "<a href=\"Road/151.html\">151 to the Parkway</a>";
    GEvent.addListener(m151Marker, "click", function() {
       m151Marker.openInfoWindowHtml(m151HTML);
    });
    map.addOverlay(m151Marker);

    // 276 marker
    var m276Marker = new GMarker(new GLatLng(35.401364, -82.81459), 
        {icon:roadIcon, title:"276"});
    var m276HTML = "<a href=\"Road/276.html\">Up 276 down Parkway</a>";
    GEvent.addListener(m276Marker, "click", function() {
       m276Marker.openInfoWindowHtml(m276HTML);
    });
    map.addOverlay(m276Marker);

    // AOTC marker
    var AOTCMarker = new GMarker(new GLatLng(35.16117, -82.55538), 
        {icon:roadIcon, title:"AOTC"});
    var AOTCHTML = "<a href=\"Road/AOTC.html\">The Assault on the Carolinas</a>";
    GEvent.addListener(AOTCMarker, "click", function() {
       AOTCMarker.openInfoWindowHtml(AOTCHTML);
    });
    map.addOverlay(AOTCMarker);

    // Elk Mountain - Ox Creek marker
    var ElkMtOxCreekMarker = new GMarker(new GLatLng(35.67556, -82.466812), 
       {icon:roadIcon, title:"Elk Mountain/Ox Creek area"});
    var ElkMtOxCreekHTML = "Elk Mountain - Ox Creek area<br />" +
        "<a href=\"Road/ElkMtTownMt.html\">Up Elk Mountain down Town Mountain</a><br />" +
        "<a href=\"Road/OxCreekPlunge.html\">The Ox Creek Plunge</a>";
    GEvent.addListener(ElkMtOxCreekMarker, "click", function() {
       ElkMtOxCreekMarker.openInfoWindowHtml(ElkMtOxCreekHTML);
    });
    map.addOverlay(ElkMtOxCreekMarker);

    // FabFourth marker
    var FabFourthMarker = new GMarker(new GLatLng(35.226550551891116, -82.25738525390625), 
        {icon:roadIcon, title:"Fabulous Fourth Metric"});
    var FabFourthHTML = "<a href=\"Road/FabFourth.html\">The Fabulous Fourth <br /> Metric Century</a>";
    GEvent.addListener(FabFourthMarker, "click", function() {
       FabFourthMarker.openInfoWindowHtml(FabFourthHTML);
    });
    map.addOverlay(FabFourthMarker);

    // FletcherFlyer marker
    var FletcherFlyerMarker = new GMarker(new GLatLng(35.40388, -82.53582), 
        {icon:roadIcon, title:"Fletcher Flyer"});
    var FletcherFlyerHTML = "<a href=\"Road/FletcherFlyer.html\">The Fletcher Flyer</a>";
    GEvent.addListener(FletcherFlyerMarker, "click", function() {
       FletcherFlyerMarker.openInfoWindowHtml(FletcherFlyerHTML);
    });
    map.addOverlay(FletcherFlyerMarker);

    // Hilly marker
    var HillyMarker = new GMarker(new GLatLng(35.4431, -82.49), 
        {icon:roadIcon, title:"The Hilly"});
    var HillyHTML = "<a href=\"Road/Hilly.html\">The Hilly Hellacious Hundred</a>";
    GEvent.addListener(HillyMarker, "click", function() {
       HillyMarker.openInfoWindowHtml(HillyHTML);
    });
    map.addOverlay(HillyMarker);

    // HookersGap marker
    var HookersGapMarker = new GMarker(new GLatLng(35.59, -82.70627), 
        {icon:roadIcon, title:"Hookers Gap"});
    var HookersGapHTML = "<a href=\"Road/HookersGap.html\">Hooker's Gap on Friday</a>";
    GEvent.addListener(HookersGapMarker, "click", function() {
       HookersGapMarker.openInfoWindowHtml(HookersGapHTML);
    });
    map.addOverlay(HookersGapMarker);

    // HotDoggettHundred marker
    var HotDoggettHundredMarker = new GMarker(new GLatLng(35.82226734114509, -82.57461547851562), 
        {icon:roadIcon, title:"Hot Doggett Hundred"});
    var HotDoggettHundredHTML = "<a href=\"Road/HotDoggettHundred.html\">The Hot Doggett Hundred</a><br /><a href=\"Road/HotDoggettMetric.html\">The Hot Doggett Metric</a>";
    GEvent.addListener(HotDoggettHundredMarker, "click", function() {
       HotDoggettHundredMarker.openInfoWindowHtml(HotDoggettHundredHTML);
    });
    map.addOverlay(HotDoggettHundredMarker);

    // Friday marker
    var FridayMarker = new GMarker(new GLatLng(35.633860507136994, -82.63229370117188), 
        {icon:roadIcon, title:"Marty's signature ride"});
    var FridayHTML = "<a href=\"Road/Friday.html\">Marty's signature ride</a>";
    GEvent.addListener(FridayMarker, "click", function() {
       FridayMarker.openInfoWindowHtml(FridayHTML);
    });
    map.addOverlay(FridayMarker);

    // Friday.06.09.06 marker
    var Friday060906Marker = new GMarker(new GLatLng(35.61289504125945, -82.44810104370117), 
        {icon:roadIcon, title:"Marty's Riceville ride"});
    var Friday060906HTML = "<a href=\"Road/Friday.06.09.06.html\">Marty's Riceville ride</a>";
    GEvent.addListener(Friday060906Marker, "click", function() {
       Friday060906Marker.openInfoWindowHtml(Friday060906HTML);
    });
    map.addOverlay(Friday060906Marker);

    // MtMitchell marker
    var MtMitchellMarker = new GMarker(new GLatLng(35.76873101871279, -82.26373672485352), 
        {icon:roadIcon, title:"Mount Mitchell"});
    var MtMitchellHTML = "<a href=\"Road/MtMitchell.html\">Ride to Mount Mitchell</a>";
    GEvent.addListener(MtMitchellMarker, "click", function() {
       MtMitchellMarker.openInfoWindowHtml(MtMitchellHTML);
    });
    map.addOverlay(MtMitchellMarker);

    // Pisgah marker
    var PisgahMarker = new GMarker(new GLatLng(35.41633, -82.74919), 
        {icon:roadIcon, title:"Mt. Pisgah"});
    var PisgahHTML = "<a href=\"Road/Pisgah.html\">Pisgah out and back</a>";
    GEvent.addListener(PisgahMarker, "click", function() {
       PisgahMarker.openInfoWindowHtml(PisgahHTML);
    });
    map.addOverlay(PisgahMarker);

    // RectorsCorner marker
    var RectorsCornerMarker = new GMarker(new GLatLng(35.785303981889356, -82.67834186553955), 
        {icon:roadIcon, title:"Rector's Corner"});
    var RectorsCornerHTML = "<a href=\"Road/RectorsCorner.html\">Rector's Corner</a>";
    GEvent.addListener(RectorsCornerMarker, "click", function() {
       RectorsCornerMarker.openInfoWindowHtml(RectorsCornerHTML);
    });
    map.addOverlay(RectorsCornerMarker);

    // RiverMarshall marker
    var RiverMarshallMarker = new GMarker(new GLatLng(35.73188, -82.65512), 
        {icon:roadIcon, title:"River/Marshall"});
    var RiverMarshallHTML = "<a href=\"Road/RiverMarshall.html\">River to Marshall easy ride</a>";
    GEvent.addListener(RiverMarshallMarker, "click", function() {
       RiverMarshallMarker.openInfoWindowHtml(RiverMarshallHTML);
    });
    map.addOverlay(RiverMarshallMarker);

    // RoanMoan marker
    var RoanMoanMarker = new GMarker(new GLatLng(36.01800375871414, -82.16949462890625), 
        {icon:roadIcon, title:"Roan Moan Metric"});
    var RoanMoanHTML = "<a href=\"Road/RoanMoan.html\">The Roan Moan Metric Century</a>";
    GEvent.addListener(RoanMoanMarker, "click", function() {
       RoanMoanMarker.openInfoWindowHtml(RoanMoanHTML);
    });
    map.addOverlay(RoanMoanMarker);

    // ThreeDirt marker
    var ThreeDirtMarker = new GMarker(new GLatLng(35.6529, -82.495136), 
        {icon:roadIcon, title:"3 Dirt"});
    var ThreeDirtHTML = "<a href=\"Road/ThreeDirt.html\">Three dirt roads</a>";
    GEvent.addListener(ThreeDirtMarker, "click", function() {
       ThreeDirtMarker.openInfoWindowHtml(ThreeDirtHTML);
    });
    map.addOverlay(ThreeDirtMarker);

    // TuesdayRace marker
    var TuesdayRaceMarker = new GMarker(new GLatLng(35.65520405072724, -82.59761810302734), 
        {icon:roadIcon, title:"Tuesday night race"});
    var TuesdayRaceHTML = "<a href=\"Road/TuesdayRace.html\">Tuesday Night River Ride</a>";
    GEvent.addListener(TuesdayRaceMarker, "click", function() {
       TuesdayRaceMarker.openInfoWindowHtml(TuesdayRaceHTML);
    });
    map.addOverlay(TuesdayRaceMarker);



    // Now the mountain bike rides.
    // Info for the mountain bike icon
    var mntIcon = new GIcon(baseIcon);
    var mntLetter = String.fromCharCode("M".charCodeAt(0));
    mntIcon.image = "http://www.google.com/mapfiles/marker" + mntLetter + ".png";
    
    // BennettGap marker
    var BennettGapMarker = new GMarker(new GLatLng(35.328150940701946, -82.73014068603516), 
       {icon:mntIcon, title:"Black Mountain to Bennett Gap"});
    var BennettGapHTML = "<a href=\"Mountain/BennettGap.html\">Clawhammer/Black Mountain/<br />BuckwheatKnob/BennettGap</a>";
    GEvent.addListener(BennettGapMarker, "click", function() {
       BennettGapMarker.openInfoWindowHtml(BennettGapHTML);
    });
    map.addOverlay(BennettGapMarker);

    // BentCreek marker
    var BentCreekMarker = new GMarker(new GLatLng(35.48569394240189, -82.62491226196289), 
       {icon:mntIcon, title:"Bent Creek"});
    var BentCreekHTML = "<a href=\"Mountain/BentCreek.html\">A good ride in Bent Creek</a>";
    GEvent.addListener(BentCreekMarker, "click", function() {
       BentCreekMarker.openInfoWindowHtml(BentCreekHTML);
    });
    map.addOverlay(BentCreekMarker);

    // ClawPinkBennett marker
    var ClawPinkBennettMarker = new GMarker(new GLatLng(35.3669, -82.76288), 
       {icon:mntIcon, title:"Clawhammer/Pink Beds"});
    var ClawPinkBennettHTML = "<a href=\"Mountain/ClawPinkBennett.html\">Clawhammer to the Pink Beds</a>";
    GEvent.addListener(ClawPinkBennettMarker, "click", function() {
       ClawPinkBennettMarker.openInfoWindowHtml(ClawPinkBennettHTML);
    });
    map.addOverlay(ClawPinkBennettMarker);

    // Heartbreak marker
    var HeartbreakMarker = new GMarker(new GLatLng(35.66479, -82.234597), 
        {icon:mntIcon, title:"Heartbreak"});
    var HeartbreakHTML = "<a href=\"Mountain/Heartbreak.html\">Heartbreak</a>";
    GEvent.addListener(HeartbreakMarker, "click", function() {
       HeartbreakMarker.openInfoWindowHtml(HeartbreakHTML);
    });
    map.addOverlay(HeartbreakMarker);

    // Kitsuma marker
    var KitsumaMarker = new GMarker(new GLatLng(35.62043, -82.257986), 
        {icon:mntIcon, title:"Kitsuma"});
    var KitsumaHTML = "<a href=\"Mountain/Kitsuma.html\">Kitsuma</a>";
    GEvent.addListener(KitsumaMarker, "click", function() {
       KitsumaMarker.openInfoWindowHtml(KitsumaHTML);
    });
    map.addOverlay(KitsumaMarker);

    // LaurelMountain marker
    var LaurelMountainMarker = new GMarker(new GLatLng(35.38880506285692, -82.72293090820312), 
       {icon:mntIcon, title:"Laurel Mountain"});
    var LaurelMountainHTML = "<a href=\"Mountain/LaurelMountain.html\">Laurel Mountain</a>";
    GEvent.addListener(LaurelMountainMarker, "click", function() {
       LaurelMountainMarker.openInfoWindowHtml(LaurelMountainHTML);
    });
    map.addOverlay(LaurelMountainMarker);

    // NorthMills marker
    var NorthMillsMarker = new GMarker(new GLatLng(35.431931690277345, -82.68293380737305), 
        {icon:mntIcon, title:"North Mills River area"});
    var NorthMillsHTML = "North Mills River area <br />" +
        "<a href=\"Mountain/FletcherCreek.html\">Fletcher Creek and Spencer Branch</a> <br />" +
        "<a href=\"Mountain/TraceRidge.html\">Trace Ridge</a>";
    GEvent.addListener(NorthMillsMarker, "click", function() {
       NorthMillsMarker.openInfoWindowHtml(NorthMillsHTML);
    });
    map.addOverlay(NorthMillsMarker);

    // SeinardCaney marker
    var SeinardCaneyMarker = new GMarker(new GLatLng(35.3105, -82.81537), 
       {icon:mntIcon, title:"Seinard/Caney"});
    var SeinardCaneyHTML = "<a href=\"Mountain/SeinardCaney.html\">Seinard Ridge and Caney Bottom</a>";
    GEvent.addListener(SeinardCaneyMarker, "click", function() {
       SeinardCaneyMarker.openInfoWindowHtml(SeinardCaneyHTML);
    });
    map.addOverlay(SeinardCaneyMarker);

    // SnooksNose marker
    var snooksNoseMarker = new GMarker(new GLatLng(35.67654189203809, -82.19670295715332), 
       {icon:mntIcon, title:"Snook's Nose"});
    var snooksNoseHTML = "<a href=\"Mountain/SnooksNose.html\">Snook's Nose</a>";
    GEvent.addListener(snooksNoseMarker, "click", function() {
       snooksNoseMarker.openInfoWindowHtml(snooksNoseHTML);
    });
    map.addOverlay(snooksNoseMarker);

    // StairCreek marker
    var StairCreekMarker = new GMarker(new GLatLng(35.748288595751596, -82.36892223358154), 
       {icon:mntIcon, title:"Stair Creek"});
    var StairCreekHTML = "<a href=\"Mountain/StairCreek.html\">Stair Creek</a>";
    GEvent.addListener(StairCreekMarker, "click", function() {
       StairCreekMarker.openInfoWindowHtml(StairCreekHTML);
    });
    map.addOverlay(StairCreekMarker);
  }
}
