2 (function($){$.toJSON=function(o
)
3 {if(typeof(JSON
)=='object'&&JSON
.stringify
)
4 return JSON
.stringify(o
);var type
=typeof(o
);if(o
===null)
5 return"null";if(type
=="undefined")
6 return undefined;if(type
=="number"||type
=="boolean")
7 return o
+"";if(type
=="string")
8 return $.quoteString(o
);if(type
=='object')
9 {if(typeof o
.toJSON
=="function")
10 return $.toJSON(o
.toJSON());if(o
.constructor===Date
)
11 {var month
=o
.getUTCMonth()+1;if(month
<10)month
='0'+month
;var day
=o
.getUTCDate();if(day
<10)day
='0'+day
;var year
=o
.getUTCFullYear();var hours
=o
.getUTCHours();if(hours
<10)hours
='0'+hours
;var minutes
=o
.getUTCMinutes();if(minutes
<10)minutes
='0'+minutes
;var seconds
=o
.getUTCSeconds();if(seconds
<10)seconds
='0'+seconds
;var milli
=o
.getUTCMilliseconds();if(milli
<100)milli
='0'+milli
;if(milli
<10)milli
='0'+milli
;return'"'+year
+'-'+month
+'-'+day
+'T'+
12 hours
+':'+minutes
+':'+seconds
+'.'+milli
+'Z"';}
13 if(o
.constructor===Array
)
14 {var ret
=[];for(var i
=0;i
<o
.length
;i
++)
15 ret
.push($.toJSON(o
[i
])||"null");return"["+ret
.join(",")+"]";}
16 var pairs
=[];for(var k
in o
){var name
;var type
=typeof k
;if(type
=="number")
17 name
='"'+k
+'"';else if(type
=="string")
18 name
=$.quoteString(k
);else
19 continue;if(typeof o
[k
]=="function")
20 continue;var val
=$.toJSON(o
[k
]);pairs
.push(name
+":"+val
);}
21 return"{"+pairs
.join(", ")+"}";}};$.evalJSON=function(src
)
22 {if(typeof(JSON
)=='object'&&JSON
.parse
)
23 return JSON
.parse(src
);return eval("("+src
+")");};$.secureEvalJSON=function(src
)
24 {if(typeof(JSON
)=='object'&&JSON
.parse
)
25 return JSON
.parse(src
);var filtered
=src
;filtered
=filtered
.replace(/\\["\\\/bfnrtu]/g,'@');filtered
=filtered
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']');filtered
=filtered
.replace(/(?:^|:|,)(?:\s*\[)+/g,'');if(/^[\],:{}\s]*$/.test(filtered
))
26 return eval("("+src
+")");else
27 throw new SyntaxError("Error parsing JSON, source is not valid.");};$.quoteString=function(string
)
28 {if(string
.match(_escapeable
))
29 {return'"'+string
.replace(_escapeable
,function(a
)
30 {var c
=_meta
[a
];if(typeof c
==='string')return c
;c
=a
.charCodeAt();return'\\u00'+Math
.floor(c
/16).toString(16)+(c
%16).toString(16);})+'"';}
31 return'"'+string
+'"';};var _escapeable
=/["\\\x00-\x1f\x7f-\x9f]/g;var _meta
={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};})(jQuery
);