function setupFancybox() {
    $("a[rel=gal]").attr('title', 'Click to enlarge');
    $("a[rel=gal]").fancybox({
        'cyclic' : 'true',
        'transitionIn' : 'elastic',
        'transitionOut' : 'elastic',
        'titlePosition' : 'over',
        'titleFormat' :
        function(title, currentArray, currentIndex, currentOpts) {
            obj = currentArray[currentIndex];
            title = $(obj).children("img").attr("rel");
            return '<span id="fancybox-title-over">Image ' + (currentIndex + 1) + ' / ' + currentArray.length + (title.length ? ' &nbsp; ' + title : '') + '</span>';
        }
    });
}

function slideShow() {

    //Set the opacity of all images to 0
    $('#gallery a').css({
        opacity: 0.0
    });

    //Get the first image and display it (set it to full opacity)
    $('#gallery a:first').css({
        opacity: 1.0
    });

    //Set the caption background to semi-transparent
    $('#gallery .caption').css({
        opacity: 0.6
    });

    //Resize the width of the caption according to the image width
    $('#gallery .caption').css({
        width: $('#gallery a').find('img').css('width')
        });

    //Get the caption of the first image from REL attribute and display it
    $('#gallery .content').html($('#gallery a:first').find('img').attr('rel'))
    .animate({
        opacity: 0.7
    }, 400);

    //Call the gallery function to run the slideshow, 6000 = change to next image after 6 seconds
    setInterval('gallery()', 5000);

}

function gallery() {

    //if no IMGs have the show class, grab the first image
    var current = ($('#gallery a.show')?  $('#gallery a.show') : $('#gallery a:first'));

    //Get next image, if it reached the end of the slideshow, rotate it back to the first image
    var next = ((current.next().length) ? ((current.next().hasClass('caption'))? $('#gallery a:first') :current.next()) : $('#gallery a:first'));

    //Get next image caption
    var image = next.find('img');
    var caption = image.attr('rel');

    //Set the fade in effect for the next image, show class has higher z-index
    next.css({
        opacity: 0.0
    }).addClass('show').animate({
        opacity: 1.0
    }, 1000);

    //Hide the current image
    current.animate({
        opacity: 0.0
    }, 1000).removeClass('show');

    //Set the opacity to 0 and height to 1px
    $('#gallery .caption').animate({
        opacity: 0.0
    }, {
        queue:false,
        duration:0
    }).animate({
        height: '1px'
    }, {
        queue:true,
        duration:300
    });

    //Animate the caption, opacity to 0.7 and heigth to 100px, a slide up effect
    $('#gallery .caption').animate({
        opacity: 0.7
    },100 ).animate({
        height: '80px'
    },500 ).animate({ width: image.attr('width')});

    //Display the content
    $('#gallery .content').html(caption);


}