www/jqwidgets/globalization/globalize.js

Thu, 10 Feb 2022 22:15:10 +0100

author
Michiel Broek <mbroek@mbse.eu>
date
Thu, 10 Feb 2022 22:15:10 +0100
changeset 785
aa79acfdf8a9
parent 368
e9dafd7a59d5
permissions
-rw-r--r--

Added uuid field in inventory equipments, fermentables, hops, miscs, suppliers, water and yeasts. Added uuid field in profiles mash, styles and water.

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