/**
* @version		$Id: googlemaps_nl.js 2008-03-12 marco meijeringh $
* @package		Joomla
* @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/

var map = null;
var G_ZUIDWEST_MAP = null;
var sidebar_html;

var map_action = 0;

var gmarkers = [];
var gmarkers_info = [];
var bmarkers_info = [];
var amarkers_info = [];
var gmarkers_hl = [];
var bmarkers = [];
var rmarkers = [];
var rhtmls = [];
var rtmzs = [];
var bwhtmls = [];
var	amarkers = [];
var	ahtmls = [];
var routebeschrijving = '';
var i = 0;
var knp_editmode = 0;
var knps = [];

var routePoints = new Array();
var routeOverlay = null;
var bw_markers = null;
var rp_markers = null;

var arVersion = navigator.appVersion.split("MSIE")
var version = parseFloat(arVersion[1])

function GLoad() {
	clearContentsFromElement("google_maps_info_html");
	
	if (!GBrowserIsCompatible()) return;
	// else //
	map = new GMap2(document.getElementById("map"),{mapTypes:[G_NORMAL_MAP,G_SATELLITE_MAP],alt:""});
	map.addControl(new GLargeMapControl());
	map.addControl(new GScaleControl());
	map.enableContinuousZoom();
	map.enableDoubleClickZoom();
	map.setCenter(new GLatLng(52.96766504873649, 5.552215576171875), 10);

	//getMarkers();
	
	GEvent.addListener(map, "zoomend", function() {
		if (map_action == 4) {
			if(!document.getElementById) return false;
			if (!document.getElementById("gm_bezienswaardigheden")) return false;
			clearContentsFromElement("gm_bezienswaardigheden");
			var gm_bezienswaardigheden_div = document.getElementById("gm_bezienswaardigheden");
			var p_element = document.createElement("p");
			var p_element_txt = document.createTextNode("Bezig met laden ...");
			p_element.appendChild(p_element_txt);
			gm_bezienswaardigheden_div.appendChild(p_element);

			getBezienswaardigheden();
		}
		map.showControls();
	});

	var copyright = new GCopyright(1,new GLatLngBounds(new GLatLng(52.826831647078315, 4.8834228515625), new GLatLng(53.243851676215854, 6.07269287109375)), 0, "Versloot-kartografy, Hilaard");
	var copyrightCollection = new GCopyrightCollection('');
	copyrightCollection.addCopyright(copyright);

	var tilelayers = [new GTileLayer(copyrightCollection , 10, 15)];
	tilelayers[0].getTileUrl = CustomGetTileUrl;

	// ============================================================
	// === If we know the copyright, return it, otherwise look for the G_NORMAL_MAP copyright =====      
	tilelayers[0].getCopyright = function(a,b) {
	  var c= copyrightCollection.getCopyrightNotice(a,b);
	  if (!c) {
	    c = G_NORMAL_MAP.getTileLayers()[0].getCopyright(a,b);
	  }
	  return c;
	}

    G_ZUIDWEST_MAP = new GMapType(tilelayers, G_SATELLITE_MAP.getProjection(), "Zuidwest", {errorMessage:"Geen kaart beschikbaar"});
    map.addMapType(G_ZUIDWEST_MAP);
	map.addControl(new CustomMapControl());
	map.setMapType(G_ZUIDWEST_MAP);

    function CustomGetTileUrl(a,b) {

	    if (b==10 && a.x>=526 && a.x<=528 && a.y>=332 && a.y<= 334) {
	    	return "http://www.meijeringh.info/gm/tiles/"+(a.x)+"_"+(a.y)+"_7.png";
	    } else if (b==11 && a.x>=1053 && a.x<=1057 && a.y>=665 && a.y<= 669) {
	    	return "http://www.meijeringh.info/gm/tiles/"+(a.x)+"_"+(a.y)+"_6.png";
	    } else if (b==12 && a.x>=2107 && a.x<=2115 && a.y>=1331 && a.y<= 1338) {
	    	return "http://www.meijeringh.info/gm/tiles/"+(a.x)+"_"+(a.y)+"_5.png";
	    } else if (b==13 && a.x>=4213 && a.x<=4230 && a.y>=2663 && a.y<= 2676) {
	    	return "http://www.meijeringh.info/gm/tiles/"+(a.x)+"_"+(a.y)+"_4.png";
	    } else {
	        return G_NORMAL_MAP.getTileLayers()[0].getTileUrl(a,b);
	    }
	}

	map.hideControls();

	// 'mouseover' listener shows controls
	
	GEvent.addListener(map, "mouseover", function(){
	map.showControls();
	});
	
	// 'mouseout' listener hides controls
	
	GEvent.addListener(map, "mouseout", function(){
	map.hideControls(); 
	});

	createAltAttributesGoogleMaps();
}

// A TextualZoomControl is a GControl that displays textual "Zoom In"
// and "Zoom Out" buttons (as opposed to the iconic buttons used in
// Google Maps).
function CustomMapControl() {
}
CustomMapControl.prototype = new GControl();

// Creates a one DIV for each of the buttons and places them in a container
// DIV which is returned as our control element. We add the control to
// to the map container and return the element for the map class to
// position properly.
CustomMapControl.prototype.initialize = function(map) {
  var container = document.createElement("div");

  var ZuidwestDiv = document.createElement("div");
  this.setButtonStyle_(ZuidwestDiv);
  container.appendChild(ZuidwestDiv);
  ZuidwestDiv.appendChild(document.createTextNode("Zuidwest"));
  GEvent.addDomListener(ZuidwestDiv, "click", function() {
    map.setMapType(G_ZUIDWEST_MAP);
  });

  var KaartDiv = document.createElement("div");
  this.setButtonStyle_(KaartDiv);
  container.appendChild(KaartDiv);
  KaartDiv.appendChild(document.createTextNode("Kaart"));
  GEvent.addDomListener(KaartDiv, "click", function() {
    map.setMapType(G_NORMAL_MAP);
  });

  var SatellietDiv = document.createElement("div");
  this.setButtonStyle_(SatellietDiv);
  container.appendChild(SatellietDiv);
  SatellietDiv.appendChild(document.createTextNode("Satelliet"));
  GEvent.addDomListener(SatellietDiv, "click", function() {
    map.setMapType(G_SATELLITE_MAP);
  });

  map.getContainer().appendChild(container);
  return container;
}

// By default, the control will appear in the top left corner of the
// map with 7 pixels of padding.
CustomMapControl.prototype.getDefaultPosition = function() {
  return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(7, 7));
}

// Sets the proper CSS for the given button element.
CustomMapControl.prototype.setButtonStyle_ = function(button) {
  button.style.textDecoration = "none";
  button.style.color = "#fff";
  button.style.backgroundColor = "#00a4ed";
  button.style.font = "small Arial";
  button.style.border = "1px solid black";
  button.style.padding = "2px";
  button.style.marginBottom = "3px";
  button.style.textAlign = "center";
  button.style.width = "6em";
  button.style.cursor = "pointer";
}

function ELabel(point, html, classname, pixelOffset, percentOpacity, overlap) {
  // Mandatory parameters
  this.point = point;
  this.html = html;
  
  // Optional parameters
  this.classname = classname||"";
  this.pixelOffset = pixelOffset||new GSize(0,0);
  if (percentOpacity) {
    if(percentOpacity<0){percentOpacity=0;}
    if(percentOpacity>100){percentOpacity=100;}
  }        
  this.percentOpacity = percentOpacity;
  this.overlap=overlap||false;
} 
      
ELabel.prototype = new GOverlay();

ELabel.prototype.initialize = function(map) {
  var div = document.createElement("div");
  div.style.position = "absolute";
  var div_div = document.createElement("div");
  div_div.setAttribute("class",this.classname);

  var div_map_message = document.createElement("div");
  div_map_message.setAttribute("id","map_message");
  var div_map_message_h3 = document.createElement("h3");
  var div_map_message_h3_txt = document.createTextNode(this.html);
  div_map_message_h3.appendChild(div_map_message_h3_txt);
  div_map_message.appendChild(div_map_message_h3);
  div_div.appendChild(div_map_message);
  div.appendChild(div_div);

  map.getPane(G_MAP_FLOAT_SHADOW_PANE).appendChild(div);
  this.map_ = map;
  this.div_ = div;
  if (this.percentOpacity) {        
    if(typeof(div.style.filter)=='string'){div.style.filter='alpha(opacity:'+this.percentOpacity+')';}
    if(typeof(div.style.KHTMLOpacity)=='string'){div.style.KHTMLOpacity=this.percentOpacity/100;}
    if(typeof(div.style.MozOpacity)=='string'){div.style.MozOpacity=this.percentOpacity/100;}
    if(typeof(div.style.opacity)=='string'){div.style.opacity=this.percentOpacity/100;}
  }
  if (this.overlap) {
    var z = GOverlay.getZIndex(this.point.lat());
    this.div_.style.zIndex = z;
  }
}

ELabel.prototype.remove = function() {
  this.div_.parentNode.removeChild(this.div_);
}

ELabel.prototype.copy = function() {
  return new ELabel(this.point, this.html, this.classname, this.pixelOffset, this.percentOpacity, this.overlap);
}

ELabel.prototype.redraw = function(force) {
  var p = this.map_.fromLatLngToDivPixel(this.point);
  var h = parseInt(this.div_.clientHeight);
  this.div_.style.left = (p.x + this.pixelOffset.width) + "px";
  this.div_.style.top = (p.y +this.pixelOffset.height - h) + "px";
}

ELabel.prototype.show = function() {
  this.div_.style.display="";
}

ELabel.prototype.hide = function() {
  this.div_.style.display="none";
}

ELabel.prototype.setContents = function(html) {
  this.html = html;
  var div_map_message = document.createElement("map_message");
  div_map_message.clearChild();
  var div_map_message_h3 = document.createElement("h3");
  var div_map_message_h3_txt = document.createTextNode(this.html);
  div_map_message_h3.appendChild(div_map_message_h3_txt);
  div_map_message.appendChild(div_map_message_h3);

  this.redraw(true);
}

ELabel.prototype.setPoint = function(point) {
  this.point = point;
  if (this.overlap) {
    var z = GOverlay.getZIndex(this.point.lat());
    this.div_.style.zIndex = z;
  }
  this.redraw(true);
}

ELabel.prototype.setOpacity = function(percentOpacity) {
  if (percentOpacity) {
    if(percentOpacity<0){percentOpacity=0;}
    if(percentOpacity>100){percentOpacity=100;}
  }        
  this.percentOpacity = percentOpacity;
  if (this.percentOpacity) {        
    if(typeof(this.div_.style.filter)=='string'){this.div_.style.filter='alpha(opacity:'+this.percentOpacity+')';}
    if(typeof(this.div_.style.KHTMLOpacity)=='string'){this.div_.style.KHTMLOpacity=this.percentOpacity/100;}
    if(typeof(this.div_.style.MozOpacity)=='string'){this.div_.style.MozOpacity=this.percentOpacity/100;}
    if(typeof(this.div_.style.opacity)=='string'){this.div_.style.opacity=this.percentOpacity/100;}
  }
}

ELabel.prototype.getPoint = function() {
  return this.point;
}
ELabel.prototype.U = function() {
  return this.point;
}
ELabel.prototype.V = function() {
  return this.point;
}
ELabel.prototype.W = function() {
  return this.point;
}

/***************** Map Functions ***********************/

