$.fn.divListWithPagination = function() {
    $(this).each(function(){
        div = $(this);
        src = div.attr('src');
        currentPage = div.attr('currentPage');
        nbPage = div.attr('nbPage');
        if(src==undefined || currentPage==undefined || nbPage==undefined){
            alert("Le tag div doit avoir les attributs src, currentPage et nbPage");
            return true;
        }
        
        //Gestion de la pagination
        if(nbPage> 1){
            var pagination = div.find('.pagination');
            if(!pagination.length){
                return false;
            }
            pagination.empty();
            
            currentPage = new Number(currentPage);
            nbPage = new Number(nbPage);
            
            if(currentPage > 1){
                lien = jQuery('<a href="#"><<</a>');
                lien.addClass('active');
                
                pagination.append(lien);
                pagination.append("&nbsp;&nbsp;");
                
                lien = jQuery('<a href="#"><</a>');
                lien.addClass('active');
                
                pagination.append(lien);
                pagination.append("&nbsp;&nbsp;");
            }
            
            start =1;
            stop = nbPage;
            if(nbPage > 10){
                start = currentPage -5;
                stop = currentPage + 5;
                if(start<=0){
                    stop += -start+1;
                    start=1;
                }
                if(stop > nbPage){
                    start += nbPage-stop;
                    if(start<=0){
                        start=1;
                    }
                    stop = nbPage;
                }
            }
            
            for(i=start; i<=stop;i++){
                lien = jQuery("<a>"+i+"</a>");
                lien.attr("href", '#');
                if(i==currentPage){
                    lien.addClass("active");
                }
                pagination.append(lien);
                if(i!=stop){
                    pagination.append(" - ");
                }
            }
            
            if(currentPage < nbPage){
                lien = jQuery('<a href="#">></a>');
                lien.addClass('active');
                
                pagination.append("&nbsp;&nbsp;");
                pagination.append(lien);
                
                lien = jQuery('<a href="#">>></a>');
                lien.addClass('active');
                
                pagination.append("&nbsp;&nbsp;");
                pagination.append(lien);
            }
            
            div.find('.pagination > A').click(function(){
                page = $(this).text();
                src = $(this).parents('.divListWithPagination').attr('src');
                currentPage = new Number($(this).parents('.divListWithPagination').attr('currentPage'));
                
                if(page==currentPage){ //on est déjà sur la bonne page
                    return false;
                }
                if(page == '<<'){ //First page
                    page=1;
                }
                if(page == '<'){ //Previous page
                    page=currentPage-1;
                }
                if(page == '>'){ //Next Page
                    page=currentPage+1;
                }
                if(page == '>>'){ //Last Page
                    page=nbPage;
                }
                
                ajaxZone = $(this).parents('.divListWithPagination').parent('.ajaxZone');
                
                if(ajaxZone[0]==undefined){
                    alert("Le tag div contenant l'attribut class égal à 'ajaxZone' n'existe pas");
                    return false;
                }
                ajaxZone.load(src, {page:page}, function(){
                    doOnload($(this));
                });
                
                return false;
            });
        }
    });
};
