(function($) { $.gallery_slideshow = { interval: 4000, timer: null, init: function(data) { var self = this; var size = $.gallery_get_viewport_size(); $("body").append( '
' + '
' + '' + '' + '' + '' + '' + '
' + '
'); $().bind("mousemove", $.gallery_slideshow._mouse_over); // array of {url: xxx, width: nnn, height: nnn} for (var i=0; i < data.length; i++) { var position = $.gallery_slideshow._autofit_image(data[i].width, data[i].height); $("#gSlideShowImages").append( ''); if (i == 0) { $("#gSlideShowImages #img_0").load(function() { $.gallery_slideshow._show_image(null); setTimeout(function() {$("#gSlideshowButtonPanel").hide();}, $.gallery_slideshow.interval); }); } } }, close: function(event) { $("#gSlideShowImages img.gSlideShowing").toggle(); $.gallery_slideshow.pause(); $("#gSlideshowOverlay").remove(); $("#gSlideShowImages").remove(); $("#gSlideshowButtonPanel").remove(); $().unbind("mousemove", $.gallery_slideshow._mouse_over); }, previous: function() { $.gallery_slideshow.pause(); var next_image = $("#gSlideShowImages img.gSlideShowing").prev(); if (next_image.length == 0) { next_image = $("#gSlideShowImages img:last"); } $.gallery_slideshow._show_image(next_image); }, next: function() { $.gallery_slideshow.pause(); var next_image = $("#gSlideShowImages img.gSlideShowing").next(); if (next_image.length == 0) { next_image = $("#gSlideShowImages img:first"); } $.gallery_slideshow._show_image(next_image); }, pause: function() { if ($.gallery_slideshow.timer) { $("#gSlideshowPause").toggle(); $("#gSlideshowResume").toggle(); clearTimeout($.gallery_slideshow.timer); $.gallery_slideshow.timer = null; } }, resume: function() { $("#gSlideshowPause").toggle(); $("#gSlideshowResume").toggle(); $.gallery_slideshow._show_image(null); }, _mouse_over: function(event) { var size = $.gallery_get_viewport_size(); if (event.pageY < size.height() && size.height() - 100 <= event.pageY) { $("#gSlideshowButtonPanel").show(); } else { $("#gSlideshowButtonPanel").hide(); } }, _autofit_image: function(imageWidth, imageHeight) { var size = $.gallery_get_viewport_size(); var ratio = size.width() / imageWidth; imageWidth *= ratio; imageHeight *= ratio; /* after scaling the width, check that the height fits */ if (imageHeight > size.height()) { ratio = size.height() / imageHeight; imageWidth *= ratio; imageHeight *= ratio; } // handle the case where the calculation is almost zero (2.14e-14) return { top: Number((size.height() - imageHeight) / 2), left: Number((size.width() - imageWidth) / 2), width: Number(imageWidth), height: Number(imageHeight) }; }, // If next_image is not null, then this a call from prev or next _show_image: function(next_image) { var reset_timer = false; if (next_image == null) { next_image = $("#gSlideShowImages img.gSlideShowing").next(); if (next_image.length == 0) { next_image = $("#gSlideShowImages img:first"); } reset_timer = true; } next_image.addClass("gSlideShowNextImage"); var zIndex = parseInt(next_image.css("zIndex")); next_image.css("zIndex", zIndex + 1); next_image.fadeIn("slow", function() { var current = $("#gSlideShowImages img.gSlideShowing"); if (current.length) { current.hide(); current.removeClass("gSlideShowing"); } $(".gSlideShowNextImage").addClass("gSlideShowing").removeClass("gSlideShowNextImage") .css("zIndex", zIndex); if (reset_timer) { $.gallery_slideshow.timer = setTimeout(function() {$.gallery_slideshow._show_image(null);}, $.gallery_slideshow.interval); } }); } }; })(jQuery); $(document).ready(function() { $("#gSlideshowLink").click(function(event) { event.preventDefault(); $.get($(event.currentTarget).attr("href"), {}, $.gallery_slideshow.init, "json"); return false; }); });