/**
 * Initialize Google Maps API for Event list
 */
function load()
{
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));
		map.setCenter(new GLatLng(65.3, 26.9), 4);
		map.addControl(new GSmallMapControl());
		if (page != 'profile_view') {
			addEventsToMap();
		}
		if (page == 'profile_view' || page == 'profile_edit') {
			addCityToMap(city);
		} else if (page == 'event_add' || page == 'event_edit') {
			GEvent.addListener(map, 'click', function(marker, point) {
				var latitude = point.lat();
				var longitude = point.lng();
				var marker = createMarker(latitude, longitude);
				map.clearOverlays();
				map.addOverlay(marker);
				addCoordinatesToForm(latitude, longitude);
			});
			addMarkerByForm();
		}
	}
}
/**
 * Add Event Markers to Map
 */
function addEventsToMap() {
	new Ajax.Request(url+'&type=json',
	{
		method:'get',
		onSuccess: function(transport) {
			var response = transport.responseText || "no response text";
			var events = eval(response);
			for (i = 0; i < events.length; i++) {
				var marker = createMarker(events[i]['latitude'], events[i]['longitude'], events[i]['id'], "themes/default/caticons/" + events[i]['icon'], events[i]['name']);
				map.addOverlay(marker);
			}
			/* Zoom and Center if Viewing Single Event */
			if (page == 'event_view') {
				map.setCenter(new GLatLng(events[0]['latitude'], events[0]['longitude']), 13);
			}
		},
		onFailure: function(){ alert('Something went wrong...') }
	});
}
/**
 * Add Geocoding Marker
 */
function addCityToMap(city) {
	var geocoder = new GClientGeocoder();
	geocoder.getLatLng(
		city,
		function(point) {
			var marker = createMarker(point.lat(), point.lng(), null, null, city);
			map.addOverlay(marker);
		}
	);
}

/**
 * Create Custom Marker
 */
function createMarker(lat, lng, id, icon, html) {
	var tinyIcon = new GIcon();
	if (!icon) {
		var icon = "themes/default/imgs/gmaps_marker_red.png";
	}
		tinyIcon.image = icon;
		tinyIcon.iconSize = new GSize(15, 15);
		tinyIcon.iconAnchor = new GPoint(7, 7);
		tinyIcon.infoWindowAnchor = new GPoint(7, 7);
	var point = new GLatLng(lat, lng);
	if (html) {
		var marker = new GMarker(point, {icon:tinyIcon, title:html});
	} else {
		var marker = new GMarker(point, {icon:tinyIcon});
	}
	if (id) {
		GEvent.addListener(marker, "click", function() {
			document.location.href = "event.php?action=view&id=" + id;
		});
	}
	return marker;
}

function addCoordinatesToForm(latitude, longitude) {
	document.getElementById('latitude').value = latitude;
	document.getElementById('longitude').value = longitude;
}
function addMarkerByForm() {
	var latitude = document.getElementById('latitude').value;
	var longitude = document.getElementById('longitude').value;
	if (latitude && longitude) {
		var marker = createMarker(latitude, longitude);
		map.addOverlay(marker);
		map.setCenter(new GLatLng(latitude, longitude), 13);
	}
}