(function () { function game_over() { setTimeout(function () { location.reload(true); }, 2000); $DOC.children().remove(); } function shut_down_everything() { var $threads = $('section'); if (!$threads.length) return setTimeout(game_over, 1000); pick_random($threads, 0.2).remove(); pick_random($('hr, aside, h1, fieldset'), 0.2).remove(); setTimeout(shut_down_everything, 500); } function shut_down_something() { var $posts = $('article'); if (!$posts.length) return setTimeout(shut_down_everything, 500); var $posts = pick_random($posts, 0.1); $posts.each(function () { var $post = $(this); var $section = $post.closest('section'); try { var thread = Threads.get(extract_num($section)); var replies = thread.get('replies'); var num = extract_num($post); clear_post_links(replies.get(num), replies); } catch (e) {} }); $posts.remove(); if (Math.random() < 0.2) pick_random($('figure, blockquote, b'), 0.002).remove(); setTimeout(shut_down_something, 500); } var tearingDown = false; dispatcher[TEARDOWN] = function () { if (tearingDown) return; tearingDown = true; window.onbeforeunload = null; shut_down_something(); }; function pick_random($items, proportion) { var len = $items.length; var origLen = len; var toDelete = Math.max(1, Math.min(len, Math.ceil(len * proportion))); var $picked = $(); for (; len > 0 && toDelete > 0; toDelete--) { var i = Math.floor(Math.random() * len); $picked = $picked.add($items[i]); $items.splice(i, 1); len = $items.length; } return $picked; } })();