function startAjax(){
	var xmlhttp = false;
	try {
		xmlhttp = new XMLHttpRequest();
	} catch (trymicrosoft) {
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (othermicrosoft) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (failed) {
				xmlhttp = false;
			}
		}
	}
	return xmlhttp;
}
function search_architect(){
	bwjrvan=document.forms.archi.bwjrvan.value;
	bwjrtot=document.forms.archi.bwjrtot.value;
	architect=document.forms.archi.architect.value;
	getinfobox('search_builder','len&van='+bwjrvan+'&tot='+bwjrtot+'&builder='+architect);
	document.forms.archi.bwjrvan.focus();
}
function getinfobox(object,ID){
	var xmlhttp = startAjax();
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState==4){
			document.getElementById('mapInfoHolder').scrollTop=0;
			document.getElementById('mapInfoHolder').style.display='block';
		//	document.getElementById('map').style.marginLeft='851px';
			var arr = xmlhttp.responseText;
			document.getElementById('InfoContent').innerHTML=arr;
			if(typeof (document.forms.archi.bwjrvan)!="undefined"){
				document.forms.archi.bwjrvan.focus();
			}
		}
	}
	xmlhttp.open("GET", "/info.php?"+object+"="+ID, true);
	xmlhttp.send(null);
}
function closeinfobox(){
	document.getElementById('mapInfoHolder').style.display='none';
}
function closeinfotext(){
	document.getElementById('mapInfoText').style.display='none';
}
function init(){
	// document.body.style.display = "inline";
	checkSize(true);
}
function highlight(FORM){
	FORM.focus();
	FORM.select();
}
function checkSize(isFirst){
	if(window.innerHeight){
		cHeight=window.innerHeight;
	//	cWidth = window.innerWidth;
	} else {
		cHeight=(document.documentElement.clientHeight) ? document.documentElement.clientHeight : document.body.clientHeight;
	//	cWidth  = (document.documentElement.clientWidth) ? document.documentElement.clientWidth : document.body.clientWidth;
	}
	var c=document.getElementById("left");
	c.style.height=(cHeight - 125) + "px";

	var c=document.getElementById("map");
	c.style.height=(cHeight - 125) + "px";
	if(streetViewactive || isFirst){
		var c=document.getElementById("pano");
		c.style.height=(cHeight - 125) + "px";
		//alert(c.offsetWidth);
		c.style.width=(c.offsetWidth - 10)+ "px";
		c.style.display='none';
	}
	var c=document.getElementById("mapInfoHolder");
	c.style.height=(cHeight - 125) + "px";
	
}
var map;
var myPano;   
var panoClient;

var allmarkers = [];
var to_htmls = [];
var from_htmls = [];
var boundry=true;
var geocoder = new GClientGeocoder();

