// Cadre "debouchés" sur fiche etudiant
// affichage et saisie des informations sur l'avenir de l'étudiant.

// console.log('etud_debouche.js loaded');

$(function () {
    display_itemsuivis(false);
});


function display_itemsuivis(active) {
    var etudid = $('div#fichedebouche').data("etudid");
    var readonly = $('div#fichedebouche').data('readonly'); // present ro interface

    if (!readonly) {
        $('#adddebouchelink').off("click").click(function (e) {
            e.preventDefault();
            $.post(SCO_URL + "/itemsuivi_create", { etudid: etudid, format: 'json' }).done(item_insert_new);

            return false;
        });
    }
    // add existing items
    $.get(SCO_URL + "/itemsuivi_list_etud", { etudid: etudid, format: 'json' }, function (L) {
        for (var i in L) {
            item_insert(L[i]['itemsuivi_id'], L[i]['item_date'], L[i]['situation'], L[i]['tags'], readonly);
        }
    });

    $("div#fichedebouche").accordion({
        heightStyle: "content",
        collapsible: true,
        active: active,
    });
}

function item_insert_new(it) {
    item_insert(it.itemsuivi_id, it.item_date, it.situation, '', false);
}

function item_insert(itemsuivi_id, item_date, situation, tags, readonly) {
    if (item_date === undefined)
        item_date = Date2DMY(new Date());
    if (situation === undefined)
        situation = '';
    if (tags === undefined)
        tags = '';

    var nodes = item_nodes(itemsuivi_id, item_date, situation, tags, readonly);
    // insert just before last li:
    if ($('ul.listdebouches li.adddebouche').length > 0) {
        $('ul.listdebouches').children(':last').before(nodes);
    } else {
        // mode readonly, pas de li "ajouter"
        $('ul.listdebouches').append(nodes);
    }
};

function item_nodes(itemsuivi_id, item_date, situation, tags, readonly) {
    // console.log('item_nodes: itemsuivi_id=' + itemsuivi_id);
    var sel_mois = 'Situation à la date du <input type="text" class="itemsuividatepicker" size="10" value="' + item_date + '"/><span class="itemsuivi_suppress" onclick="itemsuivi_suppress(\'' + itemsuivi_id + '\')"><img width="10" height="9" border="0" title="" alt="supprimer cet item" src="/ScoDoc/static/icons/delete_small_img.png"/></span>';

    var h = sel_mois;
    // situation
    h += '<div class="itemsituation editable" data-type="textarea" data-url="itemsuivi_set_situation" data-placeholder="<em>décrire situation...</em>" data-object="' + itemsuivi_id + '">' + situation + '</div>';
    // tags:
    h += '<div class="itemsuivi_tag_edit"><textarea class="itemsuivi_tag_editor">' + tags + '</textarea></div>';

    var nodes = $($.parseHTML('<li class="itemsuivi">' + h + '</li>'));
    var dp = nodes.find('.itemsuividatepicker');
    dp.blur(function (e) {
        var date = this.value;
        // console.log('selected text: ' + date);
        $.post(SCO_URL + "/itemsuivi_set_date", { item_date: date, itemsuivi_id: itemsuivi_id });
    });
    dp.datepicker({
        onSelect: function (date, instance) {
            // console.log('selected: ' + date + 'for itemsuivi_id ' + itemsuivi_id);
            $.post(SCO_URL + "/itemsuivi_set_date", { item_date: date, itemsuivi_id: itemsuivi_id });
        },
        showOn: 'button',
        buttonImage: '/ScoDoc/static/icons/calendar_img.png',
        buttonImageOnly: true,
        dateFormat: 'dd/mm/yy',
        duration: 'fast',
        disabled: readonly
    });
    dp.datepicker('option', $.extend({ showMonthAfterYear: false },
        $.datepicker.regional['fr']));

    if (readonly) {
        // show tags read-only
        readOnlyTags(nodes.find('.itemsuivi_tag_editor'));
    }
    else {
        // bind tag editor
        nodes.find('.itemsuivi_tag_editor').tagEditor({
            initialTags: '',
            placeholder: 'Tags...',
            onChange: function (field, editor, tags) {
                $.post('itemsuivi_tag_set',
                    {
                        itemsuivi_id: itemsuivi_id,
                        taglist: tags.join()
                    });
            },
            autocomplete: {
                delay: 200, // ms before suggest
                position: { collision: 'flip' }, // automatic menu position up/down
                source: "itemsuivi_tag_search"
            },
        });

        // bind inplace editor
        nodes.find('div.itemsituation').jinplace();
    }

    return nodes;
};

function Date2DMY(date) {
    var year = date.getFullYear();

    var month = (1 + date.getMonth()).toString();
    month = month.length > 1 ? month : '0' + month;

    var day = date.getDate().toString();
    day = day.length > 1 ? day : '0' + day;

    return day + '/' + month + '/' + year;
}

function itemsuivi_suppress(itemsuivi_id) {
    $.post(SCO_URL + "/itemsuivi_suppress", { itemsuivi_id: itemsuivi_id });
    // Clear items and rebuild:
    $("ul.listdebouches li.itemsuivi").remove();
    display_itemsuivis(0);
}