/* * Ext JS Library 2.0 Copyright(c) 2006-2007, Ext JS, LLC. licensing@extjs.com * * http://extjs.com/license */ Ext.util.JSON = new (function() { var useHasOwn = {}.hasOwnProperty ? true : false; var pad = function(n) { return n < 10 ? "0" + n : n }; var m = { "\b" : "\\b", "\t" : "\\t", "\n" : "\\n", "\f" : "\\f", "\r" : "\\r", "\"" : "\\\"", "\\" : "\\\\" }; var encodeString = function(s) { if (/["\\\x00-\x1f]/.test(s)) { return "\"" + s.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 "\"" + s + "\"" }; var encodeArray = function(o) { var a = ["["], b, i, l = o.length, v; for (i = 0; i < l; i += 1) { v = o[i]; switch (typeof v) { case "undefined" : case "function" : case "unknown" : break; default : if (b) { a.push(",") } a.push(v === null ? "null" : Ext.util.JSON.encode(v)); b = true } } a.push("]"); return a.join("") }; var encodeDate = function(o) { return "\"" + o.getFullYear() + "-" + pad(o.getMonth() + 1) + "-" + pad(o.getDate()) + "T" + pad(o.getHours()) + ":" + pad(o.getMinutes()) + ":" + pad(o.getSeconds()) + "\"" }; this.encode = function(o) { if (typeof o == "undefined" || o === null) { return "null" } else { if (o instanceof Array) { return encodeArray(o) } else { if (o instanceof Date) { return encodeDate(o) } else { if (typeof o == "string") { return encodeString(o) } else { if (typeof o == "number") { return isFinite(o) ? String(o) : "null" } else { if (typeof o == "boolean") { return String(o) } else { var a = ["{"], b, i, v; for (i in o) { if (!useHasOwn || o.hasOwnProperty(i)) { v = o[i]; switch (typeof v) { case "undefined" : case "function" : case "unknown" : break; default : if (b) { a.push(",") } a .push( this.encode(i), ":", v === null ? "null" : this .encode(v)); b = true } } } a.push("}"); return a.join("") } } } } } } }; this.decode = function(json) { return eval("(" + json + ")") } })(); Ext.encode = Ext.util.JSON.encode; Ext.decode = Ext.util.JSON.decode;