if (GBrowserIsCompatible()){
	//wandelkaart
	var hybridOverlay;
	var mapBounds = new GLatLngBounds(new GLatLng(52.1928084981, 5.1295), new GLatLng(52.258, 5.21300551021));
	var opacity = 0.75;
	
	var mapMinZoom = 12;
	var mapMaxZoom = 19;
	
	var CTransparencyLENGTH = 58;

	function CTransparencyControl( overlay ) {
		this.overlay = overlay;
		this.opacity = overlay.getTileLayer().getOpacity();
	}
	CTransparencyControl.prototype = new GControl();
	CTransparencyControl.prototype.setSlider = function(pos) {
		var left = Math.round((CTransparencyLENGTH*pos));
		this.slide.left = left;
		this.knob.style.left = left+"px";
		this.knob.style.top = "0px";
	}

	CTransparencyControl.prototype.setOpacity = function() {
		opacity = this.slide.left/CTransparencyLENGTH;
		
		this.map.removeOverlay(this.overlay);
		this.map.addOverlay(this.overlay, { zPriority: 0 });
		
		if(overlay_hybrid){
			this.map.addOverlay(hybridOverlay);
		}
	}

	CTransparencyControl.prototype.initialize = function(map) {
		var that=this;
		this.map = map;
		var agent = navigator.userAgent.toLowerCase();
		if ((agent.indexOf("msie") > -1) && (agent.indexOf("opera") < 1)){this.ie = true} else {this.ie = false}
		
		var container = document.createElement("div");
		container.style.width="70px";
		container.style.height="21px";

		if (this.ie){
		  var loader = "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/lay/opacity-slider.png', sizingMethod='crop');";
		  container.innerHTML = '<div style="height:21px; width:70px; ' +loader+ '" ></div>';
		} else {
		  container.innerHTML = '<div style="height:21px; width:70px; background-image: url(/lay/opacity-slider.png)" ></div>';
		}
		if (this.ie) {
		  var loader = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/lay/opacity-slider.png', sizingMethod='crop');";
		  this.knob = document.createElement("div"); 
		  this.knob.style.height="21px";
		  this.knob.style.width="13px";
		  this.knob.style.overflow="hidden";
		  this.knob_img = document.createElement("div"); 
		  this.knob_img.style.height="21px";
		  this.knob_img.style.width="83px";
		  this.knob_img.style.filter=loader;
		  this.knob_img.style.position="relative";
		  this.knob_img.style.left="-70px";
		  this.knob.appendChild(this.knob_img);
		} else {
		  this.knob = document.createElement("div"); 
		  this.knob.style.height="21px";
		  this.knob.style.width="13px";
		  this.knob.style.backgroundImage="url(/lay/opacity-slider.png)";
		  this.knob.style.backgroundPosition="-70px 0px";
		}
		container.appendChild(this.knob);
		this.slide=new GDraggableObject(this.knob, {container:container});
		this.slide.setDraggableCursor('pointer');
		this.slide.setDraggingCursor('pointer');
		this.container = container;
		
		map.getContainer().appendChild(container);

		this.setSlider(this.opacity);

		GEvent.addListener(this.slide, "dragend", function() {that.setOpacity()});
		return container;
	  }

	  CTransparencyControl.prototype.getDefaultPosition = function() {
		return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(7, 47));
	  }

      var side_bar_html = new Array ();
      var gmarkers = [];
		var gicons = [];
		var rrow=1;
		while(rrow<8){
		//Omitting the shadows from your markers will speed up the loading by about 20%. 
			gicons[rrow] = new GIcon(G_DEFAULT_ICON, "http://hilversum.geotalk.nl/lay/gmapicons/"+rrow+".png");
			gicons[rrow].iconSize=new GSize(20,31);
		//	gicons[rrow].shadow = "http://hilversum.geotalk.nl/lay/gmapicons/shadow.png";
			gicons[rrow].shadow = "";
			gicons[rrow].shadowSize = new GSize(52, 29);
		
			gicons[rrow+"_2"] = new GIcon(G_DEFAULT_ICON, "http://hilversum.geotalk.nl/lay/gmapicons/"+rrow+"_2.png");
			gicons[rrow+"_2"].iconSize=new GSize(20,31);
		//	gicons[rrow+"_2"].shadow = "http://hilversum.geotalk.nl/lay/gmapicons/shadow.png";
			gicons[rrow+"_2"].shadow = "";
			gicons[rrow+"_2"].shadowSize = new GSize(52, 29);
		
			gicons[rrow+"_3"] = new GIcon(G_DEFAULT_ICON, "http://hilversum.geotalk.nl/lay/gmapicons/"+rrow+"_3.png");
			gicons[rrow+"_3"].iconSize=new GSize(20,31);
		//	gicons[rrow+"_3"].shadow = "http://hilversum.geotalk.nl/lay/gmapicons/shadow.png";
			gicons[rrow+"_3"].shadow = "";
			gicons[rrow+"_3"].shadowSize = new GSize(52, 29);
		
			gicons[rrow+"_4"] = new GIcon(G_DEFAULT_ICON, "http://hilversum.geotalk.nl/lay/gmapicons/"+rrow+"_4.png");
			gicons[rrow+"_4"].iconSize=new GSize(20,31);
		//	gicons[rrow+"_4"].shadow = "http://hilversum.geotalk.nl/lay/gmapicons/shadow.png";
			gicons[rrow+"_4"].shadow = "";
			gicons[rrow+"_4"].shadowSize = new GSize(52, 29);
		
			gicons[rrow+"_5"] = new GIcon(G_DEFAULT_ICON, "http://hilversum.geotalk.nl/lay/gmapicons/"+rrow+"_5.png");
			gicons[rrow+"_5"].iconSize=new GSize(20,31);
		//	gicons[rrow+"_5"].shadow = "http://hilversum.geotalk.nl/lay/gmapicons/shadow.png";
			gicons[rrow+"_5"].shadow = "";
			gicons[rrow+"_5"].shadowSize = new GSize(52, 29);
			
			rrow=rrow+1;
		}
	function createPolyline_lagen(points,name,html,kleur,transp) {
		var marker = new GPolyline(points,'#'+kleur,1,transp);
		GEvent.addListener(marker, "click", function() {
			polylatlng=marker.getBounds().getCenter();
			if(streetViewactive){
				set_steetPanorama(polylatlng);
			}
			map.openInfoWindowHtml(polylatlng,html);
		});
		
		return marker;
	}
	
	function createPolygone_lagen(points,name,html,kleur,transp) {
		var marker = new GPolygon(points,'#'+kleur,1,transp,'#'+kleur,transp);
		GEvent.addListener(marker, "click", function() {
			polylatlng=marker.getBounds().getCenter();
			if(streetViewactive){
				set_steetPanorama(polylatlng);
			}
			map.openInfoWindowHtml(polylatlng,html);
		});
		
		return marker;
	}
	function createMarker_lagen(point,name,html) {
		var marker = new GMarker(point,{title:name});
		GEvent.addListener(marker, "click", function(){
			if(streetViewactive){
				set_steetPanorama(point);
			}
			marker.openInfoWindowHtml(html);
		});
		
		return marker;
	}
	function createMarker(point,name,html,icontype,type) {
		var marker = new GMarker(point,{title:name,icon:gicons[icontype]});
		GEvent.addListener(marker, "click", function(){
			if(streetViewactive){
				set_steetPanorama(point);
			}
			marker.openInfoWindowHtml(html);
		});
		
		gmarkers.push(marker);
		i=gmarkers.length;
		objname=name.split('<br>');
        to_htmls[(i-1)] = html + '<br><form action="javascript:getDirections()">' +
           '<table><tr><td width="50"><b>Vanaf:</b></td><td><input type="text" SIZE=40 MAXLENGTH=40 name="saddr" id="saddr" value="Dudokpark 1 Hilversum" onclick="if(this.value==\'Dudokpark 1 Hilversum\'){this.value=\'\';}"/>' +
           '&nbsp;<INPUT onclick="open_route();" value="Plan route" type="SUBMIT" class="b"></td></tr>' +
           '<tr><td>&nbsp;</td><td><label for="walk">Te voet</label> <input type="checkbox" name="walk" id="walk" style="border:0px;"/> &nbsp; <label for="highways">Geen snelwegen</label> <input type="checkbox" name="highways" id="highways" style="border:0px;"/>' +
           '<input type="hidden" id="daddr" value="'+objname[0]+"@"+ point.lat() + ',' + point.lng() + 
           '"/></td></tr></table></ form>';
		   
        from_htmls[(i-1)] = html + '<br><form action="javascript:getDirections()">' +
           '<table><tr><td width="50"><b>Naar:</b></td><td><input type="text" SIZE=40 MAXLENGTH=40 name="daddr" id="daddr" value="Dudokpark 1 Hilversum" onclick="if(this.value==\'Dudokpark 1 Hilversum\'){this.value=\'\';}"/>' +
           '&nbsp;<INPUT onclick="open_route();" value="Plan route" type="SUBMIT" class="b"></td></tr>' +
           '<tr><td>&nbsp;</td><td><label for="walk">Te voet</label> <input type="checkbox" name="walk" id="walk" style="border:0px;"/> &nbsp; <label for="highways">Geen snelwegen</label> <input type="checkbox" name="highways" id="highways" style="border:0px;"/>' +
           '<input type="hidden" id="saddr" value="'+objname[0]+"@"+ point.lat() + ',' + point.lng() +
           '"/></td></tr></table></ form>';
		side_bar_html[type] += '<a href="javascript:myclick(' + (i-1) + ')">' + name + '<\/a>';
		return marker;
	}
	
	function createPolyline(points,name,html,type) {
		var marker = new GPolyline(points,'#FF0000',1,0.5);
		GEvent.addListener(marker, "click", function() {
			polylatlng=marker.getBounds().getCenter();
			if(streetViewactive){
				set_steetPanorama(polylatlng);
			}
			map.openInfoWindowHtml(polylatlng,html);
		});
		gmarkers.push(marker);
		
		i=gmarkers.length;
		objname=name.split('<br>');
        to_htmls[(i-1)] = html + '<br><form action="javascript:getDirections()">' +
           'Vanaf: <input type="text" SIZE=40 MAXLENGTH=40 name="saddr" id="saddr" value="" />' +
           '<INPUT onclick="open_route();" value="Plan route" TYPE="SUBMIT"><br>' +
           'Te voet <input type="checkbox" name="walk" id="walk" style="border:0px;"/> &nbsp; Geen snelwegen <input type="checkbox" name="highways" id="highways" style="border:0px;"/>' +
           '<input type="hidden" id="daddr" value="'+objname[0]+"@"+ polylatlng.lat() + ',' + polylatlng.lng() + 
           '"/></ form>';
        from_htmls[(i-1)] = html + '<br><form action="javascript:getDirections()">' +
           'Naar: <input type="text" SIZE=40 MAXLENGTH=40 name="daddr" id="daddr" value="" />' +
           '<INPUT onclick="open_route();" value="Plan route" TYPE="SUBMIT"><br>' +
           'Te voet <input type="checkbox" name="walk" id="walk"  style="border:0px;"/> &nbsp; Geen snelwegen <input type="checkbox" name="highways" id="highways" style="border:0px;"/>' +
           '<input type="hidden" id="saddr" value="'+objname[0]+"@"+ polylatlng.lat() + ',' + polylatlng.lng() +
           '"/></ form>';
		side_bar_html[type] += '<a href="javascript:myclick(' + (i-1) + ')">' + name + '<\/a>';
		return marker;
	}
	
	
	function createPolygone(points,name,html,type) {
		var marker = new GPolygon(points,'#FF0000',1,0.5,'#FF0000',0.2);
		GEvent.addListener(marker, "click", function() {
			polylatlng=marker.getBounds().getCenter();
			if(streetViewactive){
				set_steetPanorama(polylatlng);
			}
			map.openInfoWindowHtml(polylatlng,html);
		});
		
		gmarkers.push(marker);
		
		i=gmarkers.length;
		objname=name.split('<br>');
        to_htmls[(i-1)] = html + '<br><form action="javascript:getDirections()">' +
           'Vanaf: <input type="text" SIZE=40 MAXLENGTH=40 name="saddr" id="saddr" value="" /> ' +
           '<INPUT onclick="open_route();" value="Plan route" TYPE="SUBMIT"><br>' +
           'Te voet <input type="checkbox" name="walk" id="walk" style="border:0px;"/> &nbsp; Geen snelwegen <input type="checkbox" name="highways" id="highways" style="border:0px;"/>' +
           '<input type="hidden" id="daddr" value="'+objname[0]+"@"+ polylatlng.lat() + ',' + polylatlng.lng() + 
           '"/></ form>';
        from_htmls[(i-1)] = html + '<br><form action="javascript:getDirections()">' +
           'Naar: <input type="text" SIZE=40 MAXLENGTH=40 name="daddr" id="daddr" value="" />' +
           '<INPUT onclick="open_route();" value="Plan route" TYPE="SUBMIT"><br>' +
           'Te voet <input type="checkbox" name="walk" id="walk" style="border:0px;"/> &nbsp; Geen snelwegen <input type="checkbox" name="highways" id="highways" style="border:0px;"/>' +
           '<input type="hidden" id="saddr" value="'+objname[0]+"@"+ polylatlng.lat() + ',' + polylatlng.lng() +
           '"/></ form>';
		side_bar_html[type] += '<a href="javascript:myclick(' + (i-1) + ')">' + name + '<\/a>';
		return marker;
	}
	
	function showAddress(address) {
		var address= address + ", Hilversum NL";
		if (geocoder) {
			geocoder.getLatLng(
			address,
			function(point) {
				if (!point) {
					alert(address + " not found");
				} else {
					if(streetViewactive){
						set_steetPanorama(point);
					}
					
					map.setCenter(point, 17);
					var marker = new GMarker(point);
					map.addOverlay(marker);
					marker.openInfoWindowHtml(address);
					
				}
			}
			);
		}
	}

	function check_Pano(panoData) {
	//	alert('Fout code='+panoData.code);
		if (panoData.code != 200) {
			alert('Street View niet beschikbaar in deze omgeving.');
			return false;
		}else{
			myPano.setLocationAndPOV(panoData.location.latlng);
			
			document.getElementById("pano").style.display='block';
			document.getElementById('map').style.display='none';
			myPano.show();
			streetViewactive=true;
		}
	}
	function set_steetPanorama(latlng){
		panoClient.getNearestPanorama(latlng, check_Pano);
	}
	function handleNoFlash(errorCode) {

	  if (errorCode == 603) {
	    alert("Error: Flash doesn't appear to be supported by your browser");
	    return;
	  }
	}
	function myclick(i) {
		level=map.getZoom();
		if(level<13){
			map.setZoom(13);
		}
		GEvent.trigger(gmarkers[i], "click");
	}
