var map;
var storedPaths = [];
var storedMarkers = [];
var DEFAULT = 0;
var CAMP = 1;
var INFO = 2;
var ALERT = 3;
var popup;

var PathStyles = {
	"default": { "color": "#FF0000", "size": 4 },
	"others": { "color": "#FF3333", "size": 2 }
};

function addPath(coordArray, styleName) {
	var gPoints = [];

	for (var i = 0; i < coordArray.length - 1; i += 2) {
		gPoints.push(new google.maps.LatLng(coordArray[i + 1], coordArray[i]));
	}

	if (styleName == "" || PathStyles[styleName] == undefined) styleName = "default";

	var path = new google.maps.Polyline({
		path: gPoints,
		strokeColor: PathStyles[styleName].color,
		strokeOpacity: 0.7,
		strokeWeight: PathStyles[styleName].size
	  });

	path.setMap(map);

	storedPaths.push(path);
}

function formatPopupContent(title, img) {
	var text = '<div class="map_info_window">';

	// Image
	if (img != "") {
		text += '<div style="height: 68px;"><a href="album.php?img=' + img + '"><img src="' + imgPath + 'smsm/' + img + '.jpg" alt="" /></a></div>';
	}

	text += '<b>' + title + '</b>';

	text += '</div>';

	return text;
}

function addMarker(markerInfo) {
	var iconImage = "default";

	switch (markerInfo[0]) {
		case CAMP: iconImage = "camp"; break;
		case INFO: iconImage = "info"; break;
		case ALERT: iconImage = "alert"; break;
	}

	if (markerInfo[3] != "") iconImage += "_photo";
	iconImage = topPath + "res/" + iconImage + ".png";

	var marker = new google.maps.Marker({
		position: new google.maps.LatLng(markerInfo[2], markerInfo[1]),
		map: map,
		title: markerInfo[4],
		icon: iconImage
	});

	storedMarkers.push(marker);

	// Set popup window
	if (popup == undefined) {
		popup = new google.maps.InfoWindow({});
	}

	google.maps.event.addListener(marker, 'click', function() {
		popup.close();
		popup.setContent(formatPopupContent(markerInfo[4], markerInfo[3]));
		popup.open(map, marker);
	});
}

function removeOverlays() {
	if (map == undefined) return;

	if (popup != undefined) {
		popup.close();
	}

	var i;

	for (i = 0; i < storedPaths.length; i++) {
		storedPaths[i].setMap(null);
	}
	storedPaths = [];

	for (i = 0; i < storedMarkers.length; i++) {
		storedMarkers[i].setMap(null);
	}
	storedMarkers = [];

	document.getElementById("show_hide_overlays").innerHTML = "<a href=\"javascript: restoreOverlays();\">" + TEXT_showOverlays + "</a>";
}

function restoreOverlays() {
	if (map == undefined) return;

	var i;

	// Load the routes
	if (mapPaths != undefined && mapPathStyles != undefined) {
		for (i in mapPaths) {
			addPath(mapPaths[i], mapPathStyles[i]);
		}
	}

	// Load the markers
	if (mapMarkers != undefined) {
		for (i in mapMarkers) {
			addMarker(mapMarkers[i]);
		}
	}

	document.getElementById("show_hide_overlays").innerHTML = "<a href=\"javascript: removeOverlays();\">" + TEXT_hideOverlays + "</a>";
}

