function appendAdsManager(map) {
	var options = {
		maxAdsOnMap : 1,
		style: 'adunit',
	};
	adsManager = new GAdsManager(map, "pub-6314619609463542", options);
	adsManager.enable();
}

function createMap(mapid, lat, lng, zoom) {
	if (GBrowserIsCompatible()) {
		var mapelem = document.getElementById(mapid);
		if (mapelem) {
			var map = new GMap2(mapelem);
			var loc = new GLatLng(lat, lng);
			map.setCenter(loc, zoom);

			map.addControl(new GSmallMapControl());
			map.addControl(new GMapTypeControl());

			// disable for now
			//appendAdsManager(map);

			return map;
		}
	}
	return null;
}

function setMarker(map, lat, lng, message, iconUrl) {
	if (GBrowserIsCompatible()) {
		var loc = new GLatLng(lat, lng);
		var marker;
		var icon = null;

		if (iconUrl) {
			icon = new GIcon();
			icon.image = iconUrl;
			icon.shadow =
				'http://www.google.com/mapfiles/shadow50.png';
			icon.iconSize = new GSize(20, 34);
			icon.shadowSize = new GSize(37, 34);
			icon.iconAnchor = new GPoint(9, 34);
			icon.infoWindowAnchor = new GPoint(9, 2);
			icon.infoShadowAnchor = new GPoint(18, 25);
		}

		marker = new GMarker(loc, icon);
		map.addOverlay(marker);
		// XXX: Internet Explorer seems to require xmlns:v
		// in the html tag, which would break XHTML 1.0 conformance.
		// We'd rather give up displaying the window for the evil
		// browser.
		if (message != "" &&
		    navigator.userAgent.toLowerCase().indexOf("msie") == -1) {
			GEvent.addListener(marker, "click",
			    function() { marker.openInfoWindowHtml(message);
			});
		}
	}
}

function drawMapMarkers(mapid, points, zoom, zoffset) {
	if (GBrowserIsCompatible()) {
		var mapelem = document.getElementById(mapid);

		if (mapelem) {
			var map = new GMap2(mapelem);
			var maxlat = -90;
			var minlat = 90;
			var maxlng = -180;
			var minlng = 180;

			for (var i = 0; i < points.length; i++) {
				if (maxlat < points[i].lat)
					maxlat = points[i].lat;
				if (minlat > points[i].lat)
					minlat = points[i].lat;
				if (maxlng < points[i].lng)
					maxlng = points[i].lng;
				if (minlng > points[i].lng)
					minlng = points[i].lng;
			}

			var ne = new GLatLng(maxlat, maxlng);
			var sw = new GLatLng(minlat, minlng);
			var center = new GLatLng(ne.lat() / 2.0 + sw.lat() / 2.0,
						 ne.lng() / 2.0 + sw.lng() / 2.0);
			var bounds = new GLatLngBounds(sw, ne);
			if (!zoom)
				zoom = map.getBoundsZoomLevel(bounds);
			if (zoffset)
				zoom += zoffset;
			map.setCenter(center, zoom);
			map.addControl(new GSmallMapControl());
			map.addControl(new GMapTypeControl());

			for (var i = 0; i < points.length; i++) {
				setMarker(map, points[i].lat, points[i].lng,
					  points[i].desc, points[i].iconUrl);
			}

			//appendAdsManager(map);

			return map;
		}
	}
	return null;
}

function drawRoutes(map, waypoints) {
	var gpoints = [];

	for (var i = 0; i < waypoints.length; i++) {
		gpoints.push(new GLatLng(waypoints[i].lat, waypoints[i].lng));
	}
	var polyline = new GPolyline(gpoints);
	map.addOverlay(polyline);
}
