/*
     $Revision$
     $Id$

     File:        mld.js
*/

function doAccept(json, callback)
{
  json.multi |= 0;

  if (setting_mld_accept_confirm)
  {
    var url = "../mld/mld_accept_confirm.asp?urole=" + urole
                                       + "&mld_key=" + json.mld_key
                                       + "&multi=" + json.multi
                                       + "&maybeDouble=" + (json.maybeDouble? 1 : 0)
    FcltMgr.openModalDetail(url, L("lcl_mld_complain"), {callback: callback});
  }
  else
  {
    FcltMgr.confirm(L("lcl_mld_accept_1") + (json.prefix || "") + json.mld_key + L("lcl_mld_accept_2"), { autoconfirm: json.autoConfirm || json.multi }, function() {
        var data = {
            mld_key: json.mld_key,
            multi: json.multi,
            maybeDouble: (json.maybeDouble ? 1 : 0)
        };
        protectRequest.dataToken(data);
        $.post("../mld/mld_accept_save.asp",
            data,
            FcltCallbackAndThen(callback),
            "json");
    });
  }
}

function doublecheckCallback(json, modalParams)
{
  var mld_key_arr = json.mld_key;
  var multi = json.multi;
  var addopdr = json.addopdr;
  var reloadmld = json.reloadmld;
  var autoConfirm = json.autoConfirm;
  var reject = json.reject;
  var prefix = json.prefix||"";
  var urole = json.urole;

  function mldCallback(json1, textStatus1)
  {
    if (json1.edit)
    {
        if (json.list == "1")
        { // mld_key_arr bevat (wellicht) meerdere waarden, en json1.key bevat de waarde die gewijzigd dient te worden.
          FcltMgr.openDetail("appl/mld/mld_melding.asp?urole=" + urole + "&mld_key=" + json1.key + "&embedded=1&mode=edit", L("lcl_mld_complain") + " " + json1.mldnr);
        }
        else
        { // mld_key_arr bevat 1 waarde en is identiek aan json1.key.
          location.href = "mld_edit_melding.asp?urole=" + urole + "&mld_key=" + mld_key_arr + "&embedded=1";
        }
    }
    else if (addopdr)
    {
      FcltMgr.setTitle(L("lcl_mld_new_order"));
      FcltMgr.closeDetail(window, { redirect: "../mld/mld_opdr.asp?urole=bo&mld_key=" + mld_key_arr });
    }
    else
    {
      if (reloadmld) {
        if (json.reject) {
          mld_melding_rejected();
        } else {
          parent.location.href = "mld_melding.asp?urole=" + urole + "&mld_key=" + mld_key_arr + "&embedded=1";
        }
      }
      else
        FcltCallbackRefresh({success: true});
    }
  }

  if (json.maybeDouble && !(multi == 1))
  { // Er kunnen dubbele meldingen zijn.
    function mldDoubleCallback(data, text)
    {
      // Drie modes
      // 1) Het is een dubbele melding. Laat de melding verwijzen naar de moedermelding
      // 2) Het is geen dubbele melding. Zet de melding op geaccepteerd (Button accepteren)
      // 3) Melding niet accepteren/afwijzen (Button annuleren)
      if (data.mode == 1)
      { // De melding verwijzen naar moedermelding inclusief statusupdate.
        // Geen verschil voor accepteren of afwijzen
        var data = { mld_key: mld_key_arr
                   ,  parent_key: data.parent_key
                   };
        protectRequest.dataToken(data);
        $.post("mld_link.asp",
               data,
               FcltCallbackAndThen(function (json, textStatus)
                                   { // Melding wordt een kindmelding. Daarom geen opdracht meer aangeven, ook al is dit aangegeven. Maar reload de melding.
                                     addopdr = false;
                                     reloadmld = true;
                                     mldCallback(json, textStatus);
                                   }),
               "json");
      }
      else if (data.mode == 2)
      { // Zet de melding op geaccepteerd/afwijzen
        if (reject)
        { // Afwijzen
          url = "../mld/mld_reject.asp?urole=" + urole + "&mld_key=" + mld_key_arr
          FcltMgr.openModalDetail(url, L("lcl_mld_complain") + ' ' + prefix + mld_key_arr, {callback: mldCallback});
        }
        else // Accepteren
        {
          json.autoConfirm = true;
          doAccept(json, mldCallback);
        }
      }
      //else if (data.cancel) // Niets doen
    }
    url = "../mld/mld_double.asp?urole=" + urole
                              + "&mld_key=" + mld_key_arr;
    FcltMgr.openModalDetail(url, L("lcl_mld_similarcalls"), {callback: mldDoubleCallback});
  }
  else
  {
    if (reject)
    { // Afwijzen
      url = "../mld/mld_reject.asp?urole=" + urole + "&mld_key=" + mld_key_arr
      FcltMgr.openModalDetail(url, L("lcl_mld_complain"), {callback: mldCallback});
    }
    else // Accepteren
    {
        json.autoConfirm = autoConfirm || (addopdr ? true : false);
        doAccept(json, mldCallback)
    }
  }
}

