// Stuttgart, Deutschland
var stuttgartDeutschland={lat: 51.29025466863941, lng: 6.794695258140564};


function getPointsRect(vLatLngPoints, vReturnObject)
{
	var bounds={minLat: vLatLngPoints[0].lat, maxLat: vLatLngPoints[0].lat, minLng: vLatLngPoints[0].lng, maxLng: vLatLngPoints[0].lng};

	for (var p=0; p<vLatLngPoints.length; p++)
	{
		if (vLatLngPoints[p].lat<bounds.minLat)
		{bounds.minLat=vLatLngPoints[p].lat;
		}
		if (vLatLngPoints[p].lat>bounds.maxLat)
		{bounds.maxLat=vLatLngPoints[p].lat;
		}
		if (vLatLngPoints[p].lng<bounds.minLng)
		{bounds.minLng=vLatLngPoints[p].lng;
		}
		if (vLatLngPoints[p].lng>bounds.maxLng)
		{bounds.maxLng=vLatLngPoints[p].lng;
		}
	} // End-For-p

	if (typeof vReturnObject!="undefined" && vReturnObject==true)
	{return bounds;
	}
	else
	{return new GLatLngBounds(new GLatLng(bounds.minLat, bounds.minLng), new GLatLng(bounds.maxLat, bounds.maxLng));
	}
}

function setLatLngRect(vMapObject, vGeoRect)
{
	if (vMapObject && vGeoRect)
	{
		var tmpBounds=new GLatLngBounds(new GLatLng(vGeoRect.minLat, vGeoRect.minLng), new GLatLng(vGeoRect.maxLat, vGeoRect.maxLng));
		var tmpZoomLevel=vMapObject.getBoundsZoomLevel(tmpBounds);
		var tmpCenter=tmpBounds.getCenter();

		// Zoom-Faktor-Zusatz verrechnen
		if (typeof vGeoRect.zoomFactorAddition!="undefined" && vGeoRect.zoomFactorAddition!="")
		{
			tmpZoomLevel+=(vGeoRect.zoomFactorAddition*1);

			if (typeof vGeoRect.alternatePoint!="undefined")
			{tmpCenter=new GLatLng(vGeoRect.alternatePoint.lat, vGeoRect.alternatePoint.lng);
			}
		}

		if (tmpZoomLevel==19)
		{tmpZoomLevel=15;
		}

		vMapObject.setCenter(tmpCenter, tmpZoomLevel);

		if (document.location.search.indexOf("dennis")!=-1)
		{
			vMapObject.addOverlay(new GMarker(new GLatLng(vGeoRect.minLat, vGeoRect.minLng)));
			vMapObject.addOverlay(new GMarker(new GLatLng(vGeoRect.maxLat, vGeoRect.maxLng)));
		}

	}
}

function simpleShowAddress(map, address) {
	var geocoder = new GClientGeocoder();

	geocoder.getLatLng(address,
		function(point) {
			if (!point) {
				map.setCenter(new GLatLng(48.777127, 9.180707), 4, G_SATELLITE_MAP);
			} else {
				map.setCenter(point, 14, G_SATELLITE_MAP);
			}
		}
	);
}

// Stop page scrolling when inside the map
// (this is generic, stops any event propagation).
function doNotPropagate( e ){
	// alert( event );
	if ( !e ){
		e = window.event ;
	}
	e.returnValue = false;
	e.cancelBubble = true;
	if ( e.preventDefault && e.stopPropagation ){
		// W3C (Firefox, Safari, etc)
		e.preventDefault() ;
		e.stopPropagation() ;
	}
}

function enableMouseWheelZoom(vMapObjectDiv, vMapObject)
{
	var disabledDefSWZoom = false

	// Remove handling of default scrolling action
	if ( vMapObjectDiv.addEventListener ){
		// W3C
		vMapObjectDiv.addEventListener( 'DOMMouseScroll', doNotPropagate, false );
		disabledDefSWZoom = true ;
	} else {
		// IE
		vMapObjectDiv.onmousewheel = doNotPropagate ;
		disabledDefSWZoom = true ;
	}

	// Add Mouse-Wheel-Zooming
	if ( disabledDefSWZoom ){
		vMapObject.enableScrollWheelZoom() ;
	}
}

function getMapDimensionParameterString(vMapObject, vParameterNamesObject)
{
	if (typeof vParameterNamesObject=="undefined")
	{vParameterNamesObject={};
	}
	
	var rtn="";
	// Bounds-Parameter-String erstellen
	var tmpGeoMapBoundsRect=vMapObject.getBounds();
	var tmpGeoMapSizes=vMapObject.getSize();

	rtn+=(typeof vParameterNamesObject.top!="undefined"?vParameterNamesObject.top:"geoRect[top]")+"="+tmpGeoMapBoundsRect.getNorthEast().lat();
	rtn+="&"+(typeof vParameterNamesObject.left!="undefined"?vParameterNamesObject.left:"geoRect[left]")+"="+tmpGeoMapBoundsRect.getSouthWest().lng();
	rtn+="&"+(typeof vParameterNamesObject.bottom!="undefined"?vParameterNamesObject.bottom:"geoRect[bottom]")+"="+tmpGeoMapBoundsRect.getSouthWest().lat();
	rtn+="&"+(typeof vParameterNamesObject.right!="undefined"?vParameterNamesObject.right:"geoRect[right]")+"="+tmpGeoMapBoundsRect.getNorthEast().lng();
	
	rtn+="&"+(typeof vParameterNamesObject.zoomLevel!="undefined"?vParameterNamesObject.zoomLevel:"zoomLevel")+"="+vMapObject.getZoom();

	rtn+="&"+(typeof vParameterNamesObject.width!="undefined"?vParameterNamesObject.width:"divSizes[width]")+"="+vMapObject.getSize().width;
	rtn+="&"+(typeof vParameterNamesObject.height!="undefined"?vParameterNamesObject.height:"divSizes[height]")+"="+vMapObject.getSize().height;
	
	return rtn;
	
}

function zIndexOrder(marker, b) 
{
	return GOverlay.getZIndex(marker.getPoint().lat())+marker.zIndex*1000000;
}
