var page_limit = 12;
/**
 * @description Construction de la division en page du widget lieu
 * @param {JqueryObject} widget - Widget Lieux à construire
 */
function buildLieux(widget){
    var wi = {
        $widget: $(widget),
        $list: $(widget).find('.wi-lieux-list'),
        $items: $(widget).find('.wi-lieux-item'),
        $pagin_item: $(widget).find('.pagin-item.is-active')
    }

    // Récupérer le nombre de page
    wi.items_count = wi.$items.length;
    wi.page_count = Math.ceil(wi.items_count / 12);
    // Création de la pagination
    for (var index = 2; index <= wi.page_count; index++) {
        var $pagin_item = wi.$pagin_item.clone();
        $pagin_item.removeClass('is-active')
            .insertBefore(wi.$widget.find('.pagin-next'))
                .find('button')
                .attr('data-page', index)
                .attr('title', 'Aller à la page '+index)
                    .find('.btn-text')
                    .html(index);
    }
    // Création d'une string représentant le Node , avec attribution des data-page
    wi.node = '<ul class="wi-lieux-list visible unstyled" data-page="1">';
    wi.$items.each(function(index, element){
        if( (index % 12 == 0) && index > 0){
            var current_page = Math.ceil( (index + 1) / 12);
            wi.node += '</ul><ul class="wi-lieux-list unstyled" data-page="'+current_page+'">'; 
        }
        wi.node += element.outerHTML; 
    });
    wi.node += '</ul>';
    // Placement du node et supression de la liste originale
    wi.$list.after(wi.node);
    wi.$list.remove();

    return wi;
}

/**
 * @description Affiche la page ayant l'index demandé
 * @param {Object} wi - Objet de configuration du widget Lieux
 * @param {Int} index - Index de la page cible
 */
function lieuxGoToPage(wi, index){
    if(index <= wi.page_count && index >= 1){
        wi.$widget.find('.wi-lieux-list.visible').removeClass('visible');
        wi.$widget.find('.wi-lieux-list[data-page="'+index+'"]').addClass('visible');
        wi.$widget.find('.pagin-item')

        // Gestion des états prev/next pagination
        if(index == 1){
            wi.$widget.find('[data-action="prev"]').parent('.pagin-item').addClass('disabled');
        }else{
            wi.$widget.find('[data-action="prev"]').parent('.pagin-item').removeClass('disabled');
        }
        if(index == wi.page_count){
            wi.$widget.find('[data-action="next"]').parent('.pagin-item').addClass('disabled');
        }else{
            wi.$widget.find('[data-action="next"]').parent('.pagin-item').removeClass('disabled');
        }
        // Gestion numéro de page pagination
        wi.$widget.find('.pagin-item.is-active').removeClass('is-active');
        wi.$widget.find('.pagin-item button[data-page="'+index+'"]').parent('.pagin-item').addClass('is-active');
    }else{
        console.log('erreur pas d');
    }
}
/**
 * @description Récupère la page courante en se basant sur l'état de la pagination
 * @param {*} wi 
 */
function lieuxGetCurrentPage(wi){
    var page = parseInt(wi.$widget.find('.pagin-item.is-active button').attr('data-page'));
    return page;
}

if($('.wi-lieux').length){
    $(document).ready(function(){
        $('.wi-lieux').each(function(index, widget){
            var wi = buildLieux(widget);
            wi.$widget.find('[data-action="next"]').on('click', function(){
                lieuxGoToPage(wi, lieuxGetCurrentPage(wi) + 1);
            });
            wi.$widget.find('[data-action="prev"]').on('click', function(){
                lieuxGoToPage(wi, lieuxGetCurrentPage(wi) - 1);
            });
            wi.$widget.find('.pagin-item button[data-page]').on('click', function(){
                var target = $(this).attr('data-page'); 
                lieuxGoToPage(wi, target);
            })
        });
    });
}