//--------------------------------------------------------------------------------------------------------
// gemeente Search Engine Map Script
// Copyright (c) 2007 Solutior B.V.
//--------------------------------------------------------------------------------------------------------

var pGemeenteMap = null;
var pGemeenteMapTimer = null;
var pGemeenteMapAnimation = null;
var pGemeenteMapMarker = null;
var pGemeenteMapType = G_NORMAL_MAP;
var bgemeenteMap = false;
var bgemeenteMapLoaded = false;
var bgemeenteMapWindow = false;

function GemeentenMapInitialize(bOpen) {
	if (!bgemeenteMapLoaded) {
		if (GBrowserIsCompatible()) {
			var pContainer = document.getElementById("GemeenteGoogleMap");

			if (pContainer) {
				
				pGemeenteMap = new GMap2(pContainer);

				if (pGemeenteMap) {
					var pMapInitialize = new Object();
					var pMapMarker = new Object();
					var pMapIcon = new GIcon();
					
					bgemeenteMapLoaded = true;
					
					if (bOpen)
						pGemeenteMapType = G_HYBRID_MAP;
						
					if (pMapIcon) {
						pMapIcon.image = "";
						pMapIcon.iconSize = new GSize(13, 13);
						pMapIcon.iconAnchor = new GPoint(7, 6);
						pMapIcon.shadow = "";
						pMapIcon.shadowSize = new GSize(15, 16);
						pMapIcon.infoShadowAnchor = new GPoint(0, 0);
					}
					
					pMapInitialize.Count = 0;
					pMapInitialize.LatitudeMin = 0;
					pMapInitialize.LatitudeMax = 0;
					pMapInitialize.LongitudeMin = 0;
					pMapInitialize.LongitudeMax = 0;
					
					pMapInitialize.Add = function(sLat, sLong) {
						var pPoint = new GLatLng(sLat, sLong);
						
						if (pPoint) {
							this.LatitudeMin = !this.Count || pPoint.lat() < this.LatitudeMin ? parseFloat(pPoint.lat()) : this.LatitudeMin;
							this.LatitudeMax = !this.Count || pPoint.lat() > this.LatitudeMax ? parseFloat(pPoint.lat()) : this.LatitudeMax;
							this.LongitudeMin = !this.Count || pPoint.lng() < this.LongitudeMin ? parseFloat(pPoint.lng()) : this.LongitudeMin;
							this.LongitudeMax = !this.Count || pPoint.lng() > this.LongitudeMax ? parseFloat(pPoint.lng()) : this.LongitudeMax;
							
							this.Count ++;
						}
					}

					pMapInitialize.setCenter = function() {
						if (this.Count) {
							if (this.Count > 1) {
								var pCenter = new GLatLng((this.LatitudeMin+this.LatitudeMax)/2, (this.LongitudeMin+this.LongitudeMax)/2);
								
								if (pCenter) {
									var pBounds = new GLatLngBounds(new GLatLng(this.LatitudeMin, this.LongitudeMin), new GLatLng(this.LatitudeMax, this.LongitudeMax));

									if (pBounds)
										pGemeenteMap.setCenter(pCenter, pGemeenteMap.getBoundsZoomLevel(pBounds), pGemeenteMapType);
								}
							} else pGemeenteMap.setCenter(new GLatLng(this.LatitudeMin, this.LongitudeMin), 17, pGemeenteMapType);
						} else pGemeenteMap.setCenter(new GLatLng(52.375599, 4.888916), 7, pGemeenteMapType);
					}
					
					pMapMarker.Add = function(sLat, sLong, sURL, sName) {
						var pPoint = new GLatLng(sLat, sLong);
						
						if (pMapIcon.shadow == "")
							pMapIcon.shadow = imgpad+"/images/gemeente_map/search_bullet.png";

						if (pPoint) {
							var pIcon = new GIcon(pMapIcon);
							
							if (pIcon) {
								pIcon.image = imgpad+"/images/gemeente_map/search_bullet.gif";
								
								var pMarker = new GMarker(pPoint, pIcon);
								
								if (pMarker) {
									GEvent.addListener(pMarker, "mouseover", new Function("", "if(!bgemeenteMap)GemeentenMapHover(this,\""+sURL+"\",\""+sName+"\");"));

									pGemeenteMap.addOverlay(pMarker);
									
									if (!pGemeenteMapMarker)
										pGemeenteMapMarker = "GemeentenMapOpen("+pPoint.lat()+","+pPoint.lng()+",\""+sURL+"\",\""+sName+"\");";
								}
							}
						}
					}
					
					if (pContainer.className=="map"){
						pGemeenteMap.addControl(new GLargeMapControl());
						pGemeenteMap.addControl(new GMapTypeControl());
						pGemeenteMap.addControl(new GScaleControl());
						pGemeenteMap.addControl(new GOverviewMapControl());
					}

					pGemeenteMap.enableScrollWheelZoom();
					pGemeenteMap.enableContinuousZoom();
					pGemeenteMap.enableDoubleClickZoom();

					try {
						GemeentemapFunction(pMapInitialize);
					} catch(e) {}
					
					pMapInitialize.setCenter();

					try {
						GemeentemapFunction(pMapMarker);
					} catch(e) {}

					var pOverview = document.getElementById("GemeentenDocument_overview");
					
					if (pOverview && pOverview.firstChild && pOverview.firstChild.firstChild) {
						pOverview.firstChild.firstChild.style.left = "1px";
						pOverview.firstChild.firstChild.style.top = "1px";
						pOverview.firstChild.firstChild.style.width = "118px";
						pOverview.firstChild.firstChild.style.height = "118px";
					}

					GEvent.addListener(pGemeenteMap, "zoomstart", GemeentenMapHide);
					GEvent.addListener(pGemeenteMap, "click", GemeentenMapClick);
					
					if (bOpen && pGemeenteMapMarker)
						eval(pGemeenteMapMarker);
				}
			}
			
			window.onunload = GUnload;
		} else {
			alert("Map not available\n\nThe map cannot be displayed in your browser. Please upgrade your browser.");
			
			window.location = String(window.location).replace("&map=1", "&map=0");
		}
	}
}

