function KaartManager() {
	this.mapRefresh   = true;
	this.mapPadding	  = 50;
	this.mapType 	  = 'kaart';
	this.filters	  = false;
	this.staticMarker = false;
	this.markerGroups = [
		{ 'id': 'koninginnedag', 'tonen': true, 'icoon': 'koninginnedag', 'markers': {} },
		{ 'id': 'koninginnenacht', 'tonen': false, 'icoon': 'koninginnenacht', 'markers': {} },
		{ 'id': 'hotel0', 'tonen': false, 'icoon': 'hotel0', 'markers': {} },
		{ 'id': 'hotel1', 'tonen': false, 'icoon': 'hotel1', 'markers': {} },
		{ 'id': 'hotel2', 'tonen': false, 'icoon': 'hotel2', 'markers': {} },
		{ 'id': 'hotel3', 'tonen': false, 'icoon': 'hotel3', 'markers': {} },
		{ 'id': 'hotel4', 'tonen': false, 'icoon': 'hotel4', 'markers': {} },
		{ 'id': 'hotel5', 'tonen': false, 'icoon': 'hotel5', 'markers': {} }
	];
}
KaartManager.prototype.init = function( Args ) {
	this.mapPadding   = ( Args.mapPadding ? Args.mapPadding : this.mapPadding);
	this.filters      = ( Args.filters ? '&filters='+Args.filters : '' );
	//this.showMarkers  = ( Args.showMarkers ? Args.showMarkers : this.showMarkers );
	
	mapInit( Args );
	
	mapLoadIcons();
	
	mapUpdatePos();
	krtManager.refresh();
	
	GEvent.addListener( map, "dragend", function() {
		krtManager.reload();
	} );
	GEvent.addListener( map, "zoomend", function() {	
		krtManager.reload();
	} );
}
KaartManager.prototype.reload = function() {
	if ( typeof mapHzDetailWindow != 'undefined' ) {
		mapHzDetailWindow.remove();
	}
	mapUpdatePos();
	krtManager.refresh();
}
KaartManager.prototype.getMarkerGroup = function( MarkerGroupId ) {
	for ( var i = 0; i < this.markerGroups.length; i++ ) {
		markerGroup = this.markerGroups[ i ];
		if ( markerGroup.id == MarkerGroupId ) {
			return markerGroup;
		}
	}
	
	return false;
}
KaartManager.prototype.refresh = function() {
	if ( !this.mapRefresh ) {
		return;
	}
	
	map.clearOverlays();
	
	var sw = mapGetBoundSw( this.mapPadding );
	swLat = sw.lat();
	swLng = sw.lng();
	
	var ne = mapGetBoundNe( this.mapPadding );
	neLat = ne.lat();
	neLng = ne.lng();
	
	for ( var i = 0; i < this.markerGroups.length; i++ ) {
		markerGroup = this.markerGroups[ i ];
		
		if ( markerGroup.tonen ) {
			$.ajax( {
				data: 'map='+markerGroup.id+'&maptype='+this.mapType+'&BBOX='+swLat+','+swLng+','+neLat+','+neLng,
				success: function(data) {
					krtManager.redrawMarkers( data, false );
				}
			} );
		}
	}
}
KaartManager.prototype.loadMarkers = function( MarkerGroupId, Tonen ) {
	markerGroup = this.getMarkerGroup( MarkerGroupId );
	markerGroup.tonen = Tonen;
	
	this.refresh();
}
KaartManager.prototype.redrawMarkers = function( data, bound ) {
	mapBounds = new GLatLngBounds();
	for ( var i = 0; i < data.items.length; i++ ) {
		jxItem = data.items[ i ];
		
		var markerTitel = jxItem.naam;
		if ( data.map ) {
			var markerGroep = this.getMarkerGroup( data.map );
		} else if ( jxItem.sterren ) {
			var markerGroep = this.getMarkerGroup( 'hotel'+jxItem.sterren );
		} else {
			var markerGroep = this.getMarkerGroup( 'koninginnedag' );
		}
		
		var marker = new KaMarker( new GLatLng( parseFloat( jxItem.lat ), parseFloat( jxItem.lng ) ), {icon: mapIcons["markers"][ markerGroep.icoon ]} );
		marker.title = markerTitel;
		marker.html = this.getMarkerHtml( jxItem, markerGroep.icoon );
		marker.initSettings();
		map.addOverlay( marker );
		
		mapBounds.extend( marker.getLatLng()  );
	}
	
	if ( bound ) {
		map.setCenter( mapBounds.getCenter(), map.getBoundsZoomLevel( mapBounds ) );  
	}
}
KaartManager.prototype.getMarkerHtml = function( JxItem, MarkerType ) {
	var html = '';
	
	html = '<table style="width: 400px;">';
	
	html += '<tr><td class="foto">';
	
	html += '<a href="'+JxItem.url+'">';
	if ( JxItem.foto ) {
		html += '<img src="'+JxItem.foto+'" alt="" onload="imgShrink( this, 80, 80, true );" onerror="parentNode.parentNode.style.display = \'none\';" />';
	} else {
		html += '<img src="/images/misc/geen-80.gif" alt="" />';
	}
	html += '</a></td>';
	
	html += '<td class="details"><div class="sluiten" title="Scherm sluiten"></div>';
	html += '<a href="'+JxItem.url+'" class="titel">'+JxItem.naam+'</a>';
	
	if ( MarkerType && MarkerType.indexOf('hotel') == 0 ) {
		for ( var n = 1; n <= JxItem.sterren; n++ ) {
			html += '<img src="/images/icoon/hotelster.gif" alt="Hotelster" />';
		}
		
		html += '<div class="tekst">'+JxItem.adres+'<br />'+JxItem.postcode+'<br />Amsterdam</div>';
	} else {
		if ( JxItem.omschrijving ) {
			html += '<div class="tekst">'+JxItem.omschrijving+'</div>';
		}
	}
	
	html += '</td></tr></table>';
	
	return html;
}

var krtManager = new KaartManager();
