﻿jQuery.JSON = {  
useHasOwn : ({}.hasOwnProperty ? true : false),  
pad : function(n) {  
return n < 10 ? "0" + n : n;  
 },  
 m : {  
 "\b": '\\b',  
 "\t": '\\t',  
 "\n": '\\n',  
 "\f": '\\f',  
 "\r": '\\r',  
 '"' : '\\"',  
 "\\": '\\\\' 
 },  
 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 + '"';  
 },  
 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" : this.encode(v));  
 b = true;  
 }  
 }  
 a.push("]");  
 return a.join("");  
 },  
 encodeDate : function(o){  
 return '"' + o.getFullYear() + "-" +  
 pad(o.getMonth() + 1) + "-" +  
 pad(o.getDate()) + "T" +  
 pad(o.getHours()) + ":" +  
 pad(o.getMinutes()) + ":" +  
 pad(o.getSeconds()) + '"';  
 },  
 encode : function(o){  
 if(typeof o == "undefined" || o === null){  
 return "null";  
 }else if(o instanceof Array){  
 return this.encodeArray(o);  
 }else if(o instanceof Date){  
 return this.encodeDate(o);  
 }else if(typeof o == "string"){  
 return this.encodeString(o);  
 }else if(typeof o == "number"){  
 return isFinite(o) ? String(o) : "null";  
 }else if(typeof o == "boolean"){  
 return String(o);  
 }else {  
 var self = this;  
 var a = ["{"], b, i, v;  
 for (i in o) {  
 if(!this.useHasOwn || o.hasOwnProperty(i)) {  
 v = o[i];  
 switch (typeof v) {  
 case "undefined":  
 case "function":  
 case "unknown":  
 break;  
 default:  
 if(b){  
 a.push(',');  
 }  
 a.push(self.encode(i), ":",  
 v === null ? "null" : self.encode(v));  
 b = true;  
 }  
 }  
 }  
 a.push("}");  
 return a.join("");  
 }  
 },  
 decode : function(json){  
 return eval("(" + json + ')');  
 }  
 }; 

