function initialize() {
  var map = new GMap2(document.getElementById("map_canvas"));
  map.setUIToDefault();

  return map;
}

function showAddress(address, colour) {
  var map = initialize();
  var geocoder = new GClientGeocoder();
  var tinyIcon = new GIcon();

  map.removeMapType(G_SATELLITE_MAP);
  map.removeMapType(G_HYBRID_MAP);

  tinyIcon.image = "/img/home_"+colour+".png";
  tinyIcon.shadow = "/img/pin_shadow.png";
  tinyIcon.iconAnchor = new GPoint(6, 20);
  tinyIcon.infoWindowAnchor = new GPoint(5, 1);

  geocoder.getLatLng(
    address,
    function(point) {
      if (!point) {
        //alert(address + " not found"); //FOR DEV ONLY
      } else {
        map.setCenter(point, 15);
        var marker = new GMarker(point, {icon: tinyIcon});
        map.addOverlay(marker);
      }
    }
  );
}

function showLatLon(lat, lon, colour) {
  var map = initialize();
  var point = new GLatLng(lat, lon);
  var tinyIcon = new GIcon();

  tinyIcon.image = "/img/home_"+colour+".png";
  tinyIcon.shadow = "/img/pin_shadow.png";
  tinyIcon.iconAnchor = new GPoint(6, 20);
  tinyIcon.infoWindowAnchor = new GPoint(5, 1);

  map.setCenter(point, 15);
  var marker = new GMarker(point, {icon: tinyIcon});
  map.addOverlay(marker);
}

function addMarkerAddress(map, address, id, markerHtml, colour) {
  var geocoder = new GClientGeocoder();
  var tinyIcon = new GIcon();

  tinyIcon.image = "/img/home_"+colour+".png";
  tinyIcon.shadow = "/img/pin_shadow.png";
  tinyIcon.iconAnchor = new GPoint(6, 20);
  tinyIcon.infoWindowAnchor = new GPoint(5, 1);

  geocoder.getLatLng(
    address,
    function(point) {
      if (!point) {
        //alert(address + " not found"); //FOR DEV ONLY
      } else {
        map.setCenter(point, 12);
        var marker = new GMarker(point, {icon: tinyIcon});
        map.addOverlay(marker);
        marker.bindInfoWindowHtml(markerHtml);
      }
    }
  );
}

function addMarkerLatLon(map, lat, lon, id, markerHtml, colour)
{
  var point = new GLatLng(lat, lon);
  var tinyIcon = new GIcon();

  tinyIcon.image = "/img/home_"+colour+".png";
  tinyIcon.shadow = "/img/pin_shadow.png";
  tinyIcon.iconAnchor = new GPoint(6, 20);
  tinyIcon.infoWindowAnchor = new GPoint(5, 1);

  map.setCenter(point, 12);
  var marker = new GMarker(point, {icon: tinyIcon});
  map.addOverlay(marker);
  marker.bindInfoWindowHtml(markerHtml);
}

function streetView(lat, lon, pov, pitch, zoom) {
  svOpts = {
    latlng: new GLatLng(lat, lon),
    pov: {yaw: pov, pitch: pitch, zoom: zoom}
  };
  
  var myPano = new GStreetviewPanorama(document.getElementById("street_view_canvas"), svOpts);

  return myPano;
}
