//
//Depending on wmsGoogleMap8.js
//

var geomoverlay, geom_id, geom_item, new_geom;
var arrGeomoverlays = new Array();

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;
  
   // Remove previously drawn polygon
	    if (geomoverlay != null){googleMap.removeOverlay(geomoverlay);geom_id = null; geom_item = null;}
  
}

function drawGeoms(xmlDoc) {
  //var xmlDoc = null;
  //remove previously drawn geoms from map
  
  removeOLGeoms();
 
 /* try //Internet Explorer
  {
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async="false";
    xmlDoc.loadXML(xmlstring);
  }
  catch(e)
  {
    try //Firefox, Mozilla, Opera, etc.
    {
      parser=new DOMParser();
      xmlDoc=parser.parseFromString(xmlstring,"text/xml");
    }
    catch(e)
    {
      alert(e.message);
      return;
    }
  } */
  


  var x=xmlDoc.getElementsByTagName("item");  
  
  if (x.length == 0)
  {
    //no parcels are returned.
    alert('Er is op dit punt geen perceel gevonden. Probeer het svp opnieuw.')
    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 objecten konden getoond worden op de kaart');		
		continue;
	   }
    //polygon_geom => geom_item
    geom_item = geom;
    var html = "<b>" + obj_name + "</b> <br> ID : <b>" + geom_id + "</b>";

    //determine geometry type:
    startpos = geom.indexOf(";")+1;
    lngth = geom.indexOf("(") - startpos;
    geom_type = geom.substr(startpos, lngth);
    //alert(geom_type);
    
  	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);	
    	    //alert(coords);
	    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]));
	    }
	   // alert (latLngArray);
	   
	    // Create new geomoverlay
	    new_geom = createPolygonOrLine(latLngArray, html, '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);	
	    	    //alert(coords);
		    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]));
		    }
		   // alert (latLngArray);
		   
		   // Create new geomoverlay
		   new_geom = createPolygonOrLine(latLngArray, html, '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);	
	    	//alert(coords);
	    	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(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]))); 
			bestFit(googleMap,gbounds);
		}
		else
		{
		 alert('bbox = null, kan niet inzoomen naar selectie');
		} 
	}
  }
  else
  {
      alert('Geen bbox meegekregen, kan niet inzoomen naar selectie');
      return;
  }
  	
  
function createMarker(point, html) {
            // Create a lettered icon for this point using our icon class
          
            var marker = new GMarker(point);
  
            GEvent.addListener(marker, "click", function() {
              marker.openInfoWindowHtml(html);
            });
            return marker;
}




function createPolygonOrLine(latLngArr, html, PolyOrLine) {
           
           if (PolyOrLine == 'POLYGON') {
            	geomoverlay = new GPolygon(latLngArr, "#00FFFF", 3,.5,"#00FFFF",.25);
            	}
            	else
            	{
            	geomoverlay = new GPolyline(latLngArr, "#00FFFF", 5,.5,"#00FFFF",.25);
            }
	   	    original_latlong = latLngArr;
	   	   GEvent.addListener(geomoverlay, "mouseover", function()
	   	    {    
	   	    	 	geomoverlay.opacity = 0.7;
	   	           	geomoverlay.redraw(true);
	   	    });
	   	    
	   	    
	   	        GEvent.addListener(geomoverlay, "mouseout", function()
	   	    	    {    
	   	    	    	geomoverlay.opacity = 0.25;
	   	           	geomoverlay.redraw(true);
	   	    });
	   	   
 			GEvent.addListener(geomoverlay, "click", function(point)
	   		{    
	   			googleMap.openInfoWindowHtml(point, html)
	   	    });
	   	    
            return geomoverlay;
}



  /*
  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))   


  */

}