function opdrCloseCallback(json, textStatus)
{
    if (json.canCloseMld) // zal nooit multi zijn
    {
      if (json.message)
        FcltCallback(json, textStatus); // Geef message weer

      var url = "../mld/mld_close_confirm.asp?mld_key=" + json.mld_key + "&has_opdr_opm=" + (json.opdr_opm?1:0);
      url += "&lastopdr=1";
      FcltMgr.openModalDetail(url, L("lcl_mld_final_close"),
                                   { width: 400,
                                     callback: FcltMgr.reload,
                                     alwaysCallback: true, // ook bij cancel
                                     opdr_opm: json.opdr_opm // kan te lang zijn voor url
                                   });
    }
    else
    {
      FcltCallbackRefresh(json, textStatus);
    }
}

function opdrAcceptCallback(json, textStatus)
{
    if (json.message)
      FcltCallback(json, textStatus); // Geef message weer

      window.parent.FcltMgr.reload();
}

function showObjDetail(oid)
{
    FcltMgr.openDetail("appl/ins/ins_deel.asp?urole=bo&ins_key=" + oid);
}

function showObjListTab(oid)
{
    FcltMgr.openDetail("appl/ins/ins_list.asp?inacObjIncl=1&mld_key=" + oid, L("lcl_mld_objects"));
}

function showAnswer2(faq_key)
{
    var x = $("#"+faq_key)[0];
    $(x.children[1]).css("display", "block");
    $(x.children[0]).remove();
}

function mld_show_kennisbank(data)
{
  var $tbl = $("#mldFaq").find("table");

  var alg = [null, 'X', 'L', 'G', 'V', 'R'];
  var changed = data.changed;
  var error = data.fixed_faq == null; // veld verkeerd of leeg 'ingevuld'
  var plaatsChanged = changed >= 2 && changed <= 5;

  for (var a = (plaatsChanged ? (error ? changed : 2) : 1); a <= 5; a++)
  {
      if (plaatsChanged)
          $tbl.find("tr.faq_X" + alg[a]).remove();
      $tbl.find("tr.faq_I" + alg[a]).remove();
      $tbl.find("tr.faq_S" + alg[a]).remove();
  }

  if (data.fixed_faq && data.fixed_faq.length)
  {
      for (var i = 0; i < data.fixed_faq.length; i++)
      {
          var faq_key = data.fixed_faq[i].faq_key;
          var $newrow = $("<tr class='faqcollapsable faqcollapsed "
                            +data.fixed_faq[i].faq_type+(data.fixed_faq[i].extraClass?data.fixed_faq[i].extraClass:"")
                            +"'><td class='fixedfaqquestion lhint'>" + safe.html(data.fixed_faq[i].question) + "</td></tr>")
                            .click(function () {
                                                 $(this).next().toggle();
                                                 $(this).toggleClass('faqcollapsed');
                                                 FcltMgr.resized(window);
                                               });
          $tbl.append($newrow);
          var safe_answer = data.fixed_faq[i].safe_answer;
          if (data.fixed_faq[i].safe_answer2)
          {
            safe_answer += "<div class='faqanswer2' id='"+faq_key+"'>"
                         + "  <a name='"+faq_key+"' href='javascript:showAnswer2("+faq_key+")'>"+L("lcl_faq_answer2")+"</a>"
                         + "  <div style='display:none;'>"
                         + data.fixed_faq[i].safe_answer2
                         + "  </div>"
                         + "</div>";
          }
          if (data.fixed_faq[i].hurl)
            safe_answer += "<br><a href='{0}' target='_new'>{1}</a>".format(safe.htmlattr(data.fixed_faq[i].hurl), safe.html(data.fixed_faq[i].hlnk));
          else if (data.fixed_faq[i].has_kenm)
            safe_answer += "<div class='faqlink'><a href='javascript:showFaq("+data.fixed_faq[i].faq_key+")'>"+L('lcl_more')+"</a></div><br>";
          $tbl.append("<tr style='display:none' class='"+data.fixed_faq[i].faq_type+"'><td class='fixedfaqanswer'><span class='fclthtml'>" + safe_answer + "</span></td></tr>");
      }
      $("#mldFaq").show();
  }
  if (!$tbl.find("tr").length)
  {
    $tbl.empty(); // Redundant ?
    $("#mldFaq").hide();
  }
  FcltMgr.resized(window);
}

