/*
     $Revision$
     $Id$

    File:               bez_list.js
*/

function bezDelete(rowArray, isMulti)
{
  var bez_key_arr = getKeyString(rowArray).split(",");
  var data = { bez_key: bez_key_arr
             , urole: urole
             , level: "B"
             };
  protectRequest.dataToken(data);
  var tableID = $(rowArray).closest('table').attr('id');
  FcltMgr.confirm(L("lcl_bez_confirm_delete_bezoeker"), { autoconfirm: isMulti }, function() {
      $.post("bez_delete.asp",
          data,
          FcltCallbackAndThen(function() {
              $.each(rowArray, function() { $(this).remove() });
              toggleFooter(tableID);
          }),
          "json");
  });
}

function resMultiPrint(rowArray)
{
  var bez_key = []
  rowArray.forEach(function(row, index)
    {
      bez_key.push(JSON.parse(row.getAttribute("rowdata")).bez_key);
    });
  FcltMgr.windowopen("../bez/bez_xml.asp?badge=1&bez_key=" + bez_key, "", "resizable=0,scrollbars=0,menubar=0,width=500,height=400");
}

function bezEdit(row)
{
  var bezData = JSON.parse(row.getAttribute("ROWDATA"));
  if (bezData)
  {
    $(row).addClass('dirty');
    var url = "appl/bez/bez_afspraak.asp?afspr_key=" + bezData.afspr_key + "&urole=" + urole;
    if (contactonly)
        url += "&contactonly=1"
    FcltMgr.openDetail(url, { reuse: true });
  }
}

function afsprEdit(row)
{
  var afspr_key = row.getAttribute("ROWKEY");
  $(row).addClass('dirty');
  var url = "appl/bez/bez_afspraak.asp?afspr_key=" + afspr_key + "&urole=" + urole;
  FcltMgr.openDetail(url, { reuse: true });
}

function afsprEditMulti(rowArray)
{
  var afsprKeyString = getKeyString(rowArray);
  var subject = L("lcl_bez_multi_edit");
  var url = "../bez/bez_edit_afspraak_multi.asp?afspr_keys=" + afsprKeyString;
  FcltMgr.openModalDetail(url, subject, {callback: FcltCallbackRefresh});
}

function bezSendSms(row)
{
  var bez_key = row.getAttribute("ROWKEY");
  var bezData = JSON.parse(row.getAttribute("ROWDATA"));
  if (bezData)
  {
    var v_url = "../bez/bez_smshost.asp?afspr_key=" + bezData.afspr_key + "&bez_key=" + bez_key;
    FcltMgr.openModalDetail(v_url, L("lcl_bez_send_sms"), {callback: FcltCallback});
  }
}

function bezProgressProp(row)
{
  var bez_key = row.getAttribute("ROWKEY");
  var bezData = JSON.parse(row.getAttribute("ROWDATA"));
  if (bezData)
  {
    $(row).addClass('dirty');
    var url = "../bez/bez_edit_check_in.asp?urole=" + urole + "&bez_key=" + bez_key;
    FcltMgr.openModalDetail(url,
                            L("lcl_bez_reg_progress_prop"),
                            { callback: function(data)
                                {
                                    $("#badgenr" + bez_key).val(data.bezBadgeArr[0]);
                                }
                            });
  }
}

