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

    File:        res_search_list.asp
    Description: Vangt de parameters van res_search op en verwerkt die in een aanroep van res_list
    Parameters:  urole
                 Alle zoek-criteria van res_search.asp
    Context:     Vanuit res_search.asp
    Note:
*/ %>

<!-- #include file="../Shared/common.inc" -->
<!-- #include file="res_list.inc" -->

<%
var formString = Request.Form();
var urole = getFParamSafe("urole", "");   // Indien niet meegegeven, veronderstel dan frontend gebruik
var fronto = (urole == "fo");
var backo = (urole == "bo");
var minfo = (urole == "mi");
var frontend = (urole == "fe" || (!fronto & !backo & !minfo));

// FORM parameters: de waarde indien aanwezig, anders null
// Vaak is een lege selectie ook een -1, dus dan is-ie wel aanwezig, maar hoeft niet
// als filter te worden toegepast. Dan is null dus gelijk aan -1, qua betekenis,
// Vandaar dat een default van -1 ipv null ook mag
// In eerste instantie identificeren we elk veld gewoon 1-op-1.
var outputmode = getFParamInt("outputmode", 0); //  0 = screen, 1 = print, 2 = excel etc
var showall = getFParamInt("showall", 0) == 1;

var params = { urole : urole,
               outputmode: outputmode,
               showall: showall
             }

var srtact = getFParamInt("srtact", -1);
if (srtact > 0)
    lcl.set_dialect(srtact, "RES_SRTACTIVITEIT_KEY");

var res_key = getFParamInt("resnum", null, true); // relaxed

