function addLoadListener(fn)
{
  if (typeof window.addEventListener != 'undefined') {
    window.addEventListener('load', fn, false);
  }
  else if (typeof document.addEventListener != 'undefined') {
    document.addEventListener('load', fn, false);
  }
  else if (typeof window.attachEvent != 'undefined') {
    window.attachEvent('onload', fn);
  }
  else {
    var oldfn = window.onload;
    if (typeof window.onload != 'function') {
      window.onload = fn;
    }
    else {
      window.onload = function() {
        oldfn();
        fn();
      };
    }
  }
}

function initialise() {
  if (GBrowserIsCompatible()) {
    var map = new GMap2(document.getElementById("map_canvas"));

    // Restrict the range of zoom levels
    G_PHYSICAL_MAP.getMinimumResolution = function() { return 8; }
    G_PHYSICAL_MAP.getMaximumResolution = function() { return 13; }

    // Add the controls for the map
    map.setCenter(new GLatLng(54.648413, -6.602783), 8);
    map.setMapType(G_PHYSICAL_MAP);
    map.addControl(new GLargeMapControl());

    // Add custom overlay
    var tilelayer = new GTileLayer(new GCopyrightCollection(), 8, 13);
    tilelayer.getTileUrl = function(tile, zoom) {
      return "tiles/" + zoom + "/" + tile.x + "," + tile.y + ".png";
    };
    tilelayer.getOpacity = function() {return 0.33;}
    map.addOverlay(new GTileLayerOverlay(tilelayer));
  }
}

addLoadListener(initialise);