function toggle_kaart(){
	document.getElementById('Kaart_h').disabled=false;
	document.getElementById('Kaart_h_label').className='label_head';
	map.removeOverlay(hybridOverlay);
	if(!smallerie7){
		map.removeControl(wandelkaartcontrol);
	}
	map.removeOverlay(overlay);
	
	if(kaart=='Wandel1912'){
		if(!smallerie7){
			map.addControl(wandelkaartcontrol);
		}
		map.addOverlay(overlay);
		//hybrid uit
		document.getElementById('setMaptypeHYBRID').onclick='';
		document.getElementById('setMaptypeHYBRID').className='block';
		
	//	document.getElementById('Hoogtekaart').disabled=true;
	}else if(kaart=='Hoogte1905'){
		if(!smallerie7){
			map.addControl(wandelkaartcontrol);
		}
		map.addOverlay(overlay);
		//hybrid uit
		document.getElementById('setMaptypeHYBRID').onclick='';
		document.getElementById('setMaptypeHYBRID').className='block';
		
	//	document.getElementById('Wandelkaart').disabled=true;
	}else{//none
		
		document.getElementById('Wandelkaart').disabled=false;
		document.getElementById('Hoogtekaart').disabled=false;
		
		document.getElementById('Kaart_h').disabled=true;
		document.getElementById('Kaart_h_label').className='label_head_block';
		//hybrid knop aan
		document.getElementById('setMaptypeHYBRID').className='';
		document.getElementById('setMaptypeHYBRID').onclick=function(){
			setMaptype(2);
		};
	}
	if(kaart!='none'){
		if (this.map.getCurrentMapType() == G_HYBRID_MAP) {//if hybrid set sattelite
			setMaptype(1);
		}
		if(overlay_hybrid){
			map.addOverlay(hybridOverlay);
		}
	}
}
function toggle_overlay(){
	if(!overlay_hybrid){
		overlay_hybrid=true;
	}else{
		overlay_hybrid=false;
	}
	toggle_kaart();
}

