// SETTINGS
var paniersGroupesConf = {
    type                          : "groupe",
    baseURL                       : "paniers_groupes.php",
    // LIST
    list_selector                 : "#paniersGroupesList",
    // SEARCH
    search_selector               : "#paniersGroupesSearch .searchGrp",
    // VIEW
    view_modalSelector            : "#modalViewPaniersGroupe",
    view_btnSelector              : ".btnViewPaniersGroupe",
    // ADD
    add_modalSelector             : "#modalAddPaniersGroupe",
    add_btnSelector               : "#btnAddPaniersGroupe",
    // EDIT
    edit_modalSelector            : "#modalEditPaniersGroupe",
    edit_btnSelector              : ".btnEditPaniersGroupe",
    // DELETE
    delete_modalSelector          : "#modalDeletePaniersGroupe",
    delete_btnSelector            : ".btnDeletePaniersGroupe",
}

// MODALS
var modalViewPaniersGroupe    = false;
var modalAddPaniersGroupe     = false;
var modalEditPaniersGroupe    = false;
var modalDeletePaniersGroupe  = false;

$(document).ready( function() {
    // LIST LOADER
    initListProgressLoad($(paniersGroupesConf.list_selector), paniersGroupesConf.baseURL, paniersGroupesConf.type+" list");
    
    // SEARCH
    $(paniersGroupesConf.search_selector).initSearchGroup();
    
    // VIEW
    modalViewPaniersGroupe = $(paniersGroupesConf.view_modalSelector);
    if(modalViewPaniersGroupe.length>0) {
        initViewPaniersGroupe();
        // VIEW REQUEST
        var id = getUrlParameter("ref");
        if(id!==false && parseInt(id)>0 && current_page == "paniersGroupes") {
            modalViewPaniersGroupe_clear(modalViewPaniersGroupe);
            modalViewPaniersGroupe_loadDatas(modalViewPaniersGroupe, id);
        }
    }
    
    // ADD
    modalAddPaniersGroupe = $(paniersGroupesConf.add_modalSelector);
    if(modalAddPaniersGroupe.length>0) initAddPaniersGroupe();

    // EDIT
    modalEditPaniersGroupe = $(paniersGroupesConf.edit_modalSelector);
    if(modalEditPaniersGroupe.length>0) initEditPaniersGroupe();

    // DELETE
    modalDeletePaniersGroupe = $(paniersGroupesConf.delete_modalSelector);
    if(modalDeletePaniersGroupe.length>0) initDeletePaniersGroupe();
});

/***** MODAL VIEW *****/
function initViewPaniersGroupe() {
    // INIT VIEW BTNs
    var initBtnFct = function() { modalForm_initBtnView(
        $(paniersGroupesConf.view_btnSelector),        // BTNs
        modalViewPaniersGroupe,                        // MODAL
        modalViewPaniersGroupe_clear,                  // CLEAR FUNCTION
        modalViewPaniersGroupe_loadDatas               // LOAD DATAS FUNCTION
    )};
    registerListProgressLoadCbkFct( $("tbody.progressLoadList"), initBtnFct );
    initBtnFct();

    // CANCEL
    modalViewPaniersGroupe.on('hidden.bs.modal', function() { modalViewPaniersGroupe_clear(modalViewPaniersGroupe); });
}

function modalViewPaniersGroupe_loadDatas(modal, id) {
    $.post(paniersGroupesConf.baseURL, { 'ref' : id, 'action' : 'getDatas' }, function(jsonTxt) {
        var datas = JSON.parse(jsonTxt);

        modal.find("small.db_ref > span").html(datas.ref);
        
        modal.find("td.nom").html(datas.nom);
        
        modal.modal('show');
    }).fail(function() { alert("("+paniersGroupesConf.type+" - load modal view)"); });
}

function modalViewPaniersGroupe_clear(modal) {
    modal.removeAttr("view_id");
    
    modal.find("small.db_ref > span").html("");
    
    modal.find("td.nom").html("");
}

/***** MODAL FORM ADD/EDIT *****/
function modalFormPaniersGroupe_init(modal) {
    modal.find("form").preventFormValidation();
}

function modalFormPaniersGroupe_loadDatas(modal,id) {
    $.post(paniersGroupesConf.baseURL, { 'ref' : id, 'action' : 'getDatas' }, function(jsonTxt) {
        var datas = JSON.parse(jsonTxt);

        modal.find("input[name=nom]").val(datas.nom);

        if(modal) modal.modal('show');
    }).fail(function() { alert("("+paniersGroupesConf.type+" - load datas in modal form)"); });
}

function modalFormPaniersGroupe_clear(modal) {
    modal.removeAttr("edit_id");
    modal.find("div.modaLoader").removeClass("show");
    
    modal.find("input[name=nom]").val("");
}

