www/jqwidgets/globalization/globalize.js

Sun, 12 May 2019 21:03:22 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Sun, 12 May 2019 21:03:22 +0200
changeset 368
e9dafd7a59d5
parent 1
37f1a08315f3
permissions
-rw-r--r--

Updated jqwidgets to version 7.2.0

368
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1 /* tslint:disable */
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
2 /* eslint-disable */
1
37f1a08315f3 Added jqwidgets 6.0.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3 /*!
37f1a08315f3 Added jqwidgets 6.0.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
4 * Globalize
37f1a08315f3 Added jqwidgets 6.0.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
5 *
37f1a08315f3 Added jqwidgets 6.0.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
6 * http://github.com/jquery/globalize
37f1a08315f3 Added jqwidgets 6.0.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
7 *
37f1a08315f3 Added jqwidgets 6.0.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
8 * Copyright Software Freedom Conservancy, Inc.
37f1a08315f3 Added jqwidgets 6.0.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
9 * Dual licensed under the MIT or GPL Version 2 licenses.
37f1a08315f3 Added jqwidgets 6.0.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
10 * http://jquery.org/license
37f1a08315f3 Added jqwidgets 6.0.5
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
11 */
368
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
12
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
13 (function( window, undefined ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
14 if (document.Globalize) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
15 return;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
16 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
17
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
18 var Globalize,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
19 // private variables
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
20 regexHex,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
21 regexInfinity,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
22 regexParseFloat,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
23 regexTrim,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
24 // private JavaScript utility functions
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
25 arrayIndexOf,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
26 endsWith,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
27 extend,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
28 isArray,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
29 isFunction,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
30 isObject,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
31 startsWith,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
32 trim,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
33 truncate,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
34 zeroPad,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
35 // private Globalization utility functions
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
36 appendPreOrPostMatch,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
37 expandFormat,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
38 formatDate,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
39 formatNumber,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
40 getTokenRegExp,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
41 getEra,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
42 getEraYear,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
43 parseExact,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
44 parseNegativePattern;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
45
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
46 // Global variable (Globalize) or CommonJS module (globalize)
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
47 Globalize = function( cultureSelector ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
48 return new Globalize.prototype.init( cultureSelector );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
49 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
50
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
51 if ( typeof require !== "undefined" &&
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
52 typeof exports !== "undefined" &&
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
53 typeof module !== "undefined" ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
54 // Assume CommonJS
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
55 module.exports = Globalize;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
56 } else {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
57 // Export as global variable
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
58 window.Globalize = Globalize;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
59 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
60
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
61 Globalize.cultures = {};
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
62
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
63 Globalize.prototype = {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
64 constructor: Globalize,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
65 init: function( cultureSelector ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
66 this.cultures = Globalize.cultures;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
67 this.cultureSelector = cultureSelector;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
68
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
69 return this;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
70 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
71 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
72 Globalize.prototype.init.prototype = Globalize.prototype;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
73
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
74 // 1. When defining a culture, all fields are required except the ones stated as optional.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
75 // 2. Each culture should have a ".calendars" object with at least one calendar named "standard"
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
76 // which serves as the default calendar in use by that culture.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
77 // 3. Each culture should have a ".calendar" object which is the current calendar being used,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
78 // it may be dynamically changed at any time to one of the calendars in ".calendars".
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
79 Globalize.cultures[ "default" ] = {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
80 // A unique name for the culture in the form <language code>-<country/region code>
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
81 name: "en",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
82 // the name of the culture in the english language
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
83 englishName: "English",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
84 // the name of the culture in its own language
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
85 nativeName: "English",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
86 // whether the culture uses right-to-left text
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
87 isRTL: false,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
88 // "language" is used for so-called "specific" cultures.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
89 // For example, the culture "es-CL" means "Spanish, in Chili".
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
90 // It represents the Spanish-speaking culture as it is in Chili,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
91 // which might have different formatting rules or even translations
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
92 // than Spanish in Spain. A "neutral" culture is one that is not
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
93 // specific to a region. For example, the culture "es" is the generic
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
94 // Spanish culture, which may be a more generalized version of the language
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
95 // that may or may not be what a specific culture expects.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
96 // For a specific culture like "es-CL", the "language" field refers to the
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
97 // neutral, generic culture information for the language it is using.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
98 // This is not always a simple matter of the string before the dash.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
99 // For example, the "zh-Hans" culture is netural (Simplified Chinese).
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
100 // And the "zh-SG" culture is Simplified Chinese in Singapore, whose lanugage
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
101 // field is "zh-CHS", not "zh".
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
102 // This field should be used to navigate from a specific culture to it's
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
103 // more general, neutral culture. If a culture is already as general as it
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
104 // can get, the language may refer to itself.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
105 language: "en",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
106 // numberFormat defines general number formatting rules, like the digits in
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
107 // each grouping, the group separator, and how negative numbers are displayed.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
108 numberFormat: {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
109 // [negativePattern]
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
110 // Note, numberFormat.pattern has no "positivePattern" unlike percent and currency,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
111 // but is still defined as an array for consistency with them.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
112 // negativePattern: one of "(n)|-n|- n|n-|n -"
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
113 pattern: [ "-n" ],
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
114 // number of decimal places normally shown
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
115 decimals: 2,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
116 // string that separates number groups, as in 1,000,000
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
117 ",": ",",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
118 // string that separates a number from the fractional portion, as in 1.99
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
119 ".": ".",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
120 // array of numbers indicating the size of each number group.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
121 // TODO: more detailed description and example
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
122 groupSizes: [ 3 ],
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
123 // symbol used for positive numbers
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
124 "+": "+",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
125 // symbol used for negative numbers
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
126 "-": "-",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
127 // symbol used for NaN (Not-A-Number)
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
128 "NaN": "NaN",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
129 // symbol used for Negative Infinity
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
130 negativeInfinity: "-Infinity",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
131 // symbol used for Positive Infinity
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
132 positiveInfinity: "Infinity",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
133 percent: {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
134 // [negativePattern, positivePattern]
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
135 // negativePattern: one of "-n %|-n%|-%n|%-n|%n-|n-%|n%-|-% n|n %-|% n-|% -n|n- %"
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
136 // positivePattern: one of "n %|n%|%n|% n"
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
137 pattern: [ "-n %", "n %" ],
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
138 // number of decimal places normally shown
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
139 decimals: 2,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
140 // array of numbers indicating the size of each number group.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
141 // TODO: more detailed description and example
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
142 groupSizes: [ 3 ],
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
143 // string that separates number groups, as in 1,000,000
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
144 ",": ",",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
145 // string that separates a number from the fractional portion, as in 1.99
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
146 ".": ".",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
147 // symbol used to represent a percentage
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
148 symbol: "%"
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
149 },
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
150 currency: {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
151 // [negativePattern, positivePattern]
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
152 // negativePattern: one of "($n)|-$n|$-n|$n-|(n$)|-n$|n-$|n$-|-n $|-$ n|n $-|$ n-|$ -n|n- $|($ n)|(n $)"
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
153 // positivePattern: one of "$n|n$|$ n|n $"
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
154 pattern: [ "($n)", "$n" ],
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
155 // number of decimal places normally shown
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
156 decimals: 2,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
157 // array of numbers indicating the size of each number group.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
158 // TODO: more detailed description and example
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
159 groupSizes: [ 3 ],
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
160 // string that separates number groups, as in 1,000,000
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
161 ",": ",",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
162 // string that separates a number from the fractional portion, as in 1.99
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
163 ".": ".",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
164 // symbol used to represent currency
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
165 symbol: "$"
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
166 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
167 },
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
168 // calendars defines all the possible calendars used by this culture.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
169 // There should be at least one defined with name "standard", and is the default
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
170 // calendar used by the culture.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
171 // A calendar contains information about how dates are formatted, information about
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
172 // the calendar's eras, a standard set of the date formats,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
173 // translations for day and month names, and if the calendar is not based on the Gregorian
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
174 // calendar, conversion functions to and from the Gregorian calendar.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
175 calendars: {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
176 standard: {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
177 // name that identifies the type of calendar this is
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
178 name: "Gregorian_USEnglish",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
179 // separator of parts of a date (e.g. "/" in 11/05/1955)
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
180 "/": "/",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
181 // separator of parts of a time (e.g. ":" in 05:44 PM)
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
182 ":": ":",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
183 // the first day of the week (0 = Sunday, 1 = Monday, etc)
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
184 firstDay: 0,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
185 days: {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
186 // full day names
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
187 names: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ],
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
188 // abbreviated day names
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
189 namesAbbr: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ],
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
190 // shortest day names
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
191 namesShort: [ "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa" ]
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
192 },
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
193 months: {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
194 // full month names (13 months for lunar calendards -- 13th month should be "" if not lunar)
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
195 names: [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", "" ],
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
196 // abbreviated month names
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
197 namesAbbr: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" ]
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
198 },
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
199 // AM and PM designators in one of these forms:
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
200 // The usual view, and the upper and lower case versions
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
201 // [ standard, lowercase, uppercase ]
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
202 // The culture does not use AM or PM (likely all standard date formats use 24 hour time)
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
203 // null
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
204 AM: [ "AM", "am", "AM" ],
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
205 PM: [ "PM", "pm", "PM" ],
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
206 eras: [
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
207 // eras in reverse chronological order.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
208 // name: the name of the era in this culture (e.g. A.D., C.E.)
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
209 // start: when the era starts in ticks (gregorian, gmt), null if it is the earliest supported era.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
210 // offset: offset in years from gregorian calendar
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
211 {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
212 "name": "A.D.",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
213 "start": null,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
214 "offset": 0
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
215 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
216 ],
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
217 // when a two digit year is given, it will never be parsed as a four digit
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
218 // year greater than this year (in the appropriate era for the culture)
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
219 // Set it as a full year (e.g. 2029) or use an offset format starting from
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
220 // the current year: "+19" would correspond to 2029 if the current year 2010.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
221 twoDigitYearMax: 2029,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
222 // set of predefined date and time patterns used by the culture
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
223 // these represent the format someone in this culture would expect
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
224 // to see given the portions of the date that are shown.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
225 patterns: {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
226 // short date pattern
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
227 d: "M/d/yyyy",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
228 // long date pattern
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
229 D: "dddd, MMMM dd, yyyy",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
230 // short time pattern
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
231 t: "h:mm tt",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
232 // long time pattern
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
233 T: "h:mm:ss tt",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
234 // long date, short time pattern
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
235 f: "dddd, MMMM dd, yyyy h:mm tt",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
236 // long date, long time pattern
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
237 F: "dddd, MMMM dd, yyyy h:mm:ss tt",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
238 // month/day pattern
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
239 M: "MMMM dd",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
240 // month/year pattern
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
241 Y: "yyyy MMMM",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
242 // S is a sortable format that does not vary by culture
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
243 S: "yyyy\u0027-\u0027MM\u0027-\u0027dd\u0027T\u0027HH\u0027:\u0027mm\u0027:\u0027ss"
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
244 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
245 // optional fields for each calendar:
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
246 /*
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
247 monthsGenitive:
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
248 Same as months but used when the day preceeds the month.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
249 Omit if the culture has no genitive distinction in month names.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
250 For an explaination of genitive months, see http://blogs.msdn.com/michkap/archive/2004/12/25/332259.aspx
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
251 convert:
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
252 Allows for the support of non-gregorian based calendars. This convert object is used to
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
253 to convert a date to and from a gregorian calendar date to handle parsing and formatting.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
254 The two functions:
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
255 fromGregorian( date )
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
256 Given the date as a parameter, return an array with parts [ year, month, day ]
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
257 corresponding to the non-gregorian based year, month, and day for the calendar.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
258 toGregorian( year, month, day )
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
259 Given the non-gregorian year, month, and day, return a new Date() object
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
260 set to the corresponding date in the gregorian calendar.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
261 */
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
262 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
263 },
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
264 // For localized strings
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
265 messages: {}
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
266 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
267
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
268 Globalize.cultures[ "default" ].calendar = Globalize.cultures[ "default" ].calendars.standard;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
269
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
270 Globalize.cultures.en = Globalize.cultures[ "default" ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
271
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
272 Globalize.cultureSelector = "en";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
273
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
274 //
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
275 // private variables
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
276 //
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
277
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
278 regexHex = /^0x[a-f0-9]+$/i;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
279 regexInfinity = /^[+\-]?infinity$/i;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
280 regexParseFloat = /^[+\-]?\d*\.?\d*(e[+\-]?\d+)?$/;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
281 regexTrim = /^\s+|\s+$/g;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
282
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
283 //
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
284 // private JavaScript utility functions
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
285 //
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
286
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
287 arrayIndexOf = function( array, item ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
288 if ( array.indexOf ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
289 return array.indexOf( item );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
290 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
291 for ( var i = 0, length = array.length; i < length; i++ ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
292 if ( array[i] === item ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
293 return i;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
294 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
295 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
296 return -1;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
297 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
298
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
299 endsWith = function( value, pattern ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
300 return value.substr( value.length - pattern.length ) === pattern;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
301 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
302
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
303 extend = function() {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
304 var options, name, src, copy, copyIsArray, clone,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
305 target = arguments[0] || {},
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
306 i = 1,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
307 length = arguments.length,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
308 deep = false;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
309
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
310 // Handle a deep copy situation
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
311 if ( typeof target === "boolean" ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
312 deep = target;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
313 target = arguments[1] || {};
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
314 // skip the boolean and the target
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
315 i = 2;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
316 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
317
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
318 // Handle case when target is a string or something (possible in deep copy)
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
319 if ( typeof target !== "object" && !isFunction(target) ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
320 target = {};
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
321 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
322
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
323 for ( ; i < length; i++ ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
324 // Only deal with non-null/undefined values
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
325 if ( (options = arguments[ i ]) != null ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
326 // Extend the base object
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
327 for ( name in options ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
328 src = target[ name ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
329 copy = options[ name ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
330
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
331 // Prevent never-ending loop
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
332 if ( target === copy ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
333 continue;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
334 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
335
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
336 // Recurse if we're merging plain objects or arrays
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
337 if ( deep && copy && ( isObject(copy) || (copyIsArray = isArray(copy)) ) ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
338 if ( copyIsArray ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
339 copyIsArray = false;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
340 clone = src && isArray(src) ? src : [];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
341
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
342 } else {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
343 clone = src && isObject(src) ? src : {};
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
344 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
345
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
346 // Never move original objects, clone them
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
347 target[ name ] = extend( deep, clone, copy );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
348
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
349 // Don't bring in undefined values
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
350 } else if ( copy !== undefined ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
351 target[ name ] = copy;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
352 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
353 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
354 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
355 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
356
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
357 // Return the modified object
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
358 return target;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
359 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
360
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
361 isArray = Array.isArray || function( obj ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
362 return Object.prototype.toString.call( obj ) === "[object Array]";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
363 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
364
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
365 isFunction = function( obj ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
366 return Object.prototype.toString.call( obj ) === "[object Function]";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
367 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
368
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
369 isObject = function( obj ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
370 return Object.prototype.toString.call( obj ) === "[object Object]";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
371 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
372
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
373 startsWith = function( value, pattern ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
374 return value.indexOf( pattern ) === 0;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
375 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
376
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
377 trim = function( value ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
378 return ( value + "" ).replace( regexTrim, "" );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
379 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
380
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
381 truncate = function( value ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
382 if ( isNaN( value ) ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
383 return NaN;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
384 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
385 return Math[ value < 0 ? "ceil" : "floor" ]( value );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
386 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
387
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
388 zeroPad = function( str, count, left ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
389 var l;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
390 for ( l = str.length; l < count; l += 1 ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
391 str = ( left ? ("0" + str) : (str + "0") );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
392 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
393 return str;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
394 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
395
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
396 //
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
397 // private Globalization utility functions
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
398 //
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
399
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
400 appendPreOrPostMatch = function( preMatch, strings ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
401 // appends pre- and post- token match strings while removing escaped characters.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
402 // Returns a single quote count which is used to determine if the token occurs
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
403 // in a string literal.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
404 var quoteCount = 0,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
405 escaped = false;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
406 for ( var i = 0, il = preMatch.length; i < il; i++ ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
407 var c = preMatch.charAt( i );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
408 switch ( c ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
409 case "\'":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
410 if ( escaped ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
411 strings.push( "\'" );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
412 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
413 else {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
414 quoteCount++;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
415 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
416 escaped = false;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
417 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
418 case "\\":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
419 if ( escaped ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
420 strings.push( "\\" );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
421 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
422 escaped = !escaped;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
423 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
424 default:
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
425 strings.push( c );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
426 escaped = false;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
427 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
428 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
429 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
430 return quoteCount;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
431 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
432
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
433 expandFormat = function( cal, format ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
434 // expands unspecified or single character date formats into the full pattern.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
435 format = format || "F";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
436 var pattern,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
437 patterns = cal.patterns,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
438 len = format.length;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
439 if ( len === 1 ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
440 pattern = patterns[ format ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
441 if ( !pattern ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
442 throw "Invalid date format string \'" + format + "\'.";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
443 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
444 format = pattern;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
445 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
446 else if ( len === 2 && format.charAt(0) === "%" ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
447 // %X escape format -- intended as a custom format string that is only one character, not a built-in format.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
448 format = format.charAt( 1 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
449 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
450 return format;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
451 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
452
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
453 formatDate = function( value, format, culture ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
454 var cal = culture.calendar,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
455 convert = cal.convert,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
456 ret;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
457
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
458 if ( !format || !format.length || format === "i" ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
459 if ( culture && culture.name.length ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
460 if ( convert ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
461 // non-gregorian calendar, so we cannot use built-in toLocaleString()
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
462 ret = formatDate( value, cal.patterns.F, culture );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
463 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
464 else {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
465 var eraDate = new Date( value.getTime() ),
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
466 era = getEra( value, cal.eras );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
467 eraDate.setFullYear( getEraYear(value, cal, era) );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
468 ret = eraDate.toLocaleString();
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
469 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
470 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
471 else {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
472 ret = value.toString();
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
473 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
474 return ret;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
475 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
476
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
477 var eras = cal.eras,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
478 sortable = format === "s";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
479 format = expandFormat( cal, format );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
480
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
481 // Start with an empty string
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
482 ret = [];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
483 var hour,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
484 zeros = [ "0", "00", "000" ],
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
485 foundDay,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
486 checkedDay,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
487 dayPartRegExp = /([^d]|^)(d|dd)([^d]|$)/g,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
488 quoteCount = 0,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
489 tokenRegExp = getTokenRegExp(),
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
490 converted;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
491
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
492 //function padZeros( num, c ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
493 // var r, s = num + "";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
494 // if ( c > 1 && s.length < c ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
495 // r = ( zeros[c - 2] + s);
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
496 // return r.substr( r.length - c, c );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
497 // }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
498 // else {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
499 // r = s;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
500 // }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
501 // return r;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
502 //}
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
503
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
504 function padZeros(num, c) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
505 if (num < 0) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
506 return "-" + padZeros(-num, c);
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
507 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
508 var r, s = num + "";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
509 if (c > 1 && s.length < c) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
510 r = (zeros[c - 2] + s);
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
511 return r.substr(r.length - c, c);
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
512 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
513 else {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
514 r = s;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
515 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
516 return r;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
517 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
518
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
519 function hasDay() {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
520 if ( foundDay || checkedDay ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
521 return foundDay;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
522 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
523 foundDay = dayPartRegExp.test( format );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
524 checkedDay = true;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
525 return foundDay;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
526 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
527
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
528 function getPart( date, part ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
529 if ( converted ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
530 return converted[ part ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
531 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
532 switch ( part ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
533 case 0:
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
534 return date.getFullYear();
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
535 case 1:
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
536 return date.getMonth();
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
537 case 2:
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
538 return date.getDate();
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
539 default:
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
540 throw "Invalid part value " + part;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
541 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
542 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
543
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
544 if ( !sortable && convert ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
545 converted = convert.fromGregorian( value );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
546 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
547
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
548 for ( ; ; ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
549 // Save the current index
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
550 var index = tokenRegExp.lastIndex,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
551 // Look for the next pattern
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
552 ar = tokenRegExp.exec( format );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
553
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
554 // Append the text before the pattern (or the end of the string if not found)
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
555 var preMatch = format.slice( index, ar ? ar.index : format.length );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
556 quoteCount += appendPreOrPostMatch( preMatch, ret );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
557
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
558 if ( !ar ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
559 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
560 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
561
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
562 // do not replace any matches that occur inside a string literal.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
563 if ( quoteCount % 2 ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
564 ret.push( ar[0] );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
565 continue;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
566 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
567
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
568 var current = ar[ 0 ],
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
569 clength = current.length;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
570
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
571 switch ( current ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
572 case "ddd":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
573 //Day of the week, as a three-letter abbreviation
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
574 case "dddd":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
575 // Day of the week, using the full name
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
576 var names = ( clength === 3 ) ? cal.days.namesAbbr : cal.days.names;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
577 ret.push( names[value.getDay()] );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
578 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
579 case "d":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
580 // Day of month, without leading zero for single-digit days
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
581 case "dd":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
582 // Day of month, with leading zero for single-digit days
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
583 foundDay = true;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
584 ret.push(
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
585 padZeros( getPart(value, 2), clength )
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
586 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
587 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
588 case "MMM":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
589 // Month, as a three-letter abbreviation
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
590 case "MMMM":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
591 // Month, using the full name
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
592 var part = getPart( value, 1 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
593 ret.push(
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
594 ( cal.monthsGenitive && hasDay() ) ?
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
595 ( cal.monthsGenitive[ clength === 3 ? "namesAbbr" : "names" ][ part ] ) :
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
596 ( cal.months[ clength === 3 ? "namesAbbr" : "names" ][ part ] )
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
597 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
598 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
599 case "M":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
600 // Month, as digits, with no leading zero for single-digit months
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
601 case "MM":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
602 // Month, as digits, with leading zero for single-digit months
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
603 ret.push(
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
604 padZeros( getPart(value, 1) + 1, clength )
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
605 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
606 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
607 case "y":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
608 // Year, as two digits, but with no leading zero for years less than 10
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
609 case "yy":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
610 // Year, as two digits, with leading zero for years less than 10
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
611 case "yyyy":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
612 // Year represented by four full digits
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
613 part = converted ? converted[ 0 ] : getEraYear( value, cal, getEra(value, eras), sortable );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
614 if ( clength < 4 ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
615 part = part % 100;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
616 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
617 ret.push(
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
618 padZeros( part, clength )
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
619 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
620 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
621 case "h":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
622 // Hours with no leading zero for single-digit hours, using 12-hour clock
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
623 case "hh":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
624 // Hours with leading zero for single-digit hours, using 12-hour clock
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
625 hour = value.getHours() % 12;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
626 if ( hour === 0 ) hour = 12;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
627 ret.push(
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
628 padZeros( hour, clength )
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
629 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
630 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
631 case "H":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
632 // Hours with no leading zero for single-digit hours, using 24-hour clock
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
633 case "HH":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
634 // Hours with leading zero for single-digit hours, using 24-hour clock
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
635 ret.push(
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
636 padZeros( value.getHours(), clength )
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
637 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
638 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
639 case "m":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
640 // Minutes with no leading zero for single-digit minutes
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
641 case "mm":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
642 // Minutes with leading zero for single-digit minutes
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
643 ret.push(
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
644 padZeros( value.getMinutes(), clength )
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
645 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
646 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
647 case "s":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
648 // Seconds with no leading zero for single-digit seconds
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
649 case "ss":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
650 // Seconds with leading zero for single-digit seconds
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
651 ret.push(
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
652 padZeros( value.getSeconds(), clength )
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
653 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
654 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
655 case "t":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
656 // One character am/pm indicator ("a" or "p")
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
657 case "tt":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
658 // Multicharacter am/pm indicator
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
659 part = value.getHours() < 12 ? ( cal.AM ? cal.AM[0] : " " ) : ( cal.PM ? cal.PM[0] : " " );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
660 ret.push( clength === 1 ? part.charAt(0) : part );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
661 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
662 case "f":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
663 // Deciseconds
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
664 case "ff":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
665 // Centiseconds
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
666 case "fff":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
667 // Milliseconds
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
668 ret.push(
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
669 padZeros( value.getMilliseconds(), 3 ).substr( 0, clength )
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
670 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
671 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
672 case "z":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
673 // Time zone offset, no leading zero
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
674 case "zz":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
675 // Time zone offset with leading zero
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
676 hour = value.getTimezoneOffset() / 60;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
677 ret.push(
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
678 ( hour <= 0 ? "+" : "-" ) + padZeros( Math.floor(Math.abs(hour)), clength )
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
679 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
680 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
681 case "zzz":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
682 // Time zone offset with leading zero
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
683 hour = value.getTimezoneOffset() / 60;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
684 ret.push(
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
685 ( hour <= 0 ? "+" : "-" ) + padZeros( Math.floor(Math.abs(hour)), 2 ) +
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
686 // Hard coded ":" separator, rather than using cal.TimeSeparator
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
687 // Repeated here for consistency, plus ":" was already assumed in date parsing.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
688 ":" + padZeros( Math.abs(value.getTimezoneOffset() % 60), 2 )
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
689 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
690 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
691 case "g":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
692 case "gg":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
693 if ( cal.eras ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
694 ret.push(
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
695 cal.eras[ getEra(value, eras) ].name
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
696 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
697 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
698 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
699 case "/":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
700 ret.push( cal["/"] );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
701 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
702 default:
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
703 throw "Invalid date format pattern \'" + current + "\'.";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
704 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
705 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
706 return ret.join( "" );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
707 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
708
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
709 // formatNumber
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
710 (function() {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
711 var expandNumber;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
712
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
713 expandNumber = function( number, precision, formatInfo ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
714 var groupSizes = formatInfo.groupSizes,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
715 curSize = groupSizes[ 0 ],
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
716 curGroupIndex = 1,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
717 factor = Math.pow( 10, precision ),
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
718 rounded = Math.round( number * factor ) / factor;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
719
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
720 if ( !isFinite(rounded) ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
721 rounded = number;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
722 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
723 number = rounded;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
724
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
725 var numberString = number+"",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
726 right = "",
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
727 split = numberString.split( /e/i ),
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
728 exponent = split.length > 1 ? parseInt( split[1], 10 ) : 0;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
729 numberString = split[ 0 ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
730 split = numberString.split( "." );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
731 numberString = split[ 0 ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
732 right = split.length > 1 ? split[ 1 ] : "";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
733
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
734 var l;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
735 if ( exponent > 0 ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
736 right = zeroPad( right, exponent, false );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
737 numberString += right.slice( 0, exponent );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
738 right = right.substr( exponent );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
739 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
740 else if ( exponent < 0 ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
741 exponent = -exponent;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
742 numberString = zeroPad( numberString, exponent + 1, true );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
743 right = numberString.slice( -exponent, numberString.length ) + right;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
744 numberString = numberString.slice( 0, -exponent );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
745 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
746
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
747 if ( precision > 0 ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
748 right = formatInfo[ "." ] +
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
749 ( (right.length > precision) ? right.slice(0, precision) : zeroPad(right, precision) );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
750 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
751 else {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
752 right = "";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
753 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
754
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
755 var stringIndex = numberString.length - 1,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
756 sep = formatInfo[ "," ],
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
757 ret = "";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
758
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
759 while ( stringIndex >= 0 ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
760 if ( curSize === 0 || curSize > stringIndex ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
761 return numberString.slice( 0, stringIndex + 1 ) + ( ret.length ? (sep + ret + right) : right );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
762 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
763 ret = numberString.slice( stringIndex - curSize + 1, stringIndex + 1 ) + ( ret.length ? (sep + ret) : "" );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
764
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
765 stringIndex -= curSize;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
766
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
767 if ( curGroupIndex < groupSizes.length ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
768 curSize = groupSizes[ curGroupIndex ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
769 curGroupIndex++;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
770 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
771 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
772
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
773 return numberString.slice( 0, stringIndex + 1 ) + sep + ret + right;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
774 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
775
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
776 formatNumber = function( value, format, culture ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
777 if ( !isFinite(value) ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
778 if ( value === Infinity ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
779 return culture.numberFormat.positiveInfinity;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
780 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
781 if ( value === -Infinity ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
782 return culture.numberFormat.negativeInfinity;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
783 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
784 return culture.numberFormat.NaN;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
785 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
786 if ( !format || format === "i" ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
787 return culture.name.length ? value.toLocaleString() : value.toString();
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
788 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
789 format = format || "D";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
790
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
791 var nf = culture.numberFormat,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
792 number = Math.abs( value ),
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
793 precision = -1,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
794 pattern;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
795 if ( format.length > 1 ) precision = parseInt( format.slice(1), 10 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
796
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
797 var current = format.charAt( 0 ).toUpperCase(),
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
798 formatInfo;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
799
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
800 switch ( current ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
801 case "D":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
802 pattern = "n";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
803 number = truncate( number );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
804 if ( precision !== -1 ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
805 number = zeroPad( "" + number, precision, true );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
806 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
807 if ( value < 0 ) number = "-" + number;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
808 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
809 case "N":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
810 formatInfo = nf;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
811 /* falls through */
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
812 case "C":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
813 formatInfo = formatInfo || nf.currency;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
814 /* falls through */
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
815 case "P":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
816 formatInfo = formatInfo || nf.percent;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
817 pattern = value < 0 ? formatInfo.pattern[ 0 ] : ( formatInfo.pattern[1] || "n" );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
818 if ( precision === -1 ) precision = formatInfo.decimals;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
819 number = expandNumber( number * (current === "P" ? 100 : 1), precision, formatInfo );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
820 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
821 default:
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
822 throw "Bad number format specifier: " + current;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
823 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
824
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
825 var patternParts = /n|\$|-|%/g,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
826 ret = "";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
827 for ( ; ; ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
828 var index = patternParts.lastIndex,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
829 ar = patternParts.exec( pattern );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
830
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
831 ret += pattern.slice( index, ar ? ar.index : pattern.length );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
832
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
833 if ( !ar ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
834 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
835 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
836
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
837 switch ( ar[0] ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
838 case "n":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
839 ret += number;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
840 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
841 case "$":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
842 ret += nf.currency.symbol;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
843 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
844 case "-":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
845 // don't make 0 negative
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
846 if ( /[1-9]/.test(number) ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
847 ret += nf[ "-" ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
848 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
849 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
850 case "%":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
851 ret += nf.percent.symbol;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
852 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
853 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
854 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
855
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
856 return ret;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
857 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
858
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
859 }());
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
860
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
861 getTokenRegExp = function() {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
862 // regular expression for matching date and time tokens in format strings.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
863 return (/\/|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z|gg|g/g);
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
864 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
865
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
866 getEra = function( date, eras ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
867 if ( !eras ) return 0;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
868 var start, ticks = date.getTime();
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
869 for ( var i = 0, l = eras.length; i < l; i++ ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
870 start = eras[ i ].start;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
871 if ( start === null || ticks >= start ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
872 return i;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
873 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
874 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
875 return 0;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
876 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
877
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
878 getEraYear = function( date, cal, era, sortable ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
879 var year = date.getFullYear();
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
880 if ( !sortable && cal.eras ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
881 // convert normal gregorian year to era-shifted gregorian
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
882 // year by subtracting the era offset
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
883 year -= cal.eras[ era ].offset;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
884 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
885 return year;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
886 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
887
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
888 // parseExact
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
889 (function() {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
890 var expandYear,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
891 getDayIndex,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
892 getMonthIndex,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
893 getParseRegExp,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
894 outOfRange,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
895 toUpper,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
896 toUpperArray;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
897
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
898 expandYear = function( cal, year ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
899 // expands 2-digit year into 4 digits.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
900 if ( year < 100 ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
901 var now = new Date(),
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
902 era = getEra( now ),
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
903 curr = getEraYear( now, cal, era ),
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
904 twoDigitYearMax = cal.twoDigitYearMax;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
905 twoDigitYearMax = typeof twoDigitYearMax === "string" ? new Date().getFullYear() % 100 + parseInt( twoDigitYearMax, 10 ) : twoDigitYearMax;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
906 year += curr - ( curr % 100 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
907 if ( year > twoDigitYearMax ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
908 year -= 100;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
909 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
910 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
911 return year;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
912 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
913
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
914 getDayIndex = function ( cal, value, abbr ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
915 var ret,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
916 days = cal.days,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
917 upperDays = cal._upperDays;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
918 if ( !upperDays ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
919 cal._upperDays = upperDays = [
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
920 toUpperArray( days.names ),
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
921 toUpperArray( days.namesAbbr ),
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
922 toUpperArray( days.namesShort )
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
923 ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
924 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
925 value = toUpper( value );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
926 if ( abbr ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
927 ret = arrayIndexOf( upperDays[1], value );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
928 if ( ret === -1 ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
929 ret = arrayIndexOf( upperDays[2], value );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
930 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
931 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
932 else {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
933 ret = arrayIndexOf( upperDays[0], value );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
934 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
935 return ret;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
936 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
937
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
938 getMonthIndex = function( cal, value, abbr ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
939 var months = cal.months,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
940 monthsGen = cal.monthsGenitive || cal.months,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
941 upperMonths = cal._upperMonths,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
942 upperMonthsGen = cal._upperMonthsGen;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
943 if ( !upperMonths ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
944 cal._upperMonths = upperMonths = [
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
945 toUpperArray( months.names ),
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
946 toUpperArray( months.namesAbbr )
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
947 ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
948 cal._upperMonthsGen = upperMonthsGen = [
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
949 toUpperArray( monthsGen.names ),
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
950 toUpperArray( monthsGen.namesAbbr )
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
951 ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
952 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
953 value = toUpper( value );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
954 var i = arrayIndexOf( abbr ? upperMonths[1] : upperMonths[0], value );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
955 if ( i < 0 ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
956 i = arrayIndexOf( abbr ? upperMonthsGen[1] : upperMonthsGen[0], value );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
957 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
958 return i;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
959 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
960
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
961 getParseRegExp = function( cal, format ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
962 // converts a format string into a regular expression with groups that
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
963 // can be used to extract date fields from a date string.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
964 // check for a cached parse regex.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
965 var re = cal._parseRegExp;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
966 if ( !re ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
967 cal._parseRegExp = re = {};
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
968 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
969 else {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
970 var reFormat = re[ format ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
971 if ( reFormat ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
972 return reFormat;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
973 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
974 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
975
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
976 // expand single digit formats, then escape regular expression characters.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
977 var expFormat = expandFormat( cal, format ).replace( /([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g, "\\\\$1" ),
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
978 regexp = [ "^" ],
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
979 groups = [],
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
980 index = 0,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
981 quoteCount = 0,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
982 tokenRegExp = getTokenRegExp(),
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
983 match;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
984
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
985 // iterate through each date token found.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
986 while ( (match = tokenRegExp.exec(expFormat)) !== null ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
987 var preMatch = expFormat.slice( index, match.index );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
988 index = tokenRegExp.lastIndex;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
989
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
990 // don't replace any matches that occur inside a string literal.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
991 quoteCount += appendPreOrPostMatch( preMatch, regexp );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
992 if ( quoteCount % 2 ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
993 regexp.push( match[0] );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
994 continue;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
995 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
996
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
997 // add a regex group for the token.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
998 var m = match[ 0 ],
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
999 len = m.length,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1000 add;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1001 switch ( m ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1002 case "dddd": case "ddd":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1003 case "MMMM": case "MMM":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1004 case "gg": case "g":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1005 add = "(\\D+)";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1006 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1007 case "tt": case "t":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1008 add = "(\\D*)";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1009 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1010 case "yyyy":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1011 case "fff":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1012 case "ff":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1013 case "f":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1014 add = "(\\d{" + len + "})";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1015 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1016 case "dd": case "d":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1017 case "MM": case "M":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1018 case "yy": case "y":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1019 case "HH": case "H":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1020 case "hh": case "h":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1021 case "mm": case "m":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1022 case "ss": case "s":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1023 add = "(\\d\\d?)";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1024 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1025 case "zzz":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1026 add = "([+-]?\\d\\d?:\\d{2})";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1027 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1028 case "zz": case "z":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1029 add = "([+-]?\\d\\d?)";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1030 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1031 case "/":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1032 add = "(\\/)";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1033 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1034 default:
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1035 throw "Invalid date format pattern \'" + m + "\'.";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1036 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1037 if ( add ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1038 regexp.push( add );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1039 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1040 groups.push( match[0] );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1041 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1042 appendPreOrPostMatch( expFormat.slice(index), regexp );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1043 regexp.push( "$" );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1044
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1045 // allow whitespace to differ when matching formats.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1046 var regexpStr = regexp.join( "" ).replace( /\s+/g, "\\s+" ),
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1047 parseRegExp = { "regExp": regexpStr, "groups": groups };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1048
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1049 // cache the regex for this format.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1050 return re[ format ] = parseRegExp;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1051 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1052
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1053 outOfRange = function( value, low, high ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1054 return value < low || value > high;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1055 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1056
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1057 toUpper = function( value ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1058 // "he-IL" has non-breaking space in weekday names.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1059 return value.split( "\u00A0" ).join( " " ).toUpperCase();
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1060 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1061
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1062 toUpperArray = function( arr ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1063 var results = [];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1064 for ( var i = 0, l = arr.length; i < l; i++ ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1065 results[ i ] = toUpper( arr[i] );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1066 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1067 return results;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1068 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1069
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1070 parseExact = function( value, format, culture ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1071 // try to parse the date string by matching against the format string
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1072 // while using the specified culture for date field names.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1073 value = trim( value );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1074 var cal = culture.calendar,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1075 // convert date formats into regular expressions with groupings.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1076 // use the regexp to determine the input format and extract the date fields.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1077 parseInfo = getParseRegExp( cal, format ),
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1078 match = new RegExp( parseInfo.regExp ).exec( value );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1079 if ( match === null ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1080 return null;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1081 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1082 // found a date format that matches the input.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1083 var groups = parseInfo.groups,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1084 era = null, year = null, month = null, date = null, weekDay = null,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1085 hour = 0, hourOffset, min = 0, sec = 0, msec = 0, tzMinOffset = null,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1086 pmHour = false;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1087 // iterate the format groups to extract and set the date fields.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1088 for ( var j = 0, jl = groups.length; j < jl; j++ ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1089 var matchGroup = match[ j + 1 ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1090 if ( matchGroup ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1091 var current = groups[ j ],
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1092 clength = current.length,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1093 matchInt = parseInt( matchGroup, 10 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1094 switch ( current ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1095 case "dd": case "d":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1096 // Day of month.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1097 date = matchInt;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1098 // check that date is generally in valid range, also checking overflow below.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1099 if ( outOfRange(date, 1, 31) ) return null;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1100 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1101 case "MMM": case "MMMM":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1102 month = getMonthIndex( cal, matchGroup, clength === 3 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1103 if ( outOfRange(month, 0, 11) ) return null;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1104 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1105 case "M": case "MM":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1106 // Month.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1107 month = matchInt - 1;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1108 if ( outOfRange(month, 0, 11) ) return null;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1109 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1110 case "y": case "yy":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1111 case "yyyy":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1112 year = clength < 4 ? expandYear( cal, matchInt ) : matchInt;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1113 if ( outOfRange(year, 0, 9999) ) return null;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1114 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1115 case "h": case "hh":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1116 // Hours (12-hour clock).
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1117 hour = matchInt;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1118 if ( hour === 12 ) hour = 0;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1119 if ( outOfRange(hour, 0, 11) ) return null;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1120 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1121 case "H": case "HH":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1122 // Hours (24-hour clock).
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1123 hour = matchInt;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1124 if ( outOfRange(hour, 0, 23) ) return null;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1125 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1126 case "m": case "mm":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1127 // Minutes.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1128 min = matchInt;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1129 if ( outOfRange(min, 0, 59) ) return null;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1130 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1131 case "s": case "ss":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1132 // Seconds.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1133 sec = matchInt;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1134 if ( outOfRange(sec, 0, 59) ) return null;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1135 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1136 case "tt": case "t":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1137 // AM/PM designator.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1138 // see if it is standard, upper, or lower case PM. If not, ensure it is at least one of
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1139 // the AM tokens. If not, fail the parse for this format.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1140 pmHour = cal.PM && ( matchGroup === cal.PM[0] || matchGroup === cal.PM[1] || matchGroup === cal.PM[2] );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1141 if (
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1142 !pmHour && (
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1143 !cal.AM || ( matchGroup !== cal.AM[0] && matchGroup !== cal.AM[1] && matchGroup !== cal.AM[2] )
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1144 )
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1145 ) return null;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1146 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1147 case "f":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1148 // Deciseconds.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1149 case "ff":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1150 // Centiseconds.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1151 case "fff":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1152 // Milliseconds.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1153 msec = matchInt * Math.pow( 10, 3 - clength );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1154 if ( outOfRange(msec, 0, 999) ) return null;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1155 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1156 case "ddd":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1157 // Day of week.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1158 case "dddd":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1159 // Day of week.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1160 weekDay = getDayIndex( cal, matchGroup, clength === 3 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1161 if ( outOfRange(weekDay, 0, 6) ) return null;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1162 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1163 case "zzz":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1164 // Time zone offset in +/- hours:min.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1165 var offsets = matchGroup.split( /:/ );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1166 if ( offsets.length !== 2 ) return null;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1167 hourOffset = parseInt( offsets[0], 10 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1168 if ( outOfRange(hourOffset, -12, 13) ) return null;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1169 var minOffset = parseInt( offsets[1], 10 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1170 if ( outOfRange(minOffset, 0, 59) ) return null;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1171 tzMinOffset = ( hourOffset * 60 ) + ( startsWith(matchGroup, "-") ? -minOffset : minOffset );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1172 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1173 case "z": case "zz":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1174 // Time zone offset in +/- hours.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1175 hourOffset = matchInt;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1176 if ( outOfRange(hourOffset, -12, 13) ) return null;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1177 tzMinOffset = hourOffset * 60;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1178 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1179 case "g": case "gg":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1180 var eraName = matchGroup;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1181 if ( !eraName || !cal.eras ) return null;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1182 eraName = trim( eraName.toLowerCase() );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1183 for ( var i = 0, l = cal.eras.length; i < l; i++ ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1184 if ( eraName === cal.eras[i].name.toLowerCase() ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1185 era = i;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1186 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1187 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1188 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1189 // could not find an era with that name
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1190 if ( era === null ) return null;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1191 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1192 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1193 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1194 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1195 var result = new Date(), defaultYear, convert = cal.convert;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1196 defaultYear = convert ? convert.fromGregorian( result )[ 0 ] : result.getFullYear();
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1197 if ( year === null ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1198 year = defaultYear;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1199 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1200 else if ( cal.eras ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1201 // year must be shifted to normal gregorian year
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1202 // but not if year was not specified, its already normal gregorian
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1203 // per the main if clause above.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1204 year += cal.eras[( era || 0 )].offset;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1205 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1206 // set default day and month to 1 and January, so if unspecified, these are the defaults
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1207 // instead of the current day/month.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1208 if ( month === null ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1209 month = 0;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1210 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1211 if ( date === null ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1212 date = 1;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1213 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1214 // now have year, month, and date, but in the culture's calendar.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1215 // convert to gregorian if necessary
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1216 if ( convert ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1217 result = convert.toGregorian( year, month, date );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1218 // conversion failed, must be an invalid match
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1219 if ( result === null ) return null;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1220 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1221 else {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1222 // have to set year, month and date together to avoid overflow based on current date.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1223 result.setFullYear( year, month, date );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1224 // check to see if date overflowed for specified month (only checked 1-31 above).
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1225 if ( result.getDate() !== date ) return null;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1226 // invalid day of week.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1227 if ( weekDay !== null && result.getDay() !== weekDay ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1228 return null;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1229 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1230 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1231 // if pm designator token was found make sure the hours fit the 24-hour clock.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1232 if ( pmHour && hour < 12 ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1233 hour += 12;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1234 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1235 result.setHours( hour, min, sec, msec );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1236 if ( tzMinOffset !== null ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1237 // adjust timezone to utc before applying local offset.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1238 var adjustedMin = result.getMinutes() - ( tzMinOffset + result.getTimezoneOffset() );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1239 // Safari limits hours and minutes to the range of -127 to 127. We need to use setHours
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1240 // to ensure both these fields will not exceed this range. adjustedMin will range
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1241 // somewhere between -1440 and 1500, so we only need to split this into hours.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1242 result.setHours( result.getHours() + parseInt(adjustedMin / 60, 10), adjustedMin % 60 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1243 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1244 return result;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1245 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1246 }());
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1247
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1248 parseNegativePattern = function( value, nf, negativePattern ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1249 var neg = nf[ "-" ],
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1250 pos = nf[ "+" ],
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1251 ret;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1252 switch ( negativePattern ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1253 case "n -":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1254 neg = " " + neg;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1255 pos = " " + pos;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1256 /* falls through */
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1257 case "n-":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1258 if ( endsWith(value, neg) ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1259 ret = [ "-", value.substr(0, value.length - neg.length) ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1260 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1261 else if ( endsWith(value, pos) ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1262 ret = [ "+", value.substr(0, value.length - pos.length) ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1263 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1264 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1265 case "- n":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1266 neg += " ";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1267 pos += " ";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1268 /* falls through */
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1269 case "-n":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1270 if ( startsWith(value, neg) ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1271 ret = [ "-", value.substr(neg.length) ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1272 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1273 else if ( startsWith(value, pos) ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1274 ret = [ "+", value.substr(pos.length) ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1275 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1276 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1277 case "(n)":
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1278 if ( startsWith(value, "(") && endsWith(value, ")") ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1279 ret = [ "-", value.substr(1, value.length - 2) ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1280 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1281 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1282 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1283 return ret || [ "", value ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1284 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1285
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1286 //
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1287 // public instance functions
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1288 //
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1289
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1290 Globalize.prototype.findClosestCulture = function( cultureSelector ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1291 return Globalize.findClosestCulture.call( this, cultureSelector );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1292 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1293
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1294 Globalize.prototype.format = function( value, format, cultureSelector ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1295 return Globalize.format.call( this, value, format, cultureSelector );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1296 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1297
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1298 Globalize.prototype.localize = function( key, cultureSelector ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1299 return Globalize.localize.call( this, key, cultureSelector );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1300 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1301
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1302 Globalize.prototype.parseInt = function( value, radix, cultureSelector ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1303 return Globalize.parseInt.call( this, value, radix, cultureSelector );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1304 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1305
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1306 Globalize.prototype.parseFloat = function( value, radix, cultureSelector ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1307 return Globalize.parseFloat.call( this, value, radix, cultureSelector );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1308 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1309
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1310 Globalize.prototype.culture = function( cultureSelector ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1311 return Globalize.culture.call( this, cultureSelector );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1312 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1313
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1314 //
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1315 // public singleton functions
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1316 //
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1317
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1318 Globalize.addCultureInfo = function( cultureName, baseCultureName, info ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1319
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1320 var base = {},
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1321 isNew = false;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1322
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1323 if ( typeof cultureName !== "string" ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1324 // cultureName argument is optional string. If not specified, assume info is first
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1325 // and only argument. Specified info deep-extends current culture.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1326 info = cultureName;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1327 cultureName = this.culture().name;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1328 base = this.cultures[ cultureName ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1329 } else if ( typeof baseCultureName !== "string" ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1330 // baseCultureName argument is optional string. If not specified, assume info is second
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1331 // argument. Specified info deep-extends specified culture.
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1332 // If specified culture does not exist, create by deep-extending default
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1333 info = baseCultureName;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1334 isNew = ( this.cultures[ cultureName ] == null );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1335 base = this.cultures[ cultureName ] || this.cultures[ "default" ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1336 } else {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1337 // cultureName and baseCultureName specified. Assume a new culture is being created
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1338 // by deep-extending an specified base culture
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1339 isNew = true;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1340 base = this.cultures[ baseCultureName ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1341 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1342
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1343 this.cultures[ cultureName ] = extend(true, {},
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1344 base,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1345 info
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1346 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1347 // Make the standard calendar the current culture if it's a new culture
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1348 if ( isNew ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1349 this.cultures[ cultureName ].calendar = this.cultures[ cultureName ].calendars.standard;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1350 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1351 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1352
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1353 Globalize.findClosestCulture = function( name ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1354 var match;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1355 if ( !name ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1356 return this.findClosestCulture( this.cultureSelector ) || this.cultures[ "default" ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1357 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1358 if ( typeof name === "string" ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1359 name = name.split( "," );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1360 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1361 if ( isArray(name) ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1362 var lang,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1363 cultures = this.cultures,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1364 list = name,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1365 i, l = list.length,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1366 prioritized = [];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1367 for ( i = 0; i < l; i++ ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1368 name = trim( list[i] );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1369 var pri, parts = name.split( ";" );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1370 lang = trim( parts[0] );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1371 if ( parts.length === 1 ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1372 pri = 1;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1373 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1374 else {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1375 name = trim( parts[1] );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1376 if ( name.indexOf("q=") === 0 ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1377 name = name.substr( 2 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1378 pri = parseFloat( name );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1379 pri = isNaN( pri ) ? 0 : pri;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1380 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1381 else {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1382 pri = 1;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1383 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1384 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1385 prioritized.push({ lang: lang, pri: pri });
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1386 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1387 prioritized.sort(function( a, b ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1388 if ( a.pri < b.pri ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1389 return 1;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1390 } else if ( a.pri > b.pri ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1391 return -1;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1392 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1393 return 0;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1394 });
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1395 // exact match
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1396 for ( i = 0; i < l; i++ ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1397 lang = prioritized[ i ].lang;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1398 match = cultures[ lang ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1399 if ( match ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1400 return match;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1401 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1402 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1403
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1404 // neutral language match
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1405 for ( i = 0; i < l; i++ ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1406 lang = prioritized[ i ].lang;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1407 do {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1408 var index = lang.lastIndexOf( "-" );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1409 if ( index === -1 ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1410 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1411 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1412 // strip off the last part. e.g. en-US => en
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1413 lang = lang.substr( 0, index );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1414 match = cultures[ lang ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1415 if ( match ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1416 return match;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1417 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1418 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1419 while ( 1 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1420 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1421
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1422 // last resort: match first culture using that language
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1423 for ( i = 0; i < l; i++ ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1424 lang = prioritized[ i ].lang;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1425 for ( var cultureKey in cultures ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1426 var culture = cultures[ cultureKey ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1427 if ( culture.language == lang ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1428 return culture;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1429 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1430 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1431 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1432 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1433 else if ( typeof name === "object" ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1434 return name;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1435 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1436 return match || null;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1437 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1438
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1439 Globalize.format = function( value, format, cultureSelector ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1440 var culture = this.findClosestCulture( cultureSelector );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1441 if ( value instanceof Date ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1442 value = formatDate( value, format, culture );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1443 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1444 else if ( typeof value === "number" ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1445 value = formatNumber( value, format, culture );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1446 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1447 return value;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1448 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1449
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1450 Globalize.localize = function( key, cultureSelector ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1451 return this.findClosestCulture( cultureSelector ).messages[ key ] ||
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1452 this.cultures[ "default" ].messages[ key ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1453 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1454
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1455 Globalize.parseDate = function( value, formats, culture ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1456 culture = this.findClosestCulture( culture );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1457
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1458 var date, prop, patterns;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1459 if ( formats ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1460 if ( typeof formats === "string" ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1461 formats = [ formats ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1462 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1463 if ( formats.length ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1464 for ( var i = 0, l = formats.length; i < l; i++ ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1465 var format = formats[ i ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1466 if ( format ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1467 date = parseExact( value, format, culture );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1468 if ( date ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1469 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1470 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1471 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1472 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1473 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1474 } else {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1475 patterns = culture.calendar.patterns;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1476 for ( prop in patterns ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1477 date = parseExact( value, patterns[prop], culture );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1478 if ( date ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1479 break;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1480 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1481 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1482 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1483
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1484 return date || null;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1485 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1486
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1487 Globalize.parseInt = function( value, radix, cultureSelector ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1488 return truncate( Globalize.parseFloat(value, radix, cultureSelector) );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1489 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1490
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1491 Globalize.parseFloat = function( value, radix, cultureSelector ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1492 // radix argument is optional
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1493 if ( typeof radix !== "number" ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1494 cultureSelector = radix;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1495 radix = 10;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1496 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1497
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1498 var culture = this.findClosestCulture( cultureSelector );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1499 var ret = NaN,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1500 nf = culture.numberFormat;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1501
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1502 if ( value.indexOf(culture.numberFormat.currency.symbol) > -1 ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1503 // remove currency symbol
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1504 value = value.replace( culture.numberFormat.currency.symbol, "" );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1505 // replace decimal seperator
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1506 value = value.replace( culture.numberFormat.currency["."], culture.numberFormat["."] );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1507 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1508
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1509 //Remove percentage character from number string before parsing
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1510 if ( value.indexOf(culture.numberFormat.percent.symbol) > -1){
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1511 value = value.replace( culture.numberFormat.percent.symbol, "" );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1512 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1513
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1514 // remove spaces: leading, trailing and between - and number. Used for negative currency pt-BR
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1515 value = value.replace( / /g, "" );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1516
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1517 // allow infinity or hexidecimal
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1518 if ( regexInfinity.test(value) ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1519 ret = parseFloat( value );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1520 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1521 else if ( !radix && regexHex.test(value) ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1522 ret = parseInt( value, 16 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1523 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1524 else {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1525
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1526 // determine sign and number
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1527 var signInfo = parseNegativePattern( value, nf, nf.pattern[0] ),
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1528 sign = signInfo[ 0 ],
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1529 num = signInfo[ 1 ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1530
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1531 // #44 - try parsing as "(n)"
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1532 if ( sign === "" && nf.pattern[0] !== "(n)" ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1533 signInfo = parseNegativePattern( value, nf, "(n)" );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1534 sign = signInfo[ 0 ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1535 num = signInfo[ 1 ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1536 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1537
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1538 // try parsing as "-n"
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1539 if ( sign === "" && nf.pattern[0] !== "-n" ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1540 signInfo = parseNegativePattern( value, nf, "-n" );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1541 sign = signInfo[ 0 ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1542 num = signInfo[ 1 ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1543 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1544
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1545 sign = sign || "+";
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1546
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1547 // determine exponent and number
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1548 var exponent,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1549 intAndFraction,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1550 exponentPos = num.indexOf( "e" );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1551 if ( exponentPos < 0 ) exponentPos = num.indexOf( "E" );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1552 if ( exponentPos < 0 ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1553 intAndFraction = num;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1554 exponent = null;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1555 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1556 else {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1557 intAndFraction = num.substr( 0, exponentPos );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1558 exponent = num.substr( exponentPos + 1 );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1559 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1560 // determine decimal position
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1561 var integer,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1562 fraction,
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1563 decSep = nf[ "." ],
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1564 decimalPos = intAndFraction.indexOf( decSep );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1565 if ( decimalPos < 0 ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1566 integer = intAndFraction;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1567 fraction = null;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1568 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1569 else {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1570 integer = intAndFraction.substr( 0, decimalPos );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1571 fraction = intAndFraction.substr( decimalPos + decSep.length );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1572 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1573 // handle groups (e.g. 1,000,000)
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1574 var groupSep = nf[ "," ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1575 integer = integer.split( groupSep ).join( "" );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1576 var altGroupSep = groupSep.replace( /\u00A0/g, " " );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1577 if ( groupSep !== altGroupSep ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1578 integer = integer.split( altGroupSep ).join( "" );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1579 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1580 // build a natively parsable number string
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1581 var p = sign + integer;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1582 if ( fraction !== null ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1583 p += "." + fraction;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1584 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1585 if ( exponent !== null ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1586 // exponent itself may have a number patternd
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1587 var expSignInfo = parseNegativePattern( exponent, nf, "-n" );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1588 p += "e" + ( expSignInfo[0] || "+" ) + expSignInfo[ 1 ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1589 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1590 if ( regexParseFloat.test(p) ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1591 ret = parseFloat( p );
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1592 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1593 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1594 return ret;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1595 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1596
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1597 Globalize.culture = function( cultureSelector ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1598 // setter
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1599 if ( typeof cultureSelector !== "undefined" ) {
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1600 this.cultureSelector = cultureSelector;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1601 }
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1602 // getter
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1603 return this.findClosestCulture( cultureSelector ) || this.cultures[ "default" ];
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1604 };
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1605
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1606 document.Globalize = Globalize;
e9dafd7a59d5 Updated jqwidgets to version 7.2.0
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
1607 }(this));

mercurial