/*
	var WegassenbestandX=new GGeoXml("http://hilversum.geotalk.nl/lay/media/Extra lagen/wegassen.kml");
	var WegopbrekingenX=new GGeoXml("http://hilversum.geotalk.nl/lay/media/Extra lagen/wegopbrekingen2.kml");
	var BeschermdStadsgezichtX=new GGeoXml("http://hilversum.geotalk.nl/lay/media/Extra lagen/Beschermd_Stadsgezicht.kml");

	var assenfirst=true;
	var wegassenX=new GGeoXml("http://hilversum.geotalk.nl/kml/wegassen.kml");
	var opbrekingirst=true;
	var wegopbrekingenX=new GGeoXml("http://hilversum.geotalk.nl/kml/wegopbrekingen2.kml");
	
	function toggle_assen(){
		if(assenfirst){
			map.addOverlay(wegassenX);
			assenfirst=false;
		}else{
			if(wegassenX.isHidden() ){
				wegassenX.show();
			}else{
				wegassenX.hide();
			}
		}
	}
	function toggle_opbreking(){
		if(opbrekingirst){
			map.addOverlay(wegopbrekingenX);
			opbrekingirst=false;
			document.getElementById('InfoContent2').innerHTML='Let op:  Wegopbrekingen worden gekleurd weergegeven.';
			document.getElementById('mapInfoText').style.display='block';
		}else{
			if(wegopbrekingenX.isHidden() ){
				wegopbrekingenX.show();
				document.getElementById('InfoContent2').innerHTML='Let op:  Wegopbrekingen worden gekleurd weergegeven.';
				document.getElementById('mapInfoText').style.display='block';
			}else{
				wegopbrekingenX.hide();
				closeinfotext();
				document.getElementById('InfoContent2').innerHTML='';
			}
		}
	}*/
	// Street View
	var streetViewfirst=true;
	var streetViewactive=false;
	panoClient= new GStreetviewClient(); 
	var myPano = new GStreetviewPanorama(document.getElementById("pano"));
	GEvent.addListener(myPano, "error", handleNoFlash);
	function toggle_streetView(){
		if(streetViewfirst){
			svOverlay = new GStreetviewOverlay();
			map.addOverlay(svOverlay);
			document.getElementById('streetView').checked=true;
			var myEventListener = GEvent.bind(map,"click",this, function(overlay,latlng) {
				
				if(!svOverlay.isHidden()){
					set_steetPanorama(latlng);
					return;
				}
				GEvent.removeListener(myEventListener);
				
			});
		}
		
		if(svOverlay.isHidden() ){
			svOverlay.show();
			var myEventListener = GEvent.bind(map,"click",this, function(overlay,latlng) {
				
				if(!svOverlay.isHidden()){
					set_steetPanorama(latlng);
					return;
				}
				GEvent.removeListener(myEventListener);
				
			});
			document.getElementById('streetView').checked=true;
		}else{
			if(!streetViewfirst){
				svOverlay.hide();
				document.getElementById('streetView').checked=false;
				if(streetViewactive){
					myPano.hide();
					document.getElementById('pano').style.display='none';
					document.getElementById('map').style.display='block';
				}
				streetViewactive=false;
			}
		}
		streetViewfirst=false;
	}
	
	
	function set_zoom_restriction(){
		var mt = map.getMapTypes();
		for(var i=0; i<mt.length; i++){
			mt[i].getMinimumResolution = function() {return 12;}
			mt[i].getMaximumResolution = function() {return 19;}
		}
	}
	
	function closeroute(){
		boundry=true;
		set_zoom_restriction();
	}
      var Cookielat = 52.226327;
      var Cookielng = 5.172501;
      var Cookiezoom = 12;
      var Cookiemaptype = 0;

      var cookiename = "mapinfo";
      var expiredays = 1;

      if (document.cookie.length>0) {
        cookieStart = document.cookie.indexOf(cookiename + "=");
        if (cookieStart!=-1) {
          cookieStart += cookiename.length+1; 
          cookieEnd=document.cookie.indexOf(";",cookieStart);
          if (cookieEnd==-1) {
            cookieEnd=document.cookie.length;
          }
          cookietext = document.cookie.substring(cookieStart,cookieEnd);
          bits = cookietext.split("|");
          Cookielat = parseFloat(bits[0]);
          Cookielng = parseFloat(bits[1]);
          Cookiezoom = parseInt(bits[2]);
          Cookiemaptype = parseInt(bits[3]);
        } 
      }
	var map = new GMap2(document.getElementById("map"));
	var minimap = new GOverviewMapControl(new GSize(150,150));

	GMap2.prototype.hoverControls = function(){
		var theMap = this;
		theMap.hideControls();
		GEvent.addListener(theMap, "mouseover", function(){
			theMap.showControls();
		});
		GEvent.addListener(theMap, "mouseout", function(){
			theMap.hideControls(); 
		});
		theMap.libraryCard = 19162;
	}
	GMap.prototype.hoverControls = GMap2.prototype.hoverControls;

	map.addMapType(G_NORMAL_MAP);
	map.addMapType(G_SATELLITE_MAP);
	map.addMapType(G_HYBRID_MAP);
	map.addMapType(G_PHYSICAL_MAP);
	
	var gcr = GMapType.prototype.getCopyrights;
	GMapType.prototype.getCopyrights = function(bounds,zoom) {
		return ["&copy; Hilversum"].concat(gcr.call(this,bounds,zoom));
	}
	hybridOverlay = new GTileLayerOverlay( G_HYBRID_MAP.getTileLayers()[1] );
	var tilelayer = new GTileLayer(GCopyrightCollection(''), mapMinZoom, mapMaxZoom);
	var mercator = new GMercatorProjection(mapMaxZoom+1);

	tilelayer.getTileUrl = function(tile,zoom) {
		if ((zoom < mapMinZoom) || (zoom > mapMaxZoom)) {
			return "/customtile/none.png";
		} 
		var ymax = 1 << zoom;
		var y = ymax - tile.y -1;
		var tileBounds = new GLatLngBounds(
			mercator.fromPixelToLatLng( new GPoint( (tile.x)*256, (tile.y+1)*256 ) , zoom ),
			mercator.fromPixelToLatLng( new GPoint( (tile.x+1)*256, (tile.y)*256 ) , zoom )
		);
		if (mapBounds.intersects(tileBounds)) {
			if(kaart=='Wandel1912'){
				return "/customtile/wandelkaart1912/"+zoom+"/"+tile.x+"/"+y+".png";
			}else if(kaart=='Hoogte1905'){
				return "/customtile/hoogtekaart1905/"+zoom+"/"+tile.x+"/"+y+".png";
			}else{
			
			}
		} else {
			return "/customtile/none.png";
		}
	}
	overlay = new GTileLayerOverlay( tilelayer );
	
	tilelayer.isPng = function() { return true;};
	tilelayer.getOpacity = function() { return opacity; }
	kaart='none';
	overlay_hybrid=false;
	if(!smallerie7){
		wandelkaartcontrol=new CTransparencyControl( overlay );
	}
	set_zoom_restriction();
	map.addControl(new GScaleControl());
	map.enableScrollWheelZoom();
	
	map.addControl(new GLargeMapControl3D());
	map.addControl(minimap);
	
	var geoTalkLogo = new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(0,35));
	geoTalkLogo.apply(document.getElementById("control"));
	map.getContainer().appendChild(document.getElementById("control"));
	
