function initMap(map)
{
	map.setMapType(G_PHYSICAL_MAP);
	map.addControl(new GLargeMapControl());
	//map.addMapType(G_PHYSICAL_MAP);
	//map.addControl(new GMapTypeControl());

	//G_SATELLITE_MAP.getMinimumResolution = function(){return 7};
	G_PHYSICAL_MAP.getMinimumResolution = function(){return 6}; // 7
	//G_NORMAL_MAP.getMinimumResolution = function(){return 7};
	//G_HYBRID_MAP.getMinimumResolution = function(){return 7};
}

function createIcon() {
	var icon = new GIcon(null, './images/arrow.png');
	//icon.shadow = './images/arrow_shadow.png';
	icon.iconSize = new GSize(20, 26);
	//icon.shadowSize = new GSize(34, 12);
	icon.iconAnchor = new GPoint(13, 27);
	icon.infoWindowAnchor = new GPoint(13, 30);
	icon.infoShadowAnchor = new GPoint(13, 30);
	return icon;
}

function createSelIcon()
{
	var selIcon = new GIcon(null, './images/arrow_sel.png');
	selIcon.iconSize = new GSize(20, 26);
	selIcon.iconAnchor = new GPoint(13, 27);
	selIcon.iconWindowAnchor = new GPoint(13, 30);
	selIcon.iconShadowAnchor = new GPoint(13, 30);
	return selIcon;
}

function onLoadCountry(widget)
{
	map = widget.gmap;
	map.disableInfoWindow();
	initMap(map);
	
	var url = '';
	var myString = location.href;
	
	if (myString.match(/projecten.*?/))
	{
		url = 'projecten';
	}
	else if (myString.match(/dakmeesters.*?/))
	{
		url = 'dakmeesters';
	}
	
	for(var i in widget.item.markers)
	{
		var label = new ELabel(widget.item.markers[i].gmarker.getLatLng(), 
			'<div style="width: 97px; color:#fff; cursor:pointer; text-align:center; font-weight:bold; font-size: 8pt; " onclick="location.href=\'./index.php?category0='+ url + '&category1=provincie&category2=' + provinceUrl[widget.item.markers[i].title] + '\'">' + 
				provinceName[widget.item.markers[i].title] + '&nbsp;' + provinceCount[widget.item.markers[i].title] + 
			'</div>', 
			"mapProvince",
			new GSize(-17, -16));
		map.addOverlay(label);
	}	
}

var globalMap;
var networkArr = new Array();
function onLoadProv(widget)
{
	var map = widget.gmap;
	globalMap = map;
	initMap(map);
	
	var selIcon = createSelIcon();
	
	var selMarker = new GMarker(new GLatLng(0, 0), {
		icon: selIcon ? selIcon : G_DEFAULT_ICON,
		clickable: true,
		draggable: false
	});
		
	GEvent.addListener(map, "infowindowopen", function()
	{
		var infoWindow = map.getInfoWindow();
		var tmppoint = map.fromLatLngToContainerPixel(infoWindow.getPoint());
		tmppoint.y -= 100;
		map.panTo(map.fromContainerPixelToLatLng(tmppoint));
	});
	
	if(networkLocations.length > 0) {
		var icon = createIcon();
		for(var i = 0; i < networkLocations.length; i++) {
			var object = networkLocations[i];

			var array = object['location'].split(';');
			
			var marker = new GMarker(new GLatLng(array[0], array[1]), {
				title: object['name'],
				icon: icon ? icon : G_DEFAULT_ICON,
				clickable: true,
				draggable: false
			});
			object['marker'] = marker;
			networkArr[object['id']] = object;
			//marker.bindInfoWindowHtml(object['name']);
			map.addOverlay(marker);
			
			updateMarker(marker, 
					object['id'],
					object['name'],
					object['address'],
					object['number'],
					object['postal'],
					object['city'],
					object['tel'],
					object['fax'],
					object['email'],
					object['url'],
					object['province'],
					object['text'],
					selMarker
			);
		}
	}
	map.addOverlay(selMarker);
}

/**
 * marker eventlistener
 *  
 * http://groups.google.com/group/Google-Maps-API/browse_thread/thread/7613ba04a7b4555d
 * http://gathering.tweakers.net/forum/list_messages/1264456
 */