function GemeentenMapReset() {
	if (pGemeenteMapTimer) {
		window.clearTimeout(pGemeenteMapTimer);
		
		pGemeenteMapTimer = null;
	}

	if (pGemeenteMapAnimation) {
		window.clearTimeout(pGemeenteMapAnimation);
		
		pGemeenteMapAnimation = null;
	}
}

function GemeentenMapHide() {
	GemeentenMapReset();
	
	var pMarker = document.getElementById("GemeentenMarker");
				
	if (pMarker)
		pMarker.style.visibility = "hidden";
}

function GemeentenMapClick() {
	GemeentenMapAnimation('GemeentenMarker', bgemeenteMapWindow, true);
}

function GemeentenMapMarkerElement() {
	if (!document.getElementById("GemeentenMarker")) {
		var pDiv = document.createElement("div");
		
		pDiv.style.overflow = "hidden";
		pDiv.style.width = "0px";
		pDiv.style.height = "0px";
		pDiv.style.left = "0px";
		pDiv.style.top = "0px";
		pDiv.style.position = "absolute";
		pDiv.style.visibility = "hidden";
		pDiv.style.cursor = "pointer";
		pDiv.id = "GemeentenMarker";
		
		if (typeof(pDiv.style.filter) == "string")
			pDiv.style.filter = "filter: progid:DXImageTransform.Microsoft.Shadow(direction=135,color=#404040,strength=3)";
		
		pGemeenteMap.getPane(G_MAP_FLOAT_PANE).appendChild(pDiv);
	}
	
	return document.getElementById("GemeentenMarker");
}

