includes/clientside/static/json.js
changeset 1227 bdac73ed481e
parent 873 285f0c6d9c9a
--- 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");
 }