/*	var mapInfoHolder = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(80,0));
	mapInfoHolder.apply(document.getElementById("mapInfoHolder"));
	map.getContainer().appendChild(document.getElementById("mapInfoHolder"));*/
	
	
	function CMapTypeControl(){}
	CMapTypeControl.prototype = new GControl();
	
	CMapTypeControl.prototype.initialize = function(map) {
		var that=this;
		this.map = map;
		var container = document.createElement("div");
		
		container.innerHTML = '<div id="maptypeControls"><ul>'+
		'<li onclick="javascript:setMaptype(3);" id="setMaptypePHYSICAL">Terrein</li>'+
		'<li onclick="javascript:setMaptype(2);" id="setMaptypeHYBRID">Beide</li>'+
		'<li onclick="javascript:setMaptype(1);" id="setMaptypeSATELLITE">Satelliet</li>'+
		'<li onclick="javascript:setMaptype(0);" id="setMaptypeNORMAL" class="active">Kaart</li>'+
		'</ul></div>';
		
		map.getContainer().appendChild(container);
		return container;
	}
	
	CMapTypeControl.prototype.getDefaultPosition = function() {
		return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(10, 10));
	}
	
	map.addControl(new CMapTypeControl());
	map.setMapType(map.getMapTypes()[Cookiemaptype]);
	
	setMaptype(Cookiemaptype);
	
	map.hoverControls();
	
	map.setCenter(new GLatLng(Cookielat,Cookielng), Cookiezoom);
      var gdir=new GDirections(map, document.getElementById("directions"));

      var reasons=[];
      reasons[G_GEO_SUCCESS]            = "Success";
      reasons[G_GEO_MISSING_ADDRESS]    = "Missing Address: The address was either missing or had no value.";
      reasons[G_GEO_UNKNOWN_ADDRESS]    = "De locatie van het opgegeven adres kon niet worden bepaald.\nZorg dat u de STRAATNAAM + HUISNUMMER en PLAATSNAAM correct heeft ingevuld.\nIn sommige gevallen is het ook nodig de POSTCODE te vermelende.";
      reasons[G_GEO_UNAVAILABLE_ADDRESS]= "Unavailable Address:  The geocode for the given address cannot be returned due to legal or contractual reasons.";
      reasons[G_GEO_BAD_KEY]            = "De Google Maps sleutel is ongeldig of de gebruikte sleutel is niet geldig voor dit domein.";
      reasons[G_GEO_TOO_MANY_QUERIES]   = "Too Many Queries: The daily geocoding quota for this site has been exceeded.";
      reasons[G_GEO_SERVER_ERROR]       = "Server error: The geocoding request could not be successfully processed.";
      reasons[G_GEO_BAD_REQUEST]        = "De aanvraag voor het plannen van een route is mislukt.";
      reasons[G_GEO_MISSING_QUERY]      = "Een parameter ontbreekt. Misschien was er geen vertrekpunt ingevoerd.";
      reasons[G_GEO_UNKNOWN_DIRECTIONS] = "The GDirections object could not compute directions between the points.";
      GEvent.addListener(gdir, "error", function() {
        var code = gdir.getStatus().code;
        var reason="Code "+code;
        if (reasons[code]) {
          reason = reasons[code]
        }
        alert(reason);
      });

    GEvent.addListener(map, "move", function() {
		if(boundry){
			checkBounds();
		}
    });

	var southWest = new GLatLng(52.185, 5.125);  
	var northEast = new GLatLng(52.285, 5.221);  

    var allowedBounds = new GLatLngBounds(southWest,northEast);

	function checkBounds() {
		if(allowedBounds.contains(map.getCenter())){
		  return;
		}
		var C = map.getCenter();
		var X = C.lng();
		var Y = C.lat();
		
		var AmaxX = allowedBounds.getNorthEast().lng();
		var AmaxY = allowedBounds.getNorthEast().lat();
		var AminX = allowedBounds.getSouthWest().lng();
		var AminY = allowedBounds.getSouthWest().lat();
		
		if (X < AminX) {X = AminX;}
		if (X > AmaxX) {X = AmaxX;}
		if (Y < AminY) {Y = AminY;}
		if (Y > AmaxY) {Y = AmaxY;}
		map.setCenter(new GLatLng(Y,X));
	}

    function toggleGroup(type,CAT) {
      for (var i = 0; i < markerGroups[CAT+""+type].length; i++) {
        var marker = markerGroups[CAT+""+type][i];
        if (marker.isHidden()) {
          marker.show();
        } else {
		  map.getInfoWindow().hide();
          marker.hide();
        }
      } 
    }

	function loadLayer(VARI,CAT){
		if(markerGroups[CAT+""+VARI].length>0){
			toggleGroup(VARI,CAT);
		}else{
			side_bar_html[CAT+""+VARI] = '';
			GDownloadUrl("/xml.php?cat="+CAT+"&groupid="+VARI, function(doc){
	        var xmlDoc = GXml.parse(doc);
	        var markers = xmlDoc.documentElement.getElementsByTagName("marker");
			 
	        for (var i = 0; i < markers.length; i++) {
				html='';
				var node = markers[i].getElementsByTagName('info');
				var label = markers[i].getAttribute("label");
				var icontype = markers[i].getAttribute("icontype");
				var type = markers[i].getAttribute("type");
				
				html=node[0].childNodes[0].nodeValue;
				gil=gmarkers.length;
				html+='<div class="controls"><img src="http://hilversum.geotalk.nl/lay/plus.gif" alt="Zoom in"/> <a href="javascript:map.zoomIn();">Inzoomen</a>&nbsp;|&nbsp;<img src="http://hilversum.geotalk.nl/lay/minus.gif" alt="Zoom uit"/> <a href="javascript:map.zoomOut();">Uitzoomen</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Route: <a href="javascript:tohere('+gil+')">Naar hier</a>&nbsp;|&nbsp;<a href="javascript:fromhere('+gil+')">Vanaf hier</a></div>';
				
				var punten = markers[i].getAttribute("latlng").split(";");
				
				if(punten.length > 1){//meerdere regels met punten
				
					var latlngs = new Array();
					for (var pp = 0; pp < punten.length; pp++) {
						
						punt=punten[pp].split(",");
						var lat = parseFloat(punt[0]);
						var lng = parseFloat(punt[1]);
						latlngs[pp] = new GLatLng(lat,lng);

					}
					if(punten[0]==punten[punten.length-1]){//vlak met meerdere punten laatste en eerste punt zelfde
						var marker = createPolygone(latlngs,label,html,type);
					}else{//lijn met meerdere punten
						var marker = createPolyline(latlngs,label,html,type);
					}
				}else{//1 regel een marker punt
					punt=punten[0].split(",");
					var lat = parseFloat(punt[0]);
					var lng = parseFloat(punt[1]);
					var point = new GLatLng(lat,lng);
					
					var marker = createMarker(point,label,html,icontype,type);
				}
				markerGroups[type].push(marker);
				map.addOverlay(marker);
	        }
	        document.getElementById(CAT+""+VARI).innerHTML = side_bar_html[CAT+""+VARI];
			});
		}
	}
      function tohere(i) {
        gmarkers[i].openInfoWindowHtml(to_htmls[i]);
      }
      function fromhere(i) {
        gmarkers[i].openInfoWindowHtml(from_htmls[i]);
      }

	  var reset=false;
      function setCookieMapState() {
        maptype = 0;
        for (var i=0;i<map.getMapTypes().length;i++) {
          if (map.getCurrentMapType() == map.getMapTypes()[i]) {
            maptype = i;
          }
        }
        var cookietext = cookiename+"="+map.getCenter().lat()+"|"+map.getCenter().lng()+"|"+map.getZoom()+"|"+maptype;
        if (expiredays) {
          var exdate=new Date();
          exdate.setDate(exdate.getDate()+expiredays);
		  
          cookietext += ";expires="+exdate.toGMTString();
        }
		if(!reset){
        document.cookie=cookietext;
		}
        GUnload();
      }
    }else {
      alert("Sorry, the Google Maps API is not compatible with this browser");
    }