function GemeentenMapHover(p, sURL, sName) {
	GemeentenMapReset();
	
	if (pGemeenteMap) {
		var pPoint = pGemeenteMap.fromLatLngToDivPixel(p.getPoint());
				
		if (pPoint) {
			var pBounds = pGemeenteMap.getBounds();
			
			if (pBounds) {
				var pMarker = GemeentenMapMarkerElement();
				
				if (pMarker) {
					GemeentenMapMarker(pMarker, (pPoint.x-1)+"px", (pPoint.y+1)+"px", "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" style=\"border-bottom: 1px solid #FFFFFF;\"><tr><td style=\"background-image: url("+imgpad+"/images/gemeente_map/search_marker_fill.gif); background-position: top right; background-repeat: repeat-y;\" valign=\"bottom\"><img src=\""+imgpad+"/images/gemeente_map/marker_arrow.gif\" width=\"8\" height=\"7\" border=\"0\" alt=\"\" /></td><td style=\"background-color: #CA0000; border-top: 1px solid #FFFFFF; border-bottom: 3px solid #CA0000;\" valign=\"bottom\"><img src=\""+imgpad+"/images/gemeente_map/search_marker_fill.gif\" width=\"1\" height=\"2\" border=\"0\" alt=\"\" /></td><td style=\"background-color: #FFFFFF; border-top: 1px solid #FFFFFF; border-bottom: 3px solid #CA0000;\" valign=\"top\"><div style=\"border-top: 1px solid #CA0000;\"><img src=\""+imgpad+"/images/gemeente_map/marker_hover.gif\" width=\"20\" height=\"20\" border=\"0\" /></div></td></td><td style=\"background-color: #FFFFFF; border-top: 1px solid #FFFFFF; border-bottom: 3px solid #CA0000;\" valign=\"top\" nowrap=\"nowrap\"><div style=\"border-top: 1px solid #CA0000; border-right: 1px solid #CA0000; font-family: Tahoma; font-size: 11px; color: #CA0000; padding: 3px; padding-bottom: 4px;\" onmouseover=\"this.style.textDecoration='underline';\" onmouseout=\"this.style.textDecoration='';\">"+(sName != "%20" && sName != "" ? "<b>"+unescape(sName)+"</b>" : " - ")+"</div></td><td style=\"padding-top: 3px; background-image: url("+imgpad+"/images/gemeente_map/search_marker_fill.gif); background-position: top left; background-repeat: repeat-y;\" valign=\"bottom\"><div style=\"background-color: #CA0000; border-top: 1px solid #FFFFFF; border-right: 1px solid #FFFFFF;\"><img src=\""+imgpad+"/images/gemeente_map/search_trans.gif\" width=\"2\" height=\"1\" border=\"0\" alt=\"\" id=\"GemeentenMarkerBorder\" /></div></td></tr></table>");
					
					pMarker.onmouseout = new Function("", "pGemeenteMapTimer=window.setTimeout(\"GemeentenMapAnimation('GemeentenMarker', false, true);\",500);");
					pMarker.onmousemove = new Function("", "if(pGemeenteMapTimer){window.clearTimeout(pGemeenteMapTimer);pGemeenteMapTimer=null;}");
					pMarker.onclick = new Function("", "window.open('"+GemeentenMapURL(sURL)+"','_blank');");
					
					GemeentenMapAnimation("GemeentenMarker");
				}
			}
		}
	}
}

function GemeentenMapOpen(nLatitude, nLongitude, sURL) {
	var pPoint = pGemeenteMap.fromLatLngToDivPixel(new GLatLng(nLatitude, nLongitude));
				
	if (pPoint)
		GemeentenMapWindow((pPoint.x-1)+"px", (pPoint.y+1)+"px", sURL);
}


function GemeentenMapURL(sURL) {
	while(sURL.indexOf("&amp;") != -1)
		sURL = sURL.replace("&amp;", "&");
	
	return sURL;
}

function GemeentenMapMarker(pMarker, sLeft, sTop, sHTML)
{
	if (pMarker) {
		pMarker.innerHTML = sHTML;
		pMarker.style.width = "0px";
		pMarker.style.height = "0px";
		pMarker.style.left = sLeft;
		pMarker.style.top = sTop;
		pMarker.scrollTop = 0;
		pMarker.scrollLeft = 0;
		pMarker.style.visibility = "visible";

		pMarker.onmouseout = null;
		pMarker.onmousemove = null;
		pMarker.onclick = null;
	}
}

