
function createEmbeddedMap() {
    OpenLayers.ProxyHost = '/proxy/?url='; 
    // ----
    // TODO: Handle all this parsing better.
    
    //read URL parameters
    params = OpenLayers.Util.getParameters();
    
    var safeArgs = {}

    var DEFAULT_LAT = 31.5;
    var DEFAULT_LON = 35;
    var DEFAULT_ZOOM_LEVEL = 0;
    var DEFAULT_CONTROLS = ['panzoombar','mouse'];
    var DEFAULT_LAYERS = ['freemap'];
    var DEFAULT_MARK_CENTER = "false";

    safeArgs.centerLat = params.lat ? 
        params.lat : DEFAULT_LAT;
    
    safeArgs.centerLon = params.lon ? 
        params.lon : DEFAULT_LON;

    safeArgs.zoom = params.zoom ? parseInt(params.zoom) : DEFAULT_ZOOM_LEVEL;
    
    safeArgs.marker =  params.marker ? params.marker : DEFAULT_MARK_CENTER;
    
    //need to read it to a String or the split below won't work
    var controlsStr = new String(params.controls);
    safeArgs.controls = params.controls ? 
        controlsStr.split(",") : DEFAULT_CONTROLS;
    
     //need to read it to a String or the split below won't work
    var layersStr = new String(params.controls);
    safeArgs.layers = params.layers ? 
        layersStr.split(",") : DEFAULT_LAYERS;
    
    safeArgs.data = params.data; // TODO: Make this "safe".
    
    // -----
    var embeddedMap = new OpenLayers.Map.FreeMapIL($('map'));
    for(var i = 0; i < safeArgs.controls.length; i++) {
        switch(safeArgs.controls[i]) {
            case 'panzoombar':
                embeddedMap.addControl(new OpenLayers.Control.PanZoomBar());
                break;
            case 'panzoom':
                embeddedMap.addControl(new OpenLayers.Control.PanZoom());
                break;
            case 'layerswitcher':
                embeddedMap.addControl(new OpenLayers.Control.LayerSwitcher());
                break;
            case 'mouse':
                embeddedMap.addControl(new OpenLayers.Control.MouseDefaults());
                break;
        }
    }
    for(var i = 0; i < safeArgs.layers.length; i++) {
        switch(safeArgs.layers[i]) {
            case 'openlayers':
                embeddedMap.addLayer(
                  new OpenLayers.Layer.WMS( "OpenLayers WMS", 
                        "http://labs.metacarta.com/wms/vmap0", 
                        {layers: 'basic'} )
                  );
                break;
            case 'nasa': 
                embeddedMap.addLayer(
                    new OpenLayers.Layer.WMS("NASA Mosaic", 
                       "http://wms.jpl.nasa.gov/wms.cgi",
                       {"EXCEPTIONS" : "application/vnd.ogc.se_inimage",
                        "format" : "image/jpeg",
                        layers:"modis,global_mosaic"}
                       ));
                break;
        }
    }
    embeddedMap.setCenter(new OpenLayers.LonLat(safeArgs.centerLon, safeArgs.centerLat), safeArgs.zoom);

    if (safeArgs.marker == "true") {
        var m = new OpenLayers.Layer.Markers("Marker");
        m.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(safeArgs.centerLon, safeArgs.centerLat)));
        embeddedMap.addLayer(m);
    }
    if (safeArgs.data) {
        embeddedMap.addLayer(new OpenLayers.Layer.Text("Data", {location: safeArgs.data}));
    }

}

