/**
   @file  djgm_sellonlat.js
   @brief DJ GMAP support functions: Select the GPS point of  lon. and lat.

   <pre>
   Create: 2007/01/26, Fri, 15:31:43
   Update: 2007/01/26
   </pre>

   Copyright (C) 2007. All Rights Reserved.
   @author À¹§¡®a (Dai, Juin-Jia)
           [jjdai@mercury.cs.nthu.edu.tw, jjdai.bbs@moca.csie.chu.edu.tw]
*/

//@ ===== Global Variable(s) =====
var g_oMap = null;
var g_oCurMaker = null;

//@ ===== Function(s) / Class(s) =====
function DjWinOpen(sInUrl, sInWinName, iInWidth, iInHeight)
{
    iWinTop = (screen.height - iInHeight) / 2;
    iWinLeft = (screen.width - iInWidth) / 2;

    window.open(sInUrl, sInWinName, "dependent,width=" + iInWidth + ",height=" + iInHeight + ",top=" + iWinTop + ",left=" + iWinLeft + ",scrollbars=yes,resizable=yes");
}  //@ END OF DjWinOpen()

function djgm_OnSelWnd(iInZoneNo, fInLon, fInLat)
{
    DjWinOpen('gmap_sel.php?ZoneNo=' + iInZoneNo + '&GpsLon=' + fInLon + '&GpsLat=' + fInLat,
              '',
              780,
              630);
}  //@ END OF djgm_OnSelWnd()

function djgm_SelLonLatOnOk()
{
    if ( g_oCurMaker )
    {
        window.opener.document.rpost_fm.GpsLon.value = g_oCurMaker.getPoint().lng();
        window.opener.document.rpost_fm.GpsLat.value  = g_oCurMaker.getPoint().lat();
        window.close();
    }
}  //@ END OF djgm_SelLonLatOnOk()

function djgm_SelLonLatOnMoveEnd()
{
    var center = g_oMap.getCenter();
    document.getElementById("message").innerHTML = "center:" + center.toString();
}  //@ END OF djgm_SelLonLatOnMoveEnd()

function djgm_SelLonLatOnMarkerDragEnd()
{
    if ( g_oCurMaker )
    {
        document.getElementById("message").innerHTML = g_oCurMaker.getPoint().toString();
    }
}  //@ END OF djgm_SelLonLatOnMarkerDragEnd()

function djgm_SelLonLatAddMarker(oInPoint)
{
    g_oCurMaker = new GMarker(oInPoint, {draggable: true});
    g_oMap.addOverlay(g_oCurMaker);
    document.getElementById("message").innerHTML = oInPoint.toString();

    GEvent.addListener(g_oCurMaker, "dragend", djgm_SelLonLatOnMarkerDragEnd);

    return g_oCurMaker;
}  //@ END OF djgm_SelLonLatAddMarker()

function djgm_SelLonLatOnClick(oInMarker, oInPoint)
{
    if ( oInMarker )
    {
        //g_oMap.removeOverlay(oInMarker);
        //g_oCurMaker = null;
    }
    else
    {
        if ( g_oCurMaker )
        {
            g_oMap.removeOverlay(g_oCurMaker);
            g_oCurMaker = null;
        }
        djgm_SelLonLatAddMarker(oInPoint);
    }
}  //@ END OF djgm_SelLonLatOnClick()

function djgm_SetupSelLonLat(fInLon, fInLat, sInMsg)
{
    if ( GBrowserIsCompatible() )
    {
        g_oMap = new GMap2(document.getElementById("map"));
        g_oMap.addControl(new GLargeMapControl());
        g_oMap.addControl(new GMapTypeControl());
        g_oMap.addControl(new GScaleControl());
        g_oMap.addControl(new GOverviewMapControl());

        //GEvent.addListener(g_oMap, "moveend", djgm_SelLonLatOnMoveEnd);
        GEvent.addListener(g_oMap, "click", djgm_SelLonLatOnClick);

        //g_oMap.setCenter(new GLatLng(fInLat, fInLon), 14, G_HYBRID_MAP);
        g_oMap.setCenter(new GLatLng(fInLat, fInLon), 14);
        djgm_SelLonLatAddMarker(g_oMap.getCenter());
        g_oMap.openInfoWindow(g_oMap.getCenter(), document.createTextNode(sInMsg));
    }
}  //@ END OF djgm_SetupSelLonLat()


