//Map globals
var oldcenter = null
var oldzoom = 0
var defZoom = 7
var defMarkerZoom = 17
var mapIsLoaded = false
var defLat = 52.1069523572794
var defLng = 5.394287109375

function DetectBrowser() {
	var a=navigator.userAgent.toLowerCase()
	this.isOpera=(a.indexOf("opera")!=-1)
	this.isKonq=(a.indexOf('konqueror')!=-1)
	this.isSafari=(a.indexOf('safari')!=-1)&&(a.indexOf('mac')!=-1)
	this.isKhtml=this.isSafari || this.isKonq || (a.indexOf('khtml')!=-1)
	this.isFF=(a.indexOf('firefox')!=-1)
	this.isIE=(a.indexOf("msie")!=-1)&&!this.isOpera
	this.isWinIE=this.isIE&&(a.indexOf("win")!=-1)
	this.isWinIE7=this.isWinIE && (a.indexOf("msie 7")!=-1)
	this.isWinIEVista=this.isWinIE && (a.indexOf("windows nt 6")!=-1)
	this.isCSS1Compat=(!this.isIE)||(document.compatMode&&document.compatMode=="CSS1Compat")
}

var browserDetect = new DetectBrowser()

// part 1 of initMap
function initMap(mapHolderID, urlToXML) {
	if (GBrowserIsCompatible()) {
		GUnload()
		// set loading image
		setLoading(false)
		// create and init map
		gMap = new GMap2(document.getElementById(mapHolderID))
		setMapCenter()
		// create marker manager
		gMarkerMgr = new GMarkerManager(gMap)
		// map type selector
		var maptypes = gMap.getMapTypes()
		gMap.setMapType(maptypes[0])
		// preload images
		preloadImages()
		// add map controls
		addMapControls()
		// download marker data
		GDownloadUrl(urlToXML, parsePageContent)
	}
}

// part 2 of initMap
function parsePageContent(pageContent, responseCode) {
	// request OK
	if (responseCode != 200) return
	// valid page content
	if (pageContent == null) return
	// parse and save parsed xml
	var xml = GXml.parse(pageContent)
	// center the map
	setMapCenter(xml)
	// process markers
	var markers = xml.documentElement.getElementsByTagName("marker")
	if (markers.length > 0) {
		for (var i = 0; i < markers.length; i++) {
			// add marker to global marker collection
			aMarkers.push(initCustomMarker(markers[i]))
		}
	}
	// add custom markers to map
	showCustomMarkers()
	// add map events
	addMapEvents()
	// initialize of map completed
	mapIsLoaded = true
	// save init position
	gMap.savePosition()
	// map is loaded
	setLoading(false)
}

function setLoading(bln) {
	document.getElementById("mapIsLoadingIndicator").style.display = (bln == true) ? "block" : "none"
	if (bln == false) {
		if (aMarkers.length == 0) {
			document.getElementById("searchResultIntro").innerHTML = "Er zijn <strong>geen</strong> instellingen gevonden."
		} else if (aMarkers.length == 1) {
			document.getElementById("searchResultIntro").innerHTML = "Er is <strong>1</strong> instelling gevonden."
		} else {
			document.getElementById("searchResultIntro").innerHTML = "Er zijn <strong>" + aMarkers.length + "</strong> instellingen gevonden."
		}
		document.getElementById("searchResultIntro").style.visibility = "visible"
	}
}

function addMapControls() {
	//gMap.addControl(new GMapTypeControl())
	gMap.addControl(new GSmallMapControl())
	//gMap.addControl(new GOverviewMapControl())
	//gMap.addControl(new GScaleControl())
	gMap.enableDoubleClickZoom()
	//gMap.enableContinuousZoom()
	//gMap.enableScrollWheelZoom()
	//alert("mapcontrols added")
}

function addMapEvents() {
	// add zoom event handler
	//GEvent.addListener(gMap, "zoomend", zoomHandler)
	GEvent.addListener(gMap, "movestart", closeInfoBox)
	//GEvent.addListener(gMap, "dragend", function(){ if (typeof(visibleInfoBox) == "object") visibleInfoBox.redraw(true); })
	//alert("mapevents attached")
}

function setMapCenter(xml) {
	
	var centerpoint = new GLatLng(defLat, defLng)
	
	if (xml && xml.documentElement) {
		var mapcenter = xml.documentElement.getElementsByTagName("mapcenter")
		
		if (mapcenter.length == 1 && mapcenter[0].getAttribute("lat") != "" && mapcenter[0].getAttribute("lng") != "") {
			lat = parseFloat(mapcenter[0].getAttribute("lat"))
			lng = parseFloat(mapcenter[0].getAttribute("lng"))
			
			var coord = new GLatLng(lat, lng, false)
			
			if (mapcenter[0].getAttribute("zoom")) {
				var zoom = parseInt(mapcenter[0].getAttribute("zoom"))
				gMap.setCenter(coord, zoom)
			}
			else {
				gMap.setCenter(coord, defZoom)
			}
		}
		else {
			gMap.setCenter(centerpoint, defZoom)
		}
	}
	else {
		gMap.setCenter(centerpoint, defZoom)
	}
}

function zoomHandler(oldval, newval) {
	//alert('oldval: ' + oldval + '\nnewval: ' + newval)
	if (mapIsLoaded == true) {
		// clear all overlays
		if (newval < defZoom) {
			gMap.clearOverlays()
		}
		// save old zoom
		oldzoom = oldval
	}
}

function centerOnPoint(name, type) {
	//alert('coord: ' + coord + '\nname: ' + name + '\ntype: ' + type)
	var oMarker = getMarker(name, type)
	switch(type) {
		case "province":
			break
		default:
			return
	}
	// save current center and set map center to new center
	oldcenter = gMap.getCenter()
	gMap.setCenter(oMarker.coord, defMarkerZoom)
}

function preloadImages() {
	var img = new Image()
	img.src = _gfxfolder_maps + "spacer.gif"
}

