//<![CDATA[

var icons=[
	"/cs/Sunparks/scripts/SUNPARKS/gmaps/ico_park.png",
	"/cs/Sunparks/scripts/SUNPARKS/gmaps/ico_park_hotel.png",
	"/cs/Sunparks/scripts/SUNPARKS/gmaps/ico_active.png",
	"/cs/Sunparks/scripts/SUNPARKS/gmaps/ico_selected.png",
]

	if (GBrowserIsCompatible()) {
		var debug = false;
		var normalIcon;
		var highlightIcon;
		var map;
		var cookiehelp;

		function InitMap() {
			normalIcon = new GIcon();
			normalIcon.image = "/cs/Sunparks/scripts/SUNPARKS/gmaps/ico_park.png";
			normalIcon.iconSize = new GSize(49, 55);
			normalIcon.shadowSize = new GSize(0, 0);
			normalIcon.iconAnchor = new GPoint(10, 17);
			normalIcon.infoWindowAnchor = new GPoint(20, 18);
			normalIcon.infoShadowAnchor = new GPoint(20, 34);

			highlightIcon = new GIcon(normalIcon);
			highlightIcon.image = "/cs/Sunparks/scripts/SUNPARKS/gmaps/ico_active.png";
		
			tipIcon = new GIcon(normalIcon);
			tipIcon.image = "/cs/Sunparks/images/SUNPARKS/style/touristguide/activity1.gif";
			tipIcon.iconSize = new GSize(38, 34);
				
			if(typeof(routeplan)!="undefined"&&routeplan===true){
				// create the map
				map = new GMap2(document.getElementById("gmap"));
				map.addControl(new GSmallMapControl());
				map.addControl(new GMapTypeControl());

				map.setCenter(new GLatLng(loadMapInfo.lat, loadMapInfo.lng), loadMapInfo.zoom);
				generateParkRoute("/cs/Satellite?pagename=SPCommon/GoogleMap/GoogleMapXML&lang="+sCSLang+"&country="+sCSCountry+"&rendermode="+sGMRendermode,loadMapInfo.parcid);
			}else if(typeof(tipList)!="undefined"){
				if(tipList===true){
					// create the map
					map = new GMap2(document.getElementById("gmap"));
					map.addControl(new GSmallMapControl());
					map.addControl(new GMapTypeControl());

					map.setCenter(new GLatLng(loadMapInfo.lat, loadMapInfo.lng), loadMapInfo.zoom);
					generateParkTips("/cs/Satellite?pagename=SPCommon/GoogleMap/GoogleMapXML&lang="+sCSLang+"&country="+sCSCountry+"&rendermode="+sGMRendermode,loadMapInfo.parcid,loadMapInfo.category,'');
				} else {
					if(switchToTip!=''){
						// create the map
						map = new GMap2(document.getElementById("gmap"));
						map.addControl(new GSmallMapControl());
						map.addControl(new GMapTypeControl());
						map.setCenter(new GLatLng(loadMapInfo.lat, loadMapInfo.lng), 8);

						generateParkTips("/cs/Satellite?pagename=SPCommon/GoogleMap/GoogleMapXML&lang="+sCSLang+"&country="+sCSCountry+"&rendermode="+sGMRendermode,loadMapInfo.parcid,loadMapInfo.category,switchToTip);
						map.setCenter(new GLatLng(loadMapInfo.lat, loadMapInfo.lng), loadMapInfo.zoom);
					} else  {
						if(typeof(eventMarkerArray)!="undefined"){
							// create the map
							map = new GMap2(document.getElementById("gmap-calendar"));
							map.addControl(new GSmallMapControl());
							map.addControl(new GMapTypeControl());

							// plfe - calendar
							map.setCenter(new GLatLng(loadMapInfo.lat, loadMapInfo.lng), loadMapInfo.zoom);
							generateCalendarMap();			
						}
					}
				}
			}else if(typeof(regioninfo)!="undefined"&&regioninfo===true){
				// create the map
				map = new GMap2(document.getElementById("gmap"));
				map.addControl(new GSmallMapControl());
				map.addControl(new GMapTypeControl());

				map.setCenter(new GLatLng(loadMapInfo.lat, loadMapInfo.lng), loadMapInfo.zoom);
				generateRegionData("/cs/Satellite?pagename=SPCommon/GoogleMap/GoogleMapXML&lang="+sCSLang+"&country="+sCSCountry+"&rendermode="+sGMRendermode,loadMapInfo.regionid);
			}else if(typeof(dayVisitTips)!="undefined"&&dayVisitTips===true){
				// create the map
				map = new GMap2(document.getElementById("gmap"));
				map.addControl(new GSmallMapControl());
				map.addControl(new GMapTypeControl());
				
				// bisa - dayvisits
				map.setCenter(new GLatLng(loadMapInfo.lat, loadMapInfo.lng), loadMapInfo.zoom);
				generateParkDayVisitTips();				
			}else{
				// create the map
				map = new GMap2(document.getElementById("gmap"));
				map.addControl(new GSmallMapControl());
				map.addControl(new GMapTypeControl());

				map.setCenter(new GLatLng(51.10383267274113, 5.554921875), 6);
				generateparcdata("/cs/Satellite?pagename=SPCommon/GoogleMap/GoogleMapXML&lang="+sCSLang+"&country="+sCSCountry+"&rendermode="+sGMRendermode);
			}
			if (map!=null){
				if(debug) {					
					GEvent.addListener(map,'mousemove',function(latlng) {
					var pixelLocation = map.fromLatLngToDivPixel(latlng);
						GLog.write('||:' + latlng + ' at:' + pixelLocation + ' zoom:' + map.getZoom());
					});
				}
				//GEvent.bind(map,"zoomend",this,function() { moveMarker(); });
				GEvent.addListener(map, "dragstart", function(event){resetmarkerstates();})
				GEvent.addListener(map, "click", function(marker, point){if(!marker){resetmarkerstates();}})
				GEvent.addListener(map.getInfoWindow(), "closeclick", function(event){resetmarkerstates();});		
			}
		}
		
		function resetmarkerstates(){
			map.closeInfoWindow();

			$("#tips_details").css("display","none");
			$("#tip_image").css("display","none");
			showParkTips(0);

			//for(i=1; i < country_markers.length; i++) {
			for (var i in country_markers){
				for(j=0; j < country_markers[i].length; j++) {
					marker = normalmarkers[country_markers[i][j]];
					try {marker.setImage(marker.iconImageSrc);} catch(e){}
					//document.getElementById('sidebar_parcname_'+country_markers[i][j]).style.backgroundColor = '#FFFFFF';
					marker_open = false;
				}
			}
			try{
				if (typeof(tipList)!="undefined"&&tipList===true) {
					highlightTipLink(null)
				}
			}catch(e){alert(e)};
		}
		
		// A function to create the marker and set up the event window
		// There are now two arrays of markers, one for normal icons and one for highlights
		var normalmarkers = [];			// Contains the regular markers
		var htmls = [];					// Parc texts
		var country_codes = [];
		var country_markers = [];
		var country_parc_names = [];
		var selectedcountry = 0;
		var marker_open = false;
		
		function createMarker(o){
			var marker = new GMarker(o.point, o.baseIcon);

			marker.id = o.parc_id;
			marker.country = o.country_id

			marker.iconImageSrc=(typeof(o.icon)!="undefined")?o.icon:o.iconImageSrc;
			marker.html = o.html;
			marker.urls = o.urls;
						
			if (typeof(o.linkLabels)!="undefined"){
				marker.linkLabels = o.linkLabels;
			}
			normalmarkers[o.parc_id] = marker;
			htmls[o.parc_id] = o.html;

			var parkelem = document.getElementById('leftnav_park_'+o.parc_id);
			if (parkelem!=null) {
				parkelem.onmouseover = function (){
					showInfoWindow(o.parc_id);
					showParkTips(o.parc_id);
				}
			}	
			var hotelelem = document.getElementById('leftnav_hotel_'+o.parc_id);
			if (hotelelem!=null) {
				hotelelem.onmouseover = function (){
					showInfoWindow(o.parc_id);
					showParkTips(o.parc_id);
				}
			}	
			
			//GEvent.addListener(marker, "mouseover", function() {
			//	mouseoveraction(this.id, this.country);
				//document.getElementById('sidebar_parcname_'+this.id).style.backgroundColor = '#F2FDDD';
			//});

			GEvent.addListener(marker, "mouseout", function() {
				//document.getElementById('sidebar_parcname_'+this.id).style.backgroundColor = '#ffffff';
			});

			GEvent.addListener(marker, "mouseover", function() {
				resetmarkerstates();
				var html = this.html;
				var html2='';
				var counter=1;
				
				html+='<table><tr>\
							<td class="balloonLink" style="width:320px;">'
							for (var i in this.urls){

								if (this.urls[i]!=null && this.urls[i]!=""){
									counter=(counter>3)?1:counter;
									var alignment=(counter%2==0)?'center':((counter%3==0)?'right':'left');
									html+='<div style="width:33%;float:left;text-align:'+alignment+'"><a href="javascript:document.location.href=\''+this.urls[i]+'\'">&raquo '+this.linkLabels[i]+'</a></div>';
									html2+='<br style="height:20px;line-height:20px;"/>';
									counter++;
								}
							}
				html+=html2;
				html+='		</td>\
						</tr></table>';
				
				if (marker.id.toString().indexOf("_tip_")==-1){
					marker.setImage(icons[3]);
				}
				
				marker.openInfoWindowHtml(html);
				//highlight sidebar for tips
				if (marker.id.toString().indexOf("_tip_")>-1){
					try{
						highlightTipLink(null)
						highlightTipLink("lnk_"+marker.id)
						showTipDetails(marker.id);
					}catch(e){}
				} else {
					showParkTips(marker.id)
				}
			});

			return marker;
		}
		
		function showParkTips(parkid)
		{
			var touristguide_village_elem = document.getElementById("touristguide-village");
			var tips_elem = document.getElementById("tips");
			if (touristguide_village_elem!=null){
				if (parkid!='') {	
					var tlu = '/cs/Satellite?pagename=Sunparks/Village_C/SPTipsListDetailView&c=Village_C&cid=' + parkid + '&country=' + sCSCountry + '&lang=' + sCSLang + "&rendermode=" + sGMRendermode;
					var request = GXmlHttp.create();
					request.open("GET", tlu, true);
					request.onreadystatechange = function() {
						if (request.readyState == 4) {
							touristguide_village_elem.innerHTML = request.responseText;
							tips_elem.style.display='none';
							touristguide_village_elem.style.display='';
						}
					}
					request.send(null);
				} else {
					touristguide_village_elem.style.display='none';
					tips_elem.style.display='';
					touristguide_village_elem.innerHTML = '';					
				}
			}
		}
		
		function showInfoWindow(id){
			resetmarkerstates();
			var marker = normalmarkers[id];
			var html = marker.html;
			var html2='';
			var counter=1;
			html+='<table><tr>\
						<td class="balloonLink" style="width:320px;">'
						for (var i in marker.urls){
							if (marker.urls[i]!=null && marker.urls[i]!=""){
								counter=(counter>3)?1:counter;
								var alignment=(counter%2==0)?'center':((counter%3==0)?'right':'left');
								html+='<div style="width:33%;float:left;text-align:'+alignment+'"><a href="javascript:document.location.href=\''+marker.urls[i]+'\'">&raquo '+marker.linkLabels[i]+'</a></div>';
								html2+='<br style="height:20px;line-height:20px;"/>';
								counter++;
							}
						}

			html+=html2;
			html+='		</td>\
					</tr></table>';
			marker.setImage("/cs/Sunparks/scripts/SUNPARKS/gmaps/ico_selected.png");
			marker.openInfoWindowHtml(html);
		}
		
		function mouseoveraction(id, country){
			// first reset all markers
			var marker;
			if(marker_open == id) { return false; }
			
			if(selectedcountry != 0) {
				if(country == selectedcountry) {
					for(j=0; j < country_markers[country].length; j++) {
						marker = normalmarkers[country_markers[country][j]];
						marker.setImage("/cs/Sunparks/scripts/SUNPARKS/gmaps/marker_default.png");
						//document.getElementById('sidebar_parcname_'+country_markers[country][j]).style.backgroundColor = '#FFFFFF';
					}
					if(typeof(country_markers[country])=="object") {
						if(country_markers[country].in_array(id)) {
							marker = normalmarkers[id];
							marker.setImage("/cs/Sunparks/scripts/SUNPARKS/gmaps/marker_hover.png");
							marker.openInfoWindowHtml(htmls[id]);
							marker_open = id;
						}
					}
				}
			} else {
				//for(i=1; i < country_markers.length; i++) {
				for (var i in country_markers){
					for(j=0; j < country_markers[i].length; j++) {
						marker = normalmarkers[country_markers[i][j]];
						marker.setImage("/cs/Sunparks/scripts/SUNPARKS/gmaps/marker_default.png");
						//document.getElementById('sidebar_parcname_'+country_markers[i][j]).style.backgroundColor = '#FFFFFF';
					}
				}
			
				var marker = normalmarkers[id];
				marker.setImage("/cs/Sunparks/scripts/SUNPARKS/gmaps/marker_hover.png");
				marker.openInfoWindowHtml(htmls[id]);
				marker_open = id;
			}
		}
		
		function goto(lat, lng, zoom){
			var point = new GLatLng(lat,lng);
			map.setCenter(point, zoom);
		}
		
		function gotoAndGroupMarkers(country_id, lat, lng, zoom){
			var point = new GLatLng(lat,lng);
			map.setCenter(point, zoom);
			
			map.getInfoWindow().hide();
			map.clearOverlays();
			
			selectedcountry = country_id;
			
			if(country_id == 0){
				for (var i in country_markers){
					for(j=0; j < country_markers[i].length; j++){
						marker = normalmarkers[country_markers[i][j]];
						map.addOverlay(marker);
						try {marker.setImage(marker.iconImageSrc);} catch(e){}
					}
				}
			}else{
				for(j=0; j < country_markers[country_id].length; j++){
					marker = normalmarkers[country_markers[country_id][j]];
					map.addOverlay(marker);
					try {marker.setImage(marker.iconImageSrc);} catch(e){}
				}
			}
		}
		
		function generateparcdata(url) {
			var request = GXmlHttp.create();
			request.open("GET", url, true);
			request.onreadystatechange = function() {
				if (request.readyState == 4) {
					var xmlDoc = request.responseXML;
					
					// Help text
					var helpdesc = xmlDoc.getElementsByTagName("helpdescription")[0].childNodes[0].nodeValue;
					var helpdescnav = xmlDoc.getElementsByTagName("helpdescriptionnav")[0].childNodes[0].nodeValue;
					var helpdesctitle = xmlDoc.getElementsByTagName("helpdescriptiontitle")[0].childNodes[0].nodeValue;

					// Link labels
					var linkLabels={
						parkDetails:xmlDoc.getElementsByTagName("linklabelparc")[0].childNodes[0].nodeValue,
						route:xmlDoc.getElementsByTagName("linklabelroute")[0].childNodes[0].nodeValue,
						hotelDetails:xmlDoc.getElementsByTagName("linklabelhotel")[0].childNodes[0].nodeValue,
						regionDetails:xmlDoc.getElementsByTagName("linklabelregion")[0].childNodes[0].nodeValue
					}

					// obtain the array of parcs and loop through it
					var parcs = xmlDoc.documentElement.getElementsByTagName("parc");
					var parc_ids = [];		// make array of all markers
					var parc_names = [];	// make array of all parcnames
					
					// obtain the country codes
					for (var i = 0; i < parcs.length; i++) {
						country_codes[i] = parcs[i].getElementsByTagName("country")[0].getAttribute("countryid");
						country_markers[country_codes[i]] = new Array();
						country_parc_names[country_codes[i]] = new Array();
					}
					
					// hide the info window, otherwise it still stays open where the removed marker used to be
					map.getInfoWindow().hide();
					map.clearOverlays();

					for (var i = 0; i < parcs.length; i++) {
						var parc_id = parseFloat(parcs[i].getAttribute("parcid"));
							
						// obtain the attribues of each parc
						var country_id = parcs[i].getElementsByTagName("country")[0].getAttribute("countryid");

						var lat = parseFloat(parcs[i].getElementsByTagName("latitude")[0].childNodes[0].nodeValue);
						var lng = parseFloat(parcs[i].getElementsByTagName("longitude")[0].childNodes[0].nodeValue);
						var point = new GLatLng(lat,lng);

						var parcname = parcs[i].getElementsByTagName("parcname")[0].childNodes[0].nodeValue;
						var postcode = parcs[i].getElementsByTagName("parczipcode")[0].childNodes[0].nodeValue;
						var street = parcs[i].getElementsByTagName("parcaddress")[0].childNodes[0].nodeValue;
						var city = parcs[i].getElementsByTagName("parccity")[0].childNodes[0].nodeValue;
						var gmquery = parcs[i].getElementsByTagName("routingaddress")[0].childNodes[0].nodeValue;
						var parcdistances = parcs[i].getElementsByTagName("parcdistances")[0].childNodes[0].nodeValue;
						
						var rating = parseInt(parcs[i].getAttribute("rating"));
						var parctype = parseInt(parcs[i].getAttribute("parctype"));
						var category = parcs[i].getElementsByTagName("category")[0].childNodes[0].nodeValue;
						
						var parcimage = parcs[i].getElementsByTagName("imageurl")[0].childNodes[0].nodeValue;
						
						var detailtitle = parcs[i].getElementsByTagName("parcdetailtitle")[0].childNodes[0].nodeValue;
						
						var html = "";
						
						html+= '<div class="mapTooltipInfo">\n';
						html+= '<table><tr><td colspan="2"><div>\
									<h3>'+parcname+'</h3>\
									<h4>'+category+'</h4>\
								</div></td></tr>\n';
						
						html+= '<tr><td width="190" style="padding-right:10px">\
									<ul class="parkHighlights">\n';
						// usps
						var usps = parcs[i].getElementsByTagName("usp");
						for(var usp = 0; usp < usps.length; usp++) {
							html+= '<li><span style="color:#00387f;">' + usps[usp].childNodes[0].nodeValue + '</span></li>\n';
						}
						html+= "	</ul>"
						html+= '</td>\
								<td width="120" style="text-align:right">\
									<!-- <div>\n<img src="/cs/Sunparks/scripts/SUNPARKS/gmaps/'+parc_id+'.jpg" width="100" height="100"></div> -->\
									<img src="'+parcimage+'" width="115" height="80" alt="'+parcname+'" />\
								</td></tr></table>\
						</div>';

						var urls={parkDetails:parcs[i].getElementsByTagName("parkurl")[0].childNodes[0].nodeValue,
							route:parcs[i].getElementsByTagName("routeurl")[0].childNodes[0].nodeValue,
							hotelDetails:parcs[i].getElementsByTagName("hotelurl")[0].childNodes[0].nodeValue,
							regionDetails:parcs[i].getElementsByTagName("regionurl")[0].childNodes[0].nodeValue
						}
						
						addMarker({
							parc_id:parc_id,
							parcname:parcname,
							country_id:country_id,
							parctype:parctype,
							point:point,
							html:html,
							linkLabels:linkLabels,
							urls:urls
						});
					}

					//loading country specifics /*WHERE DETAIL*/
					if(typeof(loadCountry)!="undefined"){loadCountry();}
					
				}
			}
			request.send(null);
		}
		function generateRegionData(url,regionid) {
			var request = GXmlHttp.create();
			request.open("GET", url, true);
			request.onreadystatechange = function() {
				if (request.readyState == 4) {
					var xmlDoc = request.responseXML;
					
					// Help text
					var helpdesc = xmlDoc.getElementsByTagName("helpdescription")[0].childNodes[0].nodeValue;
					var helpdescnav = xmlDoc.getElementsByTagName("helpdescriptionnav")[0].childNodes[0].nodeValue;
					var helpdesctitle = xmlDoc.getElementsByTagName("helpdescriptiontitle")[0].childNodes[0].nodeValue;

					// Link labels
					var linkLabels={
						parkDetails:xmlDoc.getElementsByTagName("linklabelparc")[0].childNodes[0].nodeValue,
						route:xmlDoc.getElementsByTagName("linklabelroute")[0].childNodes[0].nodeValue,
						hotelDetails:xmlDoc.getElementsByTagName("linklabelhotel")[0].childNodes[0].nodeValue,
						regionDetails:xmlDoc.getElementsByTagName("linklabelregion")[0].childNodes[0].nodeValue
					}

					// obtain the array of parcs and loop through it
					var parcs = xmlDoc.documentElement.getElementsByTagName("parc");
					var parc_ids = [];		// make array of all markers
					var parc_names = [];	// make array of all parcnames
					
					// obtain the country codes
					for (var i = 0; i < parcs.length; i++) {
						country_codes[i] = parcs[i].getElementsByTagName("country")[0].getAttribute("countryid");
						country_markers[country_codes[i]] = new Array();
						country_parc_names[country_codes[i]] = new Array();
					}
					
					// hide the info window, otherwise it still stays open where the removed marker used to be
					map.getInfoWindow().hide();
					map.clearOverlays();

					for (var i = 0; i < parcs.length; i++) {
						var parc_id = parseFloat(parcs[i].getAttribute("parcid"));
						// var region_id = parcs[i].getElementsByTagName("regionid")[0].getAttribute("countryid");
						var region_id = parcs[i].getElementsByTagName("regionid")[0].childNodes[0].nodeValue;						
						if (region_id==regionid){
						
							// obtain the attribues of each parc
							var country_id = parcs[i].getElementsByTagName("country")[0].getAttribute("countryid");
							

							var lat = parseFloat(parcs[i].getElementsByTagName("latitude")[0].childNodes[0].nodeValue);
							var lng = parseFloat(parcs[i].getElementsByTagName("longitude")[0].childNodes[0].nodeValue);
							var point = new GLatLng(lat,lng);

							var parcname = parcs[i].getElementsByTagName("parcname")[0].childNodes[0].nodeValue;
							var postcode = parcs[i].getElementsByTagName("parczipcode")[0].childNodes[0].nodeValue;
							var street = parcs[i].getElementsByTagName("parcaddress")[0].childNodes[0].nodeValue;
							var city = parcs[i].getElementsByTagName("parccity")[0].childNodes[0].nodeValue;
							var gmquery = parcs[i].getElementsByTagName("routingaddress")[0].childNodes[0].nodeValue;
							var parcdistances = parcs[i].getElementsByTagName("parcdistances")[0].childNodes[0].nodeValue;
							
							var rating = parseInt(parcs[i].getAttribute("rating"));
							var parctype = parseInt(parcs[i].getAttribute("parctype"));
							var category = parcs[i].getElementsByTagName("category")[0].childNodes[0].nodeValue;
							
							var parcimage = parcs[i].getElementsByTagName("imageurl")[0].childNodes[0].nodeValue;
							
							var detailtitle = parcs[i].getElementsByTagName("parcdetailtitle")[0].childNodes[0].nodeValue;
							
							var html = "";
							
							html+= '<div class="mapTooltipInfo">\n';
							html+= '<table><tr><td colspan="2"><div>\
										<h3>'+parcname+'</h3>\
										<h4>'+category+'</h4>\
									</div></td></tr>\n';
							
							html+= '<tr><td width="190" style="padding-right:10px">\
										<ul class="parkHighlights">\n';
							// usps
							var usps = parcs[i].getElementsByTagName("usp");
							for(var usp = 0; usp < usps.length; usp++) {
								html+= '<li><span style="color:#00387f;">' + usps[usp].childNodes[0].nodeValue + '</span></li>\n';
							}
							html+= "	</ul>"
							html+= '</td>\
									<td width="120" style="text-align:right">\
										<!-- <div>\n<img src="/cs/Sunparks/scripts/SUNPARKS/gmaps/'+parc_id+'.jpg" width="100" height="100"></div> -->\
										<img src="'+parcimage+'" width="115" height="80" alt="'+parcname+'" />\
									</td></tr></table>\
							</div>';

							var urls={parkDetails:parcs[i].getElementsByTagName("parkurl")[0].childNodes[0].nodeValue,
								route:parcs[i].getElementsByTagName("routeurl")[0].childNodes[0].nodeValue,
								hotelDetails:parcs[i].getElementsByTagName("hotelurl")[0].childNodes[0].nodeValue,
								regionDetails:parcs[i].getElementsByTagName("regionurl")[0].childNodes[0].nodeValue
							}
							
							addMarker({
								parc_id:parc_id,
								parcname:parcname,
								country_id:country_id,
								parctype:parctype,
								point:point,
								html:html,
								linkLabels:linkLabels,
								urls:urls
							});
						}
					}

					//loading country specifics /*WHERE DETAIL*/
					if(typeof(loadCountry)!="undefined"){loadCountry();}
					
				}
			}
			request.send(null);
		}
		
		function LRN(n) { // prefix leading zero for numbers < 10
		n = String(n) ; if (n.length < 2) n = '0' + n ; return n }

		
		function generateParkTips(url,parcId,category,tipToShow) {
			var request = GXmlHttp.create();
			request.open("GET", url, true);
			request.onreadystatechange = function() {
				if (request.readyState == 4) {
					var xmlDoc = request.responseXML;
					
					var parcs = xmlDoc.documentElement.getElementsByTagName("parc");
					var parc_ids = [];		// make array of all markers
					var parc_names = [];	// make array of all parcnames
					
					// hide the info window, otherwise it still stays open where the removed marker used to be
					map.getInfoWindow().hide();
					map.clearOverlays();

					// obtain the country codes 
					for (var i = 0; i < parcs.length; i++) {
						country_codes[i] = parcs[i].getElementsByTagName("country")[0].getAttribute("countryid");
						country_markers[country_codes[i]] = new Array();
						country_parc_names[country_codes[i]] = new Array();
					}
					
					//determine tipToShow,
					var tipToShowId="";
					if (tipToShow!=""){
						for (var i = 0; i < parcs.length; i++) {
							var parc_id = parseFloat(parcs[i].getAttribute("parcid"));
							if (parcId===parc_id) {
								for (var tips=0;tips<parcs[i].getElementsByTagName("tip").length;tips++){
									var tipid=parcs[i].getElementsByTagName("tip")[tips].getElementsByTagName('tipid')[0].childNodes[0].nodeValue;	
									var tipurltitle=parcs[i].getElementsByTagName("tip")[tips].getElementsByTagName('tipurltitle')[0].childNodes[0].nodeValue;	
									if (tipurltitle==tipToShow || tipid==tipToShow){
										tipToShowId=tipid;
										
										var tipcategorystyle=parcs[i].getElementsByTagName("tip")[tips].getElementsByTagName('tipcategorystyle')[0].childNodes[0].nodeValue;
										var tipcategory=parcs[i].getElementsByTagName("tip")[tips].getElementsByTagName('tipcategory')[0].childNodes[0].nodeValue;	
										var tipcategoryzoom=parcs[i].getElementsByTagName("tip")[tips].getElementsByTagName('tipcategoryzoom')[0].childNodes[0].nodeValue;	
										
										loadMapInfo.zoom=tipcategoryzoom;
										loadMapInfo.category=tipcategory;
										category=tipcategory;
										loadMapInfo.categorystyle=tipcategorystyle;
									}
								}
							}
						}
						changeTab(loadMapInfo.categorystyle);
						map.checkResize();
					}
					
					
					for (var i = 0; i < parcs.length; i++) {
						var parc_id = parseFloat(parcs[i].getAttribute("parcid"));
						//parsing selected parc only
						if (parcId===parc_id) {
							// obtain the attribues of each parc
							var country_id = parcs[i].getElementsByTagName("country")[0].getAttribute("countryid");
	
							var lat = parseFloat(parcs[i].getElementsByTagName("latitude")[0].childNodes[0].nodeValue);
							var lng = parseFloat(parcs[i].getElementsByTagName("longitude")[0].childNodes[0].nodeValue);
							var point = new GLatLng(lat,lng);
	
							var parcname = parcs[i].getElementsByTagName("parcname")[0].childNodes[0].nodeValue;
							var parctype = parseInt(parcs[i].getAttribute("parctype"));
							
							var parcimage = parcs[i].getElementsByTagName("imageurl")[0].childNodes[0].nodeValue;
							
							var html = "";
							
							html+= '<div class="mapTooltipInfo">\n';
							html+= '<table><tr><td colspan="2"><div>\
										<h3>'+parcname+'</h3>\
									</div></td></tr>\n';
							
							html+= '<tr><td width="190" style="padding-right:10px">\
										<ul class="parkHighlights">\n';
							// usps
							var usps = parcs[i].getElementsByTagName("usp");
							for(var usp = 0; usp < usps.length; usp++) {
								html+= '<li><span style="color:#00387f;">' + usps[usp].childNodes[0].nodeValue + '</span></li>\n';
							}
							html+= "	</ul>"
							html+= "</td>";
							html+= "<td width='120' style='text-align:right'>";
							if (trim(parcimage)!=""){
								html+= "<img src='"+trim(parcimage)+"' width='115' height='80' alt='"+parcname+"' />";
							}
					 		html+= "</td></tr></table>";
							html+= "</div>";
								
				
							addMarker({
								parc_id:parc_id,
								parcname:parcname,
								country_id:country_id,
								parctype:parctype,
								point:point,
								html:html
							});

							/*adding tips*/
							var tipcount=0;
							tips_list_elem=document.getElementById("tips_list");
							tips_details_elem=document.getElementById("tips_details");
							tips_list_elem.innerHTML="";
							tips_details_elem.innerHTML="";							
							for (var tips=0;tips<parcs[i].getElementsByTagName("tip").length;tips++){

								var tipid=parcs[i].getElementsByTagName("tip")[tips].getElementsByTagName('tipid')[0].childNodes[0].nodeValue;
								var tipcategory=parcs[i].getElementsByTagName("tip")[tips].getElementsByTagName('tipcategory')[0].childNodes[0].nodeValue;
								var tipcategorystyle=parcs[i].getElementsByTagName("tip")[tips].getElementsByTagName('tipcategorystyle')[0].childNodes[0].nodeValue;
								var tiplocation=parcs[i].getElementsByTagName("tip")[tips].getElementsByTagName('tiplocation')[0].childNodes[0].nodeValue;
								var tipname=parcs[i].getElementsByTagName("tip")[tips].getElementsByTagName('tiptitle')[0].childNodes[0].nodeValue;
								var tipdistance=parcs[i].getElementsByTagName("tip")[tips].getElementsByTagName('tipdistance')[0].childNodes[0].nodeValue;
								var tipdescription=parcs[i].getElementsByTagName("tip")[tips].getElementsByTagName('tipdescription')[0].childNodes[0].nodeValue;
								var tipinfo=parcs[i].getElementsByTagName("tip")[tips].getElementsByTagName('tipinfo')[0].childNodes[0].nodeValue;
								var tiplongitude=parcs[i].getElementsByTagName("tip")[tips].getElementsByTagName('tiplongitude')[0].childNodes[0].nodeValue;
								var tiplatitude=parcs[i].getElementsByTagName("tip")[tips].getElementsByTagName('tiplatitude')[0].childNodes[0].nodeValue;
								var tipimage=parcs[i].getElementsByTagName("tip")[tips].getElementsByTagName('tipimage')[0].childNodes[0].nodeValue;
								var tiplink=parcs[i].getElementsByTagName("tip")[tips].getElementsByTagName('tiplink')[0].childNodes[0].nodeValue;

								if (tipcategory==category){
									tipcount=tipcount+1;
									prettytipcount=LRN(tipcount);
									var html="";

									html+= '<div class="mapTooltipInfo">\n';
									html+= '<table><tr><td colspan="2"><div>\
												<h3>'+tipname+'</h3>\
											</div></td></tr>\n';
									
									html+= '<tr><td width="190" style="padding-right:10px">\
												<div style="font-size:12px;color:#00387F;">\n';
									html+= tipdescription;
									html+= '	</div>';
									
									html+= '</td>';
									html+= '<td width="120" style="vertical-align:top;text-align:right">';
									if (trim(tipimage)!=""){
										html+= '<img src="'+trim(tipimage)+'" width="115" height="80" alt="'+tipname+'" />';
									}
									html+= '</td></tr></table>';
									html+= '</div>';

									var icon="/cs/Sunparks/images/SUNPARKS/style/touristguide/"+tipcategorystyle+tipcount+".gif";
									
									addMarker({
										parc_id:parc_id+"_tip_"+tipid,
										baseIcon:tipIcon,
										icon:icon,
										country_id:country_id,
										point:new GLatLng(tiplatitude,tiplongitude),
										html:html
									});

									//Create html in sidebar
									var tipdivid=parc_id+"_tip_"+tipid;
									var tipdivid2="'"+tipdivid+"'";
									
									var sidehtml= '<li><a href="#" onclick="showTip('+tipdivid2+',this);return false;">';
									sidehtml = sidehtml + '<span>'+prettytipcount+'</span>';
									sidehtml = sidehtml + ' <strong>'+tipname+'</strong>';
									if (tiplocation!=""){
										sidehtml = sidehtml + '<br/> &gt; '+tiplocation;
									}
									sidehtml = sidehtml + '</a></li>';
																		
									tips_list_elem.innerHTML=tips_list_elem.innerHTML+sidehtml;
									
									/* create tipdetail */
									var detailhtml='<div class="col" id="'+tipdivid+'" style="display:none"><h2 class="number"><span>'+prettytipcount+'</span>'+tipname+'</h2><p>'+tipinfo+'</p>';
									detailhtml=detailhtml + '<div class="clr"></div>';
									detailhtml=detailhtml + '</div>';
									tips_details_elem.innerHTML = tips_details_elem.innerHTML + detailhtml;
									
									/* create images */
									document.getElementById(tipdivid).imageurl=trim(tipimage);

								}
							}
							break;
						}
						
					}//loading country specifics /*WHERE DETAIL*/
					if(typeof(loadTips)!="undefined"){loadTips();}
					
					if (tipToShow!=''){
						showTip(loadMapInfo.parcid+"_tip_"+tipToShowId, null);
					}
					
				}		
			}
			request.send(null);
		}
		
		
		// plfe - calendar
		function generateCalendarMap()
		{
			map.clearOverlays();
			if(typeof(eventMarkerArray)!="undefined")
			{
				for (i=0;i<eventMarkerArray.length;i++)
				{
					if (eventMarkerArray[i].hasloc){
						// Maak het icon
						dayVisitIcon = new GIcon(normalIcon);
						dayVisitIcon.image = '/cs/Sunparks/images/SUNPARKS/style/touristguide/i-' + eventMarkerArray[i].category + '.gif';					
						dayVisitIcon.iconSize = new GSize(32, 28);
								
						// Bepaal de locatie
						var point = new GLatLng(eventMarkerArray[i].lat,eventMarkerArray[i].lng);
						
						// Bepaal de marker
						var marker = new GMarker(point, dayVisitIcon);
						
						// Bepaal de HTML voor de marker
						var html="";
						html+= '<div class="mapTooltipInfo">\n';
						html+= '<table><tr><td colspan="2"><div>\
								<h3>'+eventMarkerArray[i].title+'</h3>\
								</div></td></tr>\n';
						html+= '<tr><td width="190" style="padding-right:10px">\
									<div style="font-size:12px;color:#00387F;">\n';
						html+= eventMarkerArray[i].location;
						html+= "	</div>"
						html+= '</td></tr></table>\</div>';
										
						marker.html = html;	
						marker.text = eventMarkerArray[i].category;
						normalmarkers["calenderitem_"+(i+1)]=marker;

						// Voeg listeners toe voor Marker
						GEvent.addListener(marker, "mouseout", function() {
						});

						GEvent.addListener(marker, "mouseover", function() {
							resetmarkerstates();
							this.openInfoWindowHtml(this.html);
						});
						
						// Voeg marker toe aan pagina
						map.addOverlay(marker);		
						if (i==calendarstartmapid){
							map.setCenter(point, 8);
						}
					}
				}			
			}
		}
					
		// bisa - dayvisits
		function generateParkDayVisitTips()
		{
			if(typeof(dayVisitTipsArray)!="undefined")
			{
				for (i=0;i<dayVisitTipsArray.length;i++)
				{
					// Maak het icon
					dayVisitIcon = new GIcon(normalIcon);
					dayVisitIcon.image = '/cs/Sunparks/images/SUNPARKS/style/touristguide/i-' + dayVisitTipsArray[i].category + '.gif';					
					dayVisitIcon.iconSize = new GSize(32, 28);
				
					// Bepaal de locatie
					var point = new GLatLng(dayVisitTipsArray[i].lat,dayVisitTipsArray[i].lng);
					
					// Bepaal de marker
					var marker = new GMarker(point, dayVisitIcon);
					
					// Bepaal de HTML voor de marker
					var html="";
					html+= '<div class="mapTooltipInfo">\n';
					html+= '<table><tr><td colspan="2"><div>\
							<h3>'+dayVisitTipsArray[i].time+': '+dayVisitTipsArray[i].nametext+'</h3>\
							</div></td></tr>\n';
					
					html+= '<tr><td width="190" style="padding-right:10px">\
								<div style="font-size:12px;color:#00387F;">\n';
					html+= dayVisitTipsArray[i].infosummary;
					html+= "	</div>"
					html+= '</td>\
							<td width="120" style="vertical-align:top;text-align:right">\
								<!-- <div>\n<img src="/cs/Sunparks/scripts/SUNPARKS/gmaps/'+'parc_id'+'.jpg" width="100" height="100"></div> -->\
							</td></tr></table>\</div>';
									
					marker.html = html;				
					marker.text = dayVisitTipsArray[i].category;
								
					// Teken de lijn tussen dit en het volgende punt
					var nextC = i;
					nextC++;					
					if(nextC<dayVisitTipsArray.length)
					{
						var polyline = new GPolyline([
						new GLatLng(dayVisitTipsArray[i].lat, dayVisitTipsArray[i].lng),
						new GLatLng(dayVisitTipsArray[nextC].lat, dayVisitTipsArray[nextC].lng)
						], "#FC8D00", 4);
						map.addOverlay(polyline);
					}
					
					// Voeg listeners toe voor Marker
					GEvent.addListener(marker, "mouseout", function() {
						//document.getElementById('sidebar_parcname_'+this.id).style.backgroundColor = '#ffffff';
					});

					GEvent.addListener(marker, "mouseover", function() {
						resetmarkerstates();
						// Toon informatie pop-up
						this.openInfoWindowHtml(this.html);
						showParkTips(parkid);
					});
					
					// Voeg marker toe aan pagina
					map.addOverlay(marker);				
				}			
			}
		}
		
		function trim(value) {
			value = value.replace(/^\s+/,'');
			value = value.replace(/\s+$/,'');
			return value;
		}
		
		function showTip(id,src){
			openMarker(id,src);
			showTipDetails(id);
		}
		
		function showTipDetails(id){
			var tips_details_elem=document.getElementById("tips_details");
			for(var i = 0; i < tips_details_elem.childNodes.length; i ++) { 
				if (tips_details_elem.childNodes[i].id==id){
					tips_details_elem.childNodes[i].style.display="";
				} else {
					tips_details_elem.childNodes[i].style.display="none";
				}
			}
			tips_details_elem.style.display="";	
			
			var tip_image_elem=document.getElementById("tip_image");
			if (document.getElementById(id).imageurl!=""){
				tip_image_elem.childNodes[0].src=document.getElementById(id).imageurl;
				tip_image_elem.style.display="";
			} else {
				tip_image_elem.childNodes[0].src="";
				tip_image_elem.style.display="none";
			}
		}
		
		
		function generateParkRoute(url,parcId) {
			var request = GXmlHttp.create();
			request.open("GET", url, true);
			request.onreadystatechange = function() {
				if (request.readyState == 4) {
					var xmlDoc = request.responseXML;
					
					var parcs = xmlDoc.documentElement.getElementsByTagName("parc");
					var parc_ids = [];		// make array of all markers
					var parc_names = [];	// make array of all parcnames
					
					// hide the info window, otherwise it still stays open where the removed marker used to be
					map.getInfoWindow().hide();
					map.clearOverlays();

					// obtain the country codes 
					for (var i = 0; i < parcs.length; i++) {
						country_codes[i] = parcs[i].getElementsByTagName("country")[0].getAttribute("countryid");
						country_markers[country_codes[i]] = new Array();
						country_parc_names[country_codes[i]] = new Array();
					}
					
					for (var i = 0; i < parcs.length; i++) {
						var parc_id = parseFloat(parcs[i].getAttribute("parcid"));
						//parsing selected parc only
						if (parcId===parc_id) {
							// obtain the attribues of each parc
							var country_id = parcs[i].getElementsByTagName("country")[0].getAttribute("countryid");
	
							var lat = parseFloat(parcs[i].getElementsByTagName("latitude")[0].childNodes[0].nodeValue);
							var lng = parseFloat(parcs[i].getElementsByTagName("longitude")[0].childNodes[0].nodeValue);
							var point = new GLatLng(lat,lng);
	
							var parcname = parcs[i].getElementsByTagName("parcname")[0].childNodes[0].nodeValue;
							var parctype = parseInt(parcs[i].getAttribute("parctype"));
							var parcrouting = parcs[i].getElementsByTagName("routingaddress")[0].childNodes[0].nodeValue;
							var parcimage = parcs[i].getElementsByTagName("imageurl")[0].childNodes[0].nodeValue;
							
							var html = "";
							
							html+= '<div class="mapTooltipInfo">\n';
							html+= '<table><tr><td colspan="2"><div>\
										<h3>'+parcname+'</h3>\
									</div></td></tr>\n';
							
							html+= '<tr><td width="190" style="padding-right:10px">\
										<ul class="parkHighlights">\n';
							// usps
							var usps = parcs[i].getElementsByTagName("usp");
							for(var usp = 0; usp < usps.length; usp++) {
								html+= '<li><span style="color:#00387f;">' + usps[usp].childNodes[0].nodeValue + '</span></li>\n';
							}
							html+= "	</ul>"
							html+= '</td>\
									<td width="120" style="text-align:right">\
										<!-- <div>\n<img src="/cs/Sunparks/scripts/SUNPARKS/gmaps/'+parc_id+'.jpg" width="100" height="100"></div> -->\
										<img src="'+parcimage+'" width="115" height="80" alt="'+parcname+'" />\
									</td></tr></table>\
							</div>';
		
							addMarker({
								parc_id:parc_id,
								parcname:parcname,
								country_id:country_id,
								parctype:parctype,
								point:point,
								html:html
							});
							
							// Route window
							
							var routehtml = "";
							//routehtml+= '<div style="position:absolute;bottom:35px;right:10px;width:130px;overflow:hidden;">';
							routehtml+= '<fieldset style="float:right;background:#fff;padding:5px">';
							routehtml+= '<label for="route_postal_code">' + xmlDoc.getElementsByTagName("routeexplanation")[0].childNodes[0].nodeValue + '</label><input id="postcodeinput" onkeypress="doKeys(\''+parcrouting+'\',event);" style="width:110px" type="text" /><br />';
							routehtml+= '<a id="shop_map_link" onclick="queryroute(\''+parcrouting+'\');" href="#">' + xmlDoc.getElementsByTagName("routetitle")[0].childNodes[0].nodeValue + '</a>';
							routehtml+= '</fieldset>';
							//routehtml+= "</div>";

							document.getElementById('postcodelookup').innerHTML = routehtml;
							document.getElementById('postcodelookup').style.position="absolute";
							document.getElementById('postcodelookup').style.bottom="35px";
							document.getElementById('postcodelookup').style.right="10px";
							document.getElementById('postcodelookup').style.width="130px";
							document.getElementById('postcodelookup').style.overflow="hidden";
							break;
						}
						
					}//loading country specifics /*WHERE DETAIL*/
					if(typeof(loadTips)!="undefined"){loadTips();}
				}
			}
			request.send(null);
		}
		
		function addMarker(o){
			// Remember all id's for lookup
			//parc_ids[i] = o.parc_id;
			//parc_names[i] = o.parcname;

			// And also per country
			if (typeof(o.country_id)!="undefined"){	
				country_markers[o.country_id].push(o.parc_id);
				country_parc_names[o.country_id].push(o.parcname);
			}
			// create the marker
			var iconImageSrc=((o.parctype===1)?icons[0]:icons[1]);

			var marker = createMarker({
				baseIcon:(typeof(o.baseIcon)!="undefined")?o.baseIcon:normalIcon,
				icon:o.icon,
				parc_id:o.parc_id,
				point:o.point,
				parcname:o.parcname,
				html:o.html,
				urls:o.urls,
				country_id:o.country_id,
				iconImageSrc:iconImageSrc,
				linkLabels:o.linkLabels
			}); 
			
			//FEPL some gaat hier ites mis
			map.addOverlay(marker);

			iconImageSrc=(typeof(o.icon)!="undefined")?o.icon:iconImageSrc;
			marker.setImage(iconImageSrc);
		}
		
		function moveMarker() {
			marker = normalmarkers["1171382624273"];
			id = marker.id
			map.removeOverlay(marker);
			if(map.getZoom() > 9) {
				lng = 5.962657928466797;
				lat = 51.44758828725229;
			} else {
				if(map.getZoom() > 8) {
					lng = 5.986175537109375;
					lat = 51.44887208400473;					
				} else {
					if(map.getZoom() > 7) {
						lng = 6.051285362243652;
						lat = 51.45742980658965;					
					} else {
						if(map.getZoom() > 6) {
							lng = 6.25059814453125;
							lat = 51.45742980658965;
						} else {
							lng = 6.45059814453125;
							lat = 51.45742980658965;							
						}
					}
				}
			}
			var point = new GLatLng(lat,lng);
			marker.setPoint(point);
			
			normalmarkers[1171382624273] = marker;
			
			map.addOverlay(marker);
		}
		
		function openMarker(id,src){
			// first reset all markers
			var marker;
			if(marker_open == id) { return false; }
//fepl			highlightTipLink(null)
			resetmarkerstates();
			var marker = normalmarkers[id];

			if (marker!=null){
				if (id.toString().indexOf("calenderitem_")==-1){
					marker.openInfoWindowHtml(htmls[id]);
				} else {
					marker.openInfoWindowHtml(marker.html);
				}

				if (id.toString().indexOf("_tip_")==-1 && id.toString().indexOf("calenderitem_")==-1){
					marker.setImage(icons[3]);
				}

				marker_open = id;
	//fepl			highlightTipLink(src.id);
			}
		}
		
		function highlightTipLink(id){
			if (id==null){
				try{
					if (typeof(active_tip)!="undefined"){
						document.getElementById(active_tip).className=document.getElementById(active_tip).className.replace(" tip_item_selected","");
					}
					return true;
				}catch (e){}
			} else {
				try{
					document.getElementById(id).className+=" tip_item_selected";
					active_tip=id;
				} catch (e) {}
			}
		}
	} else {
		switch(language) {
			case "NL" :
				alert("Uw browser is helaas niet geschikt om deze kaart weer te geven.");
				break;
			case "VL" :
				alert("Uw browser is helaas niet geschikt om deze kaart weer te geven.");
				break;
			case "WL" :
				alert("Malheureusement, votre navigateur ne soutient pas l'affichage de cette carte.");
				break;
			case "DE" :
				alert("Leider stützt Ihre Datenbanksuchroutine nicht die Anzeige dieses Diagramms.");
				break;
			case "FR" :
				alert("Malheureusement, votre navigateur ne soutient pas l'affichage de cette carte.");
				break;
			case "EN" :
				alert("Unfortunately, your browser does not support the display of this map.");
				break;
		}
	} 
//]]>
