/*
	Map related methods
*/


function getMapCoordinates() {
	var obj = new Object;
	var bounds = map.getBounds();
	var sw = bounds.getSouthWest();
	var ne = bounds.getNorthEast();
	obj.north = ne.lat();
	obj.east = ne.lng();
	obj.south = sw.lat();
	obj.west = sw.lng();
	return obj;
}


function clearMapMarkers() {
	for (var i = 0; i < mapMarkers.length; i++) {
		clusterer.RemoveMarker(mapMarkers[i]);
	}
}


function mapDefaultBehaviour() {
	// GEvent.clearInstanceListeners(map) does not work very well, since we use the clusterer
	if (eventHandlers.zoom) {
		GEvent.removeListener(eventHandlers.zoom);
	}
	
	if (eventHandlers.move) {
		GEvent.removeListener(eventHandlers.move);
	}
	
	if (eventHandlers.typechange) {
		GEvent.removeListener(eventHandlers.typechange);
	}
	
	if (eventHandlers.click) {
		GEvent.removeListener(eventHandlers.click);
	}
	
	if (eventHandlers.addSpotZoom) {
		GEvent.removeListener(eventHandlers.addSpotZoom);
	}
	
	if (eventHandlers.addSpotClick) {
		GEvent.removeListener(eventHandlers.addSpotClick);
	}
	
	eventHandlers.zoom = GEvent.addListener(map, "zoomend", function(oldLevelInt, newLevelInt) {
		if (newLevelInt < 2) {
			map.zoomIn();
		} else if (newLevelInt > 18) {
			map.zoomOut();
		}
		mapState();
	});
	
	eventHandlers.move = GEvent.addListener(map, "moveend", mapState);
	eventHandlers.typechange = GEvent.addListener(map, "maptypechanged", mapState);
	eventHandlers.click = GEvent.addListener(map, "click", mapClick);
	
	mapElement.style.cursor = "default";
	map.enableDragging();
}



function mapState() {
	if (map) {
		var center = map.getCenter();
		var lat = center.lat();
		var lng = center.lng();
		var zoom = map.getZoom();
		var type = map.getCurrentMapType().getUrlArg();
		createCookie("mapState", lat + "|" + lng + "|" + zoom + "|" + type, 30);
	}
}


function mapClick(marker, point) {
	if (mapMode == "spotEdit") {
		
	} else {
		if (marker && marker.sid) {
			if (GET["spotID"] != marker.sid) {
				location.href = "spot.php?spotID=" + marker.sid;
			}
		} else {
			// No spot clicked, do nothing
		}
	}
}

