function plotxmldata(xmlfile) {

var request = GXmlHttp.create();

request.open('GET', '/special/getxml.php?file=' + xmlfile, true);

request.onreadystatechange = function() {

  if (request.readyState == 4) {
  
	var xmlDoc = request.responseXML;
	
	var bounds = new GLatLngBounds();

	var lines = xmlDoc.documentElement.getElementsByTagName("line");
	
	for (var a = 0; a < lines.length; a++) {

	var colour = lines[a].getAttribute("colour");
	var width  = parseFloat(lines[a].getAttribute("width"));

	var points = lines[a].getElementsByTagName("point");
	var pts = [];
	
	for (var i = 0; i < points.length; i++) {
	pts[i] = new GLatLng(parseFloat(points[i].getAttribute("latitude")), parseFloat(points[i].getAttribute("longitude")));
	bounds.extend(pts[i]);
	}
	map.addOverlay(new GPolyline(pts,colour,width));
	}
	
	var markers = xmlDoc.documentElement.getElementsByTagName("marker");
	for (var i = 0; i < markers.length; i++) {
  	var point = new GLatLng(parseFloat(markers[i].getAttribute("latitude")),
						   parseFloat(markers[i].getAttribute("longitude")));
	bounds.extend(point);				   
  	xmarker = createMarker(point, markers[i].getAttribute("name"), markers[i].getAttribute("type"), markers[i].getAttribute("detail"), markers[i].getAttribute("markerlinks"));
	map.addOverlay(xmarker);
	}
	
	map.setZoom(map.getBoundsZoomLevel(bounds));
	map.panTo(bounds.getCenter());

  }

}

request.send(null);

}