$(function() { // Вешаем обработчик на ссылки с нужным классом $('a.darkbox').click(function() { var link = $(this); if(!$('div.darkbox-frame').length) { // Если попап прежде не вызывался, // создаём его и цепляем к BODY darkbox = $('
').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 = $(''+ 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; }); });