

var map;
var maplarge;
var polyShape;
var MiniMapPolyShape;
var polygonMode;
var polygonDepth = "20";
var polyPoints = Array();
var drawMode;
var oldMarker;
var marker;
var geocoder = null;
var geoposmarker;
var globaliso;

var fillColor = "#0000FF"; // blue fill
var lineColor = "#0000FF"; // black line
var opacity = ".8";
var lineWeight = "4";

var kmlFillColor = "7dff0000"; // half-opaque blue fill



// Create our custom marker icon
var CustomIcons = Array();
CustomIcons['regio'] = new GIcon();
CustomIcons['regio'].image = "/images/icons/map/regio.png";
CustomIcons['regio'].iconSize = new GSize(32, 32);
CustomIcons['regio'].iconAnchor = new GPoint(16, 30);
CustomIcons['regio'].infoWindowAnchor = new GPoint(16, 1);

CustomIcons['accommodatie'] = new GIcon();
CustomIcons['accommodatie'].image = "/images/icons/map/accommodatie.png";
CustomIcons['accommodatie'].iconSize = new GSize(32, 32);
CustomIcons['accommodatie'].iconAnchor = new GPoint(16, 30);
CustomIcons['accommodatie'].infoWindowAnchor = new GPoint(16, 1);

var egeoxmliconstr;
var egeoxmlicon;
var egeoxmliconimg;

function ShowGeoDataInput(addressfield) 
{
	if(addressfield)
	{
		var searchstring = $('addressfield').value;
		showAddress(searchstring, true);
		
	}
}

function loadMap(startlat, startlng, centerlat, centerlng, zoom, maptype) 
{


  if (GBrowserIsCompatible()) 
  {
        map = new GMap2(document.getElementById("gmap"));
        
        if(!centerlat)
        	centerlat = '-7.3828125';	
        if(!centerlng)
        	centerlng = '26.43122806450644';	
        if(!zoom)
        	zoom = 5;			
        if(!maptype)
        	maptype = G_NORMAL_MAP;		
        	
        
        map.setCenter(new GLatLng(centerlat, centerlng), zoom, maptype);
        
   	    map.addControl(new GLargeMapControl());
	    map.addControl(new GMapTypeControl());
	    map.enableContinuousZoom();
	    geocoder = new GClientGeocoder();		
		
		
		//is er een bestaand punt meegegeven? (in geval van edit)
		if(startlat && startlng)
		{
			var point = new GLatLng(startlat, startlng);
			geoposmarker = new GMarker(point, {});
			map.addOverlay(geoposmarker);
			map.panTo(point);
		
			//CreateGeoPosMarker(point);
		}
	}
}

function loadCountryMap(centerlat, centerlng, zoom, maptype, iso) 
{
  if (GBrowserIsCompatible()) 
  {
        map = new GMap2($('gmap'));
        
        if(!centerlat)
        	centerlat = '-7.3828125';	
        if(!centerlng)
        	centerlng = '26.43122806450644';	
        if(!zoom)
        	zoom = 5;			
        if(!maptype)
        	maptype = G_NORMAL_MAP;		
        
        map.setCenter(new GLatLng(centerlat, centerlng), zoom, maptype);
        
   	    map.addControl(new GLargeMapControl());
	    map.addControl(new GMapTypeControl());
	    map.enableContinuousZoom();
	    
	    
	    
	    //toon de landkml dmv egeoxml
	    egeoxmliconstr = 'regio';
	    var kmlurl = 'http://www.allovertours.com/feeds/kml/nl/regios/'+iso+'/1284115252/';
	    var exml = new EGeoXml("exml", map, kmlurl, { createmarker:createEgeoMarker, nozoom:true});
	    exml.parse();
	    		
	    
	    
	    
	    //geocoder = new GClientGeocoder();
	    
	    //alle regio's in dit land tonen
	    //var gx = new GGeoXml('http://www.allovertours.com/feeds/kml/nl/regios/'+iso+'/1284115252/');
		//map.addOverlay(gx);
		
		
		//var map=new GMap2(document.getElementById("gmap"));
	    //map.setCenter(new GLatLng(0,0),2);
	    //map.addControl(new GLargeMapControl());
	    //map.addControl(new GMapTypeControl());
	    
	    
	    
	   
	}
}


