function _map ( mapID ) {
	var googleMap = false;
	var dateBox;
	var mapTypes = [G_NORMAL_MAP,G_SATELLITE_MAP,G_HYBRID_MAP,G_PHYSICAL_MAP];
	//--------------------------------------------------------------------------
	// zoom
	//..........................................................................
	this.zoom = function ( level ) {
		if ( level )
			googleMap.setZoom(level);
		return googleMap.getZoom();
	}
	//--------------------------------------------------------------------------
	// google functions
	//..........................................................................
	this.addOverlay=function(a){return googleMap.addOverlay(a);}
	this.removeOverlay=function(a){return googleMap.removeOverlay(a);}
	//--------------------------------------------------------------------------
	// Initialize the radar map application
	//..........................................................................
	this.initialize = function ( mapID ) {
		// read the map center
		var lat		= ( arg['lat'] ? parseFloat(arg['lat']) : 47.2189);
		var lng		= ( arg['lon'] ? parseFloat(arg['lon']) : 7.54198);
		var center	= new GLatLng(lat, lng);
		// read the initial zoom level
		var zoom	= (arg['zoom'] ? parseInt(arg['zoom'],10) : 12);
		var maptype	= (arg['maptype'] ? mapTypes[arg['maptype']] : G_HYBRID_MAP);
		// get the map container
//		var mapElement = document.getElementById(mapID);
		// create the google map
		googleMap = new GMap2(_$(mapID));
		// default google controls -> zoom control, map type control, scale
		googleMap.setUIToDefault();
		googleMap.setMapType(maptype);
		// set the map center
		googleMap.setCenter ( center, zoom );
		// Add selectable terrain map
//		var hControl = new GHierarchicalMapTypeControl();
//		hControl.addRelationship(G_PHYSICAL_MAP, G_HYBRID_MAP, "Labels", false);
//		googleMap.addControl(hControl);
		// Add the self created control
		googleMap.addControl(new MoreControl());

		// disable Scroll Wheel Zoom
		googleMap.disableScrollWheelZoom();
		// cursor hand
		googleMap.getDragObject().setDraggableCursor("pointer");
		// set the date box
		dateBox = new Rectangle( kLeftAlign | kTopAlign, false, 70, 5, 0, 0, "datum");
		dateBox.insertInto(googleMap);
	}
	//--------------------------------------------------------------------------
	// openInfoWindow
	//..........................................................................
	this.openInfoWindow = function( location, html ) {
		googleMap.openInfoWindow( location, html );
	}
	this.updateInfoWindow = function( location, html ) {
		googleMap.openInfoWindowHTML( location, html );
	}
	//--------------------------------------------------------------------------
	// showTrakLogLink
	//..........................................................................
	this.showTrakLogLink = function() {
		// set the date box
		var TrackLogLink = new Rectangle( kLeftAlign | kTopAlign, false, 60, 2, 0, 0, "trackloglink");
		TrackLogLink.insertInto(googleMap);
		var href = "http://tracklog.ch/index.php";
		TrackLogLink.setHTML ( '<a href="' + href + '" target="_top" ><b>Track</b>Log</a>' );
	}
	//--------------------------------------------------------------------------
	// destructor
	//..........................................................................
	this.destruct = function ( ) {
		delete dateBox;
		delete googleMap;
		GUnload();
	}
	//--------------------------------------------------------------------------
	// getMapType
	//..........................................................................
	this.getMapType = function ( ) {
		var actualType = googleMap.getCurrentMapType();
		for ( var i = 0; i < mapTypes.length; ++i ) {
			if ( actualType == mapTypes[i] )
				return i;
		}
		return false;
	}
	//--------------------------------------------------------------------------
	// setMapCenterCoordinates
	//..........................................................................
	this.setMapCenterCoordinates = function ( latlon ) {
		googleMap.panTo ( latlon );
	}
	this.getMapParameters = function () {
		var center = googleMap.getCenter();
		return "lat=" + center.lat() +
				"&lon=" + center.lng() +
				"&zoom=" + googleMap.getZoom() +
				"&maptype=" + this.getMapType();
	}
	//--------------------------------------------------------------------------
	// displayTimeline													utility
	//..........................................................................
	//	displays the date and time boxes
	this.displayTimeline = function ( timeline ) {
		dateBox.setHTML ( timeline.unixDateTime() );
	}
	this.initialize(mapID);
	this.displayTimeline(new Date());
}

