(function($) { $.gallery_slideshow = { interval: 4000, timer: null, images: [], current: -1, 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++) { $("#gSlideShowImages").append( ''); $("#gSlideShowImages #img_" + i).load(function() { $.gallery_slideshow.images.push("#" +$(this).attr("id")); if ($.gallery_slideshow.images.length == 1) { $.gallery_slideshow._show_image(null); setTimeout(function() {$("#gSlideshowButtonPanel").hide();}, $.gallery_slideshow.interval); } }); }; $(window).resize(function() { var size = $.gallery_get_viewport_size(); $("#gSlideshowOverlay").width(size.width()).height(size.height()); var current = $(".gSlideCurrent"); var position = $.gallery_auto_fit_window(current.width(), current.height()); $($.gallery_slideshow.images[$.gallery_slideshow.current].replace("img", "clone")) .height(position.height).width(position.width).css({ top: position.top, left: position.left }); }); }, close: function(event) { $.gallery_slideshow.pause(); $($.gallery_slideshow.images[$.gallery_slideshow.current].replace("img", "clone")).remove(); $("#gSlideshowOverlay").remove(); $("#gSlideShowImages").remove(); $("#gSlideshowButtonPanel").remove(); $().unbind("mousemove", $.gallery_slideshow._mouse_over); }, previous: function() { $.gallery_slideshow.pause(); $.gallery_slideshow.current--; $.gallery_slideshow.current = --$.gallery_slideshow.current < 0 ? $.gallery_slideshow.images.length - 1 : $.gallery_slideshow.current; var next_image = $($.gallery_slideshow.images[$.gallery_slideshow.current]); $.gallery_slideshow._show_image(next_image); }, next: function() { $.gallery_slideshow.pause(); $.gallery_slideshow.current = ++$.gallery_slideshow.current % $.gallery_slideshow.images.length; var next_image = $($.gallery_slideshow.images[$.gallery_slideshow.current]); $.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(); } }, // If next_image is not null, then this a call from prev or next _show_image: function(next_image) { var reset_timer = false; var previous = $.gallery_slideshow.current; if (next_image == null) { $.gallery_slideshow.current = ++$.gallery_slideshow.current % $.gallery_slideshow.images.length; next_image = $($.gallery_slideshow.images[$.gallery_slideshow.current]); reset_timer = true; } var zIndex = parseInt(next_image.css("zIndex")); var position = $.gallery_auto_fit_window(next_image.width(), next_image.height()); var clone = next_image.clone(); clone.attr("id", next_image.attr("id").replace("img", "clone")); clone.height(position.height).width(position.width).css({ marginTop: 0, marginLeft: 0, marginBottom: 0, marginRight: 0, display: "none", position: "absolute", zIndex: zIndex + 1, top: position.top + "px", left: position.left + "px" }); $("body").append(clone); clone.fadeIn("slow", function() { if (previous >= 0) { $($.gallery_slideshow.images[previous].replace("img", "clone")).remove(); } clone.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; }); });