// Create our "route_autorijden" marker icon
var base_route_icon = new GIcon();
base_route_icon.image  = "images/markers/vervoer/autorijden.png";
base_route_icon.iconSize = new GSize(16,16);
base_route_icon.iconAnchor = new GPoint(9,34);
base_route_icon.infoWindowAnchor = new GPoint(9, 2);

var baseIcon = new GIcon();
baseIcon.shadow = "images/markers/pointers/shadow.gif";
baseIcon.iconSize = new GSize(17, 17);
baseIcon.shadowSize = new GSize(28, 17);
baseIcon.iconAnchor = new GPoint(8, 17);
baseIcon.infoWindowAnchor = new GPoint(5, 1);
icon = new GIcon(baseIcon);
icon.image = "images/markers/pointers/mile_blank.gif";

var startIcon = new GIcon();
startIcon.image  = "images/markers/pointers/start.gif";
startIcon.iconSize = new GSize(27,27);
startIcon.iconAnchor = new GPoint(0,27);
startIcon.infoWindowAnchor = new GPoint(14, 0);

var finishIcon = new GIcon();
finishIcon.image  = "images/markers/pointers/eind.gif";
finishIcon.iconSize = new GSize(27,27);
finishIcon.iconAnchor = new GPoint(27,27);
finishIcon.infoWindowAnchor = new GPoint(14, 0);

// Create our "route_autorijden" marker icon
var route_autorijden = new GIcon(base_route_icon);
route_autorijden.image  = "images/markers/vervoer/autorijden_black.png";
// Create our "route_motorrijden" marker icon
var route_motorrijden = new GIcon(base_route_icon);
route_motorrijden.image  = "images/markers/vervoer/motorrijden_black.png";
// Create our "route_paardrijden" marker icon
var route_paardrijden = new GIcon(base_route_icon);
route_paardrijden.image  = "images/markers/vervoer/paardrijden_black.png";
// Create our "route_kanoen" marker icon
var route_kanoen = new GIcon(base_route_icon);
route_kanoen.image  = "images/markers/vervoer/kanoen_black.png";
// Create our "route_surfen" marker icon
var route_surfen = new GIcon(base_route_icon);
route_surfen.image  = "images/markers/vervoer/surfen_black.png";
// Create our "route_schaatsen" marker icon
var route_schaatsen = new GIcon(base_route_icon);
route_schaatsen.image  = "images/markers/vervoer/schaatsen_black.png";
// Create our "route_varen" marker icon
var route_varen = new GIcon(base_route_icon);
route_varen.image  = "images/markers/vervoer/varen_black.png";
// Create our "route_wandelen" marker icon
var route_wandelen = new GIcon(base_route_icon);
route_wandelen.image  = "images/markers/vervoer/wandelen_black.png";
// Create our "route_fietsen" marker icon
var route_fietsen = new GIcon(base_route_icon);
route_fietsen.image  = "images/markers/vervoer/fietsen_black.png";

// Create our "route_autorijden" marker icon
var route_autorijden_hl = new GIcon(base_route_icon);
route_autorijden_hl.image  = "images/markers/vervoer/autorijden_red.png";
// Create our "route_motorrijden" marker icon
var route_motorrijden_hl = new GIcon(base_route_icon);
route_motorrijden_hl.image  = "images/markers/vervoer/motorrijden_red.png";
// Create our "route_paardrijden" marker icon
var route_paardrijden_hl = new GIcon(base_route_icon);
route_paardrijden_hl.image  = "images/markers/vervoer/paardrijden_red.png";
// Create our "route_kanoen" marker icon
var route_kanoen_hl = new GIcon(base_route_icon);
route_kanoen_hl.image  = "images/markers/vervoer/kanoen_red.png";
// Create our "route_surfen" marker icon
var route_surfen_hl = new GIcon(base_route_icon);
route_surfen_hl.image  = "images/markers/vervoer/surfen_red.png";
// Create our "route_schaatsen" marker icon
var route_schaatsen_hl = new GIcon(base_route_icon);
route_schaatsen_hl.image  = "images/markers/vervoer/schaatsen_red.png";
// Create our "route_varen" marker icon
var route_varen_hl = new GIcon(base_route_icon);
route_varen_hl.image  = "images/markers/vervoer/varen_red.png";
// Create our "route_wandelen" marker icon
var route_wandelen_hl = new GIcon(base_route_icon);
route_wandelen_hl.image  = "images/markers/vervoer/wandelen_red.png";
// Create our "route_fietsen" marker icon
var route_fietsen_hl = new GIcon(base_route_icon);
route_fietsen_hl.image  = "images/markers/vervoer/fietsen_red.png";

// Create our "base_bezienswaardigheid" marker icon
var base_bezienswaardigheid_icon = new GIcon();
base_bezienswaardigheid_icon.image  = "images/markers/bezienswaardigheden/restaurant_black.png";
base_bezienswaardigheid_icon.iconSize = new GSize(20,20);
base_bezienswaardigheid_icon.iconAnchor = new GPoint(9,34);
base_bezienswaardigheid_icon.infoWindowAnchor = new GPoint(9, 2);

// Create our "base_knooppunt" marker icon
var base_knooppunt_icon = new GIcon();
base_knooppunt_icon.image  = "images/markers/knooppunt.gif";
base_knooppunt_icon.iconSize = new GSize(12,12);
base_knooppunt_icon.iconAnchor = new GPoint(3,3);
base_knooppunt_icon.infoWindowAnchor = new GPoint(9, 2);

// Create our "bw_restaurant" marker icon
var bw_restaurant = new GIcon(base_bezienswaardigheid_icon);
bw_restaurant.image  = "images/markers/bezienswaardigheden/restaurant.gif";

// Create our "bw_hotel" marker icon
var bw_hotel = new GIcon(base_bezienswaardigheid_icon);
bw_hotel.image  = "images/markers/bezienswaardigheden/hotel.gif";

// Create our "bw_parkeren" marker icon
var bw_parkeren = new GIcon(base_bezienswaardigheid_icon);
bw_parkeren.image  = "images/markers/bezienswaardigheden/parkeren.gif";

function changeCenter(lat,lng,zoom) {
	map.setCenter(new GLatLng(lat, lng), zoom);
}

function createRouteMarker(i,punt,name,introtext,tmzintrotext,route_marker) {
	var rimg;
	var rimg_hl;
	
	switch(route_marker)
	{
		case 'route_wandelen':
			var marker = new GMarker(punt, {icon:route_wandelen, title:name});
   			gmarkers_hl[i] = new GMarker(punt, {icon:route_wandelen_hl,title:name});
			rimg    = 'images/markers/vervoer/wandelen.png';
			rimg_hl = 'images/markers/vervoer/wandelen_red.png';
			break;
		case 'route_kanoen':
			var marker = new GMarker(punt, {icon:route_kanoen, title:name});
   			gmarkers_hl[i] = new GMarker(punt, {icon:route_kanoen_hl,title:name});
			rimg    = 'images/markers/vervoer/kanoen.png';
			rimg_hl = 'images/markers/vervoer/kanoen_red.png';
			break;
		case 'route_surfen':
			var marker = new GMarker(punt, {icon:route_surfen, title:name});
   			gmarkers_hl[i] = new GMarker(punt, {icon:route_surfen_hl,title:name});
			rimg    = 'images/markers/vervoer/surfen.png';
			rimg_hl = 'images/markers/vervoer/surfen_red.png';
			break;
		case 'route_varen':
			var marker = new GMarker(punt, {icon:route_varen, title:name});
   			gmarkers_hl[i] = new GMarker(punt, {icon:route_varen_hl,title:name});
			rimg    = 'images/markers/vervoer/varen.png';
			rimg_hl = 'images/markers/vervoer/varen_red.png';
			break;
		case 'route_fietsen':
			var marker = new GMarker(punt, {icon:route_fietsen, title:name});
   			gmarkers_hl[i] = new GMarker(punt, {icon:route_fietsen_hl,title:name});
			rimg    = 'images/markers/vervoer/fietsen.png';
			rimg_hl = 'images/markers/vervoer/fietsen_red.png';
			break;
		case 'route_schaatsen':
			var marker = new GMarker(punt, {icon:route_schaatsen, title:name});
   			gmarkers_hl[i] = new GMarker(punt, {icon:route_schaatsen_hl,title:name});
			rimg    = 'images/markers/vervoer/schaatsen.png';
			rimg_hl = 'images/markers/vervoer/schaatsen_red.png';
			break;
		case 'route_autorijden':
			var marker = new GMarker(punt, {icon:route_autorijden, title:name});
   			gmarkers_hl[i] = new GMarker(punt, {icon:route_autorijden_hl,title:name});
			rimg    = 'images/markers/vervoer/autorijden.png';
			rimg_hl = 'images/markers/vervoer/autorijden_red.png';
			break;
		case 'route_paardrijden':
			var marker = new GMarker(punt, {icon:route_paardrijden, title:name});
   			gmarkers_hl[i] = new GMarker(punt, {icon:route_paardrijden_hl,title:name});
			rimg    = 'images/markers/vervoer/paardrijden.png';
			rimg_hl = 'images/markers/vervoer/paardrijden_red.png';
			break;
		case 'route_motorrijden':
			var marker = new GMarker(punt, {icon:route_motorrijden, title:name});
   			gmarkers_hl[i] = new GMarker(punt, {icon:route_motorrijden_hl,title:name});
			rimg    = 'images/markers/vervoer/motorrijden.png';
			rimg_hl = 'images/markers/vervoer/motorrijden_red.png';
			break;
	}
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(introtext);
	});
	
	GEvent.addListener(marker, "infowindowclose", function() {
	  map.setCenter(new GLatLng(52.96766504873649, 5.552215576171875), 10);
	});

	// save the info we need to use later for the sidebar
	gmarkers[i] = marker;
	rhtmls[i] = introtext;
	rtmzs[i] = tmzintrotext;
	return marker;
}

