//==============================================================
// MapF_Location ------------------------------------------------
MapF_Location = function() { }
//============> MapF_Location
//------------> MapF_Location.create(MapID)
//------------> MapF_Location.getInnerHTML(MapID)
//------------> MapF_Location.attachEvent (MapID)
//------------> MapF_Location.getMap ()
//------------> MapF_Location.getMap.By_MapReference (MapID, NewScale)
//------------> MapF_Location.getMap.successCallback (xmlhttp, MapID)
//------------> MapF_Location.getMap.errorCallback (Nc, Oc)
//------------> MapF_Location.getMap.MapImageIsLoaded ()

MapF_Location.LocationImage = new Image;


//--------------------------------------------------------------
//MapF_Location.create --------------------------------------------
MapF_Location.create = function(MapID, Ocode) {
    var Mcode = Map.getMcodeFromMapID(MapID);
    var Hoptions = Holder.getOptions(MapID, Ocode);
    var FrameHolderSize = { w: 0, h: 0 };
    //----------------------------------
    var innerHTML = MapF_Location.getInnerHTML(MapID, Ocode);
    document.getElementById(Mcode + "^" + Ocode + "^" + "Holder_MM").innerHTML += innerHTML;
    MapF_Location.attachEvent(MapID);
    //----------------------------------
    if (Hoptions.DefSize.size == "auto"){
        var Elem0 = document.getElementById(Mcode + "^Map^" + "MapContainer");
        var Size0 = Map.getElem.Size(Elem0);
        FrameHolderSize.w = Size0.w /5;
        FrameHolderSize.h = Size0.h /5;
    }else {
        FrameHolderSize.w = Hoptions.DefSize.w ;
        FrameHolderSize.h = Hoptions.DefSize.h ;
    }
    return FrameHolderSize;
}
//--------------------------------------------------------------
//MapF_Scale.getInnerHTML ----------------------------------
MapF_Location.getInnerHTML = function(MapID) {
    var Mcode = Map.getMcodeFromMapID(MapID);
    var Ocode = "Location";
    var innerHTML = "";
    innerHTML += "<div id='" + Mcode + "^" + Ocode + "^" + "Locationholder' class='Locationholder' >";
    innerHTML += "<img id='" + Mcode + "^" + Ocode + "^" + "LocationImg' class='LocationImg' alt='' src='Images/c.gif'";
    //innerHTML += "onselectstart='return false'";
    //            innerHTML+="onmouseup='return false;'" 
    innerHTML += "onmousedown='return false'";
    innerHTML += "onmousemove='return false;'"
    innerHTML += "/>"
    innerHTML += "<div id='" + Mcode + "^" + Ocode + "^" + "LocationRec' class='LocationRec'></div>";
    innerHTML += "<div id='" + Mcode + "^" + Ocode + "^" + "LocationRecB' class='LocationRecB'></div>";
    innerHTML += "</div>";
return innerHTML;
}
//--------------------------------------------------------------
//MapF_Location.attachEvent ---------------------------------------
MapF_Location.attachEvent = function(MapID) {
    if (MapF_Location.LocationImage.addEventListener) {
        MapF_Location.LocationImage.addEventListener('load', MapF_Location.getMap.MapImageIsLoaded, false);
    } else if (MapF_Location.LocationImage.attachEvent) {
        MapF_Location.LocationImage.attachEvent('onload', MapF_Location.getMap.MapImageIsLoaded);
    }
}
//==============================================================




