//
// Depending on wmsGoogleMap8.js
//
var geomoverlay, geom_id, geom_item, new_geom;
var arrGeomoverlays = new Array();
var linecolor1 = "#FF0000";
var defcolor;
var linecolor2 = "#fb7e19";

function removeOLGeoms()
{
  //remove all geoms from map
  for (g=0;g<arrGeomoverlays.length;g++)
  {
  	geomoverlay = arrGeomoverlays[g];
  	googleMap.removeOverlay(geomoverlay);
  }
  //clear arrGeomoverlays Array.
  arrGeomoverlays.length = 0;
  geom_id = null; 
  geom_item = null;
}

function drawGeoms(xmlDoc,doBestFit,doPopup) {

  removeOLGeoms();

  var x=xmlDoc.getElementsByTagName("item");  

  if (x.length == 0)
  {
    theError = 'Deze waterloop is niet gevonden. Probeer het svp opnieuw.';
    
    var divError = document.getElementById('message');
    //opmaak foutmelding
    theError = '<div class="message">' + theError + '</div>';
    //tonen melding
    divError.innerHTML = theError;
    return;
  }
  
  for (var i=0;i<x.length;i++)
  {
	  var id = x[i].getElementsByTagName("id")[0].childNodes[0].nodeValue;
	  var obj_name = x[i].getElementsByTagName("obj_name")[0].childNodes[0].nodeValue;

	  //polygon_id => geom_id
	  geom_id = id;
	  try {
	   	var geom = x[i].getElementsByTagName("geom")[0].childNodes[0].nodeValue;
	  }
	  catch(e)
	  {
	  	alert('Niet alle waterlopen konden getoond worden op de kaart');		
			continue;
	  }
    //polygon_geom => geom_item
    geom_item = geom;
		var html = '';
    //determine geometry type:
    startpos = geom.indexOf(";")+1;
    lngth = geom.indexOf("(") - startpos;
    geom_type = geom.substr(startpos, lngth);
    
  	if (geom_type == 'POLYGON')
		{
	    //cut the geom in pieces and draw a GPolygon
	    var coords = geom.substr(geom.indexOf("((")+2);
	    coords = coords.substr(0,coords.length-2);	

	    var arrCoords = coords.split(',');
	    var latLngArray = new Array();
	    for (var j=0;j<arrCoords.length;j++)
	    {
	      var arrOrd = arrCoords[j].split(' ');
	      latLngArray[latLngArray.length] = new GLatLng(Number(arrOrd[1]),Number(arrOrd[0]));
	    }
	    // Create new geomoverlay
	    new_geom = createPolygonOrLine(latLngArray, geom_id, 'POLYGON');
	    arrGeomoverlays[arrGeomoverlays.length] = new_geom;
	    googleMap.addOverlay(new_geom);
		}
		else if (geom_type == 'LINESTRING')
		{
			//cut the geom in pieces and draw a GPolyline
			var coords = geom.substr(geom.indexOf("(")+1);
			coords = coords.substr(0,coords.length-1);	

			var arrCoords = coords.split(',');
			var latLngArray = new Array();
			for (var j=0;j<arrCoords.length;j++)
			{
				var arrOrd = arrCoords[j].split(' ');
				latLngArray[latLngArray.length] = new GLatLng(Number(arrOrd[1]),Number(arrOrd[0]));
			}
			// Create new geomoverlay
			new_geom = createPolygonOrLine(latLngArray, geom_id, 'POLYLINE');
			arrGeomoverlays[arrGeomoverlays.length] = new_geom;
			googleMap.addOverlay(new_geom);
		}
		else if (geom_type == 'POINT')
		{
	 	var coords = geom.substr(geom.indexOf("(")+1);
			coords = coords.substr(0,coords.length-1);	

			var puntCoords = coords.split(' ');
			var punt = new GLatLng(puntCoords[1], puntCoords[0]);
			
			new_geom = createMarker(punt, html);
			arrGeomoverlays[arrGeomoverlays.length] = new_geom;
			googleMap.addOverlay(new_geom);
    }
		else
		{
			alert('Kan nog geen geoms van type "'+geom_type+'" tekenen');
		}
  }
  
  //check extent
  var xtnt=xmlDoc.getElementsByTagName("geomextent");  
   
  if (xtnt.length != 0)
  {
    for (var nx=0;nx<xtnt.length;nx++)
  	{
    	var extbbox = xtnt[nx].getElementsByTagName("extent")[0].childNodes[0].nodeValue;
			if (extbbox != null)
			{
				var coords = extbbox.substr(extbbox.indexOf("(")+1);
				coords = coords.substr(0,coords.length-1);
				//alert('extent : '+coords);
				var arrCoords = coords.split(',');
				var lowleft = arrCoords[0].split(' ');
				var upright = arrCoords[1].split(' ');
				var gbounds = new GLatLngBounds(new GLatLng(Number(lowleft[1]),Number(lowleft[0])),new GLatLng(Number(upright[1]),Number(upright[0]))); 
				
				if (doBestFit)
				bestFit(googleMap,gbounds);
			}
			else
			{
			 alert('bbox = null, kan niet inzoomen naar selectie');
			} 
		}
  }
  else
  {
    alert('Geen bbox meegekregen, kan niet inzoomen naar selectie');
    return;
  }
  
  // show a popup
  if (doPopup) {

  	//check cetroid
	  var xtctr=xmlDoc.getElementsByTagName("geomcentroid");  
	  var drawGeom = false;
	   
	  if (xtctr.length != 0)
	  {
	    for (var c=0;c<xtctr.length;c++)
	  	{
	    	var centroid = xtctr[c].getElementsByTagName("centroid")[0].childNodes[0].nodeValue;
				if (centroid != null)
				{
	 				var coords = centroid.substr(centroid.indexOf("(")+1);
 				
					coords = coords.substr(0,coords.length-1);	

					var puntCoords = coords.split(' ');
					var punt = new GLatLng(puntCoords[1], puntCoords[0]);
					//open the poup
					showPlanBallon(id, punt, drawGeom);
				}
				else
				{
				 alert('Geen centroide, kan de Info Popup niet tekenen.');
				} 
			}
	  }
	  else
	  {
	    alert('Geen centroide, kan de Info Popup niet tekenen.');
	    return;
	  }
  	
  	
  }
  
  //	
  // Create a lettered icon for this point using our icon class
  //
	function createMarker(point, html) {
	
		var marker = new GMarker(point);
	
		GEvent.addListener(marker, "click", function() {
			marker.openInfoWindowHtml(html);
		});
		return marker;
	}
	//
	// Create polyline or polygon
	//
	function createPolygonOrLine(latLngArr, idnr, PolyOrLine) {
		
		var drawGeom = true;
    defcolor = (defcolor==linecolor1)?linecolor2:linecolor1;
    
    
  	if (PolyOrLine == 'POLYGON')
		{
    	geomoverlay = new GPolygon(latLngArr, defcolor, 3,.8,defcolor,.8);
    }
    else
    {
    	geomoverlay = new GPolyline(latLngArr, defcolor, 7,.8,defcolor,.8);
    }
	  original_latlong = latLngArr;
		GEvent.addListener(geomoverlay, "mouseover", function()
		{    
			geomoverlay.opacity = 1;
			geomoverlay.redraw(true);
		});
		GEvent.addListener(geomoverlay, "mouseout", function()
		{    
			geomoverlay.opacity = 0.8;
			geomoverlay.redraw(true);
		});
		GEvent.addListener(geomoverlay, "click", function(point)
	  {    
	  	showPlanBallon(idnr, point, drawGeom);
	  	//googleMap.openInfoWindowHtml(point, html)
	  });
		return geomoverlay;
	}

	//sluit thickbox
	tb_remove();


  /*
  Example of coordstring:    
  SRID=4326;POLYGON((4.9916850848834 52.804822183528,4.98960943786288
   52.8066242312248,4.98960940708677 52.8066242398842,4.98757139573525 52.8083934200413,4.98747350745971
   52.808373269249,4.98738215356162 52.8083521209636,4.98679231853644 52.8082033189097,4.9860307048 52
  .8079968863417,4.98327328549924 52.8072863585294,4.98222829756586 52.8070165845909,4.98088867297346 52
  .8066744308025,4.98058485936489 52.806600602843,4.98076182240619 52.8064441722233,4.98078758118668 52
  .8064551687988,4.98083505464801 52.8064630762597,4.98086132854965 52.8064619361803,4.98090735943587 52
  .8064554864183,4.98368939415659 52.8040550287912,4.98574217061765 52.8022815496025,4.9857628308791 52
  .802279373146,4.9857824151477 52.802278124765,4.98581234658215 52.8022757896656,4.9916835628742 52.8048215213243
  ,4.9916850848834 52.804822183528))   


  */

}

