+
+function toggle_immersive() {
+ if (global_default_opacity == 0.7) {
+ global_disabled_opacity = 0.0;
+ global_default_opacity = 0.0;
+ global_highlight_opacity = 0.2;
+ global_infobox = false;
+ document.getElementById('immersivetoggle').innerHTML = 'Show decorations';
+ } else {
+ global_disabled_opacity = 0.1;
+ global_default_opacity = 0.7;
+ global_highlight_opacity = 1.0;
+ global_infobox = true;
+ document.getElementById('immersivetoggle').innerHTML = 'Hide all decorations';
+ }
+ relayout();
+}
+window['toggle_immersive'] = toggle_immersive;
+
+var swiping = false;
+var swipe_start_x = 0;
+
+function set_swipe_pos(x, transition)
+{
+ x = Math.max(x, -window.innerWidth);
+ x = Math.min(x, window.innerWidth);
+ if (!can_go_previous()) {
+ x = Math.min(x, window.innerWidth / 8);
+ }
+ if (!can_go_next()) {
+ x = Math.max(x, -window.innerWidth / 8);
+ }
+
+ var dpr = find_dpr();
+ var main = document.getElementById("main");
+ var children = main.children;
+ var to_remove = [];
+ for (var i = 0; i < children.length; i++) {
+ var child = children[i];
+ if (child.className === "fsimg") {
+ var inum = parseInt(child.id);
+ var offset = inum - global_image_num;
+ child.style.transition = transition;
+ child.style.transform = "translate(" + (x + find_width()[0] * offset / dpr) + "px,0px)";
+ } else if (child.className === "fsbox") {
+ var inum = parseInt(child.id.replace("_box", ""));
+ var offset = inum - global_image_num;
+ child.style.transition = transition;
+ child.style.transform = "translate(" + (x + find_width()[0] * offset / dpr) + "px,0px)";
+ }
+ }
+}
+
+function start_swipe(e)
+{
+ swiping = true;
+ swipe_start_x = e.changedTouches[0].pageX;
+}
+
+function end_swipe(e)
+{
+ if (swiping) {
+ var new_x = (e.changedTouches[0].pageX - swipe_start_x);
+ if (new_x < -window.innerWidth / 4 && can_go_next()) {
+ set_swipe_pos(-window.innerWidth, "transform 0.1s ease-out");
+ setTimeout(function() { go_next(); }, 100);
+ } else if (new_x > window.innerWidth / 4 && can_go_previous()) {
+ set_swipe_pos(window.innerWidth, "transform 0.1s ease-out");
+ setTimeout(function() { go_previous(); }, 100);
+ } else {
+ set_swipe_pos(0, "transform 0.1s ease-out");
+ }
+ swiping = false;
+ }
+}
+
+function swipe(e)
+{
+ if (swiping) {
+ var new_x = (e.changedTouches[0].pageX - swipe_start_x);
+ set_swipe_pos(new_x, null);
+ }
+}
+
+window.onload = function() {
+ relayout();
+ setInterval(check_for_hash_change, 1000);
+
+ document.addEventListener('touchstart', start_swipe, false);
+ document.addEventListener('touchend', end_swipe, false);
+ document.addEventListener('touchmove', swipe, false)
+
+ var body = document.body;
+ body.onresize = function() { relayout(); };
+ body.onkeydown = function(evt) { key_down(evt.keyCode); };
+ body.onkeyup = function(evt) { key_up(evt.keyCode); };
+ body.onhashchange = function() { check_for_hash_change(); };
+ body.onclick = function() { check_for_hash_change(); };
+
+ var previous = document.getElementById('previous');
+ previous.onmousedown = function() { if (can_go_previous()) { set_opacity('previous', global_highlight_opacity); } };
+ previous.onmouseup = function() { if (can_go_previous()) { set_opacity('previous', global_default_opacity); go_previous(); } };
+ previous.onmouseout = function() { if (can_go_previous()) { set_opacity('previous', global_default_opacity); } };
+
+ var next = document.getElementById('next');
+ next.onmousedown = function() { if (can_go_next()) { set_opacity('next', global_highlight_opacity); } };
+ next.onmouseup = function() { if (can_go_next()) { set_opacity('next', global_default_opacity); go_next(); } };
+ next.onmouseout = function() { if (can_go_next()) { set_opacity('next', global_default_opacity); } };
+
+ var close = document.getElementById('close');
+ close.onmousedown = function() { set_opacity('close', global_highlight_opacity); };
+ close.onmouseup = function() { set_opacity('close', global_default_opacity); do_close(); };
+ close.onmouseout = function() { set_opacity('close', global_default_opacity); };
+
+ var options = document.getElementById('options');
+ options.onmousedown = function() { set_opacity('options', global_highlight_opacity); };
+ options.onmouseup = function() { set_opacity('options', global_default_opacity); toggle_optionmenu(); };
+ options.onmouseout = function() { set_opacity('options', global_default_opacity); };
+};
+
+})();