var mapVendor = 1; // 0 = OOTOOGO

var map;

function addMarker(lng, lat)
{
    map.addOverlay(new TEF.Marker(new TEF.Point(lng, lat)));
}

function clearMarkers()
{
    map.clearMarkers();
}

// FIXME map should be a parameter of the callback (not a global variable)
function mapMoveEndCallback()
{
    switch (mapVendor) {
        case 0:
            window.location.href=newhref;
            break;
        default:
            document.getElementById("status").innerHTML="<center>Recherche en cours...</center>";
            queryFrameHttpRequest = TEF.Ajax.getXmlHttpRequest();
            queryFrameHttpRequest.abort(); // Cancel previous request
            queryFrameHttpRequest.open("POST", "/ajax/queryResponse.php5", true); // Asynchronous call
            queryFrameHttpRequest.onreadystatechange = function() {
                if (queryFrameHttpRequest.readyState == 4) { // Ready
                    switch (queryFrameHttpRequest.status) {
                        case 200:
                            document.getElementById("status").innerHTML = "";
                            document.getElementById("queryArea").innerHTML = queryFrameHttpRequest.responseText;
                            // Send request to get JS script (i.e. add Markers on map)
                            // FIXME As long as queryJSReponse is not build upon
                            //       query performed by queryResponse
                            //       this call can be done BEFORE this
                            //       Ajax request is finished
                            mapMoveEndCallbackJS();
                            break;
                        case 404:
                            document.getElementById("status").innerHTML = "<center>La requ�te a �chou�e</center>";
                            break;
                        default:
                            // FIXME Must be implemented
                            document.getElementById("status").innerHTML = "<center>Code retour inconnu "+queryFrameHttpRequest.status+"</center>";
                        break;
                    }
                }
            }
            // Send request to get query result (i.e. right panel) 
            queryFrameHttpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            bb = map.getBoundingBox();
            params = "lngmin="+bb.getLongitudeMin()+"&"+
                             "latmin="+bb.getLatitudeMin()+"&"+
                             "lngmax="+bb.getLongitudeMax()+"&"+
                             "latmax="+bb.getLatitudeMax()+"&"+
                             "lang="+getSelectedLang();
            if (getSelectedSubjectId() != null) {
                params += "&subjectid="+getSelectedSubjectId();
            }
            if (getSelectedPlaceId() != null) {
                params += "&geoid="+getSelectedPlaceId();
            }
            queryFrameHttpRequest.send(params);
            break;
    }
}

function mapMoveEndCallbackJS()
{
    jsHttpRequest = TEF.Ajax.getXmlHttpRequest();
    jsHttpRequest.abort(); // Cancel previous request
    jsHttpRequest.open("POST", "/ajax/queryJSResponse.php5", true); // Asynchronous call
    jsHttpRequest.onreadystatechange = function() {
        if (jsHttpRequest.readyState == 4) { // Ready
            switch (jsHttpRequest.status) {
                case 200:
                    eval(jsHttpRequest.responseText);
                    break;
                case 404:
                    // silently ignore
                    break;
                default:
                    // FIXME Must be implemented or ignored
                    alert("Code retour inconnu "+jsHttpRequest.status);
                break;
            }
        }
    }
    jsHttpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    bb = map.getBoundingBox();
    params = "lngmin="+bb.getLongitudeMin()+"&"+
             "latmin="+bb.getLatitudeMin()+"&"+
                "lngmax="+bb.getLongitudeMax()+"&"+
                "latmax="+bb.getLatitudeMax()+"&"+
                "lang="+getSelectedLang();
    if (getSelectedSubjectId() != null) {
        params += "&subjectid="+getSelectedSubjectId();
    }
    if (getSelectedPlaceId() != null) {
        params += "&geoid="+getSelectedPlaceId();
    }
    jsHttpRequest.send(params);
}


function showMap(mapId, longMin, latMin, longMax, latMax, markers)
{
    map = new TEF.Map(mapId);
    switch (mapVendor) {
        case 0:
            map.setBoundingBox(longMin/1000, latMin/1000, longMax/1000, latMax/1000);
            break;
        default:
            // map.setCenter((longMin+longMax)/2, (latMin+latMax)/2, 5);
            map.setBoundingBox(longMin, latMin, longMax, latMax);
        break;
    }
    map.addPanZoomControl(true);
    mapDiv = document.getElementById(mapId);
    
    TEF.Event.addListener(map,
                          "moveend",
                          mapMoveEndCallback
                         );
}