if (res_key > 0)
{
  params.res_key = (res_key != -1 ? res_key : null);
}
else
{ // Alleen als res_key niet opgegeven is, zijn de resterende parameters van belang!
  // Period from start-time until end-time
  // Indien geen datums meegegeven, dan huidige datum voor beide kalenders nemen anders duurt de query te lang.
  var datefrom = getFParamDate("date_from", null);
  var dateto = getFParamDate("date_to", null);

  // Voor velden die de user in kan typen valideren we zodanig dat we er tegen kunnen
  var reg_key = getFParamInt("regiokey", -1); // Regio
  var dist_key = getFParamInt("districtkey", -1);
  var loc_key = getFParamInt("locatiekey", -1);
  var bld_key = getFParamInt("gebouwkey", -1);
  var floor_key = getFParamInt("verdiepingkey", -1);
  var room_key = getFParamInt("ruimtekey", -1);
  var act_key = getFParamInt("act", -1);
  var suppress_cont = (getFParamInt("suppresscont", 0) == 1);
  var searchtext = getFParam("searchtext", null);
  var requestor_key = getFParamInt("sName_key", -1); // Aanvrager
  var host_key = getFParamInt("sHost_key", -1);
  var dep_key = getFParamInt("sDept_key", -1);
  var resstatus = getFParamInt("resstatus", -1);
  var kp = getFParam("kp", null);

  var room_key_arr = getFParamIntArray("roomcatmulti", []); // Ruimte soort catalogus
  var obj_key_arr  = getFParamIntArray("objcatmulti",  []); // Voorzieningen catalogus
  var art_key_arr  = getFParamIntArray("artcatmulti",  []); // Verbruiksartikelen catalogus
  var article_arr  = getFParamIntArray("artmulti",     []); // Verbruiksartikelen
  var artgroup = getFParamArray("artgroup", ""); // Artikelgroep

  // FORM checkboxes
  // Parameters res_actual en res_deleted worden alleen doorgegeven indien fronto
  var res_actual = (getFParamInt("res_actual", 0) == 1);
  var res_deleted = (getFParamInt("res_deleted", 0) == 1);

  // Parameters res_open en res_closed worden alleen doorgegeven indien backo of minfo
  var res_open = (getFParamInt("res_open", 0) == 1);
  var res_closed = (getFParamInt("res_closed", 0) == 1);
  // minimaal één van beiden moet aangekruist zijn
  if (!res_open && !res_closed)
    res_open = true;

  // Parameters res_approved en res_notapproved worden alleen doorgegeven indien backo of minfo
  var res_approved = (getFParamInt("res_approved", 0) == 1);
  var res_notapproved = (getFParamInt("res_notapproved", 0) == 1);

  // Parameters roomcat, objcat en artcat worden alleen doorgegeven indien backo of minfo
  var roomcat = (getFParamInt("roomcat", 0) == 1);
  var objcat = (getFParamInt("objcat", 0) == 1);
  var artcat = (getFParamInt("artcat", 0) == 1);
  // minimaal één categorie moet aangekruist zijn
  if (!roomcat && !objcat && !artcat)
    roomcat = true;
  // ** de velden van de form zijn nu allemaal bekend **

  params.datefrom        = datefrom;
  params.dateto          = dateto;
  params.reg_key         = (reg_key != -1 ? reg_key : null);
  params.dist_key        = (dist_key != -1 ? dist_key : null);
  params.loc_key         = (loc_key != -1? loc_key : null);
  params.bld_key         = (bld_key != -1? bld_key : null);
  params.floor_key       = (floor_key != -1? floor_key : null);
  params.room_key        = (room_key != -1? room_key : null);
  params.act_key         = (act_key != -1? act_key : null);
  params.suppress_cont   = (backo || minfo? suppress_cont : null); // Wordt alleen gebruikt bij bo en mi
  params.srtact          = (srtact != -1? srtact : null);
  params.searchtext      = (searchtext != ""? searchtext : null);
  params.kp              = (kp != ""? kp : null);
  params.requestor_key   = (requestor_key != -1? requestor_key : null);
  params.host_key        = (host_key != -1? host_key : null);
  params.dep_key         = (dep_key != -1? dep_key : null);
  params.room_key_arr    = room_key_arr; //(room_key_arr.length!=0 ? room_key_arr : null);
  params.obj_key_arr     = obj_key_arr;  //(obj_key_arr.length!=0  ? obj_key_arr  : null);
  params.art_key_arr     = art_key_arr;  //(art_key_arr.length!=0  ? art_key_arr  : null);
  params.article_arr     = article_arr;  //(article_arr.length!=0  ? article_arr  : null);
  params.artgroup        = (artgroup != "-1"? artgroup : null);
  params.resstatus       = (resstatus != -1? resstatus : null);
  params.roomcat         = (backo || minfo? roomcat : null); // Wordt alleen gebruikt bij bo en mi
  params.objcat          = (backo || minfo? objcat : null); // Wordt alleen gebruikt bij bo en mi
  params.artcat          = (backo || minfo? artcat : null); // Wordt alleen gebruikt bij bo en mi
  params.res_actual      = (fronto? res_actual : true); // Wordt alleen gebruikt bij fo
  params.res_deleted     = (fronto? res_deleted : false); // Wordt alleen gebruikt bij fo
  params.res_open        = (backo || minfo? res_open : null); // Wordt alleen gebruikt bij bo en mi
  params.res_closed      = (backo || minfo? res_closed : null); // Wordt alleen gebruikt bij bo en mi
  params.res_approved    = (backo || minfo? res_approved : null); // Wordt alleen gebruikt bij bo en mi
  params.res_notapproved = (backo || minfo? res_notapproved : null); // Wordt alleen gebruikt bij bo en mi
  params.res_noshowonly  = (getFParam("res_noshowonly", "") == "on"); // Wordt alleen gebruikt bij bo en mi

  // Flags
  params.flags = [];
  for (flagkey=0; flagkey < S("res_reservering_flags"); flagkey++)
  {
    if (getFParam("flag" + flagkey, "off") == "on")
        params.flags.push(flagkey);
  }
}

var sortout = getFParamInt("sortout", -1); // Sortering
var groupres = getFParamInt("groupby", -1); // Groepering
params.sortout        = (sortout != -1? sortout : null);
params.groupres       = (groupres != -1? groupres : null);

// ** nu volgt de verwerking
var autfunction = "";
switch(urole)
{
  case "fe": autfunction = "WEB_RESUSE";
             break;
  case "fo": autfunction = "WEB_RESFOF";
             break;
  case "bo": autfunction = "WEB_RESBOF";
             break;
  case "mi": autfunction = "WEB_RESBAC";
             break;
}

res_list(autfunction, params);
%>