function createBezienswaardigheidMarker(i,punt,name,html,mimage) {

	bezienswaardigheidIcon = new GIcon(base_bezienswaardigheid_icon);
	bezienswaardigheidIcon.image = mimage;
	var marker = new GMarker(punt,{icon:bezienswaardigheidIcon, draggable:false, title:name});
	var center = map.getCenter();
	var zoom = map.getZoom();	

	if (!html) html=name;
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(html);
	});

	GEvent.addListener(marker, "infowindowclose", function() {
	  map.setCenter(center, zoom);
	});

	// save the info we need to use later for the sidebar
	bmarkers[i] = marker;
	bwhtmls[i] = html;
	return marker;
}

function createAccommodatieMarker(i,punt,name,html,mimage) {

	bezienswaardigheidIcon = new GIcon(base_bezienswaardigheid_icon);
	bezienswaardigheidIcon.image = mimage;
	var marker = new GMarker(punt,{icon:bezienswaardigheidIcon, draggable:false, title:name});
	var center = map.getCenter();
	var zoom = map.getZoom();	

	if (!html) html=name;
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(html);
	});

	GEvent.addListener(marker, "infowindowclose", function() {
	  map.setCenter(center, zoom);
	});

	// save the info we need to use later for the sidebar
	amarkers[i] = marker;
	ahtmls[i] = html;
	return marker;
}

function showKnooppuntentools(tools,toegankelijkheid){
	if(!document.getElementById) return false;
	if(!document.createElement) return false;
	if (!document.getElementById("knooppuntentools")) return false;
	clearContentsFromElement("knooppuntentools");
	var knooppuntentools = document.getElementById("knooppuntentools");
	if (tools == 0) {
		var knooppuntentools_button_get = document.createElement("button");
		knooppuntentools_button_get.setAttribute("id","getknooppunten");
		knooppuntentools_button_get.setAttribute("type","button");
		knooppuntentools_button_get_text = document.createTextNode("Toon fietsknooppunten");
		knooppuntentools_button_get.appendChild(knooppuntentools_button_get_text);
		knooppuntentools.appendChild(knooppuntentools_button_get);
 
 		// add event handlers for control button
		var knooppuntentools_button_get = document.getElementById("getknooppunten");
		knooppuntentools_button_get.onclick = function() {
			getKnooppunten();
		}
 	} else {
		var knooppuntentools_button_new = document.createElement("button");
		knooppuntentools_button_new.setAttribute("id","new_knooppunten_route");
		knooppuntentools_button_new.setAttribute("type","button");
		knooppuntentools_button_new_text = document.createTextNode("Maak Nieuwe Route");
		knooppuntentools_button_new.appendChild(knooppuntentools_button_new_text);
		knooppuntentools.appendChild(knooppuntentools_button_new);

		var knooppuntentools_button_delete = document.createElement("button");
		knooppuntentools_button_delete.setAttribute("id","delete_knooppunten_route");
		knooppuntentools_button_delete.setAttribute("type","button");
		knooppuntentools_button_delete_text = document.createTextNode("Wis Route");
		knooppuntentools_button_delete.appendChild(knooppuntentools_button_delete_text);
		knooppuntentools.appendChild(knooppuntentools_button_delete);

 		// add event handlers for control button
		var knooppuntentools_button_new = document.getElementById("new_knooppunten_route");
		knooppuntentools_button_new.onclick = function() {
			createKnooppuntenRoute();
		}
 		// add event handlers for control button
		var knooppuntentools_button_delete = document.getElementById("delete_knooppunten_route");
		knooppuntentools_button_delete.onclick = function() {
			deleteKnooppuntenRoute();
		}
	}
}

function createKnooppuntMarker(i,punt,knp,naam,introtext,html) {
	knooppuntIcon = new GIcon(base_knooppunt_icon);
	knooppuntIcon.image = 'images/markers/knp_rood.png';
	var marker = new GMarker(punt,{icon:knooppuntIcon, draggable:false, title:naam});

	GEvent.addListener(marker, "click", function() {
		if (knp_editmode == 1) {
			addKnooppunt(knp, html);
			var blueknooppuntIcon = new GIcon(base_knooppunt_icon);
			blueknooppuntIcon.image = 'images/markers/knp_blauw.png';
			var marker_blue = new GMarker(punt,{icon:blueknooppuntIcon, draggable:false, title:naam});
			map.addOverlay(marker_blue);
		} else {
			marker.openInfoWindowHtml(introtext);
		}
	});

	// save the info we need to use later for the sidebar
	return marker;
}

function createKnooppuntenRoute(){
	if(!document.getElementById) return false;
	if(!document.createElement) return false;
	if (!document.getElementById("knooppuntentools")) return false;
	var knooppuntentools = document.getElementById("knooppuntentools");
	var knooppuntentools_p = document.createElement("p");
	var knooppuntentools_p_txt = document.createTextNode("Selecteer knooppunten om uw route samen te stellen.");
	knooppuntentools_p.appendChild(knooppuntentools_p_txt);
	knooppuntentools.appendChild(knooppuntentools_p);
	
	knp_editmode = 1;
}

function deleteKnooppuntenRoute(){
	if(!document.getElementById) return false;
	if (!document.getElementById("google_maps_info_html")) return false;
	clearContentsFromElement("google_maps_info_html");
	getKnooppunten();
}

function addKnooppunt(id, html){
	if(!document.getElementsByTagName) return false;
	if(!document.getElementById) return false;
	if(!document.createElement) return false;
	if(!document.hasChildNodes) return false;
	if (!document.getElementById("google_maps_info_html")) return false;
	var gm_info = document.getElementById("google_maps_info_html");
	if ( !gm_info.hasChildNodes() ) {
		var gm_info_h2 = document.createElement("h2");
		var gm_info_h2_txt = document.createTextNode("Fietsknooppunten Route");
		gm_info_h2.appendChild(gm_info_h2_txt);
		gm_info.appendChild(gm_info_h2);

		var ulexist = document.getElementById("infolinks");
		var mapcontrols = document.getElementById("mapcontrols");
		if (ulexist) {				
			mapcontrols.removeChild(ulexist);
		}
						
		var linklist = document.createElement("ul");
		linklist.setAttribute("id","infolinks");

		//print link
		var print_li = document.createElement("li");
		var print_li_a = document.createElement("a");
		var printlink = "javascript:window.print()";
		print_li_a.setAttribute("href",printlink);
		print_li_a.setAttribute("title","Print route");
		print_li_a_txt = document.createTextNode("Print route");
		print_li_a.appendChild(print_li_a_txt);
		print_li.appendChild(print_li_a);
		linklist.appendChild(print_li);

		mapcontrols.appendChild(linklist);
	}
	var gm_info_h3 = document.createElement("h3");	
	var gm_info_h3_txt = document.createTextNode(id);
	gm_info_h3.appendChild(gm_info_h3_txt);
	gm_info.appendChild(gm_info_h3);
	html_entity_decode(html);
	ConvertHTML2DOM(gm_info, html, false);
}

function createAltAttributesGoogleMaps() {
  if (!document.getElementsByTagName) return false;
  var images = document.getElementsByTagName("img");
  if (images.length < 1) return false;
  var defs = new Array();
  for (var i=0; i<images.length; i++) {
    var current_image = images[i];
    var current_image_title = current_image.getAttribute("title");
    var current_image_alt = current_image.getAttribute("alt");
    if (!current_image_alt) {
    	if (current_image_title) {
    		current_image.setAttribute("alt",current_image_title);
    	} else {
    		current_image_src = current_image.getAttribute("src");
    		if (current_image_src == "http://maps.google.com/intl/nl_ALL/mapfiles/poweredby.png") {
    			current_image.setAttribute("alt","Powered by Google");
    		} else {
    			current_image.setAttribute("alt","");
    		}
    	}
    }
  }
}

function addEventHandlersToRouteLinks() {
	if(!document.getElementsByTagName) return false;
	if(!document.getElementById) return false;
	if (!document.getElementById("route_links_list")) return false;
	var routes = document.getElementById("route_links_list");
	var links = routes.getElementsByTagName("a");
  	for (var i=0; i<links.length; i++) {
    	attachEventListener(links[i], "click", eventShowRoute, false);
    	attachEventListener(links[i], "mouseover", mymouseover, false);
    	attachEventListener(links[i], "mouseout", mymouseout, false);
	}
}
function eventShowRoute(event) {
	if (typeof event == "undefined") {
		event = window.event;
	}

	var href = this.getAttribute("href");
	var routeid = getQueryVariableURL(href,"id");
	showRoute(routeid);
	
	stopDefaultAction(event);
	return false;
}
// This function is invoked when the mouse goes over an entry in the side_bar
// It deletes the cold Icon marker and replaces it with the hot Icon marker
function mymouseover(event) {
	if (typeof event == "undefined") {
		event = window.event;
	}
	var href = this.getAttribute("href");
	var routelinks = document.getElementById("google_maps_sidebar_search");
	var links = routelinks.getElementsByTagName("a");
	var linknummer = 0;
  	for (var i=0; i<links.length; i++) {
		if (links[i].getAttribute("href") == href) {
			linknummer = i;
		}
	}
	if ( gmarkers.length > 0 ) {
		map.removeOverlay(gmarkers[linknummer-1]);
		map.addOverlay(gmarkers_hl[linknummer-1]);
	}
	stopDefaultAction(event);
	return false;
}
// This function is invoked when the mouse leaves an entry in the side_bar
// It deletes the hot Icon marker and replaces it with the cold Icon marker
function mymouseout(event) {
	if (typeof event == "undefined") {
		event = window.event;
	}
	var href = this.getAttribute("href");
	var routelinks = document.getElementById("google_maps_sidebar_search");
	var links = routelinks.getElementsByTagName("a");
	var linknummer = 0;
  	for (var i=0; i<links.length; i++) {
		if (links[i].getAttribute("href") == href) {
			linknummer = i;
		}
	}
	if ( gmarkers.length > 0 ) {
		map.removeOverlay(gmarkers_hl[linknummer-1]);
		map.addOverlay(gmarkers[linknummer-1]);
	}
	stopDefaultAction(event);
	return false;
}

