$.fn.mygallery = function() {
    $(this).each(function() {
        /* Big picture */
        //initiate big picture section by hiding all images but the first one and disabling prev link and enable next
        $(this).find('div.photo').find('li').addClass('hidden').hide();
        $(this).find('div.photo').find('li:first').removeClass('hidden').show(position);
        $(this).find('div.photo').find('a.post-gallery-photo-prev').bind('click', disableLink);
        $(this).find('div.photo').find('a.post-gallery-photo-next').bind('click', enableNext);

        /* thumbs */
        //initiate thumbs picture section by hiding all images but the first one and disabling prev link and enable next
        $(this).find('div.thumbs').find('li').addClass('hidden').hide();
        $(this).find('div.thumbs').find('li.hidden').slice(0,3).removeClass('hidden').show();
        $(this).find('div.thumbs').find('a.post-gallery-thumbs-prev').bind('click', disableLink);
        $(this).find('div.thumbs').find('a.post-gallery-thumbs-next').bind('click', enableNextThumbs);

        $(this).find('div.thumbs').find('li').click(function() {
           var index = $(this).parents('div.thumbs').find('li').index(this);
           $(this).parents('div.post-gallery').find('div.photo').find('li').addClass('hidden').hide();
           $(this).parents('div.post-gallery').find('div.photo').find('li').eq(index).removeClass('hidden').show(position);
           return false;
        });
    });

    function disableLink(e) {
        return false;
    }

    function enablePrev(e) {
        var current = $(this).parents('div.photo').find('li:not(.hidden)').addClass('hidden').hide();
        var prev = $(current).prev('.hidden').removeClass('hidden').show(position);
        if($(prev).prev('.hidden').html() == null) {
            $(this).unbind('click', enablePrev).bind('click', disableLink);
        }
        $(this).parents('div.photo').find('a.post-gallery-photo-next').unbind('click', disableLink).bind('click', enableNext);
        return false;
    }

    function enableNext(e) {
        var current = $(this).parents('div.photo').find('li:not(.hidden)').addClass('hidden').hide();
        var next = $(current).next('.hidden').removeClass('hidden').show(position);
        if($(next).next('.hidden').html() == null) {
            $(this).unbind('click', enableNext).bind('click', disableLink);
        }
        $(this).parents('div.photo').find('a.post-gallery-photo-prev').unbind('click', disableLink).bind('click', enablePrev);
        return false;
    }

    function enablePrevThumbs(e) {
        var total = $(this).parents('div.thumbs').find('li').size();
        var c_start = $(this).parents('div.thumbs').find('li:not(.hidden):first');
        var start = $(this).parents('div.thumbs').find('li').index($(c_start)) - 1;
        var end = start + 3;

        if(start <= 0) {
            start = 0;
            end = 3;
            $(this).unbind('click', enablePrevThumbs).bind('click', disableLink);
        }

        $(this).parents('div.thumbs').find('li').addClass('hidden').hide();
        $(this).parents('div.thumbs').find('li.hidden').slice(start,end).removeClass('hidden').show();

        $(this).parents('div.thumbs').find('a.post-gallery-thumbs-next').unbind('click', disableLink).bind('click', enableNextThumbs);
        return false;
    }

    function enableNextThumbs(e) {
        var total = $(this).parents('div.thumbs').find('li').size();
        var c_start = $(this).parents('div.thumbs').find('li:not(.hidden):first');
        var start = $(this).parents('div.thumbs').find('li').index($(c_start)) + 1;
        var end = start + 3;

        if(end >= total) {
            end = total;
            start = end - 3;
            $(this).unbind('click', enableNextThumbs).bind('click', disableLink);
        }

        $(this).parents('div.thumbs').find('li').addClass('hidden').hide();
        $(this).parents('div.thumbs').find('li.hidden').slice(start,end).removeClass('hidden').show();

        $(this).parents('div.thumbs').find('a.post-gallery-thumbs-prev').unbind('click', disableLink).bind('click', enablePrevThumbs);
        return false;
    }

    function position() {
        var total = $(this).parents('div.photo').find('li').size();
        var current = $(this).parents('div.photo').find('li').index(this) + 1;
        $(this).parents('div.photo').find('h5.photo-title').text($(this).find('img').attr('title'));
        $(this).parents('div.photo').find('p.photo-position').text(current + '/' + total);
        return false;
    }
}

