/*
     $Revision$
     $Id$

    File:               res_list.js
    Remark:             Functies voor res-lijsten
    Parameters:
    Context:
*/

// Resultaat: URL om de data op te halen
function inlineVoorzieningUrl(row)
{
  //var rsv_ruimte_key = row.getAttribute("ROWKEY");
  var resData = JSON.parse(row.getAttribute("ROWDATA"));
  if (resData)
  {
    var resRsvRuimteKey = resData.resRsvRuimteKey;

    return "objects_list_tiny.asp?rsv_ruimte_key=" + resRsvRuimteKey
                                   + "&urole=" + urole
                                   + "&closed=" + res_closed;
  }
}

function resMultiPrint(rowArray)
{
  var res_ruimte_key = [];
  var res_key = []
  rowArray.forEach(function(row, index)
    {
      res_ruimte_key.push(JSON.parse(row.getAttribute("rowdata")).resRsvRuimteKey);
      res_key.push(JSON.parse(row.getAttribute("rowdata")).resKey);
    });
  FcltMgr.windowopen('../res/res_xml.asp?res_key='+res_key+'&print_rsv_ruimte_key='+res_ruimte_key);
}

function resMultiDelete(rowArray)
{
  var res_key_arr = getKeyString(rowArray);
  var subject = L("lcl_delete");
  var url = "res_delete.asp?urole=" + urole + "&rsv_ruimte_key=" + res_key_arr;
  FcltMgr.openModalDetail(url, subject, {callback: function() { return reloadList(); } });
}

function resMultiApprove(rowArray)
{
  var res_key_arr = getKeyString(rowArray);

  var data = { rsv_ruimte_key: res_key_arr
             , multi: 1
             };
  protectRequest.dataToken(data);
  $.post( "res_goedkeur.asp"
        , data
        , FcltCallbackAndThen( function(){ reloadList(); })
        , "json"
        );
}

function resEdit(row)
{
  $(row).addClass('dirty');
  //var rsv_ruimte_key = row.getAttribute("ROWKEY");
  var resData = JSON.parse(row.getAttribute("ROWDATA"));
  if (resData)
  {
    var resRsvRuimteKey = resData.resRsvRuimteKey;
    var url = "appl/res/res_reservering.asp?urole=" + urole + "&rsv_ruimte_key=" + resRsvRuimteKey;
    FcltMgr.openDetail(url, { reuse: true });
  }
}

function resAdd(mldkey)
{
    var url = "appl/res/res_reservering.asp?urole=" + urole + "&mld_melding_key=" + mldkey + "&restype=";
    FcltMgr.openDetail(url, { reuse: true });
}

// BO/MI functions
// zie ook objects_list_tiny.asp
function resClose(rowArray)
{
  var resData;

  var resFuture = false;
  var resKeyString = getKeyString(rowArray);
  var resPartkeyArray = [];
  var resPartTypeArray = [];
  for (var i = 0; i < rowArray.length; i++)
  {
    resData = JSON.parse(rowArray[i].getAttribute("ROWDATA"));
    if (resData)
    {
      resFuture = resFuture || (resData.resFuture == 1);
      resPartkeyArray.push(resData.resPartkey); // rsv_ruimte_key, rsv_deel_key of rsv_artikel_key
      resPartTypeArray.push(resData.resPartType); // reserveringstype ('C', 'V', 'R')
    }
  }
                   // multi
  if (resFuture && rowArray.length > 1)
  {
    window.FcltMgr.alert(L("lcl_res_all_future"));
    return;
  }

  const _doClose = (endDelen) => {
    // Afmelden kan beginnen
    var data = {
        partres_key: (groupres ? resKeyString : resPartkeyArray.join(",")),
        part_type: resPartTypeArray.join(","),
        group: (endDelen && resData.resPartType == "R" ? 1 : groupres),
        end_delen: (endDelen ? 1 : 0)
    };
    protectRequest.dataToken(data);
    $.post("res_close.asp",
           data,
           FcltCallbackAndThen(function() { // Reservering is nu afgemeld. Geef afvinkbox weer aan het eind van de regel
               resKeyArray = resKeyString.split(",");
               for (var i = 0; i < resKeyArray.length; i++) {
                   $("#afm" + resKeyArray[i]).html(I("fa-check-square"));
               }
           }),
           "json");
  }

  FcltMgr.confirm( (resFuture ? L("lcl_res_future_res") : L("lcl_res_afmeld")), {}, _ => {
    if (rowArray.length === 1 && resData.resReleaseEquipment) {
      FcltMgr.confirm(L("lcl_res_rsv_deel_end_premature"),
                      { oktekst: L("lcl_Yes"),
                        canceltekst: L("lcl_No"),
                        fncancel: _doClose
                      },
                      _doClose.bind(null, true));
    } else {
      _doClose();
    }
  });
}

