var map;
var geocoder;
var marker;


function loadEditMap(x,y,lat, lng)
{
	if (GBrowserIsCompatible())
	{
		map = new GMap2(document.getElementById("map_canvas"), { size: new GSize(x, y) } );
		
		geocoder = new GClientGeocoder();
		
		// set default to first entry
		
		if(lat=='null' && lng =='null')
		{
			map.setCenter(new GLatLng(46.97954965435394, 14.25377368927002), 14);
		}
		else
		{
			map.setCenter(new GLatLng(lat, lng), 14);
		}
		
		GEvent.addListener(map, "click", function(overlay, point)
			{ 
			map.clearOverlays(); 
				if (point) { 
				map.addOverlay(new GMarker(point)); 
				map.panTo(point);
				document.getElementById("lat").value = point.lat();  
				document.getElementById("lng").value = point.lng();  
				}
			}
		); 
		
		if(lat != 'null' && lng != 'null')
		{
			map.addOverlay(new GMarker( new GLatLng(lat, lng)));
		}
		
		// add controls
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		
		map.enableContinuousZoom();
		map.enableDoubleClickZoom();
	}
}

function loadSmallMap(x, y, lat, lng)
{
	if (GBrowserIsCompatible())
	{
		map = new GMap2(document.getElementById("map_canvas"), { size: new GSize(x, y) } );
		map.addOverlay(new GMarker( new GLatLng(lat, lng)));
		// set default to first entry
		map.setCenter(new GLatLng(lat, lng), 14);
		
		map.addControl(new GSmallMapControl());
		map.enableContinuousZoom();
		map.enableDoubleClickZoom();
	}
}

function loadShowMap(x, y, lat, lng)
{
	if (GBrowserIsCompatible())
	{
		map = new GMap2(document.getElementById("map_canvas"), { size: new GSize(x, y) } );
		map.addOverlay(new GMarker( new GLatLng(lat, lng)));
		// set default to first entry
		map.setCenter(new GLatLng(lat, lng), 14);
		
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.enableContinuousZoom();
		map.enableDoubleClickZoom();
	}
}


function findAddress(address)
{
	if (marker != null)
	{
		map.removeOverlay(marker);
	}
	
	if (geocoder)
	{
		geocoder.getLatLng(address, function(point) {
			if (!point)
			{
				alert(address + " nicht gefunden");
			}
			else
			{
				map.clearOverlays();
				marker   = new GMarker(point, {clickable:true, draggable:true});
				info     = "<br /><b>" + address + "</b><br />Geocode: " + marker.getPoint().toUrlValue();
				newpoint = marker.getPoint();
				
				lonDMS = Math.floor(newpoint.x) + '\u00b0 ' + Math.floor((newpoint.x - Math.floor(newpoint.x)) * 60) + '\' ' + (((newpoint.x - Math.floor(newpoint.x)) * 60) - Math.floor((newpoint.x - Math.floor(newpoint.x)) * 60)) * 60 + '"';
				latDMS = Math.floor(newpoint.y) + '\u00b0 ' + Math.floor((newpoint.y - Math.floor(newpoint.y)) * 60) + '\' ' + (((newpoint.y - Math.floor(newpoint.y)) * 60) - Math.floor((newpoint.y - Math.floor(newpoint.y)) * 60)) * 60 + '"';
				
				re = /(\.\d{4})\d+/g;
				latDMS = latDMS.replace(re, "$1");
				lonDMS = lonDMS.replace(re, "$1");
				
				latDeg = newpoint.y.toFixed(6);
				lonDeg = newpoint.x.toFixed(6);
				
				document.getElementById('lat').value   = latDeg;
				document.getElementById('lng').value   = lonDeg;
				
				GEvent.addListener(marker,'dragend', function() {
					newpoint = marker.getPoint();
					info     = "<br /><b>" + address + "</b><br />Geocode (<i>modifiziert</i>): " + marker.getPoint().toUrlValue();
					
					lonDMS = Math.floor(newpoint.x) + '\u00b0 ' + Math.floor((newpoint.x - Math.floor(newpoint.x)) * 60) + '\' ' + (((newpoint.x - Math.floor(newpoint.x)) * 60) - Math.floor((newpoint.x - Math.floor(newpoint.x)) * 60)) * 60 + '"';
					latDMS = Math.floor(newpoint.y) + '\u00b0 ' + Math.floor((newpoint.y - Math.floor(newpoint.y)) * 60) + '\' ' + (((newpoint.y - Math.floor(newpoint.y)) * 60) - Math.floor((newpoint.y - Math.floor(newpoint.y)) * 60)) * 60 + '"';
					
					re = /(\.\d{4})\d+/g;
					latDMS = latDMS.replace(re, "$1");
					lonDMS = lonDMS.replace(re, "$1");
					
					latDeg = newpoint.y.toFixed(6);
					lonDeg = newpoint.x.toFixed(6);
					
					document.getElementById('geocoord').value = latDeg + ', ' + lonDeg;
					document.getElementById('geoxml').value   = 'lat="' + latDeg + '" lon="' + lonDeg + '"';
					document.getElementById('latdeg').value   = latDeg;
					document.getElementById('londeg').value   = lonDeg;
					document.getElementById('latdms').value   = latDMS;
					document.getElementById('londms').value   = lonDMS;
					
					//marker.openInfoWindowHtml(info);
					
					
				});
				
				
				
				map.panTo(point);
				map.setCenter(point, 13);
				map.addOverlay(marker);
				//marker.openInfoWindowHtml(info);
			}
		});
	}
}
