	var markers = new Array();
	var req = false;
	
	function plotFromKML (base) {
		if (map.getZoom() >= 12) {
			var url = base + '?output=kml&BBOX=' + map.getBounds();
			
			// Create Google XmlHttpRequest object
			req = GXmlHttp.create();
				
			req.onreadystatechange = function () {
				if (req.readyState == 4) {
					if (req.status == 200) { 
						var points = req.responseXML.getElementsByTagName("Placemark");
						if (points.length > 0) {
							clearMarkers();
							for (i=0; i<points.length; i++) {
								markers[i] = createMarker(points[i]);
								map.addOverlay(markers[i]);
							}
						}
					}
				}
			}
			if (uripath) {
				req.open("GET", uripath + 'api/ws/' + url,true);
			}
			else {
				req.open("GET", '/api/ws/' + url,true);
			}
			req.send(null);
		}
		else {
			clearMarkers();
		}
	}
	
	function clearMarkers () {
		for (var i = 0; i < markers.length; i++) {
			map.removeOverlay(markers[i]);
		}
		markers = new Array();
	}
	
	function createMarker (point) {
		// Parse
		var lat = point.getElementsByTagName('Point')[0].getElementsByTagName('latitude')[0].firstChild.data;
		var lng = point.getElementsByTagName('Point')[0].getElementsByTagName('longitude')[0].firstChild.data;
		var title = point.getElementsByTagName('name')[0].firstChild.data;
		var info = '<p><strong>' + title + '</strong></p>' + point.getElementsByTagName('description')[0].firstChild.data;
		
		// Create Marker
		var markerOptions = { icon:customIcon, title:title };
		var marker = new GMarker(new GLatLng(lat, lng), markerOptions);
		
		GEvent.addListener(marker, "click", function() {
			//map.openInfoWindowHtml(marker.getLatLng(), '<div class="balloon" style="width:200px;">' + info + '</div>');
			marker.openInfoWindowHtml('<div class="balloon" style="width:200px;">' + info + '</div>');
		});
			
		return marker;
	}