/*
     $Revision$
     $Id$

     File:          fac_report.js
*/

var awaiting_process_worker_info = false;
var width = "calc(100% - 23px)";
function toggleInputSelect()
{
    var $inp = $(this).prev("input");

    if ($inp && $inp.length == 1)
    {   // 1e keer drukken maakt er een listbox van
        if (awaiting_process_worker_info){
            return; // Awaiting (any) process_worker_info
        }
        awaiting_process_worker_info = true;
        var inp = $inp[0];
        if ($(inp).hasClass("pinned"))
        {
            $(inp).val(""); // De gepinde waarde verwijderen zodat de hele lijst met waarden weer wordt opgehaald.
        }
        $.getJSON( "fac_report_worker.asp"
                 , $("[name=u2]").serialize() + "&distinct=" + inp.name
                 , FcltCallbackAndThenAlways(process_worker_info)
                 );
        $(inp).show().val(L("lcl_rap_please_wait"));
        $(inp).prop('disabled', true);
    }
    else // het is een DIV die er door de multiSelectToggle omheen is gezet, of gewoon een listbox
    {
        var inp = $(this).prev("select").length ? $(this).prev("select")[0] : $(this).prev().find("select")[0];
        var inpClass = "fld";
        $(this).prev().replaceWith('<input class="' + inpClass + '" id="' + inp.name +'" name="' + inp.name +'">');

        //ruimte maken voor toggleInputSelect knop
        $(this).prev().css("width", width);
    }
}

function process_worker_info(data)
{
    if (data.success)
    {
        var isReeks = data.distinct === "start_" + data.colname || data.distinct === "end_" + data.colname;
        var inp = $("#" + data.distinct); // we krijgen de naam terug in data.distinct
        var selClass = "reportmulti fld";
        inp.replaceWith('<select id="{0}" class="{1}" name="{0}"></select>'.format(data.distinct, selClass));
        var sel = $("#" + data.distinct);
        if (data.values.length > 1)
            sel.append($('<option></option>').val("").text(L("lcl_shared_alle") + " " + data.values.length));
        for (var i = 0; i < data.values.length; i++)
        {
          var v = data.values[i][data.colname];
          if (v === null)
          {
            sel.append($('<option></option>').val("NULL").text(L("lcl_shared_empty"))); // Lege waarde is hier een optie die toegevoegd moet worden.
            break;
          }
        }
        for (var i = 0; i < data.values.length; i++)
        {
          var v = data.values[i][data.colname];
          if (v !== null)
            sel.append($('<option></option>').val(v).text(v));
        }
        if (!isReeks)
        {
            $(sel).multiSelectToggle();
            // alignment van de multitoggle na toggleInputSelect
            $(sel).parent(".multitoggle").css("display", "inline-block")
                                         .css("width", width);
            $(".multi_select_toggle").css("margin-top", "3px");
        }
    }
    awaiting_process_worker_info = false;
}

// Voeg overal de autoselect toggles toe
$(function ()
{
    $("input.fld").after($("<span class='facautoreport'>" + I("fa-comment fa-lg") + "</span>")
                                .attr('title', L("lcl_usrrap_beware"))
                                .click(toggleInputSelect)
                        ).css("width", width);
    $("select.pinned").after($("<span class='facautoreport'>" + I("fa-comment fa-lg") + "</span>")
                                .attr('title', L("lcl_usrrap_beware"))
                                .click(toggleInputSelect)
                        );

    setTimeout(function() { $("div.multitoggle").css({"width": width, "display": "inline-block"}); });
});

