	var map = null;
	var maptypecontrol = null;
	var container = null;
	
	var zoom = 12;
	var minzoom = 12;
	var contouren = "lden";
	var geluidsoort = "weg";
	var nognietgemeld = true;

	var tilelayeroverlay = null;
	var largemapcontrol = null;
	var smallmapcontrol =  null;
	var smallzoomcontrol = null;
	var scalecontrol = null;
	var overviewmapcontrol = null;
	var geocoder = null;					
	var straatnaam = null;
	var huisnummer = null;
	var coordinatenwaarde = null;
	
	var halmarkers = [];
	var halhtmls = [];
	var hallats = [];
	var hallons = [];
	var i = 0;	
			
	var icon = new GIcon();
	icon.image = "images/marker.png";
	icon.shadow = "images/markerschaduw.png";
	icon.iconSize = new GSize(20, 34);
	icon.shadowSize = new GSize(37, 34);
	icon.iconAnchor = new GPoint(9, 34);
	icon.infoWindowAnchor = new GPoint(9, 2);
	icon.infoShadowAnchor = new GPoint(18, 25);
	
	function createMarker(point,html) 
	{
		var marker = new GMarker(point,icon);
        GEvent.addListener(marker, "click", function() {marker.openInfoWindowHtml(html);});
		return marker;
	}
	
	function load() 
	{
		if (GBrowserIsCompatible()) 
		{
			map = new GMap2(document.getElementById("map"));
			maptypecontrol = new GMapTypeControl();
			largemapcontrol = new GLargeMapControl();
			overviewmapcontrol = new GOverviewMapControl();
			geocoder = new GClientGeocoder();
			
			var mt = map.getMapTypes();
			for (var i=0; i<mt.length; i++) 
			{
				mt[i].getMaximumResolution = function() {return 17;}
			}

			map.addControl(largemapcontrol);
			map.addControl(maptypecontrol);
			map.addControl(overviewmapcontrol);
			map.setCenter(new GLatLng(52.027148, 5.102119), 12);
			GEvent.addListener(map, "zoomend", ToonContouren);
			GEvent.addListener(map, "click", ToonContouren);
			GEvent.addListener(map, "maptypechanged", ToonContouren);

			ToonContouren();
			
			document.getElementById("TeZoekenStraatnaam").focus();
		}
		else 
		{
			alert("Sorry, de Google Maps API is niet compatible met deze browser");
		}
	}

	function ToonContouren()
	
	{	
		if ((map.getZoom() < minzoom) && (nognietgemeld))
		{
			alert('Vanaf dit zoomniveau zijn er geen geluidcontouren meer te zien');
			nognietgemeld = false;
		}
	
		if (GBrowserIsCompatible(tilelayeroverlay)) 
		{	
			if (tilelayeroverlay != null)
			{
				map.removeOverlay(tilelayeroverlay);
			}

			zoom = map.getZoom();

			if (geluidsoort != 'geen')
			{
				var tilelayer = new GTileLayer(new GCopyrightCollection(""), zoom, zoom+1); 
				tilelayer.getTileUrl = function(a,b) { 
				b=this.maxResolution()-b; 
				//TvT Let op: harde verwijzing! :
				var file = "./contouren/" + geluidsoort + "/" + contouren + "/" + zoom + "/" + a.x + "/" + a.y + ".png"; 
				return file; 
				} 
				tilelayer.isPng = function() {return true;} 
				tilelayeroverlay = new GTileLayerOverlay(tilelayer); 

				map.addOverlay( tilelayeroverlay ); 
			}

			if (geluidsoort == 'geen')
			{
				document.getElementById('legenda').innerHTML = '<table width="100%"><tr><td class="tekstgroot">&nbsp;</td></tr></table>';
			}
			else
			{
				if (contouren == 'lden')
				{
					document.getElementById('legenda').innerHTML = '<table> \
					<tr><td colspan=2 class="tekstgroot" align="left">Legenda</td>\
					</tr><tr>\
					<td width="24" class="klasse2"></td><td align="left"><span class="tekstklein">= Levendig</span></td> \
					<td width="24" class="klasse3"></td><td align="left"><span class="tekstklein">= Luid</span></td> \
					<td width="24" class="klasse4"></td><td align="left"><span class="tekstklein">= Erg luid</span></td> \
					<td width="24" class="klasse5"></td><td align="left" ><span class="tekstklein">= Lawaaiig</span></td> \
					<td width="24" class="klasse6"></td><td align="left"><span class="tekstklein">= Zeer lawaaiig</span></td></tr> \
					</table>';
				}
		
				if (contouren == 'lnight')
				{
					document.getElementById('legenda').innerHTML = '<table> \
					<tr><td colspan=2 class="tekstgroot"  align="left">Legenda</td> \
					</tr><tr> \
					<td width="24" class="klasse1"></td><td align="left"><span class="tekstklein">= Levendig</span></td> \
					<td width="24" class="klasse2"></td><td align="left"><span class="tekstklein">= Luid</span></td> \
					<td width="24" class="klasse3"></td><td align="left"><span class="tekstklein">= Erg luid</span></td> \
					<td width="24" class="klasse4"></td><td align="left"><span class="tekstklein">= Lawaaiig</span></td> \
					<td width="24" class="klasse5"></td><td align="left"><span class="tekstklein">= Zeer lawaaiig</span></td></tr> \
					</table>';
				}
			}
		}
	}

	function WijzigGeluidsoort(GeluidsoortType)
	{
		if (GeluidsoortType == 'lucht') 
		{
			alert('Geluidcontouren voor de luchtvaart zijn niet beschikbaar in deze demo.');
			return true;
		}

		geluidsoort = GeluidsoortType;

		document.getElementById("geluidsoorttypeweg").src="./images/autoneer.gif";
		document.getElementById("geluidsoorttypespoor").src="./images/treinneer.gif";
		document.getElementById("geluidsoorttypeindustrie").src="./images/industrieneer.gif";
		document.getElementById("geluidsoortgeen").src="./images/geenneer.gif";

		if (geluidsoort == 'weg')
		{
			document.getElementById("geluidsoorttypeweg").src="./images/auto.gif";
		};

		if (geluidsoort == 'spoor')
		{
			document.getElementById("geluidsoorttypespoor").src="./images/trein.gif";
		};

		if (geluidsoort == 'industrie')
		{
			document.getElementById("geluidsoorttypeindustrie").src="./images/industrie.gif";
		};

		if (geluidsoort == 'geen')
		{
			document.getElementById("geluidsoortgeen").src="./images/geen.gif";
		};

		ToonContouren();
	}

	function WijzigContouren(ContourenType)
	{
		contouren = ContourenType;

		document.getElementById("periodelden").src="images/ldenneer.gif";
		document.getElementById("periodelnight").src="images/lnightneer.gif";


		if (contouren == 'lden')
		{
			document.getElementById("periodelden").src="./images/lden.gif"
		};

		if (contouren == 'lnight')
		{
			document.getElementById("periodelnight").src="./images/lnight.gif"
		};

		ToonContouren();
	}
	
	function AdresOpKaart(response) 
	{
		map.clearOverlays();
		ToonContouren();
		
		if (!response || response.Status.code != 200) 
		{
				alert('Het door u opgegeven adres "' + straatnaam + ' ' + huisnummer + ' in Nieuwegein" is niet gevonden door Google Maps.');
				document.getElementById("TeZoekenStraatnaam").focus();
				document.getElementById("TeZoekenStraatnaam").select();		
		}
		else
		{
			place = response.Placemark[0];

			if (place.AddressDetails.Accuracy < 6) 
			{
				alert('Het door u opgegeven adres "' + straatnaam + ' ' + huisnummer + ' in Nieuwegein" is niet gevonden door Google Maps.');
				document.getElementById("TeZoekenStraatnaam").focus();
				document.getElementById("TeZoekenStraatnaam").select();		
			}
			else
			{
				if (place.address.indexOf("Nieuwegein") < 0) 
				{
					alert('Het door u opgegeven adres "' + straatnaam + ' ' + huisnummer + ' in Nieuwegein" is niet gevonden door Google Maps.');
					document.getElementById("TeZoekenStraatnaam").focus();
					document.getElementById("TeZoekenStraatnaam").select();		
				}
				else
				{
					point = new GLatLng(place.Point.coordinates[1],
							place.Point.coordinates[0]);

					hetadres = place.address.replace(/,/g,"<br>");
					tempadres = hetadres.replace("Nieuwegein (Utrecht)<br>","");
					gevondenadres = tempadres.replace("The Netherlands","Nederland");
					gevondenadres = gevondenadres.replace("Netherlands","Nederland");

					if (place.AddressDetails.Accuracy == 6)
					{
						htmlstring = '<table><tr align="left"><td class="tekstgroot">Gevonden adres:</td></tr><tr align="left"><td class="tekstklein">' + gevondenadres + '<br><br>(opgegeven huisnummer niet gevonden)</td></tr></table>';
					}

					if (place.AddressDetails.Accuracy == 8)
					{
						htmlstring = '<table><tr align="left"><td class="tekstgroot">Gevonden adres:</td></tr><tr align="left"><td class="tekstklein">' + gevondenadres + '</td></tr></table>';
					}

					marker = createMarker(point, htmlstring);
					map.addOverlay(marker);
					map.setCenter(point,16);
					marker.openInfoWindowHtml(htmlstring);
				}
			}
		}
	}

	function ZoekAdres()
	{	
		var juisteinvoer = true;
		straatnaam = document.getElementById("TeZoekenStraatnaam").value;
		huisnummer = document.getElementById("TeZoekenHuisnummer").value;

		if (straatnaam.length < 1) 
		{
			alert("U dient eerst een straatnaam in te voeren.");
			document.getElementById("TeZoekenStraatnaam").focus();
			juisteinvoer = false;
		}
		
		if (juisteinvoer)
		{
			var codeerstring = straatnaam + ',' + huisnummer + ',' + ',Nieuwegein,Netherlands';
			geocoder.getLocations(codeerstring, AdresOpKaart);
		}
	}

	function enterKnop(e)
	{ 
	   var key = e.keyCode || e.which; 
	   if (key==13)
	   { 
		   ZoekAdres(); 
	   } 
	} 

	function MM_displayStatusMsg(msgStr) 
	{
	  status=msgStr;
	  document.MM_returnValue = true;
	}

	function ToonInformatie()
	{
		kaart = window.open('informatie.htm','infowindow','toolbar=no,width=800,height=600,directories=no,status=no,scrollbars=yes,resizable=no,menubar=no');
	}

	function MM_swapImgRestore() { //v3.0
	  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;

		document.getElementById("geluidsoorttypeweg").src="./images/autoneer.gif";
		document.getElementById("geluidsoorttypespoor").src="./images/treinneer.gif";
		document.getElementById("geluidsoorttypeindustrie").src="./images/industrieneer.gif";
		document.getElementById("geluidsoortgeen").src="./images/geenneer.gif";

		if (geluidsoort == 'weg')
		{
			document.getElementById("geluidsoorttypeweg").src="./images/auto.gif";
		};

		if (geluidsoort == 'spoor')
		{
			document.getElementById("geluidsoorttypespoor").src="./images/trein.gif";
		};

		if (geluidsoort == 'lucht')
		{
			document.getElementById("geluidsoorttypelucht").src="./images/lucht.gif";
		};

		if (geluidsoort == 'industrie')
		{
			document.getElementById("geluidsoorttypeindustrie").src="./images/industrie.gif";
		};

		if (geluidsoort == 'geen')
		{
			document.getElementById("geluidsoortgeen").src="./images/geen.gif";
		};

		document.getElementById("periodelden").src="images/ldenneer.gif";
		document.getElementById("periodelnight").src="images/lnightneer.gif";


		if (contouren == 'lden')
		{
			document.getElementById("periodelden").src="./images/lden.gif"
		};

		if (contouren == 'lnight')
		{
			document.getElementById("periodelnight").src="./images/lnight.gif"
		};
	}
	
	function MM_preloadImages() { //v3.0
	  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
		var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
		if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
	}
	
	function MM_findObj(n, d) { //v4.0
	  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
		d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	  if(!x && document.getElementById) x=document.getElementById(n); return x;
	}
	
	function MM_swapImage() { //v3.0
	  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
	   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
	}


