﻿(function () {
    var parse = JSON.parse;
    JSON.parse = function (text, reviver) {
        reviver = reviver || function (key, value) { return value; };
        return parse(text, function (key, value) {
            if (typeof value === 'string') {
                var iso_date = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
                if (iso_date) return new Date(Date.UTC(+iso_date[1], +iso_date[2] - 1, +iso_date[3], +iso_date[4], +iso_date[5], +iso_date[6]));
                else return reviver(key, value);
            } else {
                return reviver(key, value);
            }
        });
    };
})();