function createEgeoMarker(point, name, html, style) 
{

	var Icon = CustomIcons[egeoxmliconstr];

	var descfinal = '<strong>'+name+'</strong><p style="width: 300px;">'+html+'</p>';
	
	//indien er een url is opgegegev, extra regel in de naam
	
	if(html != '')
	{
		var tmpstr = html.substr(0,4);
		if(tmpstr == 'url:')
		name = name + ' - Klik voor meer informatie';			
	}
	
	
    var marker = new GMarker(point, {icon:Icon, title:name});
    if(html != '')
    {
    	//var tmpstr = html.substr(0,4);
    	
		
		
		if(tmpstr == 'url:')
		{
			var url = html.substr(4, html.length);
		
			GEvent.addListener(marker, "click", function() {
		      window.location = url;
		    });
		}
		else
		{
		    GEvent.addListener(marker, "click", function() {
		      marker.openInfoWindowHtml(descfinal);
		    });
		}    
	}
	
	
	
    // The new marker "mouseover" listener        
    GEvent.addListener(marker,"mouseover", function() {
      //marker.openInfoWindowHtml(descfinal);
      marker.setImage("/images/icons/map/"+egeoxmliconstr+"_hover.png");
    });        
    // The new marker "mouseout" listener        
    GEvent.addListener(marker,"mouseout", function() {
      //marker.openInfoWindowHtml(descfinal);
      marker.setImage("/images/icons/map/"+egeoxmliconstr+".png");
    });        
    //marker = createMarker(point, desc);	
    
   
    
	map.addOverlay(marker);
}
					
				
				    


function loadRegioMap(centerlat, centerlng, zoom, maptype, regioid) 
{
  if (GBrowserIsCompatible()) 
  {
        map = new GMap2($('gmap'));
        
        if(!centerlat)
        	centerlat = '-7.3828125';	
        if(!centerlng)
        	centerlng = '26.43122806450644';	
        if(!zoom)
        	zoom = 5;			
        if(!maptype)
        	maptype = G_NORMAL_MAP;		
        
        map.setCenter(new GLatLng(centerlat, centerlng), zoom, maptype);
        
   	    map.addControl(new GLargeMapControl());
	    map.addControl(new GMapTypeControl());
	    map.enableContinuousZoom();
	    
	    
	    //toon de landkml dmv egeoxml
	    egeoxmliconstr = 'accommodatie';
	    var kmlurl = 'http://www.allovertours.com/feeds/kml/nl/acc/'+regioid+'/1284115252/';
	    var exml = new EGeoXml("exml", map, kmlurl, { createmarker:createEgeoMarker, nozoom:true});
	    exml.parse();
	    
	    //geocoder = new GClientGeocoder();
	    		
	    //alle regio's in dit land tonen
	    //var gx = new GGeoXml('http://www.allovertours.com/feeds/kml/nl/acc/'+regioid+'/1284115252/');
		//map.addOverlay(gx);
	   
	}
}


function loadAccommodatieMap(centerlat, centerlng, zoom, maptype, accid) 
{
  if (GBrowserIsCompatible()) 
  {

        map = new GMap2($('gmap'));
        
        if(!centerlat)
        	centerlat = '-7.3828125';	
        if(!centerlng)
        	centerlng = '26.43122806450644';	
        if(!zoom)
        	zoom = 5;			
        if(!maptype)
        	maptype = G_NORMAL_MAP;		
        
        map.setCenter(new GLatLng(centerlat, centerlng), zoom, maptype);
        
   	    map.addControl(new GLargeMapControl());
	    map.addControl(new GMapTypeControl());
	    map.enableContinuousZoom();

	    
	    //toon de landkml dmv egeoxml
	    egeoxmliconstr = 'accommodatie';
	    var kmlurl = 'http://www.allovertours.com/feeds/kml/nl/accommodatie/'+accid+'/1284115252/';
	    var exml = new EGeoXml("exml", map, kmlurl, { createmarker:createEgeoMarker, nozoom:true});
	    exml.parse();
	    
	    
	    //geocoder = new GClientGeocoder();
	    		
	    //alle accommodaties's in dit land tonen
	    //var gx = new GGeoXml('http://www.allovertours.com/feeds/kml/nl/accommodatie/'+accid+'/1284115252/');
		//map.addOverlay(gx);
	   
	}
}


