
var infiniseLightbox = {
	
	currentEl: null,
	container: null,
	
	init: function(sel)
	{
		$(function()
		{
			$("body").prepend("<div id='infiniseLightboxContainer'>"
			+"<a id='infiniseLightboxClose' title='Close'>&times</a>"
			+"<a id='infiniseLightboxPrev' title='Previous'>&lsaquo;</a>"
			+"<a id='infiniseLightboxNext' title='Next'>&rsaquo;</a>"
			+"<h3></h3><img/><p></p></div>");
		
			infiniseLightbox.container = $("#infiniseLightboxContainer");
			
			$("#infiniseLightboxContainer").click(function(e){
				if (e.target.id == "infiniseLightboxContainer") infiniseLightbox.close();
			});
			$("#infiniseLightboxClose").click(function(){ infiniseLightbox.close() });
			$("#infiniseLightboxContainer img").click(function(){ infiniseLightbox.close() });
			$("#infiniseLightboxPrev").click(function(){ infiniseLightbox.prev() });
			$("#infiniseLightboxNext").click(function(){ infiniseLightbox.next() });
		})
		
		$(sel).live("click", function(e) {
			e.preventDefault();
			infiniseLightbox.open(this);
		});
		
		$(document).keydown(function(e) {
			if (e.keyCode == 37) infiniseLightbox.prev();
			if (e.keyCode == 39) infiniseLightbox.next();
			if (e.keyCode == 27) infiniseLightbox.close();
		});
	},
	
	open: function(a)
	{
		this.container.find("img").removeAttr("src").hide();
		this.container.find("p").hide();
		this.container.find("h3").hide();
		this.container.fadeIn(500);
		
		this._displayImage(a);
	},
	
	_displayImage: function(a)
	{
		this.currentEl = a;
		
		image = this.container.find("img")[0];
		$(image).attr({"width": null, "height": null});
		image.src = a.href;
				
		image.onload = function()
		{
			var maxHeight = window.innerHeight - 200;
			var maxWidth = window.innerWidth - 150;
			var scale = Math.min(maxHeight/image.height, maxWidth/image.width, 1);
			
			image.width *= scale;
			image.height *= scale;
			
			$(image)
			.css({"marginTop": image.height/-2, "marginLeft": image.width/-2})
			.fadeIn(500);
			
			infiniseLightbox.container.find("h3")
			.html($(a).attr("title"))
			.fadeIn(500);
			
			infiniseLightbox.container.find("p")
			.html("")
			.append($(a).parent().find("span").clone())
			.fadeIn(500);
		}		
	},
	
	close: function()
	{
		if (!this.currentEl) return;
		
		this.currentEl = null;
		this.container.fadeOut(500);
	},
	
	next: function()
	{
		if (!this.currentEl) return;
		
		var newEl = $(this.currentEl).parent().next().find("a");
		if (!newEl.length) return;
		
		this.container.find("h3").fadeOut(500);
		this.container.find("p").fadeOut(500);
		this.container.find("img").fadeOut(500, function(){
			infiniseLightbox._displayImage(newEl[0]);
		});
	},
	
	prev: function()
	{
		if (!this.currentEl) return;
		
		var newEl = $(this.currentEl).parent().prev().find("a");
		if (!newEl.length) return;
		
		this.container.find("h3").fadeOut(500);
		this.container.find("p").fadeOut(500);
		this.container.find("img").fadeOut(500, function(){
			infiniseLightbox._displayImage(newEl[0]);
		});
	}
}



