jQuery("document").ready(function(){ // register ajax gallery-navigation listeners jQuery("a.page-numbers").click(function(e) { return ngg_ajax_navigation(e, this); }); jQuery("a.prev").click(function(e) { return ngg_ajax_navigation(e, this); }); jQuery("a.next").click(function(e) { return ngg_ajax_navigation(e, this); }); // register ajax browser-navigation listeners jQuery("a.ngg-browser-next").click(function(e) { return ngg_ajax_browser_navigation(e, this); }); jQuery("a.ngg-browser-prev").click(function(e) { return ngg_ajax_browser_navigation(e, this); }); }); function ngg_ajax_navigation(e, obj) { // try to find page number var pageNumber = 0; if (jQuery(obj).hasClass("page-numbers")) { pageNumber = jQuery(obj).contents()[0].data; } else if (jQuery(obj).hasClass("prev")) { pageNumber = jQuery(obj).attr("id").substr(9); } else if (jQuery(obj).hasClass("next")) { pageNumber = jQuery(obj).attr("id").substr(9); } // try to find gallery number by checking the parents ID until we find a matching one var currentNode = obj; while (null != currentNode.parentNode && !jQuery.nodeName(currentNode.parentNode, "body") && "ngg-gallery-" != jQuery(currentNode.parentNode).attr("id").substring(0, 12)) { currentNode = currentNode.parentNode; } if (jQuery(currentNode.parentNode).attr("id")) { var gallery = jQuery(currentNode.parentNode); // we found a gallery, let's extract the post id & gallery id var payload = gallery.attr("id").substring(12); var separatorPosition = parseInt(payload.indexOf("-")); var galleryId = payload.substr(0, separatorPosition); var postId = payload.substr(separatorPosition + 1); if ( (galleryId.length == 0) || (postId.length == 0) ) { return true; } ngg_show_loading(e); // load gallery content jQuery.get(ngg_ajax.path + "nggajax.php", {p: postId, galleryid: galleryId, nggpage: pageNumber, type: "gallery"}, function (data, textStatus) { // delete old content gallery.children().remove(); // add new content gallery.replaceWith(data); // add ajax-navigation, again jQuery("document").ready(function(){ // remove old listeners to avoid double-clicks jQuery("a.page-numbers").unbind("click"); jQuery("a.prev").unbind("click"); jQuery("a.next").unbind("click"); // add shutter-listeners again shutterReloaded.init('sh'); jQuery("a.page-numbers").click(function(e) { return ngg_ajax_navigation(e, this); }); jQuery("a.prev").click(function(e) { return ngg_ajax_navigation(e, this); }); jQuery("a.next").click(function(e) { return ngg_ajax_navigation(e, this); }); ngg_remove_loading(); }); }); // deactivate HTML link return false; } // an error occurred, use traditional HTML link return true; }; function ngg_ajax_browser_navigation(e, obj) { // try to find gallery number if ("ngg-prev-" == jQuery(obj).attr("id").substr(0, 9) || "ngg-next-" == jQuery(obj).attr("id").substr(0, 9)) { // extract the image-id var imageNumber = jQuery(obj).attr("id").substr(9); // find the image-browser-container var currentNode = obj; while (null != currentNode.parentNode && !jQuery.nodeName(currentNode.parentNode, "body") && !jQuery(currentNode.parentNode).hasClass("ngg-imagebrowser")) { currentNode = currentNode.parentNode; } if (jQuery(currentNode.parentNode).hasClass("ngg-imagebrowser")) { var gallery = jQuery(currentNode.parentNode); // let's extract the post id & gallery id var payload = gallery.attr("id").substring(17); var separatorPosition = parseInt(payload.indexOf("-")); var galleryId = payload.substr(0, separatorPosition); var postId = payload.substr(separatorPosition + 1); if ( (galleryId.length == 0) || (postId.length == 0) ) { return true; } ngg_show_loading(e); // get content jQuery.get(ngg_ajax.path + "nggajax.php", {p: postId, galleryid: galleryId, pid: imageNumber, type: "browser"}, function (data, textStatus) { // delete old content gallery.children().remove(); // add new content gallery.replaceWith(data); // add ajax-navigation, again jQuery("document").ready(function(){ // remove old listeners to avoid double-clicks jQuery("a.ngg-browser-next").unbind("click"); jQuery("a.ngg-browser-prev").unbind("click"); // add shutter-listeners again shutterReloaded.init('sh'); // register ajax browser-navigation listeners jQuery("a.ngg-browser-next").click(function(e) { return ngg_ajax_browser_navigation(e, this); }); jQuery("a.ngg-browser-prev").click(function(e) { return ngg_ajax_browser_navigation(e, this); }); ngg_remove_loading(); }); }); // deactivate HTML link return false; } } return true; } var loadingImage; function ngg_show_loading(obj) { loadingImage = jQuery(document.createElement("img")).attr("src", ngg_ajax.path + "images/ajax-loader.gif").attr("alt", ngg_ajax.loading); jQuery("body").append(loadingImage); jQuery(loadingImage).css({ position: "absolute", top: (obj.pageY + 15) + "px", left: (obj.pageX + 15) + "px" }); jQuery(document).mousemove(function(e) { loadingImage.css({ top: (e.pageY + 15) + "px", left: (e.pageX + 15) + "px" }); }); } function ngg_remove_loading() { jQuery(document).unbind("mousemove"); jQuery(loadingImage).remove(); }