summaryrefslogtreecommitdiff
path: root/core/js/fullsize.js
blob: 91e4352901cd997b808da4a7199e0c51b0ed766e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
$(document).ready(function() {
  $("#gFullsizeLink").click(function() {
    var width = $(document).width();
    var height = $(document).height();

    $("body").append('<div id="gFullsizeOverlay" class="ui-dialog-overlay" ' +
		     'style="border-width: 0px; margin: 0px; padding: 0px; background: black ' +
		     'none repeat scroll 0% 0%; position: absolute; top: 0px; left: 0px; ' +
		     'width: ' + width + 'px; height: ' + height + 'px; opacity: 0.7; '  +
		     '-moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; ' +
		     '-moz-background-inline-policy: -moz-initial; z-index: 1001;"> </div>');

    var image_size = _auto_fit(fullsize_detail.width, fullsize_detail.height);

    $("body").append("<div id='gFullsize' class='ui-dialog ui-widget' " +
		     "style='overflow: hidden; display: block; " +
		     "position: absolute; z-index: 1002; outline-color: -moz-use-text-color; " +
		     "outline-style: none; outline-width: 0px; " +
		     "height: " + image_size.height + "px; " +
		     "width: " + image_size.width + "px; " +
		     "top: " + image_size.top + "px; left: " + image_size.left + "px;'>" +
		     "<img id='gFullSizeImage' src='" + fullsize_detail.url + "'" +
		     "height='" + image_size.height + "' width='" + image_size.width + "'/></div");

    $("#gFullsize").append("<div id='gFullsizeClose' style='z-index: 1003; position: absolute; right: 1em; top: 1em;'><img src='" + fullsize_detail.close + "' /></div>");
    $("#gFullsizeClose").click(function() {
      $("#gFullsizeOverlay*").remove();
      $("#gFullsize").remove();
    });
  });
});

/*
 * Calculate the size of the image panel based on the size of the image and the size of the
 * window.  Scale the image so the entire panel fits in the view port.
 */
function _auto_fit(imageWidth, imageHeight) {
  // ui-dialog gives a padding of 2 pixels
  var windowWidth = $(window).width() - 10;
  var windowHeight = $(window).height() - 10;

  /* If the width is greater then scale the image width first */
  if (imageWidth > windowWidth) {
    var ratio = windowWidth / imageWidth;
    imageWidth *= ratio;
    imageHeight *= ratio;
  }
  /* after scaling the width, check that the height fits */
  if (imageHeight > windowHeight) {
    var ratio = windowHeight / imageHeight;
    imageWidth *= ratio;
    imageHeight *= ratio;
  }

  return {top: (windowHeight - imageHeight) / 2, left: (windowWidth - imageWidth) / 2,
	  width: imageWidth, height: imageHeight};
}