function addEventHandlersToAccommodatieLinks() {
	if(!document.getElementsByTagName) return false;
	if(!document.getElementById) return false;
	if (!document.getElementById("accommodatie_links_list")) return false;
	var accommodaties = document.getElementById("accommodatie_links_list");
	var links = accommodaties.getElementsByTagName("a");
  	for (var i=0; i<links.length; i++) {
    	attachEventListener(links[i], "click", bwclick_accommodatie, false);
	}
}
// This function picks up the click and opens the corresponding info window
function bwclick_accommodatie(event) {
	if (typeof event == "undefined") {
		event = window.event;
	}
	var href = this.getAttribute("href");
	var accommodaties = document.getElementById("accommodatie_links_list");
	var links = accommodaties.getElementsByTagName("a");
	var linknummer = 0;
  	for (var i=0; i<links.length; i++) {
		if (links[i].getAttribute("href") == href) {
			linknummer = i;
		}
	}

	amarkers[linknummer].openInfoWindowHtml(ahtmls[linknummer]);
	map.hideControls();

	stopDefaultAction(event);
	return false;
}

function addEventHandlersToBezienswaardighedenLinks() {
	if(!document.getElementsByTagName) return false;
	if(!document.getElementById) return false;
	if (!document.getElementById("bezienswaardigheid_links_list")) return false;
	var bezienswaardigheden = document.getElementById("bezienswaardigheid_links_list");
	var links = bezienswaardigheden.getElementsByTagName("a");
  	for (var i=0; i<links.length; i++) {
    	attachEventListener(links[i], "click", bwclick_bezienswaardigheid, false);
	}
}

// This function picks up the click and opens the corresponding info window
function bwclick_bezienswaardigheid(event) {
	if (typeof event == "undefined") {
		event = window.event;
	}
	var href = this.getAttribute("href");
	var bezienswaardigheden = document.getElementById("bezienswaardigheid_links_list");
	var links = bezienswaardigheden.getElementsByTagName("a");
	var linknummer = 0;
  	for (var i=0; i<links.length; i++) {
		if (links[i].getAttribute("href") == href) {
			linknummer = i;
		}
	}

	bmarkers[linknummer].openInfoWindowHtml(bwhtmls[linknummer]);
	map.hideControls();

	stopDefaultAction(event);
	return false;
}

function addEventHandlersToAccommodatieZoekenLinks() {
	if(!document.getElementsByTagName) return false;
	if(!document.getElementById) return false;
	if (!document.getElementById("accommodatie_links_list")) return false;
	var accommodaties = document.getElementById("accommodatie_links_list");
	var links = accommodaties.getElementsByTagName("a");
  	for (var i=0; i<links.length; i++) {
    	attachEventListener(links[i], "click", bwclick_accommodatie_zoeken, false);
	}
}
// This function picks up the click and opens the corresponding info window
function bwclick_accommodatie_zoeken(event) {
	if (typeof event == "undefined") {
		event = window.event;
	}
	var href = this.getAttribute("href");
	var accommodaties = document.getElementById("accommodatie_links_list");
	var links = accommodaties.getElementsByTagName("a");
	var linknummer = 0;
  	for (var i=0; i<links.length; i++) {
		if (links[i].getAttribute("href") == href) {
			linknummer = i;
		}
	}

	clearContentsFromElement("google_maps_info_html");

	amarkers[linknummer].openInfoWindowHtml(ahtmls[linknummer]);
	var infohtml = '<h3>'+amarkers_info[linknummer][0]+'</h3>';
	infohtml += '<p class="address">'+amarkers_info[linknummer][1]+'</p>';
	infohtml += '<p class="address">'+amarkers_info[linknummer][2]+'</p>';
	infohtml += '<p class="address">'+amarkers_info[linknummer][3]+'</p>';
	infohtml += html_entity_decode(amarkers_info[linknummer][4]);

	// get Itemid
	var Itemid = getQueryVariable("Itemid");
	
	var ulexist = document.getElementById("infolinks");
	var mapcontrols = document.getElementById("mapcontrols");
	if (ulexist) {				
		mapcontrols.removeChild(ulexist);
	}
					
	if (amarkers_info[linknummer][5] == '1') {
		//toegankelijkheidslink
		var linklist = document.createElement("ul");
		linklist.setAttribute("id","infolinks");
		var linklistitem = document.createElement("li");
		var linklistitemlink = document.createElement("a");
		// show route if route id known
		var itemid = getQueryVariable("Itemid");
		var link = "http://www.zw-friesland.nl/routekaart/index.php?option=com_routes&view=zorgaccommodatie&id="+amarkers_info[linknummer][6]+"&Itemid="+Itemid;
		linklistitemlink.setAttribute("href",link);
		linklistitemlink.setAttribute("id","zorgroute"+amarkers_info[linknummer][6]);
		linklistitemlink.setAttribute("title","Toegankelijkheidsinformatie");
		linklistitemlink_txt = document.createTextNode("Toegankelijkheidsinformatie");
		linklistitemlink.appendChild(linklistitemlink_txt);
		linklistitem.appendChild(linklistitemlink);
		linklist.appendChild(linklistitem);
		mapcontrols.appendChild(linklist);
	}
	
	var gm_info = document.getElementById("google_maps_info_html");
	ConvertHTML2DOM(gm_info, infohtml, false);
	
	map.hideControls();

	stopDefaultAction(event);
	return false;
}

function addEventHandlersToBezienswaardighedenZoekenLinks() {
	if(!document.getElementsByTagName) return false;
	if(!document.getElementById) return false;
	if (!document.getElementById("bezienswaardigheid_links_list")) return false;
	var bezienswaardigheden = document.getElementById("bezienswaardigheid_links_list");
	var links = bezienswaardigheden.getElementsByTagName("a");
  	for (var i=0; i<links.length; i++) {
    	attachEventListener(links[i], "click", bwclick_bezienswaardigheid_zoeken, false);
	}
}
// This function picks up the click and opens the corresponding info window
function bwclick_bezienswaardigheid_zoeken(event) {
	if (typeof event == "undefined") {
		event = window.event;
	}
	var href = this.getAttribute("href");
	var bezienswaardigheden = document.getElementById("bezienswaardigheid_links_list");
	var links = bezienswaardigheden.getElementsByTagName("a");
	var linknummer = 0;
  	for (var i=0; i<links.length; i++) {
		if (links[i].getAttribute("href") == href) {
			linknummer = i;
		}
	}
	clearContentsFromElement("google_maps_info_html");

	bmarkers[linknummer].openInfoWindowHtml(bwhtmls[linknummer]);
	var infohtml = '<h3>'+bmarkers_info[linknummer][0]+'</h3>';
	infohtml += '<p class="address">'+bmarkers_info[linknummer][1]+'</p>';
	infohtml += '<p class="address">'+bmarkers_info[linknummer][2]+'</p>';
	infohtml += '<p class="address">'+bmarkers_info[linknummer][3]+'</p>';
	infohtml += html_entity_decode(bmarkers_info[linknummer][4]);

	// get Itemid
	var Itemid = getQueryVariable("Itemid");
	
	var ulexist = document.getElementById("infolinks");
	var mapcontrols = document.getElementById("mapcontrols");
	if (ulexist) {				
		mapcontrols.removeChild(ulexist);
	}
					
	if (bmarkers_info[linknummer][5] == '1') {
		//toegankelijkheidslink
		var linklist = document.createElement("ul");
		linklist.setAttribute("id","infolinks");
		var linklistitem = document.createElement("li");
		var linklistitemlink = document.createElement("a");
		// show route if route id known
		var itemid = getQueryVariable("Itemid");
		var link = "http://www.zw-friesland.nl/routekaart/index.php?option=com_routes&view=zorgaccommodatie&id="+bmarkers_info[linknummer][6]+"&Itemid="+Itemid;
		linklistitemlink.setAttribute("href",link);
		linklistitemlink.setAttribute("id","zorgroute"+amarkers_info[linknummer][6]);
		linklistitemlink.setAttribute("title","Toegankelijkheidsinformatie");
		linklistitemlink_txt = document.createTextNode("Toegankelijkheidsinformatie");
		linklistitemlink.appendChild(linklistitemlink_txt);
		linklistitem.appendChild(linklistitemlink);
		linklist.appendChild(linklistitem);
		mapcontrols.appendChild(linklist);
	}
	
	var gm_info = document.getElementById("google_maps_info_html");
	ConvertHTML2DOM(gm_info, infohtml, false);
	
	map.hideControls();

	stopDefaultAction(event);
	return false;
}

