(function($){
    $.fn.worksList = function(options){
        var defaults    = {
            container   : ".middle",
            navigation  : ".middle",
            jsonFile    : "data/referencia.json",
            refPerPage  : 6,
            nextButton  : ".middle .rightButton",
            prevButton  : ".middle .leftButton"
        };

        var options     = $.extend(defaults, options);
        var maxPage     = 0;
        var items       = Array();
        var actualPage  = 1;
        var container   = $(options.container);
        var navigation  = $(options.navigation);

        var printWorks  = function()
        {
            var end = actualPage*options.refPerPage;
            var start = end-options.refPerPage;
            $(".actualPage",navigation).html(actualPage);
            $(".maxPage",navigation).html(maxPage);
            $('ul',container).empty();

            if (actualPage==maxPage) {
                end=(items.length);
            }

            for (var a=start; a<=end-1; a++){
                var link = items[a]['link'];
                if (link.indexOf('/')>0)
                    link = link.substring(0,link.indexOf('/'));
                $('ul',container).append('<li class="'+items[a]['category']+'">'+items[a]['title']+'<div class="link"><a target="blank" href="http://'+items[a]['link']+'">'+link+'</a></div></li>');
            }
            loadRef((actualPage*options.refPerPage)-(options.refPerPage-1));
        }

        var init = function()
        {
            $.ajax({
                url: options.jsonFile,
                type: "GET",
                contentType: "application/j-son; charset=utf-8",
                dataType: "json",
                beforeSend: function() {
                },
                success: function(data){
                    maxPage = Math.ceil(data.length/options.refPerPage);
                    $.each(data, function(key,val){
                        items.push(val);
                    });
                },
                async: false,
                error: function(XMLHttpRequest, textStatus, errorThrown) {
                    alert("XMLHttpRequest=" + XMLHttpRequest.responseText + "\ntextStatus=" + textStatus + "\nerrorThrown=" + errorThrown);
                }
            });
        }

        var listStep = function(direction)
        {
            $("ul",container).stop(true, true).animate({opacity:0},0);

            if (direction=='right') {
                if ((actualPage+1)<=maxPage){
                    actualPage++;
                } else {
                    actualPage=1;
                }
            }

            if (direction=='left') {
                if ((actualPage-1)>0){
                    actualPage--;
                } else {
                    actualPage=maxPage;
                }
            }

            printWorks();
            $("ul",container).stop(true, true).animate({opacity:1},500);
        }

        var loadRef = function(id)
        {
            var html ='';
        }

        init();
        printWorks();
        $(options.nextButton).click(function(){listStep('right');});
        $(options.prevButton).click(function(){listStep('left');});
        //$(".middle ul li a").live("click",function(){$(".right .content").animate({opacity:0},500);loadRef($(this).parent().attr('id'));});
    }
})(jQuery)