function CheckInCallback(json, textStatus)
{
    for (i = 0 ; i < json.bez_key_arr.length; i++)
    {
      if (json.checkInDone[i]) // Checkin is uitgevoerd
      {
        $("#chatlink" + json.bez_key_arr[i]).toggleClass("hidden", json.undo_check_in);
        if (json.undo_check_in == 0) // bezoeker is nu ingechecked/aangemeld. Geef juiste afvinkbox weer aan het eind van de regel
        {
          if (json.badges[i])
          {
            var badgefield = $("#checkin" + json.bez_key_arr[i]).closest("tr").find("input.fldbadge");
            badgefield.val(json.badges[i]).attr("disabled", "1");
          }
          if (json.autoprint[i])
            printBadge(json.bez_key_arr[i]);

          content = '<span id="CHDin' + json.bez_key_arr[i] + '" class="ilbutton"'
                  + ' OnClick="doCheckIn(event, ' + json.bez_key_arr[i] + ', 1);"' // bezoeker not out
                  + ' style="cursor:pointer"'
                  + ' title="' + L("lcl_vis_done") + ' (' + todayString + ')"' // Net (vandaag) ingechecked
                  + '>' + I("fa-check-square") + '</span>';
          $("#checkin" + json.bez_key_arr[i]).html(content);
        }
        else // bezoeker is niet meer aangemeld. Geef juiste afvinkbox weer aan het eind van de regel
        {
          content = '<span id="CHDin' + json.bez_key_arr[i] + '" class="ilbutton"'
                  + ' OnClick="doCheckIn(event, ' + json.bez_key_arr[i] + ', 0);"'
                  + ' style="cursor:pointer"'
                  + ' title="' + L("lcl_vis_register") + '"'
                  + '>' + I("fa-square") + '</span>';
          $("#checkin" + json.bez_key_arr[i]).html(content);
        }
      }
    }
    // Is er nog een message die weergegeven moet worden?
    if (json.message) FcltMgr.alert(json.message);
}

function doCheckIn(evt, bezKeyString, undo_check_in)
{
  FcltMgr.stopPropagation(evt);

  var bez_key_arr = bezKeyString.toString().split(","); // Bulkactie geeft het als een string door, klikken op het aanmeldvakje als een integer.
  if (bez_key_arr.length == 1 && (hasKenmerk || s_vis_remark==2) && !undo_check_in && ((s_bez_show_progress_prop & 1) == 1))
  { // Niet voor bulkacties
    // alleen voor bo (al geregeld door de aanroeper)
    // en alleen als er kenmerken > 900 zijn.
    // PF: en alleen bij inchecken, niet bij undo-inchecken
    var url = "../bez/bez_edit_check_in.asp?urole="+urole+"&bez_key="+bez_key_arr[0];
    FcltMgr.openModalDetail(url,
                            L("lcl_vis_checkin_title"),
                            { callback: function(data)
                                {
                                    $("#badgenr"+bez_key_arr[0]).val(data.bezBadgeArr[0]);
                                    setCheckIn(bezKeyString, undo_check_in);
                                }
                            });
  }
  else
  {
    setCheckIn(bezKeyString, undo_check_in);
  }
}

function setCheckIn(bezKeyString, undo_check_in)
{
  var data = { bez_key: bezKeyString
             , undo_check_in: undo_check_in
             };
  protectRequest.dataToken(data);
  $.post("bez_check_in.asp",
         data,
         CheckInCallback,
         "json");
}

function bezCheckIn(rowArray, isMulti)
{
  // bulk actie
  var bezKeyString = getKeyString(rowArray);
  doCheckIn(null, bezKeyString, 0);
}

