var gmap = {
	addPoint: function (lat, long, title) {
		gmap.markers.push( { latitude: lat, longitude: long, title: title } );
	},

	createMarker: function (point, title) {
		return new GMarker(point, { clickable: false, icon: G_DEFAULT_ICON, title: title.toString() });
	},

	display: function() {
		var bounds;
		var latMax;
		var latMin;
		var lngMax;
		var lngMin;
		var loop;
		var manager;
		var map;
		var mapCanvas;
		var message;
		var point;
		var points;

		if ( document.getElementById && document.getElementsByTagName && document.createElement ) {
			mapCanvas = document.getElementById('map-canvas');

			if ( mapCanvas ) {

				if ( gmap.markers && gmap.markers.length > 0 ) {

					if ( GBrowserIsCompatible && GBrowserIsCompatible() ) {

						if ( typeof(GUnload) === 'function' ) {
							helper.addEvent(window, 'unload', GUnload, false);
						}

						message = mapCanvas.getElementsByTagName('p');

						if ( message && message.length == 1 ) {
							message = message[0];
							message.parentNode.removeChild(message);
						}

						helper.cssjs('add', mapCanvas, 'enabled');

						if ( mapCanvas.offsetWidth ) {
							mapCanvas.style.height = Math.floor(mapCanvas.offsetWidth * 0.618 + 0.5) + 'px';
						}

						map = new GMap2(mapCanvas);
						map.addControl(new GSmallMapControl());
						map.addControl(new GOverviewMapControl());
						map.addControl(new GMapTypeControl());

						latMax = gmap.markers[0].latitude;
						latMin = latMax;
						lngMax = gmap.markers[0].longitude;
						lngMin = lngMax;
						loop = gmap.markers.length;
						points = [];

						while ( loop-- > 0 ) {
							point = new GLatLng(gmap.markers[loop].latitude, gmap.markers[loop].longitude);
							points.push(gmap.createMarker(point, gmap.markers[loop].title));

							if ( point.lat() > latMax ) {
								latMax = point.lat();
							} else if ( point.lat() < latMin ) {
								latMin = point.lat();
							}

							if ( point.lng() > lngMax ) {
								lngMax = point.lng();
							} else if ( point.lng() < lngMin ) {
								lngMin = point.lng();
							}
						}

						bounds = new GLatLngBounds(new GLatLng(latMin, lngMin), new GLatLng(latMax, lngMax));
						map.setCenter(bounds.getCenter(), latMin == latMax && lngMin == lngMax ? 15 : map.getBoundsZoomLevel(bounds) );

						manager = new GMarkerManager(map);
						manager.addMarkers(points, 1);
						manager.refresh();
					}
				} else {
					mapCanvas.parentNode.removeChild(mapCanvas);
				}
			}
		}
	},

	init: function() {
		var img;

		img = new Image();

		img.onload = function() {
			img.onload = null;
			gmap.display();
		};

		img.src = gmap.imagePath;
	},

	setImagePath: function(path) {
		gmap.imagePath = path;
	},

	imagePath: '/image/blank.gif',

	markers: []
};

