
var map;
var markers = new Array();

function loadmap(lat,lng,for_list,minicross) {
  var zoom = 13;
  var marker_offset;
  if (lat!=null&&lng!=null) {
    zoom = 16;
  }
  var lat = (lat==null) ? "43.66":lat;
  var lng = (lng==null) ? "-79.4":lng;
  var for_list = (for_list==null || for_list);
  var minicross = (minicross==null) ? false:minicross;

  var places = "placelist";

  marker_offset = for_list?0:-1;

  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map"));
    map.setCenter(new GLatLng(lat,lng), zoom);

    if (!minicross) {
      map.addControl(new GMapTypeControl());
    }

    if (minicross) {
      map.addControl(new GSmallZoomControl());
      map.addControl(new GMapTypeControl());
    } else if (zoom==16) {
      map.addControl(new GSmallMapControl());
    } else {
      map.addControl(new GLargeMapControl());
    }

    function createPoint(index,lat,lng,title,addr,postcode,loc,site) {
      var icon = new GIcon(G_DEFAULT_ICON);
      if (index>128) {
	icon.image = '/thelist/markers/plus.png';
      } else if (index==0) {
	icon.image = '/thelist/markers/dot.png';
      } else {
	icon.image = '/thelist/markers/'+index+'.png';
      }
      var point = new GLatLng(parseFloat(lat),
			      parseFloat(lng));
      var marker = new GMarker(point,icon);
      var l1 = '<a href="/thelist/'+loc+'/">'+title+'</a>';
      var l2 = addr;
      if (postcode!=null) {
	l2 += ", "+postcode+".";
      }
      var l3 = '';
      if (site!=null && site!='') {
	l3 = '<dd><a href="'+site+'">Web site</a></dd>';
      }
      GEvent.addListener(marker, "click", function() {
	marker.openInfoWindowHtml("<dl><dt>" + l1 + "</dt>"+"<dd>"+l2+"</dd>"+l3+"</dl>");
      });
      return marker;
    }

    if (places!='') {
      GDownloadUrl(places, function(data, responseCode) {
	var xml = GXml.parse(data);
	var xml_marks = xml.documentElement.getElementsByTagName("marker");
	for (var i = 0; i < xml_marks.length; i++) {
	  var marker_num = i+marker_offset+1;
	  markers[marker_num] = createPoint(marker_num,
					    xml_marks[i].getAttribute("lat"),
					    xml_marks[i].getAttribute("long"),
					    xml_marks[i].getAttribute("title"),
					    xml_marks[i].getAttribute("address"),
					    xml_marks[i].getAttribute("postcode"),
					    xml_marks[i].getAttribute("shortname"),
				   xml_marks[i].getAttribute("site"))
	    map.addOverlay(markers[marker_num]);
	}
      });
    }

  }
  return map;
}

function set_center_from_form() {
  map.setCenter(new GLatLng(document.form_1.elements["data[lat]"].value, 
			    document.form_1.elements["data[long]"].value), map.getZoom());
}

function center_map_on_marker(i) {
  map.setCenter(markers[i].getPoint(), map.getZoom());
}

