var cancleLightboxClick = false;
var overlay = $(jQuery('<div id="overlay" style="display: none"></div>'));
var container = $(jQuery('<div id="lightbox" style="display: none"></div>'));
var target = $(jQuery('<div class="target"></div>'));
var head = $(jQuery("<h2></h2>"));
var closeButton = $(jQuery('<div class="close"><a href="#close"><img src="/gfx/close_lightbox.gif" alt=""></a></div>'));
var prev = $(jQuery('<a href="#prev" class="prev"><img src="/gfx/left.gif" alt=""></a>'));
var next = $(jQuery('<a href="#next" class="next"><img src="/gfx/right.gif" alt=""></a>'));
var lightBoxOn = false;
var listlinks;
var linkspopup;
	
function lightbox() {
	//linkspopup = $('a[target^=popuplink]');
	
	$('body').append(overlay).append(container);
	
	overlay.css('width', $(window).width());
	overlay.css('height', $(document.body).height());
	
	container.append(closeButton);
	container.append(target);
	container.append(head);
	container.append(prev);
	container.append(next);
	
	container.show().css({
				'top': Math.round(($(window).height() - container.outerHeight()) / 2) + 'px',
				'left': Math.round(($(window).width() - container.outerWidth()) / 2) + 'px',
				'marginTop': 0,
				'marginLeft': 0
				}).hide();
	
	closeButton.click(function(c) {
		c.preventDefault();
		closeLightbox();
	});
	overlay.click(function() {
		closeLightbox();
	})
	
	prev.add(next).click(function(c) {
		c.preventDefault();
		
		var current = parseInt(listlinks.filter('.selected').attr('lb-position'),10);
		var to = $(this).is('.prev') ? listlinks.eq(current - 1) : listlinks.eq(current + 1);
		if(!to.size()) {
			to = $(this).is('.prev') ? listlinks.eq(listlinks.size() - 1) : listlinks.eq(0);
		}
		if(to.size()) {
			to.click();
		}
	});
	
	
	$(document).keyup(function(evt) {
		if (evt.keyCode == '27') {
			closeLightbox();
		}
		if(lightBoxOn) {
			if (evt.keyCode == 37) {
				prev.click();
			}
			if (evt.keyCode == 39) {
				next.click();
			}
		}
	});
}

function closeLightbox() {
	lightBoxOn = false;
	overlay.add(container).fadeOut('normal');
}
function openImage(url, t) {
	prev.hide();
	next.hide();

	if(container.is(':visible')) {
			target.children().fadeOut('normal', function() {
			target.children().remove();
			loadimage(url, t);
		});
	} else {
		
		target.children().remove();
		overlay.add(container).fadeIn('normal',function(){
			loadimage(url, t);
		});
	}
}


function loadpage(u, t) {
	if(container.is('.loading')) { return; }
	container.addClass('loading');
	lightBoxOn = true;
	
	$.get(u, function(data) {
		
		head.text(t);
		wdh = 800;
		hgt = 650;
		_top = Math.round(($(window).height() - hgt - 75 - parseInt(container.css('padding-top'),10) - parseInt(container.css('padding-bottom'),10)) / 2) + $(window).scrollTop();
		
		container.animate({'width': wdh,'height': hgt + 50, 'top': _top + 'px', 'left': Math.round(($(document).width() - wdh - parseInt(container.css('padding-left'),10) - parseInt(container.css('padding-right'),10)) / 2) + 'px'},'normal', function(){
			
			target.html($("#popinfo", data).html());
			container.removeClass('loading');
		});
	});
	
}
function openlink(url, t) {
	
	prev.hide();
	next.hide();
	
	if(container.is(':visible')) {
		target.children().fadeOut('normal', function() {
			target.children().remove();
			loadpage(url, t);
		});
	} else {
		
		target.children().remove();
		overlay.add(container).fadeIn('normal',function(){
			loadpage(url, t);
		});
	}
}

function loadimage(url, t) {
	if(container.is('.loading')) { return; }
	container.addClass('loading');
	lightBoxOn = true;
	var img = new Image();
	img.onload = function() {
		img.style.display = 'none';
		
		var maxWidth = ($(window).width() - parseInt(container.css('padding-left'),10) - parseInt(container.css('padding-right'), 10)) - 100;
		var maxHeight = ($(window).height() - parseInt(container.css('padding-top'),10) - parseInt(container.css('padding-bottom'), 10)) - 150;
		if(img.width > maxWidth || img.height > maxHeight) { // One of these is larger than the window
			var ratio = img.width / img.height;
			if(img.height >= maxHeight) {
				img.height = maxHeight;
				img.width = maxHeight * ratio;
			} else {
				img.width = maxWidth;
				img.height = maxWidth * ratio;
			}
		}
		
		head.text(t);
		
		_top = Math.round(($(window).height() - img.height - 75 - parseInt(container.css('padding-top'),10) - parseInt(container.css('padding-bottom'),10)) / 2) + $(window).scrollTop();
		container.animate({'width': img.width,'height': img.height+50, 'top': _top + 'px', 'left': Math.round(($(document).width() - img.width - parseInt(container.css('padding-left'),10) - parseInt(container.css('padding-right'),10)) / 2) + 'px'},'normal', function(){
			target.append(img);
			$(img).fadeIn('normal', function() {
				prev.show();
				next.show();
				container.removeClass('loading');
			});
		})
	}
	img.src = url;
}
function initlinks () {
	listlinks = $('a[target^=popup]');
	listlinks.each(function(index) {
		var l = $(this);
		l.attr("lb-position", index);
		
	});
}
$(document).ready(function() {
	lightbox();
	initlinks();
	
	$('a[target^=popuplink]').live("click", function(c) {
		var l = $(this);
		c.preventDefault();
		openlink(l.attr('href'), l.attr('title'));
	});
	var listlinks = $('a[target^=popup]');
	$('a[target^=popup]').live("click", function(c) {
		var l = $(this);
		c.preventDefault();
		openImage(l.attr('href'), l.attr('title'));
		listlinks.filter('.selected').removeClass('selected');
		l.addClass('selected');
	});
	
});
