$(function()
{
	// Вешаем обработчик на ссылки с нужным классом
	$('a.darkbox').click(function() {
				
	var link = $(this);

	if(!$('div.darkbox-frame').length) {
		
		// Если попап прежде не вызывался,
		// создаём его и цепляем к BODY
		darkbox = $('<div class="darkbox-frame"><div class="darkbox-shadow"></div><div class="darkbox-canvas"><div class="darkbox-button"></div></div></div>').appendTo('body');
	}

	// Клонируем попап,
	// прицепляем клон к BODY и показываем его
	var frame = darkbox.clone().appendTo('body').addClass('darkbox-frame-on');

	var shadow = frame.find('div.darkbox-shadow').animate({opacity:0.6},300);
	var canvas = frame.find('div.darkbox-canvas');
	var button = frame.find('div.darkbox-button');

	// Цепляем к попапу картинку и ждём её загрузки
	var image = $('<img src="'+ link.attr('href') +'" alt="'+ link.attr('title') +'"/>');

	image.appendTo(canvas);
	image.load(function(){

		var imageWidth = image.width();
		var imageHeight = image.height();
		var frameWidth = frame.width()-40;
		var frameHeight = frame.height()-40;

		// Вписываем картинку в размер окна,
		// если она шире, чем окно
		if(imageWidth > frameWidth) {

			imageWidth = frameWidth;
			image.width(imageWidth);					
			while(image.height() > frameHeight) {
				image.width(imageWidth);
				imageWidth--;
			}

			imageHeight = image.height();
		}

		// Вписываем картинку в размер окна,
		// если она выше, чем окно
		if(imageHeight > frameHeight) {

			imageHeight = frameHeight;
			image.height(imageHeight);						
			while(image.width() > frameWidth) {
				image.height(imageHeight);
				imageHeight--;
			}

			imageWidth = image.width();
		}

		// Анимируем загрузчик до размеров картинки
		// и одновременно смещаем к центру
		canvas.addClass('darkbox-canvas-load').animate({

			width:imageWidth,
			marginLeft:-imageWidth/2,
			height:imageHeight,
			marginTop:-imageHeight/2

		},500,function() {

			// После завершения анимации показываем кнопку и картинку
			canvas.addClass('darkbox-canvas-done');
			button.addClass('darkbox-button-on');
			button.addClass(navigator.platform.toLowerCase().indexOf('mac')+1?'darkbox-button-left':'darkbox-button-right');

			image.animate({opacity:1},500,function() {

				// Вешаем обработчики закрытия
				shadow.click(closer);
				button.click(closer);

			});
		});
	});

	// Функция закрытия попапа
	var closer = function() {

		canvas.remove();
		shadow.animate({opacity:0},300,function() {
			frame.remove();
		});
	}

	// Внимательно слушаем клавишу Esc
	$(document).keydown(function(e) {
		if(e.which==27) closer();
	});

	return false;
});

});