<%@ language = "JavaScript" %>
<% /*
     $Revision$
     $Id$

     File:    pda/setlocation.asp
              Sets or lets the user select a current and global location
     Status: 90%
     Context:
              vanaf smartphone-portal of direct via een QRC of andere plaatsbepalende service
     Parameters:
                alg_key of loc_key of bld_key of flr_key
*/
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="./mobile.inc" -->
<!-- #include file="./iface.inc" -->
<%

// Als ik een alg_key krijg, is dat altijd van level S("mobile_alg_level")
var alg_key = getFParamInt("alg_key", -1);

// Deze zouden door andere systemen of mechanismes gebruikt kunnen worden FOR FUTURE USE
var loc_key = getFParamInt("loc_key", -1);
var bld_key = getFParamInt("bld_key", -1);
var flr_key = getFParamInt("flr_key", -1);
var qrc = getQParamInt("qrc", 0) != 0;

// Met meegegeven waarden ben ik aan het submitten: zet de gedetailleerdste waarde
if (flr_key > -1) {
    mobile.iamhere("V", flr_key);
} else if (bld_key > -1) {
    mobile.iamhere("G", bld_key);
} else if (loc_key > -1) {
    mobile.iamhere("L", loc_key);
} else if (alg_key > -1) {
    mobile.iamhere(S("mobile_alg_level"), alg_key);
}
if (flr_key > -1 || bld_key > -1 || loc_key > -1 || alg_key > -1) {
    // Gezet, terug naar portal, wellicht nog parameter om niks te doen (QRC)
    // Dit lijkt niet helemaal lekker te gaan zo (na langer rondklikken)
    Response.Redirect("./Facilitor.asp");
}

// Kies heel ruim waar je autorisatie op hebt
// Let op dat je hier alleen autorisaties met plaats-component toevoegt (fac_functie_minlevel & 8)
var sql = "SELECT COALESCE(MIN(fac_gebruiker_alg_level_read), 9) readlevel"
        + "  FROM fac_v_webgebruiker g, fac_functie f "
        + " WHERE g.fac_functie_key = f.fac_functie_key "
        + "   AND f.fac_functie_code IN ('WEB_MLDUSE', 'WEB_INSMAN', 'WEB_INSUSE', 'WEB_ALGMAN', 'WEB_ALGUSE', 'WEB_MLDBO2', 'WEB_ORDBO2', 'WEB_MLDBOF', 'WEB_BEZUSE', 'WEB_RESUSE', 'WEB_MLDUSE')"
        + "   AND g.prs_perslid_key = " + user_key;
var oRs = Oracle.Execute(sql);
var autlevel = oRs("readlevel").Value; // Pas op: kan ook '0' zijn (regio)
oRs.Close();

// Als keys meegegeven, dan globallocation zetten op die key en refresh naar Facilitor.asp (die toont de locatie)
// Als geen keys meegegeven, dan plaatsselector met default de huidige globallocation om aan te laten passen
%>
<html><head>
 <% FCLTMHeader.Generate({title: L("lcl_mobile_setlocation")}); %>
<script>
function showError(error)
{
  var txt;
  switch(error.code)
  {
    case error.PERMISSION_DENIED:
      txt = "User denied the request for Geolocation."
      break;
    case error.POSITION_UNAVAILABLE:
      txt = "Location information is unavailable."
      break;
    case error.TIMEOUT:
      txt = "The request to get user location timed out."
      break;
    case error.UNKNOWN_ERROR:
      txt = "An unknown error occurred."
      break;
  }
  alert(txt);
}
function selectByGPS() {
    navigator.geolocation.getCurrentPosition (
            function (pos)
            {
              var lat = pos.coords.latitude;
              var lng = pos.coords.longitude;
              if (lat == null) {
                  alert("Cannot access coordinates");
              }
              $.getJSON("getLocation.asp", {lat: lat, lng: lng },
                function (data)
                {
                    //alert(data.alg_key);
                    $("#alg_key").val(data.alg_key).selectmenu('refresh');
                });

            }, showError
            , {timeout: 15000, enableHighAccuracy: true})
};
</script>
</head>
<body>
<%
    PAGE_START();
    HEADER ({back: !qrc});
    CONTENT_START();