function GemeentenMapAnimation(sID, bVertical, bReverse, bRunning) {
	var pElement = document.getElementById(sID);
	
	GemeentenMapReset();
	
	bgemeenteMapWindow = bVertical;

	if (pElement) {
		var nSteps = 4;
		var nStepX = parseInt((pElement.scrollWidth-pElement.clientWidth)/nSteps);
		var nStepY = parseInt((pElement.scrollHeight-pElement.clientHeight)/nSteps);
		var nWidth = pElement.clientWidth+((nStepX < 5 ? 5 : nStepX)*(bReverse ? -1 : 1));
		var nHeight = bVertical ? pElement.clientHeight+((nStepY < 5 ? 5 : nStepY)*(bReverse ? -1 : 1)) : pElement.scrollHeight;
		var bDoneX = false;
		var bDoneY = !bVertical;

		if ((!bReverse && nWidth >= pElement.scrollWidth) || (bReverse && nWidth <= 1)) {
			nWidth = bReverse ? 1 : pElement.scrollWidth;
			bDoneX = true;
		}
		
		if ((!bReverse && nHeight >= pElement.scrollHeight) || (bReverse && nHeight <= 1)) {
			nHeight = bReverse ? 1 : pElement.scrollHeight;
			bDoneY = true;
		}
		
		if (typeof(pElement.nOriginalTop) != "number" || (!bRunning && !bReverse))
			pElement.nOriginalTop = parseInt(pElement.style.top);
		
		pElement.style.width = nWidth+"px";
		pElement.style.height = nHeight+"px";
		pElement.style.top = (pElement.nOriginalTop-nHeight)+"px";
		pElement.scrollTop = pElement.scrollHeight-nHeight;
		pElement.scrollLeft = 0;
		
		if (!bRunning) {
			var pBorder = document.getElementById(sID+"Border");
			
			if (pElement.filters && pElement.filters.length)
				pElement.filters[0].Enabled = false;
			
			if (pBorder)
				pBorder.height = pElement.scrollHeight-5;
		}

		if (bDoneX && bDoneY) {
			if (!bReverse) {
				var pBounds = pGemeenteMap.getBounds();
				
				if (pElement.filters && pElement.filters.length)
					pElement.filters[0].Enabled = true;
				
				if (pBounds) {
					var pPointNE = pGemeenteMap.fromDivPixelToLatLng(new GPoint(parseInt(pElement.style.left)+nWidth, pElement.nOriginalTop-nHeight));
					var pPointSW = pGemeenteMap.fromDivPixelToLatLng(new GPoint(parseInt(pElement.style.left), pElement.nOriginalTop));
					
					if (!pBounds.contains(pPointNE) || !pBounds.contains(pPointSW)) {
						var pRectangleNE = pGemeenteMap.fromLatLngToDivPixel(pBounds.getNorthEast());
						var pRectangleSW = pGemeenteMap.fromLatLngToDivPixel(pBounds.getSouthWest());
						var pPixelNE = pGemeenteMap.fromLatLngToDivPixel(pPointNE);
						var pPixelSW = pGemeenteMap.fromLatLngToDivPixel(pPointSW);
						
						if (pRectangleNE && pRectangleSW && pPixelNE && pPixelSW) {
							var nX = pPixelNE.x > pRectangleNE.x ? pRectangleNE.x-pPixelNE.x : (pPixelSW.x < pRectangleSW.x ? pRectangleSW.x-pPixelSW.x : 0);
							var nY = pPixelNE.y < pRectangleNE.y ? pRectangleNE.y-pPixelNE.y : (pPixelSW.y > pRectangleSW.y ? pRectangleSW.y-pPixelSW.y : 0);
							
							pGemeenteMap.panBy(new GSize(nX, nY));
						}
					}
				}
			} else pElement.style.visibility = "hidden";
		} else pGemeenteMapAnimation = window.setTimeout("GemeentenMapAnimation('"+sID+"',"+(bVertical ? "true" : "false")+","+(bReverse ? "true" : "false")+",true);", 15);
	}
}