+ var preload = document.getElementById("preload");
+ var dpr = find_dpr();
+ var img;
+ // See if we have a preload going on that we can reuse.
+ if (element_id == "image" && preload !== null && preload.src == url) {
+ rename_element("preload_box", "image_box");
+ img = rename_element("preload", "image");
+ } else {
+ img = replace_image_element(url, element_id, main);
+ }
+ img.style.position = "absolute";
+ img.style.left = "0px";
+ img.style.top = "0px";
+ img.style.transformOrigin = "top left";
+ img.style.transform = "scale(" + (1.0 / dpr) + ")";
+
+ // Infobox.
+ var url;
+ if (dpr == 1) {
+ url = window.location.origin + "/" + evt + "/" + width + "x" + height + "/box/" + filename;
+ } else {
+ url = window.location.origin + "/" + evt + "/" + width + "x" + height + "@" + dpr.toFixed(2) + "/box/" + filename;
+ }
+ var boximg = replace_image_element(url, element_id + "_box", main);
+
+ boximg.style.position = "absolute";
+ boximg.style.left = "0px";
+ boximg.style.bottom = "-1px";
+ boximg.style.transformOrigin = "bottom left";
+ boximg.style.transform = "scale(" + (1.0 / dpr) + ")";
+
+ return img;
+}
+
+function display_image_num(num, element_id)
+{
+ var screen_size = find_width();
+ var adjusted_size;
+
+ if (global_image_list[num][2] == -1) {
+ // no size information, use our pessimal guess
+ adjusted_size = max_image_size(screen_size);
+ } else {
+ adjusted_size = pick_image_size(screen_size, [ global_image_list[num][2], global_image_list[num][3] ]);
+ }
+
+ var img = display_image(adjusted_size[0], adjusted_size[1], global_image_list[num][0], global_image_list[num][1], element_id);
+
+ if (element_id == "image") {
+ // we want to shrink the box as much as possible if we know the true
+ // size of the image
+ center_image(num);
+
+ // replace the anchor part (if any) with the image number
+ window.location.hash = "#" + (num+1);
+ }