%>
    <form id="setloc" name="setloc" action="setlocation.asp" method="post">
    <div class="ui-bar" id="setloctxt"><%= L("lcl_mobile_setlocation_intro")%></div>
<%
    CONTROLGROUP_START();
    BUTTON(L("lcl_mobile_currentgps"), {click: "selectByGPS()", dataicon: "navigation", id: "gpsbut"});
    if (S("mobile_alg_level") == 'L') {
        sql = "SELECT alg_locatie_key, alg_locatie_omschrijving"
            + "  FROM alg_locatie"
            + " WHERE alg_locatie_verwijder IS NULL";  // in scope
        if (autlevel >= 0)
            sql +=   " AND alg_locatie_key IN"
                   + " (SELECT alg_locatie_key FROM fac_v_my_locations"
                   + "  WHERE prs_perslid_key = " + user_key
                   + "  AND niveau = " + autlevel + ")";
        sql += " ORDER BY 2";
        FCLTselector("alg_key", sql, {initKey: user.alg_locatie_key({withcurrent:true}), nolabel: L("lcl_location"), mobile:true});

    } else if (S("mobile_alg_level") == 'G') {
        sql = "SELECT g.alg_gebouw_key, COALESCE(alg_locatie_plaats, alg_locatie_omschrijving)||': '||alg_gebouw_omschrijving"
            + "  FROM alg_gebouw g, alg_srtgebouw sg, alg_locatie l"
            + " WHERE sg.alg_srtgebouw_key = g.alg_srtgebouw_key"
            + " AND g.alg_locatie_key = l.alg_locatie_key"
            + " AND sg.alg_srtgebouw_passief IS NULL"  // Alleen de facilitair actieve gebouwen
            + " AND g.alg_gebouw_verwijder IS NULL";
        if (autlevel >= 0)
            sql +=  " AND g.alg_gebouw_key IN"
                   + " (SELECT alg_gebouw_key FROM fac_v_my_buildings"
                   + "  WHERE prs_perslid_key = " + user_key
                   + "  AND niveau = " + autlevel + ")";
        sql += " ORDER BY 2";
        FCLTselector("alg_key", sql, {initKey: user.alg_gebouw_key({withcurrent:true}), nolabel: L("lcl_building"), mobile:true});

    } else if (S("mobile_alg_level") == 'V') {
        sql = "SELECT v.alg_verdieping_key, alg_gebouw_omschrijving||'/'||v.alg_verdieping_code"
            + "  FROM alg_gebouw g, alg_srtgebouw sg, alg_verdieping v"
            + " WHERE g.alg_gebouw_key = v.alg_gebouw_key"
            + " AND sg.alg_srtgebouw_key = g.alg_srtgebouw_key"
            + " AND sg.alg_srtgebouw_passief IS NULL"  // Alleen de facilitair actieve gebouwen
            + " AND g.alg_gebouw_verwijder IS NULL"
            + " AND v.alg_verdieping_verwijder IS NULL";
        if (autlevel >= 0)
            sql +=   " AND g.alg_gebouw_key IN"
                   + " (SELECT alg_gebouw_key FROM fac_v_my_buildings"
                   + "  WHERE prs_perslid_key = " + user_key
                   + "  AND niveau = " + autlevel + ")";
        sql += " ORDER BY 2";
        FCLTselector("alg_key", sql, {initKey: user.alg_verdieping_key({withcurrent:true}), nolabel: L("lcl_floor"), mobile:true});
    }
    BUTTON(L("lcl_select"), {click: "document.forms.setloc.submit()", dataicon: "check"});
    CONTROLGROUP_END();
%>
  </form>
<%
    CONTENT_END();
    FOOTER();
    PAGE_END();
%>
</body>
</html>