+ Rakka.setHashedParam = function (key, value) {
+ var diff = {};
+ diff[key] = value;
+ Rakka.setHashedParams(diff);
+ };
+
+ Rakka.setHashedParams = function (diff) {
+ var orig = getHashedParamMap();
+ var next = {};
+
+ // Copy 'orig' to 'next'.
+ $.each(orig, function (key, val) {
+ next[key] = val;
+ });
+
+ // Overwrite the content of 'next' with 'diff'.
+ $.each(diff, function (key, val) {
+
+ if (!key.match(re_key)) {
+ throw new Error("Invalid key: " + key);
+ }
+ if (!val.match(re_value)) {
+ throw new Error("Invalid value: " + val);
+ }
+
+ if (diff[key] == null) {
+ delete next[key];
+ }
+ else {
+ next[key] = val;
+ }
+ });
+
+ setHashedParamMap(next);