function showRoute(routeid) {
	var html_element = document.getElementsByTagName("html");
	var lang = html_element[0].getAttribute("lang");
	if (!lang) lang='nl-nl';

	clearContentsFromElement("google_maps_info_html");
	
	for (var i = 0; i < gmarkers.length; i++) {
		map.removeOverlay(gmarkers[i]);
		map.removeOverlay(gmarkers_hl[i]);
	}
	for (var i = 0; i < bmarkers.length; i++) {
		map.removeOverlay(bmarkers[i]);
	}
	for (var i = 0; i < rmarkers.length; i++) {
		map.removeOverlay(rmarkers[i]);
	}
	map.clearOverlays();
	gmarkers = [];
	gmarkers_hl = [];
	bmarkers = [];
	amarkers = [];
	info_html = "";
	category_images = "";
	htmls = [];
	i = 0;
	map_action = 4;
	var toegankelijkheidsinfo = 0;

	var label_center = map.getCenter();
	var label = new ELabel(new GLatLng(parseFloat(label_center.y), parseFloat(label_center.x)), "Route wordt geladen...", "style1",new GSize(-150,0),90);
    map.removeOverlay(label)
    map.addOverlay(label);

	var div_google_maps_info_html = document.getElementById("google_maps_info_html");

	if (!lang) lang='dutch';
	var urlstr="components/com_routes/assets/show_route.php"
		+ "?id=" + routeid // Category ID
		+ "&lang=" + lang; // Language ID
	var request = GXmlHttp.create();
	request.open('GET', urlstr, true);	// request XML from PHP with AJAX call
	request.onreadystatechange = function () {
		if (request.readyState == 4) {
			map.clearOverlays();
			var xmlDoc = request.responseXML;
			// obtain the array of category images and loop through it
			var images = xmlDoc.documentElement.getElementsByTagName("images");
			// obtain the array of route elements and loop through it
			var route = xmlDoc.documentElement.getElementsByTagName("info");
			var introtexts = xmlDoc.documentElement.getElementsByTagName("introtext");
			var tmztexts = xmlDoc.documentElement.getElementsByTagName("tmzintrotext");
			for (var i = 0; i < route.length; i++) {
				// obtain the attribues of each route
				var id = route[i].getAttribute("id");
				var naam = route[i].getAttribute("naam");
				var city = route[i].getAttribute("city");
				var tmz = route[i].getAttribute("tmz");
				var distance = parseFloat(route[i].getAttribute("distance"));

				var info_html_div = document.createElement("div");
				info_html_div.setAttribute("id","routebeschrijving");

				var info_html_div_h2 = document.createElement("h2");
				var info_html_div_h2_txt = document.createTextNode(naam+" - "+city+" - "+distance.toFixed(0)+" km ");
				info_html_div_h2.appendChild(info_html_div_h2_txt);
				
				for (var j = 0; j < images.length; j++) {
					// obtain the attribues of each route
					var image = images[j].getAttribute("image");
					var image_alt = images[j].getAttribute("image_alt");
					var category_image = document.createElement("img");
					category_image.setAttribute("src",image);
					category_image.setAttribute("width","16px");
					category_image.setAttribute("width","16px");
					category_image.setAttribute("alt",image_alt);
					info_html_div_h2.appendChild(category_image);
				}
				
				div_google_maps_info_html.appendChild(info_html_div_h2);
				
				var misc = route[i].getAttribute("misc");
				var info_html_div_p = document.createElement("p");
				var info_html_div_p_txt = document.createTextNode(misc);
				info_html_div_p.appendChild(info_html_div_p_txt);
				div_google_maps_info_html.appendChild(info_html_div_p);
				
				var lat = parseFloat(route[i].getAttribute("lat"));
				var lng = parseFloat(route[i].getAttribute("lng"));
				var zoom = parseInt(route[i].getAttribute("zoom"));
				var points = route[i].getAttribute("points");
				var route_description = route[i].getAttribute("route_description");
				var descr_markers = route[i].getAttribute("descr_markers");
				var tomtom = route[i].getAttribute("tomtom");
				var garmin = route[i].getAttribute("garmin");
				if (introtexts[i].childNodes[0].nodeValue == '#') {
					var introtext = '';
				} else {
					var introtext = html_entity_decode(introtexts[i].childNodes[0].nodeValue);
					ConvertHTML2DOM(info_html_div, introtext, false);
				}
				if (tmztexts[i].childNodes[0].nodeValue == '#') {
					var tmzintrotext = '';
				} else {
					var tmzintrotext = tmztexts[i].childNodes[0].nodeValue;
				}
			}

			var ulexist = document.getElementById("infolinks");
			var mapcontrols = document.getElementById("mapcontrols");
			if (ulexist) {				
				mapcontrols.removeChild(ulexist);
			}
							
			if (tmz == '1' || tomtom || garmin) {
				//toegankelijkheidslink
				var linklist = document.createElement("ul");
				linklist.setAttribute("id","infolinks");
				if (tmz == '1') {
					var linklistitem = document.createElement("li");
					var linklistitemlink = document.createElement("a");
					var link = "http://www.zw-friesland.nl/routekaart/index.php?option=com_routes&view=zorgroute&id="+routeid+"&Itemid=61";
					linklistitemlink.setAttribute("href",link);
					linklistitemlink.setAttribute("id","zorgroute"+routeid);
					linklistitemlink.setAttribute("title","Toegankelijkheidsinformatie");
					linklistitemlink_txt = document.createTextNode("Toegankelijkheidsinformatie");
					linklistitemlink.appendChild(linklistitemlink_txt);
					linklistitem.appendChild(linklistitemlink);
					linklist.appendChild(linklistitem);
				}
				//tomtom downloadlink
				if (tomtom) {
					var tomtom_li = document.createElement("li");
					var tomtom_li_a = document.createElement("a");
					var tomtomlink = "http://www.zw-friesland.nl/routekaart/downloads/"+tomtom;
					tomtom_li_a.setAttribute("href",tomtomlink);
					tomtom_li_a.setAttribute("title","Download Tomtom bestand");
					tomtom_li_a_txt = document.createTextNode("Download Tomtom bestand");
					tomtom_li_a.appendChild(tomtom_li_a_txt);
					tomtom_li.appendChild(tomtom_li_a);
					linklist.appendChild(tomtom_li);
				}
				//garmin downloadlink
				if (garmin) {
					var garmin_li = document.createElement("li");
					var garmin_li_a = document.createElement("a");
					var garminlink = "http://www.zw-friesland.nl/routekaart/downloads/"+garmin;
					garmin_li_a.setAttribute("href",garminlink);
					garmin_li_a.setAttribute("title","Download Garmin bestand");
					garmin_li_a_txt = document.createTextNode("Download Garmin bestand");
					garmin_li_a.appendChild(garmin_li_a_txt);
					garmin_li.appendChild(garmin_li_a);
					linklist.appendChild(garmin_li);
				}
				//print link
				var print_li = document.createElement("li");
				var print_li_a = document.createElement("a");
				var printlink = "javascript:window.print()";
				print_li_a.setAttribute("href",printlink);
				print_li_a.setAttribute("title","Print route");
				print_li_a_txt = document.createTextNode("Print route");
				print_li_a.appendChild(print_li_a_txt);
				print_li.appendChild(print_li_a);
				linklist.appendChild(print_li);

				mapcontrols.appendChild(linklist);
			}
		
			points = points.replace(/\),/g,";");
			points = points.replace(/\(|\)/g,"");
			var coordinates = points.split(";");
            var pts = [];
            routePoints = [];
            for (var i = 0; i < coordinates.length; i++) {
               tmp_str = coordinates[i];
               var tmp_point = [];
               tmp_point = tmp_str.split(",");
               routePoints.push(new GLatLng(parseFloat(tmp_point[0]),parseFloat(tmp_point[1])));                                   
            }

			var centerPoint = new GLatLng(lat, lng);
			map.setCenter(centerPoint, zoom);
			routeOverlay = new GPolyline(routePoints);
			map.addOverlay(routeOverlay);
			if ( route_description ) {
				var info_html_div_h3 = document.createElement("h3");
				var info_html_div_h3_txt = document.createTextNode("Routebeschrijving");
				info_html_div_h3.appendChild(info_html_div_h3_txt);
				info_html_div.appendChild(info_html_div_h3);

				routebeschrijving = route_description;
				route_description_arr = route_description.split(",");
				var rlist = document.createElement("ol");
				rlist.setAttribute("class","routebeschrijving");
				var routedescrnr = 1;
				for (var j = 0; j < route_description_arr.length; j=j+4) {
				   var rlist_li = document.createElement("li");
				   if(!document.all) {
					   var rlist_li_span_nr = document.createElement("span");
					   rlist_li_span_nr.setAttribute("class","descriptionnr");
					   var rlist_li_span_nr_txt = document.createTextNode(routedescrnr+".");
					   rlist_li_span_nr.appendChild(rlist_li_span_nr_txt);
					   rlist_li.appendChild(rlist_li_span_nr);
				   }

				   var rlist_li_img = document.createElement("img");
				   rlist_li_img.setAttribute("src",route_description_arr[j+1]);
				   rlist_li_img.setAttribute("width","27px");
				   rlist_li_img.setAttribute("height","27px");
				   rlist_li_img.setAttribute("alt",route_description_arr[j+2]);
				   rlist_li.appendChild(rlist_li_img);
				   
				   descr = route_description_arr[j+3];
				   descr = descr.replace(/#/g,",");
				   var rlist_li_span_descr = document.createElement("span");
				   rlist_li_span_descr.setAttribute("class","description");
				   var rlist_li_span_descr_txt = document.createTextNode(descr);
				   rlist_li_span_descr.appendChild(rlist_li_span_descr_txt);
				   rlist_li.appendChild(rlist_li_span_descr);
				   rlist.appendChild(rlist_li);
				   routedescrnr++;

				   if (route_description_arr[j+2] == 'Toegankelijkheid') {
				   	   toegankelijkheidsinfo++;
				   }
				}
				info_html_div.appendChild(rlist);
				div_google_maps_info_html.appendChild(info_html_div);
			}
		
			var count_descr_markers = 0;
			if ( descr_markers ) {
				var descr_markers_arr = descr_markers.split(",");
				for (var j = 0; j < descr_markers_arr.length; j=j+3) {
					routeIcon = new GIcon(baseIcon);
					routeIcon.image = "images/markers/pointers/punt_"+descr_markers_arr[j]+".gif";
					rp_markers = new GMarker(new GLatLng(parseFloat(descr_markers_arr[j+1]),parseFloat(descr_markers_arr[j+2])),{icon:routeIcon, draggable:false, title:descr_markers_arr[j]});
					rmarkers[count_descr_markers] = rp_markers;
					map.addOverlay(rp_markers);
					count_descr_markers++;
				}
			}
			
			rp_markers = new GMarker(routePoints[0],{icon:startIcon, draggable:false, title:'Start'});
			rmarkers[count_descr_markers] = rp_markers;
			map.addOverlay(rp_markers);
			rp_markers = new GMarker(routePoints[routePoints.length-1],{icon:finishIcon, draggable:false, title:'Eind'});
			rmarkers[count_descr_markers+1] = rp_markers;
			map.addOverlay(rp_markers);
		}
	}
	createAltAttributesGoogleMaps();
	request.send(null);
	map.hideControls();
}

