Diggy's Adventure - Game in full window

Remove useless widgets/panels in Diggy's Adventure

// ==UserScript==
// @name         Diggy's Adventure - Game in full window
// @version      2.6
// @description  Remove useless widgets/panels in Diggy's Adventure
// @author       Vins
// @match        https://diggysadventure.com/miner/*
// @match        https://apps.facebook.com/diggysadventure/*
// @match        https://portal.pixelfederation.com/_da/miner/*
// @match        https://portal.pixelfederation.com/*/diggysadventure/*
// @grant        GM_setValue
// @grant        GM_getValue
// @namespace    https://greasyfork.org/users/98672
// ==/UserScript==
(function() {
    'use strict';
    var isFullwindow = true, miner, btn, refresh, onResize, iframe, originalHeight;
	isFullwindow = GM_getValue("DAfullwindow") !== "0";
    function forceResize() { window.dispatchEvent(new Event('resize')); }
    function getById(id) { return document.getElementById(id); }
    function iterate(el, fn) { if(el) if(typeof el.length == "number") { for(var i = el.length - 1; i >= 0; i--) { iterate(el[i], fn); } } else { fn(el); } }
    function hide(el) { if(el && el.style) { el.style.display = isFullwindow ? "none" : ""; } }

    miner = getById("miner");
    if(miner) { // inner IFRAME has a "miner" object
        originalHeight = miner.height;
        btn = document.createElement("button");
        Object.assign(btn, { innerText:"\u058e", title:"Toggle Fullwindow" });
        Object.assign(btn.style, { position:"fixed", top:(miner.offsetTop + 4) + "px", left:"4px", opacity:"0.5", backgroundColor:"#66f", color:"white", fontSize:"16pt", borderRadius:"6px", padding:"0px 2px", cursor:"pointer" });
        document.body.appendChild(btn);
        onResize = function() {
            btn.style.top = (miner.offsetTop + 4) + "px";
            miner.height = isFullwindow ? document.body.clientHeight : originalHeight;
            miner.width = isFullwindow ? document.body.clientWidth : "100%";
        };
        refresh = function() {
            GM_setValue("DAfullwindow", isFullwindow ? "1" : "0");
            // display news in a floating box
            iterate(document.getElementsByClassName("news"), function(el) { if(el && el.style) {
                var options = { position: "fixed", top: "0px", left: "64px", margin: "0px", padding: "0px" };
                for(var name in options) {
                    el.style[name] = isFullwindow ? options[name] : "";
                }
            } });
            iterate([document.getElementsByClassName("header-menu"), document.getElementsByClassName("cp_banner bottom_banner"), getById("bottom_news"), getById("footer"), getById("gems_banner")], hide);
            document.body.style.overflowY = isFullwindow ? "hidden" : "";
            Object.assign(btn.style, isFullwindow ? { backgroundColor:"white", color:"black", borderStyle:"inset" } : { backgroundColor:"#66f", color:"white", borderStyle:"outset" });
            var data = "fullwindow=" + (isFullwindow ? 1 : 0);
            try { window.parent.postMessage(data, "https://apps.facebook.com"); } catch(e) {}
            try { window.parent.postMessage(data, "https://portal.pixelfederation.com"); } catch(e) {}
            onResize();
        };
        btn.addEventListener("click", function() { isFullwindow = !isFullwindow; refresh(); });
        if(isFullwindow) { setTimeout(refresh, 5000); }
    }
    else if(getById("skrollr-body")) { // portal.pixelfederation
        onResize = function() { var t = document.getElementsByClassName("game-iframe game-iframe--da")[0]; if(t) t.style.height = isFullwindow ? window.innerHeight + "px" : ""; };
        refresh = function() {
            document.body.style.overflowY = isFullwindow ? "hidden" : "";  // remove vertical scrollbar
            iterate([getById("header"), getById("footer")], hide);
        };
    }
    else if(getById("pagelet_bluebar")) { // main document (Facebook)
        onResize = function() {
            var iframe = getById("iframe_canvas");
			if(originalHeight === undefined) originalHeight = iframe && iframe.style.height;
			if(iframe) iframe.style.height = isFullwindow ? window.innerHeight + "px" : originalHeight;
		};
        refresh = function(event) {
            document.body.style.overflowY = isFullwindow ? "hidden" : "";  // remove vertical scrollbar
            iterate([getById("rightCol"),getById("pagelet_bluebar"),getById("pagelet_dock")], hide);
        };
    }
    if(onResize) window.addEventListener("resize", onResize);
    if(refresh && !btn) window.addEventListener("message", function(event) {
        if((event.origin === "https://portal.pixelfederation.com" || event.origin === "https://diggysadventure.com") && event.data.substr(0, 11) === "fullwindow=") {
            isFullwindow = event.data.substr(11) === "1";
            refresh();
            onResize();
            setTimeout(forceResize, 2000);
        }
    });
})();