function CheckOutCallback(json, textStatus)
{
  if (textStatus == "success")
  {
    for (i = 0 ; i < json.bez_key_arr.length; i++)
    {
      if (json.checkOutDone[i]) // Checkout is uitgevoerd
      {
        if (json.undo_check_out == 0) // bezoeker is nu uitgechecked. Geef juiste afvinkbox weer aan het eind van de regel
        {
          content = '<span id="CHOut' + json.bez_key_arr[i] + '" class="ilbutton"'
                  + ' OnClick="doCheckOut(event, ' + json.bez_key_arr[i] + ', 1);"'
                  + ' style="cursor:pointer"'
                  + ' title="' + L("lcl_vis_checkout") + ' (' + todayString + ')"' // Net (vandaag) uitgechecked
                  + '>' + I("fa-check-square") + '</span>';
          $("#checkout" + json.bez_key_arr[i]).html(content);

          if (json.aantal_ojb > 0)
          {
            url = "../INS/ins_list.asp?urole=fo&embedded=1&inacObjIncl=1&checkout=1";
            if (json.prs_key > 0)
              url += "&prs_key=" + json.prs_key;
            else if (json.cps_key > 0)
              url += "&cps_key=" + json.cps_key;
            FcltMgr.openModalDetail(url, L("lcl_bez_insinn_objects"), {width: 800});
          }

        }
        else // bezoeker is niet meer uitgechecked (wel ingechecked). Geef juiste afvinkbox weer aan het eind van de regel
        {
          content = '<span id="CHOut' + json.bez_key_arr[i] + '" class="ilbutton"'
                  + ' OnClick="doCheckOut(event, ' + json.bez_key_arr[i] + ', \'\');"'
                  + ' style="cursor:pointer"'
                  + ' title="' + L("lcl_vis_todo") + '"'
                  + '>' + I("fa-square") + '</span>';
          $("#checkout" + json.bez_key_arr[i]).html(content);
        }
      }
    }

    // Is er nog een message die weergegeven moet worden?
    if (json.message) FcltMgr.alert(json.message);
  }
  else
    FcltMgr.alert("CheckOutCallback: " + textStatus);
}

function doCheckOut(evt, bezKeyString, undo_check_out)
{
  FcltMgr.stopPropagation(evt);

  var data = { bez_key: bezKeyString
             , undo_check_out: undo_check_out
             };
  protectRequest.dataToken(data);
  $.post("bez_check_out.asp",
         data,
         CheckOutCallback,
         "json");
}

function bezCheckOut(rowArray, isMulti)
{
  // bulk actie
  var bezKeyString = getKeyString(rowArray);
  doCheckOut(null, bezKeyString, 0);
}

// Op de OnChange van inputveld wordt een pasnummer direct opgeslagen
function SaveBadge(bez_key, badgenr)
{
  var data = { bez_key: bez_key
             , badgenr: badgenr
             };
  protectRequest.dataToken(data);
  $.post("bez_badgenr_save.asp",
         data,
         FcltCallback,
         "json");
}

function bezSendMail(rowArray)
{
    var bezKeyString = getKeyString(rowArray);
    var bez_key_arr = bezKeyString.split(",");
    var bezData = JSON.parse(rowArray[0].getAttribute("ROWDATA"));

    var v_url = "../bez/bez_email_bezoeker_save.asp?afspr_key=" + bezData.afspr_key;
    var data = { afspr_key: bezData.afspr_key
               , bez_key_arr: bez_key_arr
               };
    protectRequest.dataToken(data);
    $.post( v_url
          , data
          , FcltCallback
          , "json"
          );
}

function toggleBezFlag(evt, afspr_key, bez_key)
{
	FcltMgr.stopPropagation(evt);

  var flagkey = $('#bezflagimg'+bez_key).attr('flagkey');
  var data = { afspr_key: afspr_key
             , bez_key  : bez_key
             , flagkey  : flagkey
             };
  protectRequest.dataToken(data);
  $.post("../bez/bez_flag.asp"
        , data
        ,  FcltCallbackAndThen(setBezFlag)
        , "json"
        );
}

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

  $('#bezflagimg'+bez_key).attr('flagkey', flagkey);
  $('#bezflagimg'+bez_key).attr('class', "bezflag"+flagkey);
  $('#bezflagimg'+bez_key).html(flagIcon);
  $('#bezflagimg'+bez_key).parent().attr('title', L("lcl_bez_flag" + flagkey));
  $('#bezflagimg'+bez_key).next().text(flagkey||999); // Hidden span voor sorteren
  $('#beztable th').removeClass('sorttable_sorted sorttable_sorted_reverse'); // sortable cache't namelijk
}

function doLaunchChat(evt, chat_url)
{
  FcltMgr.stopPropagation(evt);
  var wnd = FcltMgr.windowopen(chat_url, "teamslink", " ");
  // niet automatisch sluiten of zo. Soms moet de gebruiker nog dingen bevestigen
  // en misschien wil de gebruiker de webversie gebruiken
}
