<%@ LANGUAGE = JavaScript %>
<% /*
     $Revision$
     $Id$

    File:               bez_edit_afspraak.asp
    Description:        Laat een nieuwe bezoeker registreren of bestaand bezoek wijzigen
    Parameters:
        fronto
        backo
        afspr_key
    Context:            Rechtstreeks vanuit de portal of een bestaande
                        Het formulier submit naar register.asp
    Note:               Bezoekers zitten altijd onder een BEZ_AFSPRAAK. Deze staat los
                        (afspr_key is gedefinieerd) of zit onder een
                        RES_RESERVERING
*/

%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/calendar.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="../Shared/plaatsselector.inc" -->
<!-- #include file="../Shared/persoonselector.inc" -->
<!-- #include file="./bez.inc" -->
<!-- #include file="../prs/prs.inc" -->
<!-- #include file="./bez_edit_bezoekers.inc" -->

<%
FCLTHeader.Requires({ js: ["./bez_edit_afspraak.js", "jquery.timepicker-table.js", "../bez/bez.js"],
                      css: ["timePicker-table.css"] });

var afspr_key = getQParamInt("afspr_key", -1);
if (afspr_key > 0)
    var urole = getQParamSafe("urole", "fe");
else
    var urole = getQParamSafe("urole");

var fronto = urole == "fo";
var backo  = urole == "bo";
var minfo  = urole == "mi";
var frontend = (!fronto & !backo & !minfo);

var autfunction = fronto? "WEB_BEZFOF" : backo? "WEB_BEZBOF" : "WEB_BEZUSE";
var contactonly = getQParamInt("contactonly", 0);

// cache.whenTrue(afspr_key == -1);

var authparams = user.checkAutorisation(autfunction);

if (afspr_key > 0)
{
    var this_bez = bez.func_enabled_afspraak(afspr_key);
    user.auth_required_or_abort(this_bez.canChange);
}
else
    user.auth_required_or_abort(authparams.ALGwritelevel < 9);


var timeBeginInitEmpty = false;
var timeEindInitEmpty = false;
if (afspr_key < 0)
{ // defaults zetten
  var bez_afspraak = {contact_key: user_key,
                      aanvrager: user.naam(),
                      telf_nr: user.prs_perslid_telefoonnr(),
                      actie_key: bez.default_actie(), // Is er een default actie.
                      locatie_key: user.alg_locatie_key(),
                      gebouw_key : user.alg_gebouw_key(),
                      verdieping_key: user.alg_verdieping_key(),
                      ruimte_key: user.alg_ruimte_key()
                     };

  if (S("vis_afspraak_onrgoed_uses_keys") == 0)
  {
    var prs_info = prs.prs_perslid(user_key, { withWP: true, withAflever: true });
    bez_afspraak.ruimte = prs_info.afleverruimte;
  }

  // controleer of de inlogcode met een _ begint. Dan wordt deze niet als default voor de gastheer gebruikt.
  if (user.oslogin().substr(0,1) == "_")
  {
    bez_afspraak.gastheer = "";
    bez_afspraak.gastheer_key = -1;
  }
  else
  {
    bez_afspraak.gastheer = bez_afspraak.aanvrager;
    bez_afspraak.gastheer_key = bez_afspraak.contact_key;
  }

  bez_afspraak_datum = new Date();
  if (S("vis_t1_std") > 0)
  {
    if (urole != 'bo') // alleen backo default 'nu', anderen vis_t1_std
    {
      bez_afspraak_datum.setHours(Math.floor(S("vis_t1_std")));
      bez_afspraak_datum.setMinutes((S("vis_t1_std") - Math.floor(S("vis_t1_std"))) * 60, 0, 0);
    }
  }
  else
  { // S("vis_t1_std") < 0
    if (urole != 'bo')
    {
      timeBeginInitEmpty = true;
      bez_afspraak_datum.setHours(0);
      bez_afspraak_datum.setMinutes(0, 0, 0);
    }
    //else bez_afspraak_datum = nu (new Date())
  }
  bez_afspraak_eind = new Date(bez_afspraak_datum);
  if (S("vis_t2_std") > 0)
  {
    bez_afspraak_eind.setHours(Math.floor(S("vis_t2_std")));
    bez_afspraak_eind.setMinutes((S("vis_t2_std") - Math.floor(S("vis_t2_std"))) * 60);
  }
  else
  {
    timeEindInitEmpty = true;
  }
  bez_afspraak.bez_afspraak_datum = bez_afspraak_datum;
  bez_afspraak.bez_afspraak_eind = bez_afspraak_eind;
}
else
{
  var bez_afspraak = bez.bez_afspraak_info(afspr_key);
}
var titel = "";
if (S("bez_sel_contactpersoon") > 0 && S("bez_sel_internpersoon") == 1)
  titel = L("lcl_bez_select_cntprsbezoeker");
else
  if (S("bez_sel_contactpersoon") > 0)
    titel = L("lcl_bez_select_cntbezoeker");
  else
    titel = L("lcl_bez_select_prsbezoeker");