function getRoutesSearch(plaats,themaid,catid,pageid) {
	var html_element = document.getElementsByTagName("html");
	var lang = html_element[0].getAttribute("lang");
	if (!lang) lang='nl-nl';

	var selectedCategory = catid;
	sidebar_html = "";
	for (var i = 0; i < gmarkers.length; i++) {
		map.removeOverlay(gmarkers[i]);
		map.removeOverlay(gmarkers_hl[i]);
	}
	for (var i = 0; i < bmarkers.length; i++) {
		map.removeOverlay(bmarkers[i]);
	}
	for (var i = 0; i < amarkers.length; i++) {
		map.removeOverlay(amarkers[i]);
	}
	for (var i = 0; i < rmarkers.length; i++) {
		map.removeOverlay(rmarkers[i]);
	}
	map.setCenter(new GLatLng(52.96766504873649, 5.552215576171875), 10);

	var label_center = map.getCenter();
	var label = new ELabel(new GLatLng(parseFloat(label_center.y), parseFloat(label_center.x)), "Routes worden geladen...", "style1",new GSize(-150,0),90);
    map.removeOverlay(label)
    map.addOverlay(label);

	gmarkers = [];
	gmarkers_hl = [];
	bmarkers = [];
	amarkers = [];

	htmls = [];
	i = 0;
	map_action = 3;

	clearContentsFromElement("google_maps_sidebar_search");
	var bounds = this.map.getBounds();

	// delete route links
	var ulexist = document.getElementById("infolinks");
	var mapcontrols = document.getElementById("mapcontrols");
	if (ulexist) {				
		mapcontrols.removeChild(ulexist);
	}

	if (!pageid) pageid = 1;

	var urlstr="components/com_routes/assets/get_routes_search.php"
		+ "?plaats=" + plaats // Plaats
		+ "&themaid=" + themaid // Thema ID
		+ "&catid=" + catid // Category ID
		+ "&page=" + pageid // Pagina ID
		+ "&lang=" + lang; // Language ID
	var request = GXmlHttp.create();
	request.open('GET', urlstr, true);	// request XML from PHP with AJAX call
	request.onreadystatechange = function () {
		if (request.readyState == 4) {
			map.clearOverlays();
			var xmlDoc = request.responseXML;
			// obtain the array of markers and loop through it
			var routes = xmlDoc.documentElement.getElementsByTagName("locatie");
			var introtexts = xmlDoc.documentElement.getElementsByTagName("introtext");
			var tmztexts = xmlDoc.documentElement.getElementsByTagName("tmzintrotext");
			var sidebar_html_search = '<ul class="menu-nav">';
			// build routes link list
			var routelinks = document.getElementById("google_maps_sidebar_search");
			var routelinks_ul = document.createElement("ul");
			routelinks_ul.setAttribute("id","route_links_list");
			routelinks_ul.setAttribute("class","menu-nav");
			for (var i = 0; i < routes.length; i++) {
				// obtain the attribues of each route
				var id = routes[i].getAttribute("id");
				var lat = parseFloat(routes[i].getAttribute("lat"));
				var lng = parseFloat(routes[i].getAttribute("lng"));
				var punt = new GLatLng(lat,lng);
				var naam = routes[i].getAttribute("naam");
				var tmz = parseInt(routes[i].getAttribute("tmz"));
				var routelinks_ul_li = document.createElement("li");
				var routelinks_ul_li_a = document.createElement("a");
				var link = "http://www.zw-friesland.nl/routekaart/index.php?option=com_routes&view=route&id="+id+"&Itemid=61";
				routelinks_ul_li_a.setAttribute("href",link);
				routelinks_ul_li_a.setAttribute("title",naam);
				var routelinks_ul_li_a_span = document.createElement("span");
				var routelinks_ul_li_a_span_txt = document.createTextNode(naam);
				routelinks_ul_li_a_span.appendChild(routelinks_ul_li_a_span_txt);
				if (tmz==1) {
					var routelinks_ul_li_a_span_img = document.createElement("img");
					routelinks_ul_li_a_span_img.setAttribute("src","images/markers/tmz_zorg.gif");
					routelinks_ul_li_a_span_img.setAttribute("width","16px");
					routelinks_ul_li_a_span_img.setAttribute("height","16px");
					routelinks_ul_li_a_span_img.setAttribute("alt","Toegankelijksheidsinfo van route beschikbaar");
					routelinks_ul_li_a_span.appendChild(routelinks_ul_li_a_span_img); 
				}
				routelinks_ul_li_a.appendChild(routelinks_ul_li_a_span);
				routelinks_ul_li.appendChild(routelinks_ul_li_a);
				routelinks_ul.appendChild(routelinks_ul_li);

				// create the route marker
				var route_marker = routes[i].getAttribute("route_marker");
				var html = "<strong>" + naam + "</strong><br />" + routes[i].getAttribute("html");

				if (introtexts[i].childNodes[0].nodeValue == '#') {
					var introtext = '<div id="iwstyle_empty"><p><strong>' + naam + '</strong></p>';
					introtext += '<a href="javascript:showRoute('+ id +')" title="'+naam+'"><img src="images/site/route.gif" alt="Toon route" width="147" height="41"></a>';
				} else {
					var introtext = '<div id="iwstyle"><p><strong>' + naam + '</strong></p><p>' + introtexts[i].childNodes[0].nodeValue + '</p>';
					introtext += '<br /><a href="javascript:showRoute('+ id +')" title="'+naam+'"><img src="images/site/route.gif" alt="Toon route" width="147" height="41"></a>&nbsp;';
				}
				introtext += '</div>';
				if (tmztexts[i].childNodes[0].nodeValue == '#') {
					var tmzintrotext = '';
				} else {
					var tmzintrotext = '<div id="iwstyle_tmz">' + tmztexts[i].childNodes[0].nodeValue + '</div>';
				}

				// create the route
				var route = createRouteMarker(i,punt,naam,introtext,tmzintrotext,route_marker);
				
				map.addOverlay(route);
			}
			var rdoc = xmlDoc.documentElement.getElementsByTagName('paginationhtml');
			if (rdoc[0].childNodes[0].nodeValue == '#') {
			    var pagination = '';
			} else {
				var pagination = rdoc[0].childNodes[0].nodeValue;
			}

			if ( routes.length > 0) {
				ConvertHTML2DOM(routelinks, pagination, false);
				routelinks.appendChild(routelinks_ul);
			} else {
				var noroutesfound_p = document.createElement("p");
				var noroutesfound_p_txt = document.createTextNode("Geen routes gevonden");
				noroutesfound_p.appendChild(noroutesfound_p_txt);
				routelinks.appendChild(noroutesfound_p);
			}

			addEventHandlersToRouteLinks();
			createAltAttributesGoogleMaps();
		}
	}
	request.send(null);
	map.hideControls();
}