function resNoShow(row)
{
  function resNoShowCallback(json, modalParams)
  {
    $(row).addClass('dirty');
  }

  var resData = JSON.parse(row.getAttribute("ROWDATA"));
  if (resData)
  {
    var resKey = resData.resKey;
    var resVolgnr = resData.resVolgnr;
    var resRsvRuimteKey = resData.resRsvRuimteKey;

    url = "../res/res_noshow.asp?urole=" + urole + "&rsv_ruimte_key=" + resRsvRuimteKey;
    FcltMgr.openModalDetail(url, L("lcl_res_reservation") + " " + resKey + "/" + resVolgnr, {callback: resNoShowCallback});
  }
}

function reloadList()
{
    // liefst doe ik FcltMgr.reload maar dit is een POST form. Dat komt niet over.
    parent.document.forms.u2.submit();
}

function insCheckIn(row)
{
    $(row).addClass('dirty');
    var resData = JSON.parse(row.getAttribute("ROWDATA"));
    FcltMgr.openDetail("appl/ins/ins_deel_free.asp?takein=1&rsv_deel_key="+resData.res_rsv_deel_key,
                                    L("lcl_ins_insinn"));
}

function insCheckOut(row)
{
    $(row).addClass('dirty');
    var resData = JSON.parse(row.getAttribute("ROWDATA"));
    FcltMgr.openDetail("appl/ins/ins_deel_free.asp?lendout=1&rsv_deel_key="+resData.res_rsv_deel_key,
                                    L("lcl_ins_lend_out"));
}

// Uitleen flexkenmerken bewerken.
function insAdapt(row)
{
    $(row).addClass('dirty');
    var resData = JSON.parse(row.getAttribute("ROWDATA"));
    FcltMgr.openDetail("appl/ins/ins_deel_free.asp?adapt=1&rsv_deel_key="+resData.res_rsv_deel_key,
                                    L("lcl_ins_adapt"));
}

function toggleResFlag(evt, resRsvRuimteKey)
{
	FcltMgr.stopPropagation(evt);

  var flagkey = $('#resflagimg' + resRsvRuimteKey).attr('flagkey');
  var data = { rsv_ruimte_key: resRsvRuimteKey,
               flagkey: flagkey
             };
  protectRequest.dataToken(data);
  $.post("../res/res_flag.asp"
        , data
        ,  FcltCallbackAndThen(setResFlag)
        , "json"
        );
}

function setResFlag(data)
{ // Zet de flag en het volgnummer van de flag.
	var rsv_ruimte_key = data.rsv_ruimte_key;
	var flagkey = data.newflag;
	var flagIcon = I("fa-fclt-flag" + (flagkey == 0 ? "0" : ""));

  // Alle gekleurde balletjes met dezelfde id. Met $(#id) pak je alleen het eerste bolletje. Alle voorzieningen (en ruimte) pakken.
  $('#resflagimg'+rsv_ruimte_key).attr('flagkey', flagkey)
                                 .attr('class', "resflag"+flagkey)
                                 .html(flagIcon)
                                 .parent().attr('title', L("lcl_res_flag" + flagkey));
  $('#resflagimg'+rsv_ruimte_key).next().text(flagkey || 999); // Hidden span voor sorteren
  $('#restable th').removeClass('sorttable_sorted sorttable_sorted_reverse'); // sortable cache't namelijk
}

