var map24FeHa = null;
       
var mrcContainer;

function goMap24() {
    map24FeHa = Map24.Webservices.getMap24Application({
        AppKey:"FJXf0f5338c88b7b563481886be5a3cbX13",
	MapArea:document.getElementById("mapFeHa"),
	MapWidth: 750,
        MapHeight: 500
    });
    
    mrcContainer = new Map24.Webservices.Request.MapletRemoteControl(map24FeHa);
    
    var fewoAddr = "Hirschkopfstrasse 25 94151 Mauth";
    var fehaAddr = "Reutenstrasse 50 94151 Mauth";
    
    map24CenterAddr(map24FeHa, fewoAddr);
    map24MarkAddr(map24FeHa, fewoAddr, "FeWoMarker", "Ferienwohnungen");
    map24MarkAddr(map24FeHa, fehaAddr, "FeHaMarker", "Ferienhaus");
}

function map24Apply(map)
{
    map.Webservices.sendRequest( mrcContainer );
    mrcContainer = new Map24.Webservices.Request.MapletRemoteControl(map);
}

var geocoding = false;
var geocodeRequests = new Array();

function map24Geocode(map, addr, callback)
{
    var req = new Array();
    req["MAP"] = map;
    req["ADDR"] = addr;
    req["CALLBACK"] = callback;
    req["DONE"] = false;
    geocodeRequests[geocodeRequests.length] = req;
    map24GeocodeProcess();
}

function map24GeocodeProcess()
{
    if(geocoding)
	return;
    geocoding = true;
    for(var i=0; i<geocodeRequests.length; i++)
    {
	if(!geocodeRequests[i]["DONE"])
	{
	    geocodeRequests[i]["DONE"] = true;
	    var req = geocodeRequests[i];
	    map24GeocodePerform(req["MAP"], req["ADDR"], req["CALLBACK"]);
	    return;
	}
    };
    geocoding = false;
}

function map24GeocodePerform(map, addr, callback)
{
    map.Webservices.sendRequest(
	 new Map24.Webservices.Request.MapSearchFree(map, {
	    SearchText: addr,
	    MaxNoOfAlternatives: 1
    }));
    
    map.onMapSearchFree = function(event)
    {
	var firstResult = event.Alternatives[0];
	var lon = firstResult.Coordinate.Longitude;
	var lat = firstResult.Coordinate.Latitude;
	callback(lon, lat);
	geocoding = false;
	map24Apply(map);
	map24GeocodeProcess();	
    }
}

function map24MarkAddr(map, addr, markerName, markerText){
    callback = function(lon, lat) {
        mrcContainer.push(	
	    new Map24.Webservices.MRC.DeclareMap24Label({
		Anchor: "CENTER",
		Coordinate: new Map24.Coordinate( lon, lat ),
    	        Color: new Map24.Color( { R:0, G:0, B:0, A:255 } ),
		BgColor: new Map24.Color( { R:128, G:255, B:128, A:255 } ),
		BorderColor: new Map24.Color( { R:0, G:130, B:0, A:255 } ),
		MapObjectID: markerName,
		Text: markerText
	    })
	);
	mrcContainer.push(
	    new Map24.Webservices.MRC.ControlMapObject({
		Control: "ENABLE",
		MapObjectIDs: markerName
	    })
	);
    };
    
    map24Geocode(map, addr, callback);
}
    
function map24CenterAddr(map, addr){
    var callback = function(lon, lat){
        mrcContainer.push(
	    new Map24.Webservices.MRC.SetMapView({
		Coordinates: new Map24.Coordinate( lon, lat ),
		ClippingWidth: new Map24.Webservices.ClippingWidth({ MinimumWidth: 2000 })
	    })
	);
    };
    
    map24Geocode(map, addr, callback);
}

onloadArray[onloadArray.length] = goMap24;
