Date.parseCodes.c = function() {
    var $f = Date.formatCodeToRegex,
        calc = [],
        arr = [
            $f("Y", 1), // year
            $f("m", 2), // month
            $f("d", 3), // day
            $f("h", 4), // hour
            $f("i", 5), // minute
            $f("s", 6), // second
            {c:"ms = results[7] || '0'; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n"}, // decimal fraction of a second (minimum = 1 digit, maximum = unlimited)
            {c:[ // allow either "Z" (i.e. UTC) or "-0530" or "+08:00" (i.e. UTC offset) timezone delimiters. assumes local timezone if no timezone is specified
                "if(results[8]) {",
                    "if(results[8] == 'Z'){",
                        "z = null;",
                    "}else if (results[8].indexOf(':') > -1){",
                        $f("P", 8).c,
                    "}else{",
                        $f("O", 8).c,
                    "}",
                "}"
            ].join('\n')}
        ];

    for (var i = 0, l = arr.length; i < l; ++i) {
        calc.push(arr[i].c);
    }

    return {
        g:1,
        c:calc.join(""),
        s:arr[0].s + "(?:-" + arr[1].s + "(?:-" + arr[2].s + "(?:T" + arr[3].s + ":" + arr[4].s + "(?::" + arr[5].s + ")?"
                + "(?:(?:\\.|,)(\\d+))?" // decimal fraction of a second (e.g. ",12345" or ".98765")
                + "(Z|(?:[-+]\\d{2}(?::)?\\d{2}))?" // "Z" (UTC) or "-0530" (UTC offset without colon delimiter) or "+08:00" (UTC offset with colon delimiter)
        + ")?)?)?"
    };
};