/* Campus Map code */

/**
 * This Javascript is based on code provided by the
 * Blackpool Community Church Javascript Team
 * http://www.commchurch.freeserve.co.uk/   
 * http://www.econym.demon.co.uk/googlemaps/ 
 * 
 * @author Momchil Kyurkchiev
 * @date March, 2007
 */

// A TextualZoomControl is a GControl that displays textual "Zoom In"
// and "Zoom Out" buttons (as opposed to the iconic buttons used in
// Google Maps).
function TextualZoomControl() {
}

TextualZoomControl.prototype = new GControl();

// Creates a one DIV for each of the buttons and places them in a container
// DIV which is returned as our control element. We add the control to
// to the map container and return the element for the map class to
// position properly.
TextualZoomControl.prototype.initialize = function(map) {
  var container = document.createElement("div");

  var zoomInDiv = document.createElement("div");
  this.setButtonStyle_(zoomInDiv);
  container.appendChild(zoomInDiv);
  zoomInDiv.appendChild(document.createTextNode("Zoom In"));
  GEvent.addDomListener(zoomInDiv, "click", function() {
    map.zoomIn();
  });

  var zoomOutDiv = document.createElement("div");
  this.setButtonStyle_(zoomOutDiv);
  container.appendChild(zoomOutDiv);
  zoomOutDiv.appendChild(document.createTextNode("Zoom Out"));
  GEvent.addDomListener(zoomOutDiv, "click", function() {
    map.zoomOut();
  });

  map.getContainer().appendChild(container);
  return container;
}

// By default, the control will appear in the top left corner of the
// map with 7 pixels of padding.
TextualZoomControl.prototype.getDefaultPosition = function() {
  return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(7, 7));
}

// Sets the proper CSS for the given button element.
TextualZoomControl.prototype.setButtonStyle_ = function(button) {
  button.style.textDecoration = "underline";
  button.style.color = "#0000cc";
  button.style.backgroundColor = "white";
  button.style.font = "small Arial";
  button.style.border = "1px solid black";
  button.style.padding = "2px";
  button.style.marginBottom = "3px";
  button.style.textAlign = "center";
  button.style.width = "6em";
  button.style.cursor = "pointer";
}


// Given an array of Marker objects, we need to display them on a campus map.
function displayCampusMap(gmap, markers) {  
  //gmap.addControl(new GScaleControl());
  gmap.addControl(new TextualZoomControl());  
  //gmap.addControl(new GSmallZoomControl());

  // ============================================================
  // == Write our own getTileUrl function ========
  // This particular one checks to see if the tiles are in range
  // if so, returns the URL of the actual tile
  // Otherwise returns the URL of a blank tile
  CustomGetTileUrl=function(a,b){
    if (b==17 && a.x>=37152 && a.x<=37157 && a.y>=48056 && a.y<= 48061) {
      return "../closer-look-tiles/"+a.x+"_"+a.y+"_closer-look.jpg"
    } else if (b==16 && a.x>=18576 && a.x<=18578 && a.y>=24028 && a.y<=24030) {
      return "../farther-look-tiles/"+a.x+"_"+a.y+"_farther-look.jpg"
    } else {
      return "blank.jpg";
    }
  }
      
  var copyright = new GCopyright(1,
      new GLatLngBounds(new GLatLng(53.8136257,-3.0981445),new GLatLng(53.8654855,-2.9663944) ),
      16, "");

  var copyrightCollection = new GCopyrightCollection('Map Data:');
  copyrightCollection.addCopyright(copyright);      

  var tilelayers = [new GTileLayer(copyrightCollection,16,17)];
  tilelayers[0].getTileUrl = CustomGetTileUrl;
      
  var custommap = new GMapType(tilelayers, G_SATELLITE_MAP.getProjection(), "Old OS",{errorMessage:_mMapError});
  gmap.addMapType(custommap);

  //gmap.setCenter(new GLatLng(43.209,-77.950), 16, custommap); 

  // if the no markers are present, center the map around the center of the campus.
  if (markers.length == 0)
  {
    gmap.setCenter(new GLatLng(43.209,-77.950));
  } else {
    setMapCenterViaBounds(gmap); 
  }
  gmap.setZoom(16);   
  gmap.setMapType(custommap);

  placeMarkersOnMap(gmap, markers);  
}

/* End of Campus Map code */