function getBezienswaardigheden() {
	var html_element = document.getElementsByTagName("html");
	var lang = html_element[0].getAttribute("lang");
	if (!lang) lang='nl-nl';
	htmls = [];
	i = 0;
	var bounds = this.map.getBounds();
	var bounds = map.getBounds();
	var southWest = bounds.getSouthWest();
	var northEast = bounds.getNorthEast();

	for (var i = 0; i < bmarkers.length; i++) {
		map.removeOverlay(bmarkers[i]);
	}
	for (var i = 0; i < amarkers.length; i++) {
		map.removeOverlay(amarkers[i]);
	}

	// get Itemid
	var Itemid = getQueryVariable("Itemid");
	
	clearContentsFromElement("gm_accommodaties");
	clearContentsFromElement("gm_bezienswaardigheden");
	var gm_accommodaties = document.getElementById("gm_accommodaties");
	var gm_bezienswaardigheden = document.getElementById("gm_bezienswaardigheden");

	var urlstr="components/com_routes/assets/get_bezienswaardigheden.php"
		+ "?lat_min=" + southWest.lat()
		+ "&lat_max=" + northEast.lat()
		+ "&lng_min=" + southWest.lng()
		+ "&lng_max=" + northEast.lng()
		+ "&zoom=" + map.getZoom() //Zoom level
		+ "&lang=" + lang; // Language ID
	var request = GXmlHttp.create();
	request.open('GET', urlstr, true);	// request XML from PHP with AJAX call
	request.onreadystatechange = function () {
		if (request.readyState == 4) {
			var xmlDoc = request.responseXML;

			// obtain the array of markers and loop through it
			var bezienswaardigheden = xmlDoc.documentElement.getElementsByTagName("bezienswaardigheid");
			var titles = xmlDoc.documentElement.getElementsByTagName("title");
			var addresses = xmlDoc.documentElement.getElementsByTagName("address");
			var zipcodes = xmlDoc.documentElement.getElementsByTagName("zipcode");
			var cities = xmlDoc.documentElement.getElementsByTagName("city");
			var mimages = xmlDoc.documentElement.getElementsByTagName("mimage");
			var introtexts = xmlDoc.documentElement.getElementsByTagName("introtext");
			var tmztexts = xmlDoc.documentElement.getElementsByTagName("tmzintrotext");
			var gm_bezienswaardigheden_ul = document.createElement("ul");
			gm_bezienswaardigheden_ul.setAttribute("id","bezienswaardigheid_links_list");
			gm_bezienswaardigheden_ul.setAttribute("class","menu-nav");
			var gm_accommodaties_ul = document.createElement("ul");
			gm_accommodaties_ul.setAttribute("id","accommodatie_links_list");
			gm_accommodaties_ul.setAttribute("class","menu-nav");
			
			var address = '';
			var zipcode = '';
			var city	= '';
			var introtext = '';
			bezienswaardigheid_count = 0;
			accommodatie_count = 0;
			for (var i = 0; i < bezienswaardigheden.length; i++) {
				// obtain the attribues of each route
				var id = bezienswaardigheden[i].getAttribute("id");
				var lat = parseFloat(bezienswaardigheden[i].getAttribute("lat"));
				var lng = parseFloat(bezienswaardigheden[i].getAttribute("lng"));
				var showbw = parseInt(bezienswaardigheden[i].getAttribute("showbw"));
				var tmz = parseInt(bezienswaardigheden[i].getAttribute("tmz"));
				var punt = new GLatLng(lat,lng);
				var title = titles[i].childNodes[0].nodeValue;
				if (addresses[i].childNodes[0].nodeValue == '#') {
					address = '';
				} else {
					address = addresses[i].childNodes[0].nodeValue;
				}
				if (zipcodes[i].childNodes[0].nodeValue == '#') {
					zipcode = '';
				} else {
					zipcode = zipcodes[i].childNodes[0].nodeValue;
				}
				if (cities[i].childNodes[0].nodeValue == '#') {
					city = '#';
				} else {
					city = cities[i].childNodes[0].nodeValue;
				}
				if (showbw == 1) {
					var gm_bezienswaardigheden_ul_li = document.createElement("li");
					var gm_bezienswaardigheden_ul_li_a = document.createElement("a");
					var link = "http://www.zw-friesland.nl/routekaart/index.php?option=com_routes&view=accommodatie&id="+id+"&Itemid="+Itemid;
					gm_bezienswaardigheden_ul_li_a.setAttribute("href",link);
					gm_bezienswaardigheden_ul_li_a.setAttribute("title",title);
					var gm_bezienswaardigheden_ul_li_a_span = document.createElement("span");
					var gm_bezienswaardigheden_ul_li_a_span_txt = document.createTextNode(title);
					gm_bezienswaardigheden_ul_li_a_span.appendChild(gm_bezienswaardigheden_ul_li_a_span_txt);
					if (tmz==1) {
						var gm_bezienswaardigheden_ul_li_a_span_img = document.createElement("img");
						gm_bezienswaardigheden_ul_li_a_span_img.setAttribute("src","images/markers/tmz_zorg.gif");
						gm_bezienswaardigheden_ul_li_a_span_img.setAttribute("width","16px");
						gm_bezienswaardigheden_ul_li_a_span_img.setAttribute("height","16px");
						gm_bezienswaardigheden_ul_li_a_span_img.setAttribute("alt","Toegankelijksheidsinfo van accommodatie beschikbaar");
						gm_bezienswaardigheden_ul_li_a_span.appendChild(gm_bezienswaardigheden_ul_li_a_span_img);
					}
					gm_bezienswaardigheden_ul_li_a.appendChild(gm_bezienswaardigheden_ul_li_a_span);
					gm_bezienswaardigheden_ul_li.appendChild(gm_bezienswaardigheden_ul_li_a);
					gm_bezienswaardigheden_ul.appendChild(gm_bezienswaardigheden_ul_li);
				} else {
					var gm_accommodaties_ul_li = document.createElement("li");
					var gm_accommodaties_ul_li_a = document.createElement("a");
					var link = "http://www.zw-friesland.nl/routekaart/index.php?option=com_routes&view=accommodatie&id="+id+"&Itemid="+Itemid;
					gm_accommodaties_ul_li_a.setAttribute("href",link);
					gm_accommodaties_ul_li_a.setAttribute("title",title);
					var gm_accommodaties_ul_li_a_span = document.createElement("span");
					var gm_accommodaties_ul_li_a_span_txt = document.createTextNode(title);
					gm_accommodaties_ul_li_a_span.appendChild(gm_accommodaties_ul_li_a_span_txt);
					if (tmz==1) {
						var gm_accommodaties_ul_li_a_span_img = document.createElement("img");
						gm_accommodaties_ul_li_a_span_img.setAttribute("src","images/markers/tmz_zorg.gif");
						gm_accommodaties_ul_li_a_span_img.setAttribute("width","16px");
						gm_accommodaties_ul_li_a_span_img.setAttribute("height","16px");
						gm_accommodaties_ul_li_a_span_img.setAttribute("alt","Toegankelijksheidsinfo van accommodatie beschikbaar");
						gm_accommodaties_ul_li_a_span.appendChild(gm_accommodaties_ul_li_a_span_img);
					}
					gm_accommodaties_ul_li_a.appendChild(gm_accommodaties_ul_li_a_span);
					gm_accommodaties_ul_li.appendChild(gm_accommodaties_ul_li_a);
					gm_accommodaties_ul.appendChild(gm_accommodaties_ul_li);
				}
				var mimage = mimages[i].childNodes[0].nodeValue;
				if (introtexts[i].childNodes[0].nodeValue == '#') {
					introtext = '';
				} else {
					introtext = '<div><h3>' + title + '</h3><p class="address">' + address + '</p><p class="address">' + zipcode + '</p><p class="address">' + city + '</p>';
				}

				// create the marker
				if (showbw == 1) {
					var bezienswaardigheid_marker = createBezienswaardigheidMarker(bezienswaardigheid_count,punt,title,introtext,mimage);
					map.addOverlay(bezienswaardigheid_marker);
					bezienswaardigheid_count++;
				} else {
					var accommodatie_marker = createAccommodatieMarker(accommodatie_count,punt,title,introtext,mimage);
					map.addOverlay(accommodatie_marker);
					accommodatie_count++;
				}
			}

			gm_accommodaties.appendChild(gm_accommodaties_ul);
			if (accommodatie_count == 0) {
				var gm_accommodaties_p = document.createElement("p");
				var gm_accommodaties_p_txt = document.createTextNode("Geen accommodaties gevonden");
				gm_accommodaties_p.appendChild(gm_accommodaties_p_txt);
				gm_accommodaties.appendChild(gm_accommodaties_p);
			}

			gm_bezienswaardigheden.appendChild(gm_bezienswaardigheden_ul);

			if (bezienswaardigheid_count == 0) {
				var gm_bezienswaardigheden_p = document.createElement("p");
				var gm_bezienswaardigheden_p_txt = document.createTextNode("Geen bezienswaardigheden gevonden");
				gm_bezienswaardigheden_p.appendChild(gm_bezienswaardigheden_p_txt);
				gm_bezienswaardigheden.appendChild(gm_bezienswaardigheden_p);
			}
		}
		addEventHandlersToAccommodatieLinks();
		addEventHandlersToBezienswaardighedenLinks();
		createAltAttributesGoogleMaps();
	}
	request.send(null);
	map.hideControls();
}

function getBezienswaardighedenSearch(naam,plaats,categorie,pageid) {
	var html_element = document.getElementsByTagName("html");
	var lang = html_element[0].getAttribute("lang");
	if (!lang) lang='nl-nl';

	htmls = [];
	bmarkers_info = [];
	amarkers_info = [];
	
	i = 0;

	for (var i = 0; i < bmarkers.length; i++) {
		map.removeOverlay(bmarkers[i]);
	}
	for (var i = 0; i < amarkers.length; i++) {
		map.removeOverlay(amarkers[i]);
	}

	var ulexist = document.getElementById("infolinks");
	var mapcontrols = document.getElementById("mapcontrols");
	if (ulexist) {				
		mapcontrols.removeChild(ulexist);
	}

	// get Itemid
	var Itemid = getQueryVariable("Itemid");

	clearContentsFromElement("gm_bezienswaardigheden");
	clearContentsFromElement("gm_accommodaties");
	var gm_bezienswaardigheden = document.getElementById("gm_bezienswaardigheden");
	var gm_accommodaties = document.getElementById("gm_accommodaties");

	var urlstr="components/com_routes/assets/get_bezienswaardighedensearch.php"
		+ "?naam=" + naam
		+ "&plaats=" + plaats
		+ "&categorie=" + categorie
		+ "&page=" + pageid // Pagina ID
		+ "&lang=" + lang; // Language ID
	var request = GXmlHttp.create();
	request.open('GET', urlstr, true);	// request XML from PHP with AJAX call
	request.onreadystatechange = function () {
		if (request.readyState == 4) {
			map.clearOverlays();
			var xmlDoc = request.responseXML;

			// obtain the array of markers and loop through it
			var bezienswaardigheden = xmlDoc.documentElement.getElementsByTagName("bezienswaardigheid");
			var titles = xmlDoc.documentElement.getElementsByTagName("title");
			var addresses = xmlDoc.documentElement.getElementsByTagName("address");
			var zipcodes = xmlDoc.documentElement.getElementsByTagName("zipcode");
			var cities = xmlDoc.documentElement.getElementsByTagName("city");
			var mimages = xmlDoc.documentElement.getElementsByTagName("mimage");
			var introtexts = xmlDoc.documentElement.getElementsByTagName("introtext");
			var gm_bezienswaardigheden_ul = document.createElement("ul");
			gm_bezienswaardigheden_ul.setAttribute("id","bezienswaardigheid_links_list");
			gm_bezienswaardigheden_ul.setAttribute("class","menu-nav");
			var gm_accommodaties_ul = document.createElement("ul");
			gm_accommodaties_ul.setAttribute("id","accommodatie_links_list");
			gm_accommodaties_ul.setAttribute("class","menu-nav");
			var address = '';
			var zipcode = '';
			var city	= '';
			var introtext = '';
			bezienswaardigheid_count = 0;
			accommodatie_count = 0;
			for (var i = 0; i < bezienswaardigheden.length; i++) {
				// obtain the attribues of each route
				var id = bezienswaardigheden[i].getAttribute("id");
				var lat = parseFloat(bezienswaardigheden[i].getAttribute("lat"));
				var lng = parseFloat(bezienswaardigheden[i].getAttribute("lng"));
				var showbw = parseInt(bezienswaardigheden[i].getAttribute("showbw"));
				var tmz = parseInt(bezienswaardigheden[i].getAttribute("tmz"));
				var punt = new GLatLng(lat,lng);
				var title = titles[i].childNodes[0].nodeValue;
				if (addresses[i].childNodes[0].nodeValue == '#') {
					address = '';
				} else {
					address = addresses[i].childNodes[0].nodeValue;
				}
				if (zipcodes[i].childNodes[0].nodeValue == '#') {
					zipcode = '';
				} else {
					zipcode = zipcodes[i].childNodes[0].nodeValue;
				}
				if (cities[i].childNodes[0].nodeValue == '#') {
					city = '#';
				} else {
					city = cities[i].childNodes[0].nodeValue;
				}
				if (showbw == 1) {
					var gm_bezienswaardigheden_ul_li = document.createElement("li");
					var gm_bezienswaardigheden_ul_li_a = document.createElement("a");
					var link = "http://www.zw-friesland.nl/routekaart/index.php?option=com_routes&view=accommodatie&id="+id+"&Itemid="+Itemid;
					gm_bezienswaardigheden_ul_li_a.setAttribute("href",link);
					gm_bezienswaardigheden_ul_li_a.setAttribute("title",title);
					var gm_bezienswaardigheden_ul_li_a_span = document.createElement("span");
					var gm_bezienswaardigheden_ul_li_a_span_txt = document.createTextNode(title);
					gm_bezienswaardigheden_ul_li_a_span.appendChild(gm_bezienswaardigheden_ul_li_a_span_txt);
					if (tmz==1) {
						var gm_bezienswaardigheden_ul_li_a_span_img = document.createElement("img");
						gm_bezienswaardigheden_ul_li_a_span_img.setAttribute("src","images/markers/tmz_zorg.gif");
						gm_bezienswaardigheden_ul_li_a_span_img.setAttribute("width","16px");
						gm_bezienswaardigheden_ul_li_a_span_img.setAttribute("height","16px");
						gm_bezienswaardigheden_ul_li_a_span_img.setAttribute("alt","Toegankelijksheidsinfo van accommodatie beschikbaar");
						gm_bezienswaardigheden_ul_li_a_span.appendChild(gm_bezienswaardigheden_ul_li_a_span_img);
					}
					gm_bezienswaardigheden_ul_li_a.appendChild(gm_bezienswaardigheden_ul_li_a_span);
					gm_bezienswaardigheden_ul_li.appendChild(gm_bezienswaardigheden_ul_li_a);
					gm_bezienswaardigheden_ul.appendChild(gm_bezienswaardigheden_ul_li);
				} else {
					var gm_accommodaties_ul_li = document.createElement("li");
					var gm_accommodaties_ul_li_a = document.createElement("a");
					var link = "http://www.zw-friesland.nl/routekaart/index.php?option=com_routes&view=accommodatie&id="+id+"&Itemid="+Itemid;
					gm_accommodaties_ul_li_a.setAttribute("href",link);
					gm_accommodaties_ul_li_a.setAttribute("title",title);
					var gm_accommodaties_ul_li_a_span = document.createElement("span");
					var gm_accommodaties_ul_li_a_span_txt = document.createTextNode(title);
					gm_accommodaties_ul_li_a_span.appendChild(gm_accommodaties_ul_li_a_span_txt);
					if (tmz==1) {
						var gm_accommodaties_ul_li_a_span_img = document.createElement("img");
						gm_accommodaties_ul_li_a_span_img.setAttribute("src","images/markers/tmz_zorg.gif");
						gm_accommodaties_ul_li_a_span_img.setAttribute("width","16px");
						gm_accommodaties_ul_li_a_span_img.setAttribute("height","16px");
						gm_accommodaties_ul_li_a_span_img.setAttribute("alt","Toegankelijksheidsinfo van accommodatie beschikbaar");
						gm_accommodaties_ul_li_a_span.appendChild(gm_accommodaties_ul_li_a_span_img);
					}
					gm_accommodaties_ul_li_a.appendChild(gm_accommodaties_ul_li_a_span);
					gm_accommodaties_ul_li.appendChild(gm_accommodaties_ul_li_a);
					gm_accommodaties_ul.appendChild(gm_accommodaties_ul_li);
				}
				var mimage = mimages[i].childNodes[0].nodeValue;
				if (introtexts[i].childNodes[0].nodeValue == '#') {
					introtexts[i].childNodes[0].nodeValue = '';
				}

				// create the marker
				if (showbw == 1) {
					bmarkers_info[bezienswaardigheid_count] = [title, address, zipcode, city, introtexts[i].childNodes[0].nodeValue, tmz, id];
					var bezienswaardigheid_marker = createBezienswaardigheidMarker(bezienswaardigheid_count,punt,title,introtext,mimage);
					map.addOverlay(bezienswaardigheid_marker);
					bezienswaardigheid_count++;
				} else {
					amarkers_info[accommodatie_count] = [title, address, zipcode, city, introtexts[i].childNodes[0].nodeValue, tmz, id];
					var accommodatie_marker = createAccommodatieMarker(accommodatie_count,punt,title,introtext,mimage);
					map.addOverlay(accommodatie_marker);
					accommodatie_count++;
				}
			}

			var rdoc = xmlDoc.documentElement.getElementsByTagName('paginationhtml');
			if (rdoc[0].childNodes[0].nodeValue == '#') {
			    var pagination = '';
			} else {
				var pagination = rdoc[0].childNodes[0].nodeValue;
				ConvertHTML2DOM(gm_accommodaties, pagination, false);
			}

			gm_accommodaties.appendChild(gm_accommodaties_ul);

			var accommodaties = document.getElementById("gm_accommodaties");
			var accommodaties_links = accommodaties.getElementsByTagName("a");
			if ( accommodaties_links.length == 0) {
				var gm_accommodaties_p = document.createElement("p");
				var gm_accommodaties_p_txt = document.createTextNode("Geen accommodaties gevonden");
				gm_accommodaties_p.appendChild(gm_accommodaties_p_txt);
				gm_accommodaties.appendChild(gm_accommodaties_p);
			}

			gm_bezienswaardigheden.appendChild(gm_bezienswaardigheden_ul);

			var bezienswaardigheden = document.getElementById("gm_bezienswaardigheden");
			var bezienswaardigheden_links = bezienswaardigheden.getElementsByTagName("a");
		  	bezienswaardigheden_links.length > 0
			if ( bezienswaardigheden_links.length == 0) {
				var gm_bezienswaardigheden_p = document.createElement("p");
				var gm_bezienswaardigheden_p_txt = document.createTextNode("Geen bezienswaardigheden gevonden");
				gm_bezienswaardigheden_p.appendChild(gm_bezienswaardigheden_p_txt);
				gm_bezienswaardigheden.appendChild(gm_bezienswaardigheden_p);
			}
		}
		addEventHandlersToAccommodatieZoekenLinks();
		addEventHandlersToBezienswaardighedenZoekenLinks();
		createAltAttributesGoogleMaps();
	}
	request.send(null);
	map.hideControls();
}

