--- a/includes/clientside/static/json.js Sun Mar 28 21:49:26 2010 -0400
+++ b/includes/clientside/static/json.js Sun Mar 28 23:10:46 2010 -0400
@@ -1,182 +1,182 @@
/*
- json.js
- 2007-03-20
+ json.js
+ 2007-03-20
- All of the code contained within this file is released into
- the public domain. Optionally, you may distribute this code
- under the terms of the GNU General Public License as well
- (public domain licensing allows this).
-
+ All of the code contained within this file is released into
+ the public domain. Optionally, you may distribute this code
+ under the terms of the GNU General Public License as well
+ (public domain licensing allows this).
+
*/
function toJSONString(input)
{
- if ( window.JSON )
- {
- return window.JSON.stringify(input);
- }
- var m = {
- '\b': '\\b',
- '\t': '\\t',
- '\n': '\\n',
- '\f': '\\f',
- '\r': '\\r',
- '"' : '\\"',
- '\\': '\\\\'
- };
- var t = typeof(input);
- switch(t)
- {
- case 'string':
- if (/["\\\x00-\x1f]/.test(input))
- {
- return '"' + input.replace(/([\x00-\x1f\\"])/g, function(a, b)
- {
- var c = m[b];
- if (c) {
- return c;
- }
- c = b.charCodeAt();
- return '\\u00' +
- Math.floor(c / 16).toString(16) +
- (c % 16).toString(16);
- }) + '"';
- }
- return '"' + input + '"';
- break;
- case 'array':
- var a = ['['],
- b,
- i,
- l = input.length,
- v;
+ if ( window.JSON )
+ {
+ return window.JSON.stringify(input);
+ }
+ var m = {
+ '\b': '\\b',
+ '\t': '\\t',
+ '\n': '\\n',
+ '\f': '\\f',
+ '\r': '\\r',
+ '"' : '\\"',
+ '\\': '\\\\'
+ };
+ var t = typeof(input);
+ switch(t)
+ {
+ case 'string':
+ if (/["\\\x00-\x1f]/.test(input))
+ {
+ return '"' + input.replace(/([\x00-\x1f\\"])/g, function(a, b)
+ {
+ var c = m[b];
+ if (c) {
+ return c;
+ }
+ c = b.charCodeAt();
+ return '\\u00' +
+ Math.floor(c / 16).toString(16) +
+ (c % 16).toString(16);
+ }) + '"';
+ }
+ return '"' + input + '"';
+ break;
+ case 'array':
+ var a = ['['],
+ b,
+ i,
+ l = input.length,
+ v;
- var p = function (s) {
+ var p = function (s) {
- if (b) {
- a.push(',');
- }
- a.push(s);
- b = true;
- }
+ if (b) {
+ a.push(',');
+ }
+ a.push(s);
+ b = true;
+ }
- for (i = 0; i < l; i += 1) {
- v = input[i];
- switch (typeof v) {
- case 'object':
- if (v) {
- p(toJSONString(v));
- } else {
- p("null");
- }
- break;
- case 'array':
- case 'string':
- case 'number':
- case 'boolean':
- p(toJSONString(v));
- }
- }
+ for (i = 0; i < l; i += 1) {
+ v = input[i];
+ switch (typeof v) {
+ case 'object':
+ if (v) {
+ p(toJSONString(v));
+ } else {
+ p("null");
+ }
+ break;
+ case 'array':
+ case 'string':
+ case 'number':
+ case 'boolean':
+ p(toJSONString(v));
+ }
+ }
- a.push(']');
- return a.join('');
- break;
- case 'date':
- var f = function (n)
- {
- return n < 10 ? '0' + n : n;
- }
- return '"' + input.getFullYear() + '-' +
- f(input.getMonth() + 1) + '-' +
- f(input.getDate()) + 'T' +
- f(input.getHours()) + ':' +
- f(input.getMinutes()) + ':' +
- f(input.getSeconds()) + '"';
-
- case 'boolean':
- return String(input);
- break;
- case 'number':
- return isFinite(input) ? String(input) : "null";
- break;
- case 'object':
- var a = ['{'],
- b,
- k,
- v;
+ a.push(']');
+ return a.join('');
+ break;
+ case 'date':
+ var f = function (n)
+ {
+ return n < 10 ? '0' + n : n;
+ }
+ return '"' + input.getFullYear() + '-' +
+ f(input.getMonth() + 1) + '-' +
+ f(input.getDate()) + 'T' +
+ f(input.getHours()) + ':' +
+ f(input.getMinutes()) + ':' +
+ f(input.getSeconds()) + '"';
+
+ case 'boolean':
+ return String(input);
+ break;
+ case 'number':
+ return isFinite(input) ? String(input) : "null";
+ break;
+ case 'object':
+ var a = ['{'],
+ b,
+ k,
+ v;
- var p = function (s)
- {
- if (b)
- {
- a.push(',');
- }
- a.push(toJSONString(k), ':', s);
- b = true;
- }
+ var p = function (s)
+ {
+ if (b)
+ {
+ a.push(',');
+ }
+ a.push(toJSONString(k), ':', s);
+ b = true;
+ }
- for (k in input)
- {
- if (input.hasOwnProperty(k))
- {
- v = input[k];
- switch (typeof v) {
+ for (k in input)
+ {
+ if (input.hasOwnProperty(k))
+ {
+ v = input[k];
+ switch (typeof v) {
- case 'object':
- if (v) {
- p(toJSONString(v));
- } else {
- p("null");
- }
- break;
- case 'string':
- case 'number':
- case 'boolean':
- p(toJSONString(v));
- break;
- }
- }
- }
+ case 'object':
+ if (v) {
+ p(toJSONString(v));
+ } else {
+ p("null");
+ }
+ break;
+ case 'string':
+ case 'number':
+ case 'boolean':
+ p(toJSONString(v));
+ break;
+ }
+ }
+ }
- a.push('}');
- return a.join('');
- break;
- }
+ a.push('}');
+ return a.join('');
+ break;
+ }
}
function parseJSON(string, filter)
{
- if ( window.JSON )
- {
- return window.JSON.parse(string);
- }
-
- try {
- if (/^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/.
- test(string))
- {
-
- var j = eval('(' + string + ')');
- if (typeof filter === 'function') {
-
- function walk(k, v)
- {
- if (v && typeof v === 'object') {
- for (var i in v) {
- if (v.hasOwnProperty(i)) {
- v[i] = walk(i, v[i]);
- }
- }
- }
- return filter(k, v);
- }
-
- j = walk('', j);
- }
- return j;
- }
- } catch (e) {
-
- }
- throw new SyntaxError("parseJSON");
+ if ( window.JSON )
+ {
+ return window.JSON.parse(string);
+ }
+
+ try {
+ if (/^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/.
+ test(string))
+ {
+
+ var j = eval('(' + string + ')');
+ if (typeof filter === 'function') {
+
+ function walk(k, v)
+ {
+ if (v && typeof v === 'object') {
+ for (var i in v) {
+ if (v.hasOwnProperty(i)) {
+ v[i] = walk(i, v[i]);
+ }
+ }
+ }
+ return filter(k, v);
+ }
+
+ j = walk('', j);
+ }
+ return j;
+ }
+ } catch (e) {
+
+ }
+ throw new SyntaxError("parseJSON");
}