var mArray = Array();
var map;
var centerPoint = new GLatLng(55.752622,37.6206207);

function load(xml_file) {
	doLoad();
	//mArray.push('55.78226882;37.61396885;the russian army theatre');
	//addMarkers();
	parseXML(xml_file);
}

// funktion loas data from XML file and
function parseXML(xml_file)
{
var bounds = new GLatLngBounds();
// Download the data in data.xml and load it on the map. 
GDownloadUrl(xml_file, function(data, responseCode) {
  // To ensure against HTTP errors that result in null or bad data,
  // always check status code is equal to 200 before processing the data
  if(responseCode == 200) {
    var xml = GXml.parse(data);
    var markers = xml.documentElement.getElementsByTagName("marker");
    for (var i = 0; i < markers.length; i++) {
      var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
                              parseFloat(markers[i].getAttribute("lng")));
      map.addOverlay(new GMarker(point));
			var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
			bounds.extend(point);
			var marker = createMarker(point, markers[i].childNodes[0].nodeValue);
			map.addOverlay(marker);
    }
    map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds)); 
  } else if(responseCode == -1) {
    alert("Data request timed out. Please try later.");
  } else { 
    alert("Request resulted in error. Check XML file is retrievable.");
  }
});

}
/*
function addMarker(lat, lng, text)
{
	mArray.push(lat+';'+lng+';'+text);
}*/

function doLoad() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));
		map.setCenter(centerPoint, 7);
		map.addControl(new GScaleControl());
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.setMapType(G_NORMAL_MAP); //G_HYBRID_MAP
		GEvent.addListener(map, 'click', mapClick);

	}
}
/*
function addMarkers() {
	if (mArray.length) {
		var bounds = new GLatLngBounds();
		for (n=0 ; n < mArray.length ; n++ ) {
			var mData = mArray[n].split(';');
			var point = new GLatLng(mData[0],mData[1]);
			bounds.extend(point);
			var marker = createMarker(point, mData[2]);
			map.addOverlay(marker);
		}
		map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds)); 
	}
}
*/
function createMarker(point, title) {
	var marker = new GMarker(point,{title:title});
	GEvent.addListener(marker, "click", function() {
	//	marker.openInfoWindowHtml('<div style="width:250px;">' + title + '<hr>Lat: ' + point.y + '<br>Lon: ' + point.x + '</div>');
		marker.openInfoWindowHtml('<div style="width:250px;">' + title + '</div>');
	});
	return marker;
}

function mapClick(marker, point) {
	if (!marker) {
		oLat = document.getElementById("lat");
		oLat.value = point.y;
		oLon = document.getElementById("lon");
		oLon.value = point.x;
		oDesc = document.getElementById("desc");
		oDesc.value = 'New point';


	}
}