function getKnooppunten() {
	var html_element = document.getElementsByTagName("html");
	var lang = html_element[0].getAttribute("lang");
	if (!lang) lang='nl-nl';
	sidebar_html = "";
	for (var i = 0; i < gmarkers.length; i++) {
		map.removeOverlay(gmarkers[i]);
		map.removeOverlay(gmarkers_hl[i]);
	}
	for (var i = 0; i < bmarkers.length; i++) {
		map.removeOverlay(bmarkers[i]);
	}
	for (var i = 0; i < amarkers.length; i++) {
		map.removeOverlay(amarkers[i]);
	}
	for (var i = 0; i < rmarkers.length; i++) {
		map.removeOverlay(rmarkers[i]);
	}
	map.setCenter(new GLatLng(52.96766504873649, 5.552215576171875), 10);

	var knooppuntenlayer = new GTileLayer(new GCopyrightCollection(), 10, 15);
	knooppuntenlayer.getTileUrl = CustomGetKnpTileUrl;

    function CustomGetKnpTileUrl(a,b) {

	    if ((version >= 5.5) && (version < 7) && (document.body.filters)) { 
		    if (b==10 && a.x>=526 && a.x<=528 && a.y>=332 && a.y<= 334) {
		    	return "http://www.meijeringh.info/gm/ftiles/gif/"+(a.x)+"_"+(a.y)+"_7.gif";
		    } else if (b==11 && a.x>=1053 && a.x<=1057 && a.y>=665 && a.y<= 669) {
		    	return "http://www.meijeringh.info/gm/ftiles/gif/"+(a.x)+"_"+(a.y)+"_6.gif";
		    } else if (b==12 && a.x>=2107 && a.x<=2115 && a.y>=1331 && a.y<= 1338) {
		    	return "http://www.meijeringh.info/gm/ftiles/gif/"+(a.x)+"_"+(a.y)+"_5.gif";
		    } else if (b==13 && a.x>=4213 && a.x<=4230 && a.y>=2663 && a.y<= 2676) {
		    	return "http://www.meijeringh.info/gm/ftiles/gif/"+(a.x)+"_"+(a.y)+"_4.gif";
		    } else {
		    	return "http://www.meijeringh.info/gm/ftiles/gif/525_331_7.gif";
		    }
		} else {
		    if (b==10 && a.x>=526 && a.x<=528 && a.y>=332 && a.y<= 334) {
		    	return "http://www.meijeringh.info/gm/ftiles/"+(a.x)+"_"+(a.y)+"_7.png";
		    } else if (b==11 && a.x>=1053 && a.x<=1057 && a.y>=665 && a.y<= 669) {
		    	return "http://www.meijeringh.info/gm/ftiles/"+(a.x)+"_"+(a.y)+"_6.png";
		    } else if (b==12 && a.x>=2107 && a.x<=2115 && a.y>=1331 && a.y<= 1338) {
		    	return "http://www.meijeringh.info/gm/ftiles/"+(a.x)+"_"+(a.y)+"_5.png";
		    } else if (b==13 && a.x>=4213 && a.x<=4230 && a.y>=2663 && a.y<= 2676) {
		    	return "http://www.meijeringh.info/gm/ftiles/"+(a.x)+"_"+(a.y)+"_4.png";
		    } else {
		    	return "http://www.meijeringh.info/gm/ftiles/525_331_7.png";
		    }
		}
	}

	var label_center = map.getCenter();
	var label = new ELabel(new GLatLng(parseFloat(label_center.y), parseFloat(label_center.x)), "Knooppunten worden geladen...", "style1",new GSize(-150,0),90);
    map.removeOverlay(label)
    map.addOverlay(label);

	gmarkers = [];
	gmarkers_hl = [];
	bmarkers = [];

	htmls = [];
	i = 0;
	map_action = 4;
	knp_editmode = 0;
	var bounds = this.map.getBounds();

	var urlstr="components/com_routes/assets/get_knooppunten.php"
		+ "?zoom=" + map.getZoom() //Zoom level
		+ "&lang=" + lang; // Language ID
	var request = GXmlHttp.create();
	request.open('GET', urlstr, true);	// request XML from PHP with AJAX call
	request.onreadystatechange = function () {
		if (request.readyState == 4) {
			map.clearOverlays();
			var xmlDoc = request.responseXML;
			// obtain the array of markers and loop through it
			var knooppunten = xmlDoc.documentElement.getElementsByTagName("locatie");
			var introtexts = xmlDoc.documentElement.getElementsByTagName("introtext");
			sidebar_html_search = "";
			for (var i = 0; i < knooppunten.length; i++) {
				// obtain the attribues of each route
				var id = knooppunten[i].getAttribute("id");
				var knp = knooppunten[i].getAttribute("knp");
				var lat = parseFloat(knooppunten[i].getAttribute("lat"));
				var lng = parseFloat(knooppunten[i].getAttribute("lng"));
				var punt = new GLatLng(lat,lng);
				var naam = knooppunten[i].getAttribute("naam");
				// create the route
				var route_marker = knooppunten[i].getAttribute("route_marker");

				if (introtexts[i].childNodes[0].nodeValue == '#') {
					var introtext = '<div id="iwstyle_empty"><p><strong>' + naam + '</strong></p></div>';
					var html = '<p><strong>' + naam + '</strong></p>';
				} else {
					var introtext = '<div id="iwstyle"><p><strong>' + naam + '</strong></p>' + html_entity_decode(introtexts[i].childNodes[0].nodeValue) + '</div>';
					var html = '<p><strong>' + naam + '</strong></p>' + html_entity_decode(introtexts[i].childNodes[0].nodeValue);
				}

				// create the knooppunt
				var fietsknooppunten = createKnooppuntMarker(i,punt,knp,naam,introtext,html);
				map.addOverlay(fietsknooppunten);
			}
		}
		map.addOverlay(new GTileLayerOverlay(knooppuntenlayer));
	}
	createAltAttributesGoogleMaps();

	request.send(null);
	map.hideControls();
	
	showKnooppuntentools(1,0);
}