function updateMarker(marker, id, name, address, number, postal, city, tel, fax, email, url, province, text, selMarker) {
	
	var myString = location.href;
	
	GEvent.addListener(marker, "click", function() {
		obj = document.getElementById("updateInfo");
		if (myString.match(/=dakmeesters.*?/))
		{
			obj.innerHTML = '<span style="font-weight: bold; color: #00a2aa; font-size: 10pt;">' + name + '</span><br />' + 
		 				address + '&nbsp;' + 
		 				number + '<br />' + 
		 				postal + '<br />' + 
		 				city + '<br />' + 
		 				'Tel: ' + tel + '<br />' + 
		 				'Fax: ' + fax + '<br />' + 
		 				'Email: <a href="mailto:' + email + '">' + email + '</a><br />' + 
		 				'Website: <a href="http://' + url + '" target="_blank">' + url + '</a><br />' + 
		 				'<br />' +
		 				'<a href="./index.php?category0=dakmeesters&category1=provincie&category2=' + province + '&id=' + id + '" class="pijl_link_blue">Bekijk profiel</a>';
		}
		else if (myString.match(/=projecten.*?/))
		{
			obj.innerHTML = '<span style="font-weight: bold; color: #00a2aa; font-size: 10pt;">' + name + '</span><br />' +
			text + '<br />' +
			'<a href="./index.php?category0=projecten&category1=provincie&category2=' + province + '&id=' + id + '" class="pijl_link_blue">Bekijk project</a>';
		}
		
		 var point = marker.getPoint();
		 selMarker.setPoint(point);
		 
	});
	 
}


function onLoadDetail(widget)
{
	var map = widget.gmap;
	initMap(map);
	
	if(networkArea.length > 0)
	{
		var polygon = new GPolygon(networkArea, "#00A2AA", 1, 1, "#00A2AA", 0.2);
		map.addOverlay(polygon);
	
		var bounds = polygon.getBounds();
		map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
	}
	
	GEvent.addListener(map, "infowindowopen", function()
	{
		var infoWindow = map.getInfoWindow();
		var tmppoint = map.fromLatLngToContainerPixel(infoWindow.getPoint());
		tmppoint.y -= 100;
		map.panTo(map.fromContainerPixelToLatLng(tmppoint));
	});
	
	if(projectLocations.length > 0) {
		var icon = createIcon();
		for(var i = 0; i < projectLocations.length; i++) {
			var object = projectLocations[i];

			var array = object['location'].split(';');
			var marker = new GMarker(new GLatLng(array[0], array[1]), {
				title: object['name'],
				icon: icon ? icon : G_DEFAULT_ICON,
				clickable: true,
				draggable: false
			});
			object['marker'] = marker;
			networkArr[object['id']] = object;
			marker.bindInfoWindowHtml(object['content']);
			map.addOverlay(marker);
		}
	}
}

function onLoadProjectDetail(widget)
{
	var map = widget.gmap;
	initMap(map);
	if (projectLocation.length > 0)
	{
		var selIcon = createSelIcon();
		for(var i = 0; i < projectLocation.length; i++) {
			var object = projectLocation[i];

			var array = object['location'].split(';');
			var marker = new GMarker(new GLatLng(array[0], array[1]), {
				title: object['name'],
				icon: selIcon ? selIcon : G_DEFAULT_ICON,
				clickable: false,
				draggable: false
			});
			object['marker'] = marker;
			networkArr[object['id']] = object;
			//marker.bindInfoWindowHtml(object['content']);
			map.addOverlay(marker);
		}
		var center = marker.getPoint();
		map.setCenter(center);
	}
}

function onLoadSearchResults(widget)
{
	var map = widget.gmap;
	globalMap = map;
	initMap(map);
	
	for(var i in widget.item.markers)
	{
		widget.item.markers[i].gmarker.hide();
	}
	
	var selIcon = createSelIcon();
	
	var selMarker = new GMarker(new GLatLng(0, 0), {
		icon: selIcon ? selIcon : G_DEFAULT_ICON,
		clickable: true,
		draggable: false
	});
	
	GEvent.addListener(map, "infowindowopen", function()
	{
		var infoWindow = map.getInfoWindow();
		var tmppoint = map.fromLatLngToContainerPixel(infoWindow.getPoint());
		tmppoint.y -= 100;
		map.panTo(map.fromContainerPixelToLatLng(tmppoint));
	});
	
	if(networkLocations.length > 0) {
		var icon = createIcon();
		for(var i = 0; i < networkLocations.length; i++) {
			var object = networkLocations[i];

			var array = object['location'].split(';');
			var marker = new GMarker(new GLatLng(array[0], array[1]), {
				title: object['name'],
				icon: icon ? icon : G_DEFAULT_ICON,
				clickable: true,
				draggable: false
			});
			object['marker'] = marker;
			networkArr[object['id']] = object;
			//marker.bindInfoWindowHtml(object['name']);
			map.addOverlay(marker);
			
			updateMarker(marker, 
					object['id'],
					object['name'],
					object['address'],
					object['number'],
					object['postal'],
					object['city'],
					object['tel'],
					object['fax'],
					object['email'],
					object['url'],
					object['province'],
					object['text'],
					selMarker
			);
		}
	}
	map.addOverlay(selMarker);
}

function selectNetwork(i)
{
	var marker = networkArr[i]['marker'];
	globalMap.panTo(marker.getPoint());
	marker.openInfoWindowHtml(networkArr[i]['content']);
}