/* Javascript */
function pathJoin(parts, sep) {
    var separator = sep || '/';
    var replace = new RegExp(separator + '{1,}', 'g');
    return parts.join(separator).replace(replace, separator);
}

function getQueryString(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    var r = decodeURI(window.location.search).substr(1).match(reg);
    if (r != null) return r[2].replace(/\+/g, ' ');
    return null;
}


function newWebsocket(pathname, opts) {
    var wsProtocol = location.protocol == "https:" ? "wss" : "ws";
    var ws = new WebSocket(wsProtocol + "://" + location.host + pathname);
    opts = opts || {};
    ws.onopen = opts.onopen || function(evt) {
        console.log("WS OPEN", pathname);
    }
    ws.onclose = opts.onclose || function(evt) {
        console.log("CLOSE");
        ws = null;
    }
    ws.onmessage = opts.onmessage || function(evt) {
        console.log("response:" + evt.data);
    }
    ws.onerror = function(evt) {
        console.error("error:", evt.data);
    }
    return ws;
}

function formatBytes(value) {
    var bytes = parseFloat(value);
    if (bytes < 0) return "-";
    else if (bytes < 1024) return bytes + " B";
    else if (bytes < 1048576) return (bytes / 1024).toFixed(0) + " KB";
    else if (bytes < 1073741824) return (bytes / 1048576).toFixed(1) + " MB";
    else return (bytes / 1073741824).toFixed(1) + " GB";
}

$(function(){
    $(".tooltip-wraper").tooltip();
})