//<![CDATA[

var places = [
      {
        "name": "Bristol", // 0
        "zoom": [0, 10],
        "posn": [51.455878, -2.590885],
        "html": "<strong><a href=\"http://newinterfaces.net/nip/workshops/bristol/\">Workshop 1<br />Bristol, UK</a></strong><br />Dates: <strong>30th March to 1st April 2007</strong>"
      },
      {
        "name": "Amsterdam", // 1
        "zoom": [0, 10],
        "posn": [52.361396, 4.901382],
        "html": "<strong><a href=\"http://newinterfaces.net/nip/workshops/amsterdam/\">Workshop 2<br />Amsterdam, The Netherlands</a></strong><br />Dates: <strong>19th to 21st June 2007</strong>"
      },
      {
        "name": "Lisbon", // 2
        "zoom": [0, 10],
        "posn": [38.764164, -9.095574],
        "html": "<strong><a href=\"http://newinterfaces.net/nip/workshops/lisbon/\">Workshop 3<br />Lisbon, Portugal</a></strong><br />Dates: <strong>19th to 21st September 2007</strong>"
      },
      {
        "name": "Watershed", // 3
        "zoom": [11, 17],
        "posn": [51.451780, -2.597998],
        "html": "<strong><a href=\"http://newinterfaces.net/nip/about/partners/watershed/\">Watershed</a></strong><br />1 Canon's Road<br />Harbourside<br />Bristol BS1 5TX<br />UK<br /><a href=\"http://www.watershed.co.uk\" target=\"blank\">www.watershed.co.uk</a>"
      },
      {
        "name": "Arnolfini", // 4
        "zoom": [11, 17],
        "posn": [51.449375, -2.597464],
        "html": "<strong>Arnolfini</strong><br />16 Narrow Quay<br />Bristol BS1 4QA<br />UK<br /><a href=\"http://www.arnolfini.org.uk\" target=\"blank\">www.arnolfini.org.uk</a>"
      },
      {
        "name": "Cube", // 5
        "zoom": [11, 17],
        "posn": [51.461173, -2.593248],
        "html": "<strong>Cube</strong><br />Dove Street South<br />Bristol BS2 8JD<br />UK<br /><a href=\"http://www.cubecinema.com\" target=\"blank\">www.cubecinema.com</a>"
      },
      {
        "name": "STEIM", // 6
        "zoom": [11, 17],
        "posn": [52.361829, 4.901082],
        "html": "<strong><a href=\"http://newinterfaces.net/nip/about/partners/steim/\">STEIM</a></strong><br />Utrechtsedwarsstraat 134<br />1017 WL Amsterdam<br />The Netherlands<br /><a href=\"http://www.steim.org\" target=\"blank\">www.steim.org</a>"
      },
      {
        "name": "Restart", // 7
        "zoom": [11, 17],
        "posn": [38.764164, -9.095574],
        "html": "<strong><a href=\"http://newinterfaces.net/nip/about/partners/restart/\">Restart</a></strong><br />Cais Portugu&ecirc;s lote 2.11.01.Ac<br />Parque das Na&ccedil;&otilde;es<br />1990/223<br />Lisboa, Portugal<br /><a href=\"http://www.restart.pt\" target=\"blank\">www.restart.pt</a>"
      },
];

var map;
var mgr;
var icons = {};

function mapDisplay(visible) {
  if (visible=="hide") {
    var linkHtml = "[<a href=\"javascript:mapDisplay('show')\">Show map</a>]";
    var display = "none"
  }
  else {
    var linkHtml = "[<a href=\"javascript:mapDisplay('hide')\">Hide map</a>]";
    var display = "block"
  }
  var infoClass = (visible=="hide") ? "show" : "hide";
  document.getElementById("map_info").setAttribute("class", infoClass);
  document.getElementById("map_info").innerHTML = linkHtml;
  document.getElementById("map").style.display = display;
}

function initDisplay(pageTitle) {
	if (pageTitle=="Bristol") {
		var place = places[0];
		var posn = new GLatLng(place["posn"][0], place["posn"][1]);
		var zoom = 14;
	} else if (pageTitle=="Amsterdam") {
		var place = places[1];
		var posn = new GLatLng(place["posn"][0], place["posn"][1]);
		var zoom = 14;
	} else if (pageTitle=="Lisbon") {
		var place = places[2];
		var posn = new GLatLng(place["posn"][0], place["posn"][1]);
		var zoom = 14;
	} else {
		var posn = new GLatLng(46.86, 4.48);
		var zoom = 4;
	}
	map.setCenter(posn, zoom, G_NORMAL_MAP);
	mapDisplay("show");
}

function hideMap(pageTitle, showCenter) {
  if (GBrowserIsCompatible()) {
    document.getElementById("map_info").innerHTML = "[<a href=\"javascript:loadMap('" + pageTitle + "'," + showCenter + ")\">Show map</a>]";
    document.getElementById("map_info").setAttribute("class", "show");
  }
}

function loadMap(pageTitle, showCenter) {
  if (GBrowserIsCompatible()) {
    document.getElementById("map").style.display = "block";
	map = new GMap2(document.getElementById("map"));
	if (showCenter) { // Display Lat, Lng for centre of map in div called 'map_info'
  	  GEvent.addListener(map, "moveend", function() {
	    var center = map.getCenter();
	    document.getElementById("map_info").innerHTML = center.toString();
	  });
	}
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
//	map.addControl(new GOverviewMapControl());
	initDisplay(pageTitle);
	map.enableDoubleClickZoom();
	window.setTimeout(setupEventMarkers, 0);
  }
}

function getIcon(images) {
  var icon = null;
  if (images) {
	if (icons[images[0]]) {
	  icon = icons[images[0]];
	} else {
	  icon = new GIcon();
	  icon.image = "markermanager/" + images[0] + ".png";
	  var size = iconData[images[0]];
	  icon.iconSize = new GSize(size.width, size.height);
	  icon.iconAnchor = new GPoint(size.width >> 1, size.height >> 1);
	  icon.shadow = "markermanager/" + images[1] + ".png";
	  size = iconData[images[1]];
	  icon.shadowSize = new GSize(size.width, size.height);
	  icons[images[0]] = icon;
	}
  }
  return icon;
}

function createMarker(posn, name, icon, html) {
	var marker = new GMarker(posn, { title: name, icon: icon });
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(html);
	});
	return marker;
}

function setupEventMarkers() {
  mgr = new GMarkerManager(map);
  for (var i in places) {
	var markers = [];
	var place = places[i];
	var icon = getIcon(place["icon"]);
	var posn = new GLatLng(place["posn"][0], place["posn"][1]);
	var name = place["name"];
	var html = place["html"];
	markers.push(new createMarker(posn, name, icon, html));
	mgr.addMarkers(markers, place["zoom"][0], place["zoom"][1]);
  }
  mgr.refresh();
}

//]]>
