/* Feature Detectors */

/* Valid values for ${type}: localstorage, sessionstorage */
async function storageAvailable(type) {  // Currently not used
    try {
        let storage = window[type];
        let x = '__storage_test__';
        storage.setItem(x, "test");
        storage.getItem(x);
        storage.removeItem(x);
        log(`lib.main.storageAvailable: ${type} is available`, "INFO")
        return true;
    } catch (err) {
        log(`lib.main.storageAvailable: ${type} is not available`, "ERR")
        return false;
    }
}

/* Array Converter
   Converts a string to a single item array */
async function makeArray(data) {
    if (!Array.isArray(data)) {
        var array = [];
        array.push(data);
        return array;
    }
    return data;
}

/* Timeouts */
/* Usage: '' */
const delay = ms => new Promise(res => setTimeout(res, ms));


/* Log Helper */
/* Values for level: 1, 2, 3 */
/* Maintains backwards compatibility for previous
   implementation of log helper */
async function log(msg, type) {
    var time = new Date().toISOString();
    switch (type) {
        case "ERR":
            console.error(`${time} - ${msg}`);
            break;
        case "WARN":
            console.warn(`${time} - ${msg}`);
            break;
        case "INFO":
            console.info(`${time} - ${msg}`);
            break;
        default:
            console.log(`${time} - ${msg}`);
            break;
    };
};

/* Show/Hide - Menu Control */
async function sidebarOpen() {
    document.getElementById("sidebar").style.width = "50%";
    document.getElementById("sidebar_open_short").style.display = "none";
    document.getElementById("sidebar_close_short").style.display = "block";
  }
  
  async function sidebarClose() {
    document.getElementById("sidebar").style.width = "0%"
    document.getElementById("sidebar_open_short").style.display = "block";
    document.getElementById("sidebar_close_short").style.display = "none";
  }

/* Loading Box Control */
async function hideLoading() {
    document.getElementById("loading").style = "display: none;";
}

    /* DEPRECIATED: Alias for hideLoading() - Marked for removal*/
    async function clearLoading() {
        log("Depreciated function called - clearLoading() - Alias to hideLoading()", "WARN")
        await hideLoading();
    }

async function showLoading() {
    document.getElementById("loading").style = "display: block;";
}

async function setLoadingDesc(desc) {
    document.getElementById("loading_desc").textContent = `${desc}`;
}

/* Fetch User Settings */
async function getQuickLinks() {
    var defaults =
                ["bri","lwh","srd","mtp","rda","cfn",
                "sml","shh","pri","avn","sar","svb"];
    try {
        if (localStorage.getItem("qlOpt")) {
            var data = JSON.parse(localStorage.getItem("qlOpt"));
        } else {
            data = defaults;
        }
    } catch (err) {
        data = defaults;
    }
    return data;
}

/* Fetch a known query parameter from the pages URL */
async function getQuery(param) {
    var params = new URLSearchParams(window.location.search)
    var query = params.get(param)
    if (query) {
        return query
    } else {
        return 'false'
    }
}