%>
<html>
  <head>
    <%  FCLTHeader.Generate() %>
    <script  type="text/javascript" >
      var titel = "<%=titel%>";
      jQuery(document).ready(function()
                             {
                               $('textarea').resize(function () { FcltMgr.resized(window) } );
                               $('textarea').autogrow();
                               get_freeprk_info();
                             });
    </script>
  </head>


  <body id="editbody">
<%  var buttons =  [ {title: L("lcl_submit"), icon: "opslaan.png", action:"bez_submit()", singlepress: true, id:"btn_bez_submit"},
                     {title: L("lcl_cancel"), icon: "undo.png", action:"bez_cancel()"} ];
    IFRAMER_HEADER(L("lcl_bez_frame"),buttons);
%>  <div id="edit">
<%
      maxPast = ((urole == "fe")? 0 : S("vis_afspraak_limiet"));
      maxFuture = ((urole == "fe" && S("vis_fe_afspraak_limiet") > 0)? S("vis_fe_afspraak_limiet") : S("vis_afspraak_limiet"));
%>
      <script type="text/javascript">
        var urole = "<%=urole%>";
        var vis_afspraak_host_uses_keys = <%=S("vis_afspraak_host_uses_keys")%>;
        var vis_afspraak_onrgoed_uses_keys = <%=S("vis_afspraak_onrgoed_uses_keys")%>;
        var bez_multiday = <%=S("bez_multiday")%>;
        var bez_max_flex_on_line = <%=S("bez_max_flex_on_line")%>;
        var bez_use_buildinghours = <%=S("bez_use_buildinghours")%>;
        var vis_t1 = "<%=safe.jsfloat(S("vis_t1"))%>";
        var vis_t2 = "<%=safe.jsfloat(S("vis_t2"))%>";
        var vis_h = "<%=safe.jsfloat(S("vis_h"))%>";
        var afspr_key = <%=afspr_key%>;
        var maxPast = <%=maxPast%>;
        var maxFuture = <%=maxFuture%>;
        var timeBeginInitEmpty = (<%=timeBeginInitEmpty? 1 : 0%> == 1);
        var timeEindInitEmpty = (<%=timeEindInitEmpty? 1 : 0%> == 1);
      </script>

      <form name=u2 action="bez_edit_afspraak_save.asp?urole=<%=urole%>&afspr_key=<%=afspr_key%>" method=post onsubmit="return bez_submit();">

<%      BLOCK_START("bezAfspraak", L("lcl_vis_appointment") + " " + (afspr_key>0?afspr_key:""));

        var vis_t1 = S("vis_t1");
        var vis_t2 = S("vis_t2");
        if (S("bez_use_buildinghours") == 1 && bez_afspraak.gebouw_key > 0)
        { // Gebouwtijden als tijdgrenzen van afspraken gebruiken.
          sql = "SELECT COALESCE(g.alg_gebouw_beginuur, -1) alg_gebouw_beginuur"
              + "     , COALESCE(g.alg_gebouw_einduur, -1) alg_gebouw_einduur"
              + "  FROM alg_gebouw g"
              + " WHERE g.alg_gebouw_key = " + bez_afspraak.gebouw_key;
          oRs = Oracle.Execute(sql);
          if (!oRs.eof)
          {
            if (oRs("alg_gebouw_beginuur").Value > 0)
              vis_t1 = oRs("alg_gebouw_beginuur").Value;
            if (oRs("alg_gebouw_einduur").Value > 0)
              vis_t2 = oRs("alg_gebouw_einduur").Value;
          }
          oRs.Close();
        }

        FCLTcalendar( "date_from",
                      { label : L("lcl_vis_start_date"),
                        datum: bez_afspraak.bez_afspraak_datum,
                        maxPast  : maxPast,
                        maxFuture: maxFuture,
                        onChange: "get_freeprk_info();",
                        calendars: (afspr_key < 0? 2 : 1),
                        autoopen : (afspr_key < 0 && urole != 'bo'),
                        initTimeEmpty: timeBeginInitEmpty,
                        initEmpty: (afspr_key < 0 && urole != 'bo'),
                        timeField: true,
                        timeStep: S("vis_h") * 60,
                        startTime: vis_t1,
                        endTime: vis_t2,
                        required: true,
                        volgnr: 1
                      });

          FCLTcalendar( "date_to",
                        { label : L("lcl_vis_end_date"),
                          datum: bez_afspraak.bez_afspraak_eind,
                          maxFuture: ((urole == "fe" && S("vis_fe_afspraak_limiet") > 0)? S("vis_fe_afspraak_limiet") : S("vis_afspraak_limiet")),
                          onChange: "get_freeprk_info();",
                          initTimeEmpty: timeEindInitEmpty,
                          timeField: true,
                          timeStep: S("vis_h") * 60,
                          startTime: vis_t1,
                          endTime: vis_t2,
                          required: true,
                          volgnr: 2,
                          hidden: S("bez_multiday") != 1 // de *datum* is dan verborgen, tijd blijft zichtbaar
                        });

        FCLTpersoonselector( "person",
                             "sgPerson",
                             {label: L("lcl_vis_contactperson"),
                              perslidKey: bez_afspraak.contact_key,
                              onChange: "changeName",
                              moreinfo: urole != 'fe',
                              autlevel: authparams.PRSwritelevel,
                              required: true,
                              readonly: frontend
                             });
        //======= FIELD 'Gastheer/host' =======
        if ((S("vis_afspraak_host_uses_keys") & 1) == 1)
        {
           FCLTpersoonselector( "personH",
                                "sgPersonH",
                                {label: L("lcl_vis_visit"),
                                 perslidKey: bez_afspraak.gastheer_key,
                                 onChange: "onChangeHost",
                                 moreinfo: urole != 'fe',
                                 autlevel: authparams.PRSwritelevel,
                                 required: true // (S("vis_afspraak_host_uses_keys") & 2) == 2
                                });
        }
        else
        {
          RWFIELDTR("personH", "fld", L("lcl_vis_visit"), bez_afspraak.gastheer, {maxlength : 30, required: (S("vis_afspraak_host_uses_keys") & 2) == 2 })
          RWFIELDTR("phone", "fld", L("lcl_phone"), bez_afspraak.telf_nr, {maxlength : 15, required: S("vis_afspraak_tel_required") == 1 })
        } %>

