(function($){

  $.fn.mediaGallery = function(options) {

    return this.each(function() {

        var obj = $(this);
        if (obj.data('mediagallery')) return;
        
        var mg = new MediaGallery(this, options);
        obj.data('mediagallery', mg);

        mg.setUp();
    });
 };


 var MediaGallery = function(element, options)
 {
     var elem   = $(element);
     var obj    = this;
     var settings = $.extend({}, options || {});

    // METHODS
    this.setUp = function()
    {
        this.navPos = 0;
        this.itemDivs = $(".galleryImage", elem);

        // set height of media gallery window
        var tallestImage = 200;
        this.itemDivs.each(function(index, arr){
            if ($(arr).height() > tallestImage) tallestImage = $(arr).height();
        });
        $('#mediaGalleryWindow:first').css({
            'height' : tallestImage+'px'
        });

        // Click behaviour
        $("a.nav", elem).click(function(e){
            e.preventDefault();
            obj.navPos += ($(e.target).hasClass('right')) ? 1 : -1;
            obj.initNav();
        });

        this.initNav();
    };

    this.initNav = function()
    {
        // hide / show nav buttons
        if (this.navPos == 0)                           $("a.left", elem).hide(); else $("a.left", elem).show();
        if (this.navPos >= (this.itemDivs.length/2)-1)  $("a.right", elem).hide();  else $("a.right", elem).show();

        // slide the content
        var leftIndent = (this.navPos*$('#mediaGalleryWindow:first').width()*-1)+30;
        $('#mediaGalleryImages', elem).animate({left:leftIndent}, 400);
    };
 };
})(jQuery);