function modalFormPaniersGroupe_getDatas(modal) {
    var datas = {
        'nom' : modal.find("input[name=nom]").val()
    };
    return datas;
}

function modalFormPaniersGroupe_checkDatas(datas) { 
    if(datas.nom=="") { 
        alert("ERREUR : merci de donner un nomà ce groupe !");
        return false;
    }
    return true;
}

/***** ADD *****/
function initAddPaniersGroupe() {
    // INIT FORM
    modalFormPaniersGroupe_init(modalAddPaniersGroupe);

    // INIT ADD BTN
    modalForm_initBtnAdd(
        $(paniersGroupesConf.add_btnSelector),         // BTN ADD
        modalAddPaniersGroupe,                         // MODAL
        modalFormPaniersGroupe_clear                   // CLEAR FORM FUNCTION
    );
    
    // INIT SAVE BTN
    modalForm_initBtnSaveAdd(
        modalAddPaniersGroupe.find(".btnSave"),        // BTN SAVE
        paniersGroupesConf.type,                       // ADD TYPE
        modalAddPaniersGroupe,                         // MODAL
        modalFormPaniersGroupe_getDatas,               // GET FORM DATAS FUNCTION
        modalFormPaniersGroupe_checkDatas,             // CHECK FORM DATAS FUNCTION
        paniersGroupesConf.baseURL                     // SAVE URL
    );

    // CANCEL
    modalAddPaniersGroupe.on('hidden.bs.modal', function (e) { modalFormPaniersGroupe_clear(modalAddPaniersGroupe); });
}

/***** EDIT *****/
function initEditPaniersGroupe() {
    // INIT FORM
    modalFormPaniersGroupe_init(modalEditPaniersGroupe);

    // INIT EDIT BTNs
    var initBtnFct = function() { modalForm_initBtnEdit(
        $(paniersGroupesConf.edit_btnSelector),        // BTNs
        modalEditPaniersGroupe,                        // MODAL
        modalFormPaniersGroupe_clear,                  // CLEAR FUNCTION
        modalFormPaniersGroupe_loadDatas               // LOAD DATAS FUNCTION
    )};
    registerListProgressLoadCbkFct( $("tbody.progressLoadList"), initBtnFct );
    initBtnFct();
    
    // INIT SAVE EDIT BTN
    modalForm_initBtnSaveEdit(
        modalEditPaniersGroupe.find(".btnSave"),       // BTN SAVE
        paniersGroupesConf.type,                       // EDIT TYPE
        modalEditPaniersGroupe,                        // MODAL
        modalFormPaniersGroupe_getDatas,               // GET FORM DATAS FUNCTION
        modalFormPaniersGroupe_checkDatas,             // CHECK FORM DATAS FUNCTION
        paniersGroupesConf.baseURL                     // SAVE URL
    );

    // CANCEL
    modalEditPaniersGroupe.on('hidden.bs.modal', function (e) { modalFormPaniersGroupe_clear(modalEditPaniersGroupe); });
}

/***** DELETE *****/
function initDeletePaniersGroupe() {
    // INIT DELETE BTNs
    var initBtnFct = function() { modalForm_initBtnDelete(
        $(paniersGroupesConf.delete_btnSelector),      // BTNs
        modalDeletePaniersGroupe,                      // MODAL
        modalDeletePaniersGroupe_clear,                // CLEAR MODAL FUNCTION
        modalDeletePaniersGroupe_loadDatas             // LOAD DATAS FUNCTION
    )};
    registerListProgressLoadCbkFct( $("tbody.progressLoadList"), initBtnFct );
    initBtnFct();

    // INIT SAVE DELETE BTN
    modalForm_initBtnSaveDelete(
        modalDeletePaniersGroupe.find(".btnSave"),     // BTN SAVE
        paniersGroupesConf.type,                       // DELETE TYPE
        modalDeletePaniersGroupe,                      // MODAL
        false,                                  // GET FORM DATAS FUNCTION
        false,                                  // CHECK FORM DATAS FUNCTION
        paniersGroupesConf.baseURL                     // SAVE URL
    );

    // CANCEL
    modalDeletePaniersGroupe.on('hidden.bs.modal', function (e) { modalDeletePaniersGroupe_clear(); });
}

function modalDeletePaniersGroupe_loadDatas(btn, id) {
    modalDeletePaniersGroupe.find('b.name').html( btn.attr('nom') );
    modalDeletePaniersGroupe.modal('show');
}

function modalDeletePaniersGroupe_clear() {
    modalDeletePaniersGroupe.removeAttr("delete_id");
    modalDeletePaniersGroupe.find('b.name').html("");
}