//Created by Fernando F. Gallego (ferdy182@gmail.com ~ www.forgottenprojects.com)
//You are free to use, modify and distribute this code.
//Mentioning the author would be appreciated :)

//usage: add the KMLparser.js file to the document. Call KMLparser(url,map); at the bottom of the script code of your map.
function createEPoly(pts,levs,desc){
var polyline = new GPolyline.fromEncoded({ color: "#00FFFF",
			weight: 2, 
			points: pts,
			levels: levs,
			zoomFactor: 24,
			numLevels: 1 });
return polyline;
}

function createMwindow(map,marker,desc){
bubble = new EBubbleD(map, "/rijnland/afbeeldingen/watergang_b.png", "/rijnland/afbeeldingen/planning_b.png","/rijnland/afbeeldingen/analyser_b.png",new GSize(380,335), new GSize(300,200), new GPoint(33,82), new GPoint(185,320),true);
	if (debug) GLog.write("Marker:"+desc);
	if (debug) GLog.write("Scriptpath:"+scriptpath);
	var myPoint=marker.getPoint();
	if (debug) GLog.write("xy van marker x:" + myPoint.x + " y:" + myPoint.y ); 
	myPoint.y = myPoint.y + 0.8;
	myPoint.x = myPoint.x + 0.8;
    if (debug) GLog.write("xy van marker x:" + myPoint.x + " y:" + myPoint.y ); 
    map.setCenter(marker.getPoint());
    map.setCenter(myPoint);
    var url = "/rijnland/" + scriptpath + "/watergang.php?geb="+geb+"&desc="+desc;
    var url1 = "/rijnland/" + scriptpath + "/planning.php?geb="+geb+"&desc="+desc;
    var url2 = "/rijnland/" + scriptpath + "/analyse.php?geb="+geb+"&desc="+desc;

    GDownloadUrl(url,function(doc,status) { 
		GDownloadUrl(url1,function(doc1,status) {
			GDownloadUrl(url2,function(doc2,status) { 
				bubble.openOnMarker(marker,doc,doc1,doc2);
				});
			});
	}); 
	

    var url = "http://www.hosting.niebeek.nl/rijnland/" + scriptpath + "/dispwg.php?geb="+geb+"&desc="+desc;
	if (debug) GLog.write("url: "+url);


    if (debug) GLog.write("number of old polylines to remove:" + polyarr.length); 
    for(var j=0; j<(polyarr.length); j++){
	if (debug) GLog.write("remove polyarr polyline: " + j); 
	map.removeOverlay(polyarr[j]);
	};
    polyarr.length=0;


    GDownloadUrl(url,function(gegs,status) {   
	var data = GXml.parse(gegs);
	placemarks = data.documentElement.getElementsByTagName("Placemark");
	allcoordinates = placemarks[0].getElementsByTagName("coordinates");
        if (debug) GLog.write("aantal coordinaten :" + allcoordinates.length);

	for(var i=0; i<allcoordinates.length; i++){
	    var coordinates = new Array();
	    var points = new Array();

	    coordinates = placemarks[0].getElementsByTagName("coordinates")[i].childNodes[0].nodeValue;
//	    if (debug) GLog.write("aantal tekens  coordinaten :" + coordinates.length);
           for(var chunk=0;  chunk<placemarks[0].getElementsByTagName("coordinates")[i].childNodes.length;chunk++){
		    coordinates+=placemarks[0].getElementsByTagName("coordinates")[i].childNodes[chunk].nodeValue;
	        }
//	    if (debug) GLog.write("splitting coordinates ");
	    coordinates = coordinates.split(",");		
	    for(var j=0; j<coordinates.length/2-1;j++){
		    coordinates[j] = coordinates[j].split(" ");
	    }
	
        for(var j=0; j<(coordinates.length)/2-1; j++){
//		points.push(new GLatLng(parseFloat(coordinates[j][1]-0.00098),parseFloat(coordinates[j][0]-0.00023)));
		points.push(new GLatLng(parseFloat(coordinates[j][1]),parseFloat(coordinates[j][0])));
	    };
//	pointsarr.push(points);

	polyline = new GPolyline(points,"#00FFFF",3,0.9);
	map.addOverlay(polyline);
    polyarr[i]=polyline;

	}; //end iterate all segments
    }); 
};

function createMarker2(map,point,desc,icon){
 		var marker = new GMarker(point,{icon:icon}); 	
		GEvent.addListener(marker, 'click', function() {
			createMwindow(map,marker,desc);		
		});		
		return marker;
	}

function KMLparser(path,map){ //path: url to the kml file. map: div where the map is
    if (debug) GLog.write("kmlparser" + path);
    var request = GXmlHttp.create();
    var icon = new GIcon();
    icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
    icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
    icon.iconSize = new GSize(12, 20);
    icon.shadowSize = new GSize(22, 20);
    icon.iconAnchor = new GPoint(6, 20);
    icon.infoWindowAnchor = new GPoint(5, 1);      
	var icon2 = new GIcon();
	icon2.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
    icon2.iconSize = new GSize(22, 32);
    icon2.shadowSize = new GSize(22, 20);
    icon2.iconAnchor = new GPoint(6, 20);
    icon2.infoWindowAnchor = new GPoint(5, 1);      
	icon2.image = "http://labs.google.com/ridefinder/images/mm_20_yellow.png";
				    
    //iconblue = new GIcon(icon,"http://labs.google.com/ridefinder/images/mm_20_blue.png"); 
    //icongreen = new GIcon(icon,"http://labs.google.com/ridefinder/images/mm_20_green.png"); 
    //iconyellow = new GIcon(icon,"http://labs.google.com/ridefinder/images/mm_20_yellow.png"); 
   // om.Set('<b>Een Ogenblik geduld a.u.b...</b>');
		   
   request.open('GET', path, true);
   request.onreadystatechange = function(){		
	if (request.readyState == 4){
		var data = request.responseXML;
		var batch = [];
		if (debug) GLog.write("iterating:" + zoeklokatie);
		placemarks = data.documentElement.getElementsByTagName("Placemark");
		for(var i=0; i<placemarks.length; i++){
//			var px = parseFloat(placemarks[i].getElementsByTagName("fpx")[0].childNodes[0].nodeValue-0.00098);
//			var py = parseFloat(placemarks[i].getElementsByTagName("fpy")[0].childNodes[0].nodeValue-0.00023);
			var px = parseFloat(placemarks[i].getElementsByTagName("fpx")[0].childNodes[0].nodeValue);
			var py = parseFloat(placemarks[i].getElementsByTagName("fpy")[0].childNodes[0].nodeValue);
			var point = new GLatLng(px,py);
			var name = placemarks[i].getElementsByTagName("mp")[0].childNodes[0].nodeValue;
			//if (debug) GLog.write("lokatie:" + name);
			if (zoeklokatie == placemarks[i].getElementsByTagName("WG")[0].childNodes[0].nodeValue || zoeklokatie==name) {
				var marker = new createMarker2(map,point,name,icon2);
				if (debug) GLog.write("zoeklocatie gevonden:" + name);
				//coord_zl=point;
				//map.addOverlay(marker);
				//map.setCenter(point, 16 );
				mm.addMarker(marker,10,19);
				} 
			else { 
				var marker = new createMarker2(map,point,name,icon);
				}
			batch.push(marker);
			}
		if (debug) GLog.write("found: " + placemarks.length + " markers");
		mm.clearMarkers();
		mm.addMarkers(batch,15,19);
		mm.refresh();
        //om.Clear();
		}
	}
     request.send(null);	
};