<%      if (S("vis_afspraak_onrgoed_uses_keys") == 1)
        {
          var requiredlevel = -1;
          switch (S("vis_mandatory_alg_level"))
          {
            case "L" : requiredlevel = 2; break;
            case "G" : requiredlevel = 3; break;
            case "V" : requiredlevel = 4; break;
            case "R" : requiredlevel = 5; break;
          }

          FCLTplaatsselector(authparams.ALGreadlevel, { locatiekey: bez_afspraak.locatie_key,
                                                        gebouwkey: bez_afspraak.gebouw_key,
                                                        verdiepingkey: bez_afspraak.verdieping_key,
                                                        ruimtekey: bez_afspraak.ruimte_key,
                                                        onLocChange: "onChangeLocatie()",
                                                        onGebChange: (S("bez_use_buildinghours") == 1? "onChangeGebouw()" : null),
                                                        escalateOnChUp: true, // Als hoger plaatsveld verandert (wordt ingevuld) als gevolg van lager plaatsveld dan ook onChange acties uitvoeren
                                                        startlevel: 2, /*locatie*/
                                                        eindlevel: 5, /*ruimte*/
                                                        requiredlevel: requiredlevel,
                                                        filtercode: "BEZ",
                                                        no_table: true
                                                      });
        }
        else
        { // geen keys, locatie wel verplicht
          FCLTplaatsselector(authparams.ALGreadlevel, { locatiekey: bez_afspraak.locatie_key,
                                                        onLocChange: "onChangeLocatie()",
                                                        startlevel: 2, /*locatie*/
                                                        eindlevel: 2, /*locatie*/
                                                        requiredlevel: 2,
                                                        filtercode: "BEZ",
                                                        no_table: true
                                                      });
          if (S("vis_mandatory_alg_level") != "L") {
            RWFIELDTR("room", "fld",
                    (S("vis_mandatory_alg_level")=='R' ? L("lcl_room") : S("vis_mandatory_alg_level")=='V' ? L("lcl_floor") : S("vis_mandatory_alg_level")=='G' ? L("lcl_building") : "") ,
                    bez_afspraak.ruimte, {maxlength : 30})
          }
        }

        sql = "SELECT bez_actie_key"
            + "     , " + lcl.xsqla('bez_actie_omschrijving', 'bez_actie_key')
            + "  FROM bez_actie"
            + " WHERE bez_actie_verwijder IS NULL"
            + "   AND BITAND(bez_actie_flags, 1) = 0" // Niet de oproepers, die alleen via reservering
            + " ORDER BY bez_actie_key";
        FCLTselector("actie",
                     sql,
                     { label: L("lcl_action"),
                       initKey: bez_afspraak.actie_key,
                       emptyOption: afspr_key < 0 && bez_afspraak.actie_key < 0? "" : null,
                       required: true
                     }
                    )
        RWTEXTAREATR("remark", "fldtxt", L("lcl_vis_remark"), afspr_key == -1? "" : bez_afspraak.opm, { maxlength: 320 });
        BLOCK_END();

        BLOCK_START("bezBezoekers");
%>      <tr>
          <td>
<%          bez_edit_bezoekers(afspr_key,
                               bez_afspraak.bez_afspraak_datum,
                               bez_afspraak.bez_afspraak_eind,
                               bez_afspraak.locatie_key, // Voeg het bezoekerblokje in
                               { contactonly: contactonly })
%>        </td>
        </tr>
<%      BLOCK_END();
        IFACE.FORM_END();
%>
    </form>
    </div>
  </body>
</html>