function loadReisMap(centerlat, centerlng, zoom, maptype, regioid) 
{
  if (GBrowserIsCompatible()) 
  {
        map = new GMap2($('gmap'));
        
        if(!centerlat)
        	centerlat = '-7.3828125';	
        if(!centerlng)
        	centerlng = '26.43122806450644';	
        if(!zoom)
        	zoom = 5;			
        if(!maptype)
        	maptype = G_NORMAL_MAP;		
        
        map.setCenter(new GLatLng(centerlat, centerlng), zoom, maptype);
        
   	    map.addControl(new GLargeMapControl());
	    map.addControl(new GMapTypeControl());
	    map.enableContinuousZoom();
	    
	    
	    //toon de landkml dmv egeoxml
	    egeoxmliconstr = 'regio';
	    var kmlurl = 'http://www.allovertours.com/feeds/kml/nl/voorbeeldreis/'+regioid+'/1284115252/';
	    
	    var exml = new EGeoXml("exml", map, kmlurl, { createmarker:createEgeoMarker, nozoom:true});
	    exml.parse();
	    
	    geocoder = new GClientGeocoder();
	    		
	    //alle regio's in dit land tonen
	    //var gx = new GGeoXml('http://www.allovertours.com/feeds/kml/nl/voorbeeldreis/'+regioid+'/1284115252/');
		//map.addOverlay(gx);
	   
	}
}


function SaveZoomAndMaptype()
{
	
	var zoom = map.getZoom();
	var center = map.getCenter();
	var maptype = map.getCurrentMapType();
	
	center = center.toString();
	maptype = maptype.getName();
	
	if(maptype == 'Map')
		maptype = 'normal';
		
	var test = center.split(', ');
	var centerlat = test[0].substring(1,test[0].length);
	var centerlng = test[1].substring(0,test[1].length - 1);
	
	
	
	//zet hidden fields op juiste waarden
	if($('geocenterlat'))
		$('geocenterlat').value = centerlat;
	if($('geocenterlng'))
		$('geocenterlng').value = centerlng;
	if($('geozoom'))
		$('geozoom').value = zoom;
	if($('geomaptype'))
		$('geomaptype').value = maptype;			
	
	
}



function showAddress(address, drawmarker) 
{
	if (geocoder) 
	{
 		geocoder.getLatLng(address,
   			function(point) 
   			{
     			if (!point) 
     			{
     				alert(address + " not found");
     			} 
     			else 
     			{
       				//clearMap();
       				
       				map.panTo(point);
       				
       				if(drawmarker)
       					CreateGeoPosMarker(point);	
     			}
   			}
 		);
	}
}







//=====================================
//lokatieselector functions
//===================================== 

function CreateGeoPosMarker(point)
{
	if(!geoposmarker)
	{
		geoposmarker = new GMarker(point, {draggable: true, title: "sleep om te verplaatsen", dragCrossMove: true});
		map.addOverlay(geoposmarker);
		map.panTo(point);	
		
		$('geolong').value = point.lng();
		$('geolat').value = point.lat();
		
		GEvent.addListener(geoposmarker, "dragend", function() {

	  		p = this.getPoint().toUrlValue();
	    	geopoint = this.getPoint();
						
			$('geolong').value = geopoint.lng();
			$('geolat').value = geopoint.lat();

			map.panTo(geopoint);	
			
			//reversegeocode country iso
			//ReverseGeocodeCountry(geopoint);	
	  	});
	}
	else
	{
		geoposmarker.setPoint(point);
		$('geolong').value = point.lng();
		$('geolat').value = point.lat();
		map.panTo(point);
	}	
}


