(function ($) { // v0.17 var d, w, b, iw, ih, ww, wh, dh, idd = 'imageDialog', ido = idd + 'Overlay', idl = idd + 'Loading', idt = idd + 'Title', th = 14, // title height p = 30, // padding dc = '#fff', // dialog colour lc = "#444 ", // layover colour zi = 10000, fullImageUrl, imageTitle, aspectRatio, scaledImageWidth, scaledImageHeight, posLeft, posTop, timeout, defaultCSS = {position: 'absolute', display: 'none', top: '0', left: '0'}, loadingIndicator, overlayDiv, dialogDiv, dialogImg; function hideDialog() { dialogDiv.remove(); overlayDiv.remove(); loadingIndicator.remove(); } function posOverlay() { overlayDiv.width(ww).height(dh); } function posLoading() { posLeft = ((ww / 2) - (loadingIndicator.width() / 2)); posTop = ((wh / 2) - (loadingIndicator.height() / 2) + d.scrollTop()); loadingIndicator.css({left: posLeft, top: posTop}); } function posDialog() { aspectRatio = Math.min(((iw > ww - p) ? ((ww - p) / (iw + p)) : 1), ((ih > wh - p) ? ((wh - p) / (ih + p)) : 1)); scaledImageWidth = iw * aspectRatio; scaledImageHeight = ih * aspectRatio; dialogImg.animate({width: scaledImageWidth, height: scaledImageHeight}, 300); posLeft = ((ww / 2) - ((scaledImageWidth + (p / 2)) / 2)); posTop = ((wh / 2) - ((scaledImageHeight + (p / 2)) / 2) + d.scrollTop()); if ($('#' + idt).length > 0) { posTop -= th / 2; } dialogDiv.animate({left: posLeft, top: posTop}, 200); } function posReset() { posOverlay(); posDialog(); } function addOverlay() { overlayDiv = $('
') .attr('id', ido) .css(defaultCSS) .css({'z-index': zi, 'background-color': lc}); overlayDiv.on("click", hideDialog); b.append(overlayDiv); overlayDiv.fadeTo(1, 0); posOverlay(); overlayDiv.fadeTo(300, 0.8); } function addLoading() { loadingIndicator = $('