	var map;
	var defaultWidth="500px;";
	var defaultHeight="500px;";
	var mapDiv;
	var infowindow;
	var directionDisplay;
	var directionsService = new google.maps.DirectionsService({region: 'de'});

	function gmapsInitialize(settings) {
		directionsDisplay = new google.maps.DirectionsRenderer();

		mapDiv = document.getElementById('map-canvas');
		if (mapDiv != null) {
			mapDiv.style.width= (settings.width !== "") ? settings.width+"px" : defaultWidth;
			mapDiv.style.height= (settings.height !== "") ? settings.height+"px" : defaultHeight;

			settings.mapTypeControl = (settings.mapTypeControl) ? true : false;
			settings.disableDefaultUI = (settings.disableDefaultUI) ? true : false;

			// map initialisieren
			map = new google.maps.Map(mapDiv, {
			  center: new google.maps.LatLng(settings.lat, settings.lng),
			  zoom: settings.zoom,
			  mapTypeId: google.maps.MapTypeId.ROADMAP,
			  mapTypeControl: settings.mapTypeControl,
			  disableDefaultUI: settings.disableDefaultUI
			});

			// directionspanel initialisieren
			directionsDisplay.setMap(map);
			directionsDisplay.setPanel(document.getElementById("rightbar"));

			// create infowindow
			infowindow = new google.maps.InfoWindow();
			google.maps.event.addListenerOnce(map, 'tilesloaded', addMarkers);
		}
	}

	function addMarkers() {

		var obj=$('#markers li');
		var objLength = obj.length;
		var bounds = new google.maps.LatLngBounds();

		$(obj).each(function(i) {
			var pin = $(this);
			var lat = pin.find('.lat').text();
			var lng = pin.find('.long').text();
			var title=pin.find('.title').text();
			var icon=pin.find('.icon').text();
			var content = pin.html();

			var latLng=new google.maps.LatLng(lat, lng);

			// marker setzen
			var marker = new google.maps.Marker({
				map: map,
				position: latLng,
				icon: icon,
				title: title
			});

			// click event
			google.maps.event.addListener(marker, 'click', function() {
				// infowindow einblenden
				infowindow.setContent(content);
				infowindow.open(map, this);
				//debug(infowindow);
			});

			//more than one
			if (objLength !=1) {
				bounds.extend(latLng);
			    map.fitBounds(bounds);
			}
		});
	}

	function calcRoute() {
		  var start = document.getElementById("startRoute").value;
		  var end = document.getElementById("endRoute").value;
		  var request = {
		    origin:start,
		    destination:end,
		    travelMode: google.maps.DirectionsTravelMode.DRIVING
		  };
		  directionsService.route(request, function(result, status) {
		    if (status == google.maps.DirectionsStatus.OK) {
		      directionsDisplay.setDirections(result);
		    }
		  });
		}


	function f3debug(str) {
		if (typeof(console) !== 'undefined' && console != null) {
			console.log(str);
		}
	}

