function print_r(obj) {
	for(var name in obj) {
		alert(name + " => " + obj[name]);
	}
}

//http://www.mattfarina.com/2007/02/01/preloading_images_with_jquery
jQuery.preloadImages = function() {
	for(var i = 0; i<arguments.length; i++) {
		jQuery("<img>").attr("src", arguments[i]);
	}
};

$(document).ready(function() {
	$(".cgallery").each(function() {
		var o = jQuery.fn.CGallery;
		o.cObj = this;
		o.init();
		$(this).data("obj", o);
	});
});


//Let's roll it into a jQuery plugin!  Just for kicks (and it already super depends on jQuery)

jQuery.fn.CGallery={
	
	cObj: null,
	img_count: null,
	
	DoNav: function DoNav(n, o) {
		var p, c, max, tn;
		p = $(o).parent().parent();
		c = $(p).data("img");
		max = $(p).data("img_count");
		if(n == -1) {
			tn = c - 5;
		}
		else {
			if(n < 0) n = 0;
			tn = (n+c+4);
		}
		if(tn < 0) tn = 0;
		return $(p).data("obj").ShowThumbAtLeft(tn);
	},
	
	ShowScreen: function(screen) {
		var min = screen*5;
		var max = min + 5;
		ShowImageThumbRange(min, max);
	},
	
	ShowImageThumbRange: function (min, max) {
		//$(obj).siblings(".cgallery_container").text("1-5 of 15");
		var obj = this.cObj;
		var smax = (max+1);
		var total = $(obj).data("img_count");
		if(smax > total) smax = total;
		$(obj).data("img", min);
		$(obj).siblings(".cgallery_imgcnt").hide().text((min+1) + "-" + smax + " of " + total).fadeIn(500);
		$(obj).children("li").show();
		$(obj).children("li[class!='cgallery_ignore'][class!=cgallery_nav]:lt("+min+"), li[class!=cgallery_nav]:gt("+max+")").hide();
	},
	
	ShowThumbAtLeft: function(img) {
		var c = this.img_count;
		if(img+4 > c) img = c-4;
		var m = c - (c%5);
		if(img+1 >= m) img = m-1;
		this.ShowImageThumbRange(img, img+4);
	},
	
	ShowImageThumb: function(img) {
		var min = img-2;
		var max = img+2;
		var truemax = $(this.cObj).data("img_count");
		if(min < 0) {
			max += -min;
			min = 0;
		}
		if(min < 5) {
			min = 0;
			max = min + 4;
		} 
		if(max > truemax) {
			max = truemax;
			min = max-5;
		}
		this.ShowImageThumbRange(min, max);
	},
	
	//window.location.hash);
	// loop over matched elements
	init: function() {
		$(this.cObj).data("img", 0);
		$(this.cObj).wrap('<div class="cgallery_wrapper"></div>');
		var tmp = $("<div></div>");
		$(tmp).addClass("cgallery_container").prependTo($(this.cObj).parent());
		var tmp2 = $("<div></div>");
		$(tmp2).addClass("cgallery_description");
		$(tmp).after(tmp2)
		$(this.cObj).after('<div class="cgallery_imgcnt"></div>');
		var lis = $(this.cObj).children("li[class!='cgallery_ignore'][class!=cgallery_nav]").fadeTo(1, .5);
		$(this.cObj).data("img_count", lis.length);	//$(this.cObj).wrap('<div class="cgallery_ulwrapper"></div>');
		this.img_count = lis.length;
		var t = 5-(lis.length%5);
		$(this.cObj).prepend('<li class="cgallery_nav"><a href="#" onclick="jQuery.fn.CGallery.DoNav(-1, this); return false">Previous</a></li>');
		for(var i = 0; i < t; ++i) {
			$(this.cObj).append('<li class="cgallery_ignore"></li>');
		}
		$(this.cObj).append('<li class="cgallery_nav"><a href="#" onclick="jQuery.fn.CGallery.DoNav(1, this); return false">Next</a></li>');
		var offset = 0;
		if(window.location.hash.length > 0) {
			var hash = window.location.hash;
			hash = hash.replace("#", "");
			//store a reference to lis and fade them all
			if(hash.length > 0) {
				var url = hash;
				$(this.cObj).siblings(".cgallery_container").hide().css("background-image", "url("+url+")").attr("src", url).fadeIn(600);
				tmp = $(lis).children("img");
				for(i = 0; i < tmp.length; ++i) {
					if($(tmp[i]).attr("src") == hash) {
						tmp2 = $(tmp[i]).parent();
						//$(tmp2).fadeTo(250, 1);
						$(tmp2).fadeTo(250, 1);
						$(tmp2).parent().siblings(".cgallery_description").text($(tmp[i]).attr("title"));
						this.ShowImageThumb(i);
						break;
					}
				}
			}
			else {
				//this.ShowImageThumb(0);
				this.ShowImage(0);
			}
		}
		else {
			//this.ShowImageThumb(0);
			this.ShowImage(0);
		}
		$(lis).hover(function() {
			$(this).fadeTo(250, 1);
		},
		function() {
			if($(this).children("img").attr("src") != $(this).parent().parent().children(".cgallery_container").attr("src"))
				$(this).fadeTo(1, .5);
		}).click(function() {
			var childimg = $(this).children("img:first");
			var url = childimg.attr("src");
			var p1 = $(this).parent();
			$(p1).siblings(".cgallery_description").hide().text($(childimg).attr("title")).fadeIn(500);
			$(p1).children("li").children("img[src!='"+url+"']").parent().fadeTo(250, .5);
			var p = $(this).parent().parent();
			$(p).children(".cgallery_container").hide().css("background-image", "url("+url+")").attr("src", url).fadeIn(1000);
			window.location.hash = "#" + url;
		});
	},
	
	ShowImage: function(img_num) {
		//var url = "/images/gallery/thickbox/lotus/01.jpg";
		var tObj = $(this.cObj).children("li[class!='cgallery_nav']:eq("+img_num+")").children("img");
		var url = $(tObj).attr("src");
		$(this.cObj).siblings(".cgallery_container").hide().css("background-image", "url("+url+")").fadeIn(600);
		var childimg = tObj;
		$(this.cObj).siblings(".cgallery_description").hide().text($(childimg).attr("title")).fadeIn(500);
		$(this.cObj).children("li").children("img[src='"+url+"']").parent().fadeTo(250, 1);
		this.ShowImageThumb(img_num);
		//$(this.cObj).children("li").children("img[src!='"+url+"']").parent().fadeTo(250, .5);
		//var p = $(this).parent().parent();
		//$(p).children(".cgallery_container").hide().css("background-image", "url("+url+")").attr("src", url).fadeIn(1000);
		//window.location.hash = "#" + url;
		return this;
	}
	
};