function printMap(){

document.getElementById('map').style.marginLeft='0px';
print();
document.getElementById('map').style.marginLeft='251px';
/*    var disp_setting="toolbar=no,location=no,directories=no,menubar=no,scrollbars=no,width=650,height=600,left=25,top=25";
    var content_vlue = document.getElementById("map").innerHTML;
    var docprint=window.open("","",disp_setting);
    docprint.document.open();
    docprint.document.write('<html><head><link rel="stylesheet" type="text/css" href="http://hilversum.geotalk.nl/css/global.css"/><title>Print Map</title>');
    docprint.document.write('</head><body><center>');
	docprint.document.write(content_vlue);
    docprint.document.write('</center></body></html>');
    docprint.document.close();
    docprint.focus();
    docprint.print();*/
	return false;
}
function resetMap(){
	reset=true;
	var cookietext = cookiename+"=";
	var exdate=new Date();
	exdate.setDate(exdate.getDate()-2);
	cookietext += ";expires="+exdate.toGMTString();
	document.cookie=cookietext;
	top.location.href=top.location.href;
}
function popOpen(URL,WIDTH,HEIGHT){
	var LEFT=(screen.width - WIDTH) / 2;
	var TOP=(screen.height - HEIGHT) / 2;
	NEWWINDOW=open(URL,'Popup','scrollbars=1,toolbar=no,location=no,status=no,resizable=no,width=' + WIDTH + ',height=' + HEIGHT + ',left=' + LEFT + ',top=' + TOP + '');
	NEWWINDOW.focus();
	return false;
}
function getDirections(){
	boundry=false;
	/*
	if(!wegopbrekingenX.hasLoaded()){
		toggle_opbreking(wegopbrekingenX);
		document.getElementById('wegopbrekingen').checked='checked';
	}else if(opbrekingirst){
		toggle_opbreking(wegopbrekingenX);
		document.getElementById('wegopbrekingen').checked='checked';
	}
	*/
	var mt = map.getMapTypes();
	for(var i=0; i<mt.length; i++){
		mt[i].getMinimumResolution = function() {return 1;}
		mt[i].getMaximumResolution = function() {return 19;}
	}
	
	var opts = {};
	if (document.getElementById("walk").checked) {
	   opts.travelMode = G_TRAVEL_MODE_WALKING;
	}
	if (document.getElementById("highways").checked) {
	   opts.avoidHighways = true;
	}
	
	var saddr = document.getElementById("saddr").value;
	var daddr = document.getElementById("daddr").value;

	document.getElementById("directions").style.visibility='visible';
	document.getElementById("directions").style.display='block';
	gdir.load("from: "+saddr+" to: "+daddr, opts);
	document.getElementById("saddr2").value=saddr;
	document.getElementById("daddr2").value=daddr;
	document.getElementById("walk2").checked=document.getElementById("walk").checked;
	document.getElementById("highways2").checked=document.getElementById("highways").checked;
}

