var map = null;
var geocoder = new GClientGeocoder();

if(!map_register){
	var map_register = new Array;
}

var baseIcon = new GIcon(G_DEFAULT_ICON);
baseIcon.shadow = null;
baseIcon.iconSize = new GSize(30, 30);
baseIcon.iconAnchor = new GPoint(15, 15);
baseIcon.infoWindowAnchor = new GPoint(15, 15);

function initialize_map(map_canvas_id, addr_string, iconName, alertGeocodeResult) {
  if (GBrowserIsCompatible()) {
	map_register[map_canvas_id] = new GMap2(document.getElementById(map_canvas_id));
	map_register[map_canvas_id].setMapType(G_NORMAL_MAP);
   map_register[map_canvas_id].addControl(new GSmallMapControl());
	// map.setCenter(new GLatLng(37.4419, -122.1419), 11);
   
	// lat/lon or geocode?
	if(addr_string.substr(0, 7) == 'latlon|'){
		var latlon_data = addr_string.substr(7).split('/');
		//alert("latlon: " + latlon_data);
		setMapCoordinates(map_canvas_id, new GLatLng(latlon_data[0], latlon_data[1]), iconName, 12);
	} else {
		
		// geocode with callback:
		doGeocode(map_canvas_id, addr_string, iconName, 12, alertGeocodeResult);

	}
  }
	 
}


function initialize_teaser_map(map_canvas_id, addr_string, iconName, alertGeocodeResult) {
  if (GBrowserIsCompatible()) {
	map_register[map_canvas_id] = new GMap2(document.getElementById(map_canvas_id));
	map_register[map_canvas_id].disableDragging();
	map_register[map_canvas_id].setMapType(G_HYBRID_MAP);
	
	// lat/lon or geocode?
	if(addr_string.substr(0, 7) == 'latlon|'){
		var latlon_data = addr_string.substr(7).split('/');
		//alert("latlon: " + latlon_data);
		setMapCoordinates(map_canvas_id, new GLatLng(latlon_data[0], latlon_data[1]), iconName, 12);
	} else {
		
		// geocode with callback:
		doGeocode(map_canvas_id, addr_string, iconName, 12, alertGeocodeResult);

	}
	
  }
	 
}

function initialize_wide_map(map_canvas_id, addr_string, zoom) {
  if (GBrowserIsCompatible()) {
	map_register[map_canvas_id] = new GMap2(document.getElementById(map_canvas_id));
	map_register[map_canvas_id].disableDragging();
	map_register[map_canvas_id].setMapType(G_HYBRID_MAP);
	
	// lat/lon or geocode?
	if(addr_string.substr(0, 7) == 'latlon|'){
		var latlon_data = addr_string.substr(7).split('/');
		//alert("latlon: " + latlon_data);
		setMapCoordinates(map_canvas_id, new GLatLng(latlon_data[0], latlon_data[1]), 'none', zoom);
	} else {
		
		// geocode with callback:
		doGeocode(map_canvas_id, addr_string, 'none', zoom);

	}
	
  }
	 
}



function doGeocode(map_canvas_id, addr_string, iconName, zoom, alertGeocodeResult){
	if (geocoder) {
		return geocoder.getLatLng(addr_string, function(point){
			setMapCoordinates(map_canvas_id, point, iconName, zoom);
			if(alertGeocodeResult && alertGeocodeResult == true){
				alert('latlon|' + point.lat() + '/' + point.lng());
			}
		});
	} else {
		return false;
	}
}

function showAddress(map_canvas_id, addr_string, iconName) {
  if (geocoder) {
	geocoder.getLatLng(
	  addr_string,
	  setMapCoordinates);
  }
}

function setMapCoordinates(map_canvas_id, point, iconName, zoom){
	if (!point) {
	  alert(address + " not found");
	} else {
	 
	 	map_register[map_canvas_id].setCenter(point, zoom);
	  
	  if(iconName){
	  	if(iconName != 'none'){
			// Create a specific icon for this point
			var fflbIcon = new GIcon(baseIcon);
			fflbIcon.image = "images/einsatzliste/map_icon_" + iconName + ".png";
		
			// Set up our GMarkerOptions object
			markerOptions = { icon:fflbIcon };
			var marker = new GMarker(point, markerOptions);
	  	}
	  } else {
		
		var marker = new GMarker(point);
	  
	  }
	  
	  map_register[map_canvas_id].addOverlay(marker);
		
	}
}