function parseKml(url)
{
	var markers = new Array();
	var request = GXmlHttp.create();
	request.open("GET", url, false);
	request.send(null);
	if (request.readyState == 4) {
		var kmlDom = GXml.parse(request.responseText);
	
		if(kmlDom && kmlDom.documentElement.nodeName == "kml") {
			var placemarkNodes = kmlDom.documentElement.getElementsByTagName("Placemark");
			for (var i=0; i < placemarkNodes.length; i++)
			{ 
				markers[i] = new Array();
				dataNodes = placemarkNodes[i].childNodes;
				for (var j=0; j < dataNodes.length; j++)
				{
					if(dataNodes[j].nodeName.toLowerCase() == "name") {
						var placeName = dataNodes[j].firstChild.nodeValue;
						markers[i]["name"] = placeName;
					} else if (dataNodes[j].nodeName.toLowerCase() == "address") {
						var placeAddr = dataNodes[j].firstChild.nodeValue;
						markers[i]["addr"] = placeAddr;
					} else if (dataNodes[j].nodeName.toLowerCase() == "description") {
						var placeDesc = dataNodes[j].firstChild.nodeValue;
						markers[i]["desc"] = placeDesc;
					} else if (dataNodes[j].nodeName.toLowerCase() == "point") {
						pointNodes = dataNodes[j].childNodes;
						for (var k=0; k < pointNodes.length; k++)
						{
							if(pointNodes[k].nodeName.toLowerCase() == "coordinates") {
								pointCoord = pointNodes[k].firstChild.nodeValue.split(",");
								placeLat = parseFloat(pointCoord[1]);
								placeLng = parseFloat(pointCoord[0]);
								markers[i]["point"] = new GLatLng(placeLat, placeLng);
							}
						}
					}
				}
			}
		}
	}
	
	return markers;
}