function loadMiniMap(startlat, startlng, centerlat, centerlng, zoom, maptype) 
{
  if (GBrowserIsCompatible()) 
  {
        map = new GMap2(document.getElementById("map"));
        
        if(!centerlat)
        	centerlat = '-7.3828125';	
        if(!centerlng)
        	centerlng = '26.43122806450644';	
        if(!zoom)
        	zoom = 5;			
        if(!maptype)
        	maptype = G_NORMAL_MAP;		
        	
        
        map.setCenter(new GLatLng(centerlat, centerlng), zoom, maptype);
        
   	    map.addControl(new GLargeMapControl());
	    map.addControl(new GMapTypeControl());
	    map.enableContinuousZoom();
	    GEvent.addListener(map, 'click', miniMapClick);
		geocoder = new GClientGeocoder();
		
		//is er een bestaand punt meegegeven? (in geval van edit)
		if(startlat && startlng)
		{
			var point = new GLatLng(startlat, startlng);
			CreateGeoPosMarker(point);
		}
	}
}



function loadPreviewMap(startlat, startlng, centerlat, centerlng, zoom, maptype) 
{


  if (GBrowserIsCompatible()) 
  {
        map = new GMap2(document.getElementById("map"));
        
        if(!centerlat)
        	centerlat = '-7.3828125';	
        if(!centerlng)
        	centerlng = '26.43122806450644';	
        if(!zoom)
        	zoom = 5;			
        if(!maptype)
        	maptype = G_NORMAL_MAP;		
        	
        
        map.setCenter(new GLatLng(centerlat, centerlng), zoom, maptype);
        
   	    map.addControl(new GLargeMapControl());
	    map.addControl(new GMapTypeControl());
	    map.enableContinuousZoom();
	    geocoder = new GClientGeocoder();		
		
		
		//is er een bestaand punt meegegeven? (in geval van edit)
		if(startlat && startlng)
		{
			var point = new GLatLng(startlat, startlng);
			geoposmarker = new GMarker(point, {});
			map.addOverlay(geoposmarker);
			map.panTo(point);
		
			//CreateGeoPosMarker(point);
		}
	}
}


function miniMapClick(marker, clickedPoint)
{
	//reversegeocode country iso
	//ReverseGeocodeCountry(clickedPoint);

	/*
	if(geoposmarker)
	{
		geoposmarker.setPoint(clickedPoint);
		map.panTo(clickedPoint);
	}
	else
	*/
		CreateGeoPosMarker(clickedPoint);
}

function SetAndShowCountry(countryinfo)
{
	var countryinfoarr = Array();
	
	//indien land leeg, alle velden leeg
	if(!countryinfo)
	{
		countryinfoarr[0] = '';
		countryinfoarr[1] = '';
		countryinfoarr[2] = '';
		countryinfoarr[3] = '';
		countryinfoarr[4] = '';
		countryinfoarr[5] = '';
		countryinfoarr[6] = '';
	}
	else
	{
		var countryinfoarr = countryinfo.split(';');
	}

	//zet hidden fields op juiste waarden
	if($('geoiso'))
		$('geoiso').value = countryinfoarr[0];
	if($('geoname'))	
		$('geoname').value = countryinfoarr[1];
	if($('geocontinent'))	
		$('geocontinent').value = countryinfoarr[2];
	if($('geobBoxWest'))
		$('geobBoxWest').value = countryinfoarr[3];
	if($('geobBoxNorth'))
		$('geobBoxNorth').value = countryinfoarr[4];
	if($('geobBoxEast'))
		$('geobBoxEast').value = countryinfoarr[5];
	if($('geobBoxSouth'))
		$('geobBoxSouth').value = countryinfoarr[6];
	
	//indien boundbox waarden bekend, toon bijbehorende land op de kaart
	if(countryinfoarr[3] && countryinfoarr[4] && countryinfoarr[5] && countryinfoarr[6])
	{
		var bounds = new GLatLngBounds(new GLatLng(countryinfoarr[6], countryinfoarr[3]), new GLatLng(countryinfoarr[4], countryinfoarr[5]));
		geocoder.setBaseCountryCode(countryinfoarr[0]);
		map.setZoom(map.getBoundsZoomLevel(bounds));
		var center = bounds.getCenter();
		
		//panto geef om eoa reden ineens wazige js errros...
		//map.panTo(center);
		map.setCenter(center);
	}	
}





function clearLokatieSelectorMap()
{
	geoposmarker = null;
	$('addressfield').value = '';
	$('geodatatitle').value = '';
}