//==============================================================
//MapF_Location.getMap -------------------------------------------
MapF_Location.getMap = function() { }
//--------------------------------------------------------------
//MapF_Location.getMap.By_MapReference ---------------------------
MapF_Location.getMap.By_MapReference = function(MapID, NewScale) {
    if (MapID == null) { return; }
    var Moptions = Map.MapObj[MapID];
    var Mcode = Map.getMcodeFromMapID(MapID);
    if (NewScale == null) { NewScale = Moptions.NavMapScaleArray[Map.Scale.getNavMapScale(Moptions.MapScale)]; }
    //----------------------------------
    var elem = document.getElementById(Mcode + "^Location^" + "Holder_MM")
    var Size = Map.getElem.Size(elem)
    var request = "";
    request += "&Reguest=MapByScale";
    request += "&Reg_MapCode=" + Mcode;
    request += "&Reg_MapLang=" + Moptions.MapLang;
    request += "&Reg_MapBackground=" + Moptions.MapBackGround;
//    request += "&Reg_ImageWidth=" + (Size.w - 4);
//    request += "&Reg_ImageHeight=" + (Size.h - 4);
    request += "&Reg_ImageWidth=" + (Size.w -4 );
    request += "&Reg_ImageHeight=" + (Size.h -4 );
    request += "&Reg_MapScale=" + parseInt(NewScale);
    request += "&Reg_MapCenterX=" + Moptions.MapCenter.x;
    request += "&Reg_MapCenterY=" + Moptions.MapCenter.y;
    //----------------------------------
    Req.makeRequest(MapID, Moptions.serverUrl, Moptions.busyReq, "Request", MapF_Location.getMap.successCallback, MapF_Location.getMap.errorCallback, request);
};

//--------------------------------------------------------------
//MapF_Location.getMap.successCallback ---------------------------
MapF_Location.getMap.successCallback = function(xmlhttp, MapID) {
    var Moptions = Map.MapObj[MapID];
    //----------------------------------
    Progress.hide(MapID);
    Progress.show(MapID, "Loading");
    //----------------------------------
    var response = xmlhttp.responseText;
    if (response == null || response == "") { return };
    var jsonR = JSON.parse(response);
    //----------------------------------
    MapF_Location.LocationImage.src = jsonR.Resp_MapImageUrl;
    Moptions.LocImageSize = { w: jsonR.Resp_ImageSize.Width, h: jsonR.Resp_ImageSize.Height };
    Moptions.LocImageRect = new MapRect(0, 0, jsonR.Resp_ImageSize.Width, jsonR.Resp_ImageSize.Height)
    Moptions.LocationRect = new MapRect(jsonR.Resp_MapBounds.x1, jsonR.Resp_MapBounds.y1, jsonR.Resp_MapBounds.x2, jsonR.Resp_MapBounds.y2);
    Moptions.LocationScale = jsonR.Resp_MapScale;
    //----------------------------------
}

//--------------------------------------------------------------
//MapF_Location.getMap.errorCallback -----------------------------
MapF_Location.getMap.errorCallback = function(Nc, Oc) {
    // TOC.display(Req.getErrorHtml(Nc));
};
//--------------------------------------------------------------
//MapF_Location.getMap.MapImageIsLoaded ----------------------------------
MapF_Location.getMap.MapImageIsLoaded = function(){
    var Mcode = MapF_Location.LocationImage.src.split("?")[1].split("^")[0];
    var MapID = Map.getMapIDFromCode(Mcode);
    var Ocode = "Location";
    var Moptions = Map.MapObj[MapID];
    //----------------------------------
    var Elem = document.getElementById(Mcode + "^" + Ocode + "^" + "LocationImg")
    Elem.src = MapF_Location.LocationImage.src;
    //----------------------------------
//var Mdata = Map.MapObj[MapID];
    var LocationRect = Moptions.MapRect.transform(Moptions.LocationRect, Moptions.LocImageRect);
    var x = parseInt(LocationRect.x1);
    var y = parseInt(LocationRect.y2);
    var w = parseInt(Math.abs((LocationRect.x2 - LocationRect.x1)));
    var h = parseInt(Math.abs((LocationRect.y2 - LocationRect.y1)));
    //----------------------------------
    Elem = document.getElementById(Mcode + "^" + Ocode + "^" + "LocationRec");
    Elem.style.left = (x + 2) + "px";
    Elem.style.top = (y + 2) + "px";
    Elem.style.width = (w - 2) + "px";
    Elem.style.height = (h - 2) + "px";
    Elem.style.visibility = "visible";
    //----------------------------------
    Elem = document.getElementById(Mcode + "^" + Ocode + "^" + "LocationRecB");
    Elem.style.left = x + "px";
    Elem.style.top = y + "px";
    Elem.style.width = w + "px";
    Elem.style.height = h + "px";
    Elem.style.visibility = "visible";
    //----------------------------------
Progress.hide(MapID)
}
//==============================================================