function getDirections2(){
	boundry=false;
	/*
	if(!wegopbrekingenX.hasLoaded()){
		toggle_opbreking(wegopbrekingenX);
		document.getElementById('wegopbrekingen').checked='checked';
	}else if(opbrekingirst){
		toggle_opbreking(wegopbrekingenX);
		document.getElementById('wegopbrekingen').checked='checked';
	}
	*/
	var mt = map.getMapTypes();
	for(var i=0; i<mt.length; i++){
		mt[i].getMinimumResolution = function() {return 1;}
		mt[i].getMaximumResolution = function() {return 19;}
	}
	
	var opts = {};
	if (document.getElementById("walk2").checked) {
	   opts.travelMode = G_TRAVEL_MODE_WALKING;
	}
	if (document.getElementById("highways2").checked) {
	   opts.avoidHighways = true;
	}

	var saddr = document.getElementById("saddr2").value;
	var daddr = document.getElementById("daddr2").value;
	document.getElementById("directions").style.visibility='visible';
	document.getElementById("directions").style.display='block';
	gdir.load("from: "+saddr+" to: "+daddr, opts);
}
function setMaptype(TYPE){
	if(TYPE==0){
		document.getElementById('setMaptypeNORMAL').className 	= 'active';
		document.getElementById('setMaptypeSATELLITE').className 	= '';
		if(kaart=='none'){
			document.getElementById('setMaptypeHYBRID').className 	= '';
		}
		document.getElementById('setMaptypePHYSICAL').className 	= '';
	//	document.getElementById('setMaptypeWANDEL').className 	= '';
		map.setMapType(G_NORMAL_MAP);
	}
	if(TYPE==1){
		document.getElementById('setMaptypeNORMAL').className 	= '';
		document.getElementById('setMaptypeSATELLITE').className 	= 'active';
		if(kaart=='none'){
			document.getElementById('setMaptypeHYBRID').className 	= '';	
		}
		document.getElementById('setMaptypePHYSICAL').className 	= '';
	//	document.getElementById('setMaptypeWANDEL').className 	= '';
		map.setMapType(G_SATELLITE_MAP);
	}
	if(TYPE==2){
		document.getElementById('setMaptypeNORMAL').className 	= '';
		document.getElementById('setMaptypeSATELLITE').className 	= '';
		document.getElementById('setMaptypeHYBRID').className 	= 'active';
		document.getElementById('setMaptypePHYSICAL').className 	= '';
	//	document.getElementById('setMaptypeWANDEL').className 	= '';
		map.setMapType(G_HYBRID_MAP);
	}
	if(TYPE==3){
		document.getElementById('setMaptypeNORMAL').className 	= '';
		document.getElementById('setMaptypeSATELLITE').className 	= '';
		if(kaart=='none'){
			document.getElementById('setMaptypeHYBRID').className 	= '';
		}
		document.getElementById('setMaptypePHYSICAL').className 	= 'active';
	//	document.getElementById('setMaptypeWANDEL').className 	= '';
		map.setMapType(G_PHYSICAL_MAP);
	}
	if(TYPE==4){
		document.getElementById('setMaptypeNORMAL').className 	= '';
		document.getElementById('setMaptypeSATELLITE').className 	= '';
		if(kaart=='none'){
			document.getElementById('setMaptypeHYBRID').className 	= '';
		}
		document.getElementById('setMaptypePHYSICAL').className 	= '';
	//	document.getElementById('setMaptypeWANDEL').className 	= 'active';
		map.setMapType(G_PHYSICAL_MAP);
	}
	//blur();
}
