// Javascript by Mark McClure's GPXToGoogleMap
// http://facstaff.unca.edu/mcmcclur/GoogleMaps/GPXToGoogleMap/

function load() {
  if (GBrowserIsCompatible()) {
    // Initialize
    var map = new GMap2(document.getElementById("map"));


    // Set up the custom map types
    // Technique is mostly described on mapki.com
    // getTileUrl method adapted from GPSVisualizer output

    // The USGS topo maps via terraservice.com
    var topoCopyright = new GCopyright(1,
      new GLatLngBounds(new GLatLng(18,-169),new GLatLng(72,-66) ),
        5, "by 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, "by 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);
    // End custom map types
    
    
    // Add the controls and set up the map
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
    map.addControl(new GScaleControl());
    var omc = new GOverviewMapControl();
    map.addControl(omc);
    omc.hide();
    
    map.setCenter(new GLatLng(35.741, -82.6487), 12, G_NORMAL_MAP);

    // Place the start and stop markers
    // Info for the icons
    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);
    var startIcon = new GIcon(baseIcon);
    startIcon.image = "http://www.google.com/mapfiles/dd-start.png";
    var pauseIcon = new GIcon(baseIcon);
    pauseIcon.image = "http://www.google.com/mapfiles/icon-dd-pause-trans.png";
    var stopIcon = new GIcon(baseIcon);
    stopIcon.image = "http://www.google.com/mapfiles/dd-end.png";


    var startStopMarker1 = new GMarker(new GLatLng(35.6846, -82.6171), {icon:startIcon, title:"Beginning and ending of track 1"});
    var startStopHTML1 = "Track 1 begins and ends here.";
    GEvent.addListener(startStopMarker1,"click",function() {
      startStopMarker1.openInfoWindowHtml(startStopHTML1);
    });
    map.addOverlay(startStopMarker1);


    // Place the tracks
    var ePolyline_1 = new GPolyline.fromEncoded({
      color: "#0000ff",
      weight: 4,
      opacity: 0.8,
      points: "{sxxEddgwNQIgAHsEl@iKzBgAn@aCv@_EFuC]uDuAcCyByC_DiEgOo@c@qBu@sAMcEUwEGaDXiCz@sB|AaKvIyA`A_AHiCHsB\\}PtEaCjBgC`C}ArB_BxCkAtEUb@cAnAoB|@mL`D{BnAwDpCuChCmJbH{@hBcAxDo@`Di@nDgAzGeArEgDpMsAbH_@fCCnCBdDPnJPzEv@|E`@zEh@hE\\bEU|Bq@pEgBlKwBtFoB`CYR{BNiBKcByAeDwDkDgDqCcBuFcC}EkBwBj@gBz@yCfCgCpDoBlDaBvDmAdEqAxFkBbFwBlEkJpVgHjT}BfEsAtCkBlEqLbXiBpEs@`D{@bFm@dE}@tE[pCMxL?xECfA_@zA{@jB{@\\]BcAUo@o@_AoAuAkFiBkNuC}GaEw@gC{@mCf@aEUiDF{D?sIm@oB_FqA}@wB{CmC}C_FuFiEmCsBe@wDk@kFY{Fm@{EiAoFsB{EkCyEwBqGkDcBsByAqCiBaEoB_EmEqH{ByCwEgF{EiGmBsf@s@aCsB{C_CkC_CmA_BUm@AmC@uAPcA`@YPCFUMUD{DvBiA~@UX}@nBo@|@{@`AqCdEgL~TcDbGgBzC_ClE}CfFqEpGgGpFwArAw@d@aCvBi@|@kD`FuA~BmDlJkBtE{AnDkCfFc@r@c@hBIz@Kj@MxAK~BEfB?dCHlMQlDc@rCgAbDoA|C{CzG}E~IYn@mAlBi@lAMt@OtAa@rBZK?GQKDM?]\\}BTkAXo@r@kAhBgDXa@rBsDl@gAj@_BdDoHjAcDb@}APyAH{B?mMIkEB}APcDXoBd@{Br@oBnBiDtA{CxCoHNk@?PCDB?GGn@wAbA}CXo@Xe@jCiDx@sA`ByBnBiBrJiIdCqC`CoDrC}E|DuH~@oB~@}A\\cAjCyElDoG|CgGrB{CtAyA`AiAfC_C|A_AzB{@`B[~AW`BGrBFnB^fDnApAfAnBpCp@pBv@nLp@nF^pEp@vDj@zDr@bDd@xA|@bB|AnBfErDpA|At@zAn@jBtAzAxApBpArCfBzCvBnChDdEvC|AnDjA`DpAdDjB`Cz@vDbAtDj@rJVxAPvBr@`C~@nCrB`EjEfLlMtBjAvDpA`BTjBBbCM`CHtCNvBTdGnBbA`@jB~A|A`DGnDXdB?LdC|MdB@VJnA]Za@v@eB^sBH{CGaDF}F^wGh@_Ed@sBj@_Eh@_Dz@mEz@uBtAsCxCyGvCiGlEaKtAqC`B{CnBmEtAuEj@uAjBiG|@qCt@iBZeA|@iB|BwGrAgCdCqFt@sB`BkGnA{DtAoC|BoDzBcDnDgAl@KrB?rBRpEfAbDpAfCnA|BrAxCzBjBnDlB\\`ASrBaBxAyBbAeBh@uAX}BRcCHw@XqAn@oDRaBHsB]cDs@{FKqCWsBc@kBY{BQyO?kCFqAn@{D|AyHpCaKn@sBp@eDdAkHl@_Dn@oCr@qBXe@rBeC|CkCtDqCdDwCxEiDtCmAfF}AlDs@f@a@n@qAnBiGz@eB~@eAvAiAp@u@nAcAjBaAvBu@zIoBxCo@tAQ|AApAGpAq@~GoFrGmEvE_BfDc@rBH`Ej@xAf@bAp@vDjBjD~C`C`DbChC`BrBpDdEnAt@z@X`AOpBcA~I}BnBa@xCe@|Aa@d@JCB",
      levels: "PAACBADBGC@EBFB?CBHC@AE?ACF@BDBB?EAD@AAIAC@?B@B@F?A@DA?@E@AHC@EAF@@DB@FACBH@C@CAABD@A?@FA??@D?@DAJ@BD@EBCGADCB@BFDBA?CF@BABEB@AHB@?AD@AFCFACD@AJB@?BACA?EB?@BA??@EC@@@C?@G@?B?AF@?A?C?CAEA?B?@@C?@LB@B@@?C?????C?A@E@B@@BAFAB@B@B??AA@?G???C?AE@B?@A@?@BE?BADA@J@BDCAFBA@C?A@FABAC@B@BAC?GA@AADACAC?FB@BFACAB?@D?GBDC?@EABJ@BDA@BD@@@?F@??@A@@D?@@??C@A?B@@C@HCDABFB@D@CCFBC@HB??A?@AE?AB@@DA@F@B?B@A?DB@I@@ADABAEAAD@??F@BC@B?EAACHCADA@FBA@?C@GAAC?@B@P",
      zoomFactor: 2,
      numLevels: 18
    });
    map.addOverlay(ePolyline_1);

  }
}
