﻿mt = {};
mt.getHash = function () {
    // Don't use location.hash (this Firefox "bug": http://www.mikage.to/jquery/history/rbbs.cgi?id=RA12566692621191933021)
    if (location.hash == '')
        return '#';
    else {
        var hash = location.href.replace(/.*?#/, '#');
        return hash.replace(/\?.*$/, '');
    }
}
mt.urlEncode = function(v) {
    return encodeURIComponent(v).replace(/\%20/g, "+");
}
mt.urlDecode = function (v) {
    return decodeURIComponent(v.replace(/\+/g, " "));
}
mt.getHashArg = function (variable) {
    var vars = mt.getHash().substring(1).split("&");
    for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split("=");
        if (mt.urlDecode(pair[0]) == variable)
            return mt.urlDecode(pair[1]);
    }
    return "";
};

mt.setHashArg = function (variable, value) {
    var vars = mt.getHash().substring(1).split("&");
    var varSet = false;
    for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split("=");
        if (mt.urlDecode(pair[0]) == variable) {
            vars[i] = mt.urlEncode(pair[0]) + "=" + mt.urlEncode(value);
            varSet = true;
            break;
        }
    }
    var newHash = vars.join("&");
    if (!varSet)
        newHash += "&" + mt.urlEncode(variable) + "=" + mt.urlEncode(value);

    window.location.hash = newHash;
};

mt.setHashArgs = function (args) {
    var newHash = '';
    for (key in args) {
        newHash += "&" + mt.urlEncode(key) + "=" + mt.urlEncode(args[key]);
    }
    window.location.hash = newHash.substring(1);
};

