$gallery = function ( selector ){
    var object = $(selector);
    $.extend(object, $gallery.fn);

    object.init();
    return object;
}


$gallery.fn = {
    cfg : {
        items : 7
    },

    init : function (){
        return this.each(function(){
            if ( $( this ).attr("gallery") )
                return;

            $( this ).attr("gallery", 1);

            var obj = $gallery( this );
            obj.attr("page", 0);

            $("ul.btns li.prev img", this).click(function(){ obj.fetchPrev(); });
            $("ul.btns li.next img", this).click(function(){ obj.fetchNext(); });

            var all    = $("div.all a[rel=lightbox]", this);
            all.lightBox($lightbox_cfg)

            var images = $("ul.images a[rel=lightbox]", this);
            obj.wrapImages( images );

            obj.changePage();
        })
    },


    wrapImages : function ( images ){
        var obj = this;

        images.click(function(){
                var campaign = $(this).attr('campaign');
                var lb_image = $("div.all a[campaign=" + campaign + "]", obj);
                lb_image.click();

                return false;
            })
    },


    fetchPrev : function(){
        var page = Number( this.attr('page') );
        page--;

        this.fetchPage( page );
    },

    fetchNext : function(){
        var page = Number( this.attr('page') );
        page++;

        this.fetchPage( page );
    },


    fetchPage : function( page ){
        var media = this.attr('media');
        var obj   = this;

        $("ul.images", this).load( Catalyst.uri_for("/gallery_fetch", [media, page]), function(){
            obj.attr("page", page);
            obj.changePage();

            var images = $("ul.images a[rel=lightbox]", obj);
            obj.wrapImages( images );
        });


    },

    changePage : function (){
        var page = Number( this.attr('page') );
        var all  = Number( this.attr('items') );

        if ( page > 0 ){
            // показваме стрлката "назад"
            $("ul.btns li.prev", this).show();
        }else{
            $("ul.btns li.prev", this).hide();
        }

        if ( ( page + 1) * this.cfg.items < all ){
            // показваме стрлката "напред"
            $("ul.btns li.next", this).show();
        }else{
            $("ul.btns li.next", this).hide();
        }
    }
}
