webshims-rails 1.12.0 → 1.12.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/extras/modernizr-custom.js +440 -440
  4. data/vendor/assets/javascripts/webshims/polyfiller.js +132 -91
  5. data/vendor/assets/javascripts/webshims/shims/combos/10.js +248 -91
  6. data/vendor/assets/javascripts/webshims/shims/combos/11.js +237 -84
  7. data/vendor/assets/javascripts/webshims/shims/combos/15.js +21 -8
  8. data/vendor/assets/javascripts/webshims/shims/combos/16.js +21 -8
  9. data/vendor/assets/javascripts/webshims/shims/combos/17.js +237 -84
  10. data/vendor/assets/javascripts/webshims/shims/combos/18.js +237 -84
  11. data/vendor/assets/javascripts/webshims/shims/combos/19.js +11 -7
  12. data/vendor/assets/javascripts/webshims/shims/combos/2.js +18 -8
  13. data/vendor/assets/javascripts/webshims/shims/combos/20.js +11 -7
  14. data/vendor/assets/javascripts/webshims/shims/combos/21.js +1 -1
  15. data/vendor/assets/javascripts/webshims/shims/combos/22.js +1 -1
  16. data/vendor/assets/javascripts/webshims/shims/combos/24.js +9 -6
  17. data/vendor/assets/javascripts/webshims/shims/combos/25.js +11 -7
  18. data/vendor/assets/javascripts/webshims/shims/combos/26.js +11 -7
  19. data/vendor/assets/javascripts/webshims/shims/combos/28.js +10 -1
  20. data/vendor/assets/javascripts/webshims/shims/combos/3.js +11 -7
  21. data/vendor/assets/javascripts/webshims/shims/combos/30.js +18 -8
  22. data/vendor/assets/javascripts/webshims/shims/combos/31.js +18 -8
  23. data/vendor/assets/javascripts/webshims/shims/combos/32.js +7 -1
  24. data/vendor/assets/javascripts/webshims/shims/combos/33.js +7 -1
  25. data/vendor/assets/javascripts/webshims/shims/combos/4.js +11 -7
  26. data/vendor/assets/javascripts/webshims/shims/combos/5.js +237 -84
  27. data/vendor/assets/javascripts/webshims/shims/combos/6.js +244 -85
  28. data/vendor/assets/javascripts/webshims/shims/combos/7.js +18 -8
  29. data/vendor/assets/javascripts/webshims/shims/combos/8.js +11 -7
  30. data/vendor/assets/javascripts/webshims/shims/combos/9.js +255 -92
  31. data/vendor/assets/javascripts/webshims/shims/details.js +1 -1
  32. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +10 -7
  33. data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +53 -56
  34. data/vendor/assets/javascripts/webshims/shims/form-datalist.js +7 -1
  35. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +175 -60
  36. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +3 -0
  37. data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +6 -6
  38. data/vendor/assets/javascripts/webshims/shims/form-validation.js +77 -28
  39. data/vendor/assets/javascripts/webshims/shims/form-validators.js +24 -16
  40. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +40 -68
  41. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pl.js +4 -4
  42. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-sv.js +13 -6
  43. data/vendor/assets/javascripts/webshims/shims/range-ui.js +61 -24
  44. data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +278 -95
  45. data/vendor/assets/javascripts/webshims/shims/styles/progress.gif +0 -0
  46. data/vendor/assets/javascripts/webshims/shims/styles/scss/_api-forms-ext.scss +203 -0
  47. data/vendor/assets/javascripts/webshims/shims/styles/scss/_api-shim.scss +115 -0
  48. data/vendor/assets/javascripts/webshims/shims/styles/scss/_extends.scss +18 -2
  49. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +227 -113
  50. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +168 -159
  51. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +106 -69
  52. metadata +4 -7
  53. data/vendor/assets/javascripts/webshims/shims/styles/details-arrows.png +0 -0
  54. data/vendor/assets/javascripts/webshims/shims/styles/polyfill-loader.gif +0 -0
  55. data/vendor/assets/javascripts/webshims/shims/styles/range-track.png +0 -0
  56. data/vendor/assets/javascripts/webshims/shims/styles/vertical-range.png +0 -0
  57. data/vendor/assets/javascripts/webshims/shims/swf/localStorage.swf +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 12271af5bfd9854dca82fe6a908b601a868e34c4
4
- data.tar.gz: e7b960a94efab5c9f1bb5bb938fcfadc25bdb3f1
3
+ metadata.gz: 64dc8a60020703d0b864c0f4f7ab4b8f39f0f63a
4
+ data.tar.gz: b1ce0d9be3b195be8381b475f3298ceee290b134
5
5
  SHA512:
6
- metadata.gz: 594d98543dfbf31bdc6833188172486e427e7517f1501117015b4bc4177a4dc84902baffa7896d008a689513d8360656bb2249197fc1a3c6e8ee9b9152473e6e
7
- data.tar.gz: 31328922dcf77b9b72439395874c99715804044993e34fe2b8239c6e4f95ac8b33e1611a31b1ba3242ea66c341db5b9b2ec034a502f57e88bcc2dc6cebd08f50
6
+ metadata.gz: b77af804aa74df4ef6593b8aba59d7e8e8ee8deba60b34797abc81af83429b24be969e88d90cbce9762ff5085ec6715e7e06aaaaa9de84c8163a988c26a1e5f1
7
+ data.tar.gz: 979c651edd8c44edba2cb9d8703538019d7fbfe4b2b5d61bae490d71cd86ab65b1cc7f252922153677bb723b2d41c9fee2541280dfb65208054c049e9c22428c
@@ -1,6 +1,6 @@
1
1
  module Webshims
2
2
  module Rails
3
- VERSION = "1.12.0"
4
- WEBSHIMS_VERSION = "1.12.0"
3
+ VERSION = "1.12.2"
4
+ WEBSHIMS_VERSION = "1.12.2"
5
5
  end
6
6
  end
@@ -1,4 +1,4 @@
1
- /* Modernizr 2.7.0 (Custom Build) | MIT & BSD
1
+ /* Modernizr 2.7.1 (Custom Build) | MIT & BSD
2
2
  * Build: http://modernizr.com/download/#-canvas-audio-video-input-inputtypes-localstorage-sessionstorage-geolocation-shiv-cssclasses-addtest-prefixed-testprop-testallprops-prefixes-domprefixes-elem_track
3
3
  */
4
4
  ;
@@ -7,528 +7,528 @@
7
7
 
8
8
  window.Modernizr = (function( window, document, undefined ) {
9
9
 
10
- var version = '2.7.0',
10
+ var version = '2.7.1',
11
11
 
12
- Modernizr = {},
12
+ Modernizr = {},
13
13
 
14
- enableClasses = true,
14
+ enableClasses = true,
15
15
 
16
- docElement = document.documentElement,
16
+ docElement = document.documentElement,
17
17
 
18
- mod = 'modernizr',
19
- modElem = document.createElement(mod),
20
- mStyle = modElem.style,
18
+ mod = 'modernizr',
19
+ modElem = document.createElement(mod),
20
+ mStyle = modElem.style,
21
21
 
22
- inputElem = document.createElement('input') ,
22
+ inputElem = document.createElement('input') ,
23
23
 
24
- smile = ':)',
24
+ smile = ':)',
25
25
 
26
- toString = {}.toString,
26
+ toString = {}.toString,
27
27
 
28
- prefixes = ' -webkit- -moz- -o- -ms- '.split(' '),
28
+ prefixes = ' -webkit- -moz- -o- -ms- '.split(' '),
29
29
 
30
30
 
31
31
 
32
- omPrefixes = 'Webkit Moz O ms',
32
+ omPrefixes = 'Webkit Moz O ms',
33
33
 
34
- cssomPrefixes = omPrefixes.split(' '),
34
+ cssomPrefixes = omPrefixes.split(' '),
35
35
 
36
- domPrefixes = omPrefixes.toLowerCase().split(' '),
36
+ domPrefixes = omPrefixes.toLowerCase().split(' '),
37
37
 
38
38
 
39
- tests = {},
40
- inputs = {},
41
- attrs = {},
39
+ tests = {},
40
+ inputs = {},
41
+ attrs = {},
42
42
 
43
- classes = [],
43
+ classes = [],
44
44
 
45
- slice = classes.slice,
45
+ slice = classes.slice,
46
46
 
47
- featureName,
47
+ featureName,
48
48
 
49
49
 
50
50
 
51
- _hasOwnProperty = ({}).hasOwnProperty, hasOwnProp;
51
+ _hasOwnProperty = ({}).hasOwnProperty, hasOwnProp;
52
52
 
53
- if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) {
54
- hasOwnProp = function (object, property) {
55
- return _hasOwnProperty.call(object, property);
56
- };
57
- }
58
- else {
59
- hasOwnProp = function (object, property) {
60
- return ((property in object) && is(object.constructor.prototype[property], 'undefined'));
61
- };
62
- }
53
+ if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) {
54
+ hasOwnProp = function (object, property) {
55
+ return _hasOwnProperty.call(object, property);
56
+ };
57
+ }
58
+ else {
59
+ hasOwnProp = function (object, property) {
60
+ return ((property in object) && is(object.constructor.prototype[property], 'undefined'));
61
+ };
62
+ }
63
63
 
64
64
 
65
- if (!Function.prototype.bind) {
66
- Function.prototype.bind = function bind(that) {
65
+ if (!Function.prototype.bind) {
66
+ Function.prototype.bind = function bind(that) {
67
67
 
68
- var target = this;
68
+ var target = this;
69
69
 
70
- if (typeof target != "function") {
71
- throw new TypeError();
72
- }
70
+ if (typeof target != "function") {
71
+ throw new TypeError();
72
+ }
73
73
 
74
- var args = slice.call(arguments, 1),
75
- bound = function () {
74
+ var args = slice.call(arguments, 1),
75
+ bound = function () {
76
76
 
77
- if (this instanceof bound) {
77
+ if (this instanceof bound) {
78
78
 
79
- var F = function(){};
80
- F.prototype = target.prototype;
81
- var self = new F();
79
+ var F = function(){};
80
+ F.prototype = target.prototype;
81
+ var self = new F();
82
82
 
83
- var result = target.apply(
84
- self,
85
- args.concat(slice.call(arguments))
86
- );
87
- if (Object(result) === result) {
88
- return result;
89
- }
90
- return self;
83
+ var result = target.apply(
84
+ self,
85
+ args.concat(slice.call(arguments))
86
+ );
87
+ if (Object(result) === result) {
88
+ return result;
89
+ }
90
+ return self;
91
91
 
92
- } else {
92
+ } else {
93
93
 
94
- return target.apply(
95
- that,
96
- args.concat(slice.call(arguments))
97
- );
94
+ return target.apply(
95
+ that,
96
+ args.concat(slice.call(arguments))
97
+ );
98
98
 
99
- }
99
+ }
100
100
 
101
- };
101
+ };
102
102
 
103
- return bound;
104
- };
105
- }
103
+ return bound;
104
+ };
105
+ }
106
106
 
107
- function setCss( str ) {
108
- mStyle.cssText = str;
109
- }
107
+ function setCss( str ) {
108
+ mStyle.cssText = str;
109
+ }
110
110
 
111
- function setCssAll( str1, str2 ) {
112
- return setCss(prefixes.join(str1 + ';') + ( str2 || '' ));
113
- }
111
+ function setCssAll( str1, str2 ) {
112
+ return setCss(prefixes.join(str1 + ';') + ( str2 || '' ));
113
+ }
114
114
 
115
- function is( obj, type ) {
116
- return typeof obj === type;
117
- }
115
+ function is( obj, type ) {
116
+ return typeof obj === type;
117
+ }
118
118
 
119
- function contains( str, substr ) {
120
- return !!~('' + str).indexOf(substr);
121
- }
119
+ function contains( str, substr ) {
120
+ return !!~('' + str).indexOf(substr);
121
+ }
122
122
 
123
- function testProps( props, prefixed ) {
124
- for ( var i in props ) {
125
- var prop = props[i];
126
- if ( !contains(prop, "-") && mStyle[prop] !== undefined ) {
127
- return prefixed == 'pfx' ? prop : true;
128
- }
129
- }
130
- return false;
131
- }
123
+ function testProps( props, prefixed ) {
124
+ for ( var i in props ) {
125
+ var prop = props[i];
126
+ if ( !contains(prop, "-") && mStyle[prop] !== undefined ) {
127
+ return prefixed == 'pfx' ? prop : true;
128
+ }
129
+ }
130
+ return false;
131
+ }
132
132
 
133
- function testDOMProps( props, obj, elem ) {
134
- for ( var i in props ) {
135
- var item = obj[props[i]];
136
- if ( item !== undefined) {
133
+ function testDOMProps( props, obj, elem ) {
134
+ for ( var i in props ) {
135
+ var item = obj[props[i]];
136
+ if ( item !== undefined) {
137
137
 
138
- if (elem === false) return props[i];
138
+ if (elem === false) return props[i];
139
139
 
140
- if (is(item, 'function')){
141
- return item.bind(elem || obj);
142
- }
140
+ if (is(item, 'function')){
141
+ return item.bind(elem || obj);
142
+ }
143
143
 
144
- return item;
145
- }
146
- }
147
- return false;
148
- }
144
+ return item;
145
+ }
146
+ }
147
+ return false;
148
+ }
149
149
 
150
- function testPropsAll( prop, prefixed, elem ) {
151
-
152
- var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),
153
- props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' ');
154
-
155
- if(is(prefixed, "string") || is(prefixed, "undefined")) {
156
- return testProps(props, prefixed);
150
+ function testPropsAll( prop, prefixed, elem ) {
151
+
152
+ var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),
153
+ props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' ');
154
+
155
+ if(is(prefixed, "string") || is(prefixed, "undefined")) {
156
+ return testProps(props, prefixed);
157
157
 
158
- } else {
159
- props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' ');
160
- return testDOMProps(props, prefixed, elem);
161
- }
162
- }
158
+ } else {
159
+ props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' ');
160
+ return testDOMProps(props, prefixed, elem);
161
+ }
162
+ }
163
163
 
164
164
 
165
165
 
166
- tests['canvas'] = function() {
167
- var elem = document.createElement('canvas');
168
- return !!(elem.getContext && elem.getContext('2d'));
169
- }; tests['geolocation'] = function() {
170
- return 'geolocation' in navigator;
171
- };
166
+ tests['canvas'] = function() {
167
+ var elem = document.createElement('canvas');
168
+ return !!(elem.getContext && elem.getContext('2d'));
169
+ }; tests['geolocation'] = function() {
170
+ return 'geolocation' in navigator;
171
+ };
172
172
 
173
173
 
174
- tests['video'] = function() {
175
- var elem = document.createElement('video'),
176
- bool = false;
177
-
178
- try {
179
- if ( bool = !!elem.canPlayType ) {
180
- bool = new Boolean(bool);
181
- bool.ogg = elem.canPlayType('video/ogg; codecs="theora"') .replace(/^no$/,'');
182
-
183
- bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"') .replace(/^no$/,'');
184
-
185
- bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,'');
186
- }
187
-
188
- } catch(e) { }
189
-
190
- return bool;
191
- };
174
+ tests['video'] = function() {
175
+ var elem = document.createElement('video'),
176
+ bool = false;
177
+
178
+ try {
179
+ if ( bool = !!elem.canPlayType ) {
180
+ bool = new Boolean(bool);
181
+ bool.ogg = elem.canPlayType('video/ogg; codecs="theora"') .replace(/^no$/,'');
182
+
183
+ bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"') .replace(/^no$/,'');
184
+
185
+ bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,'');
186
+ }
187
+
188
+ } catch(e) { }
189
+
190
+ return bool;
191
+ };
192
192
 
193
- tests['audio'] = function() {
194
- var elem = document.createElement('audio'),
195
- bool = false;
196
-
197
- try {
198
- if ( bool = !!elem.canPlayType ) {
199
- bool = new Boolean(bool);
200
- bool.ogg = elem.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,'');
201
- bool.mp3 = elem.canPlayType('audio/mpeg;') .replace(/^no$/,'');
202
-
203
- bool.wav = elem.canPlayType('audio/wav; codecs="1"') .replace(/^no$/,'');
204
- bool.m4a = ( elem.canPlayType('audio/x-m4a;') ||
205
- elem.canPlayType('audio/aac;')) .replace(/^no$/,'');
206
- }
207
- } catch(e) { }
208
-
209
- return bool;
210
- };
211
-
212
-
213
- tests['localstorage'] = function() {
214
- try {
215
- localStorage.setItem(mod, mod);
216
- localStorage.removeItem(mod);
217
- return true;
218
- } catch(e) {
219
- return false;
220
- }
221
- };
193
+ tests['audio'] = function() {
194
+ var elem = document.createElement('audio'),
195
+ bool = false;
196
+
197
+ try {
198
+ if ( bool = !!elem.canPlayType ) {
199
+ bool = new Boolean(bool);
200
+ bool.ogg = elem.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,'');
201
+ bool.mp3 = elem.canPlayType('audio/mpeg;') .replace(/^no$/,'');
202
+
203
+ bool.wav = elem.canPlayType('audio/wav; codecs="1"') .replace(/^no$/,'');
204
+ bool.m4a = ( elem.canPlayType('audio/x-m4a;') ||
205
+ elem.canPlayType('audio/aac;')) .replace(/^no$/,'');
206
+ }
207
+ } catch(e) { }
208
+
209
+ return bool;
210
+ };
211
+
212
+
213
+ tests['localstorage'] = function() {
214
+ try {
215
+ localStorage.setItem(mod, mod);
216
+ localStorage.removeItem(mod);
217
+ return true;
218
+ } catch(e) {
219
+ return false;
220
+ }
221
+ };
222
222
 
223
- tests['sessionstorage'] = function() {
224
- try {
225
- sessionStorage.setItem(mod, mod);
226
- sessionStorage.removeItem(mod);
227
- return true;
228
- } catch(e) {
229
- return false;
230
- }
231
- };
223
+ tests['sessionstorage'] = function() {
224
+ try {
225
+ sessionStorage.setItem(mod, mod);
226
+ sessionStorage.removeItem(mod);
227
+ return true;
228
+ } catch(e) {
229
+ return false;
230
+ }
231
+ };
232
232
 
233
- function webforms() {
234
- Modernizr['input'] = (function( props ) {
235
- for ( var i = 0, len = props.length; i < len; i++ ) {
236
- attrs[ props[i] ] = !!(props[i] in inputElem);
237
- }
238
- if (attrs.list){
239
- attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement);
240
- }
241
- return attrs;
242
- })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));
243
- Modernizr['inputtypes'] = (function(props) {
233
+ function webforms() {
234
+ Modernizr['input'] = (function( props ) {
235
+ for ( var i = 0, len = props.length; i < len; i++ ) {
236
+ attrs[ props[i] ] = !!(props[i] in inputElem);
237
+ }
238
+ if (attrs.list){
239
+ attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement);
240
+ }
241
+ return attrs;
242
+ })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));
243
+ Modernizr['inputtypes'] = (function(props) {
244
244
 
245
- for ( var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++ ) {
245
+ for ( var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++ ) {
246
246
 
247
- inputElem.setAttribute('type', inputElemType = props[i]);
248
- bool = inputElem.type !== 'text';
247
+ inputElem.setAttribute('type', inputElemType = props[i]);
248
+ bool = inputElem.type !== 'text';
249
249
 
250
- if ( bool ) {
250
+ if ( bool ) {
251
251
 
252
- inputElem.value = smile;
253
- inputElem.style.cssText = 'position:absolute;visibility:hidden;';
252
+ inputElem.value = smile;
253
+ inputElem.style.cssText = 'position:absolute;visibility:hidden;';
254
254
 
255
- if ( /^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined ) {
255
+ if ( /^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined ) {
256
256
 
257
- docElement.appendChild(inputElem);
258
- defaultView = document.defaultView;
257
+ docElement.appendChild(inputElem);
258
+ defaultView = document.defaultView;
259
259
 
260
- bool = defaultView.getComputedStyle &&
261
- defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' &&
262
- (inputElem.offsetHeight !== 0);
260
+ bool = defaultView.getComputedStyle &&
261
+ defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' &&
262
+ (inputElem.offsetHeight !== 0);
263
263
 
264
- docElement.removeChild(inputElem);
264
+ docElement.removeChild(inputElem);
265
265
 
266
- } else if ( /^(search|tel)$/.test(inputElemType) ){
267
- } else if ( /^(url|email)$/.test(inputElemType) ) {
268
- bool = inputElem.checkValidity && inputElem.checkValidity() === false;
266
+ } else if ( /^(search|tel)$/.test(inputElemType) ){
267
+ } else if ( /^(url|email)$/.test(inputElemType) ) {
268
+ bool = inputElem.checkValidity && inputElem.checkValidity() === false;
269
269
 
270
- } else {
271
- bool = inputElem.value != smile;
272
- }
273
- }
270
+ } else {
271
+ bool = inputElem.value != smile;
272
+ }
273
+ }
274
274
 
275
- inputs[ props[i] ] = !!bool;
276
- }
277
- return inputs;
278
- })('search tel url email datetime date month week time datetime-local number range color'.split(' '));
279
- }
280
- for ( var feature in tests ) {
281
- if ( hasOwnProp(tests, feature) ) {
282
- featureName = feature.toLowerCase();
283
- Modernizr[featureName] = tests[feature]();
275
+ inputs[ props[i] ] = !!bool;
276
+ }
277
+ return inputs;
278
+ })('search tel url email datetime date month week time datetime-local number range color'.split(' '));
279
+ }
280
+ for ( var feature in tests ) {
281
+ if ( hasOwnProp(tests, feature) ) {
282
+ featureName = feature.toLowerCase();
283
+ Modernizr[featureName] = tests[feature]();
284
284
 
285
- classes.push((Modernizr[featureName] ? '' : 'no-') + featureName);
286
- }
287
- }
288
-
289
- Modernizr.input || webforms();
290
-
291
-
292
- Modernizr.addTest = function ( feature, test ) {
293
- if ( typeof feature == 'object' ) {
294
- for ( var key in feature ) {
295
- if ( hasOwnProp( feature, key ) ) {
296
- Modernizr.addTest( key, feature[ key ] );
297
- }
298
- }
299
- } else {
300
-
301
- feature = feature.toLowerCase();
302
-
303
- if ( Modernizr[feature] !== undefined ) {
304
- return Modernizr;
305
- }
306
-
307
- test = typeof test == 'function' ? test() : test;
308
-
309
- if (typeof enableClasses !== "undefined" && enableClasses) {
310
- docElement.className += ' ' + (test ? '' : 'no-') + feature;
311
- }
312
- Modernizr[feature] = test;
313
-
314
- }
315
-
316
- return Modernizr;
317
- };
318
-
319
-
320
- setCss('');
321
- modElem = inputElem = null;
322
-
323
- ;(function(window, document) {
324
- var version = '3.7.0';
325
-
326
- var options = window.html5 || {};
327
-
328
- var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
329
-
330
- var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
331
-
332
- var supportsHtml5Styles;
333
-
334
- var expando = '_html5shiv';
335
-
336
- var expanID = 0;
337
-
338
- var expandoData = {};
339
-
340
- var supportsUnknownElements;
341
-
342
- (function() {
343
- try {
344
- var a = document.createElement('a');
345
- a.innerHTML = '<xyz></xyz>';
346
- supportsHtml5Styles = ('hidden' in a);
347
-
348
- supportsUnknownElements = a.childNodes.length == 1 || (function() {
349
- (document.createElement)('a');
350
- var frag = document.createDocumentFragment();
351
- return (
352
- typeof frag.cloneNode == 'undefined' ||
353
- typeof frag.createDocumentFragment == 'undefined' ||
354
- typeof frag.createElement == 'undefined'
355
- );
356
- }());
357
- } catch(e) {
358
- supportsHtml5Styles = true;
359
- supportsUnknownElements = true;
360
- }
361
-
362
- }());
363
-
364
- function addStyleSheet(ownerDocument, cssText) {
365
- var p = ownerDocument.createElement('p'),
366
- parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
367
-
368
- p.innerHTML = 'x<style>' + cssText + '</style>';
369
- return parent.insertBefore(p.lastChild, parent.firstChild);
370
- }
371
-
372
- function getElements() {
373
- var elements = html5.elements;
374
- return typeof elements == 'string' ? elements.split(' ') : elements;
375
- }
376
-
377
- function getExpandoData(ownerDocument) {
378
- var data = expandoData[ownerDocument[expando]];
379
- if (!data) {
380
- data = {};
381
- expanID++;
382
- ownerDocument[expando] = expanID;
383
- expandoData[expanID] = data;
384
- }
385
- return data;
386
- }
387
-
388
- function createElement(nodeName, ownerDocument, data){
389
- if (!ownerDocument) {
390
- ownerDocument = document;
391
- }
392
- if(supportsUnknownElements){
393
- return ownerDocument.createElement(nodeName);
394
- }
395
- if (!data) {
396
- data = getExpandoData(ownerDocument);
397
- }
398
- var node;
399
-
400
- if (data.cache[nodeName]) {
401
- node = data.cache[nodeName].cloneNode();
402
- } else if (saveClones.test(nodeName)) {
403
- node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
404
- } else {
405
- node = data.createElem(nodeName);
406
- }
407
-
408
- return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;
409
- }
410
-
411
- function createDocumentFragment(ownerDocument, data){
412
- if (!ownerDocument) {
413
- ownerDocument = document;
414
- }
415
- if(supportsUnknownElements){
416
- return ownerDocument.createDocumentFragment();
417
- }
418
- data = data || getExpandoData(ownerDocument);
419
- var clone = data.frag.cloneNode(),
420
- i = 0,
421
- elems = getElements(),
422
- l = elems.length;
423
- for(;i<l;i++){
424
- clone.createElement(elems[i]);
425
- }
426
- return clone;
427
- }
428
-
429
- function shivMethods(ownerDocument, data) {
430
- if (!data.cache) {
431
- data.cache = {};
432
- data.createElem = ownerDocument.createElement;
433
- data.createFrag = ownerDocument.createDocumentFragment;
434
- data.frag = data.createFrag();
435
- }
436
-
437
-
438
- ownerDocument.createElement = function(nodeName) {
439
- if (!html5.shivMethods) {
440
- return data.createElem(nodeName);
441
- }
442
- return createElement(nodeName, ownerDocument, data);
443
- };
444
-
445
- ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
446
- 'var n=f.cloneNode(),c=n.createElement;' +
447
- 'h.shivMethods&&(' +
448
- getElements().join().replace(/[\w\-]+/g, function(nodeName) {
449
- data.createElem(nodeName);
450
- data.frag.createElement(nodeName);
451
- return 'c("' + nodeName + '")';
452
- }) +
453
- ');return n}'
454
- )(html5, data.frag);
455
- }
456
-
457
- function shivDocument(ownerDocument) {
458
- if (!ownerDocument) {
459
- ownerDocument = document;
460
- }
461
- var data = getExpandoData(ownerDocument);
462
-
463
- if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
464
- data.hasCSS = !!addStyleSheet(ownerDocument,
465
- 'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +
466
- 'mark{background:#FF0;color:#000}' +
467
- 'template{display:none}'
468
- );
469
- }
470
- if (!supportsUnknownElements) {
471
- shivMethods(ownerDocument, data);
472
- }
473
- return ownerDocument;
474
- }
475
-
476
- var html5 = {
477
-
478
- 'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video',
479
-
480
- 'version': version,
481
-
482
- 'shivCSS': (options.shivCSS !== false),
483
-
484
- 'supportsUnknownElements': supportsUnknownElements,
485
-
486
- 'shivMethods': (options.shivMethods !== false),
285
+ classes.push((Modernizr[featureName] ? '' : 'no-') + featureName);
286
+ }
287
+ }
288
+
289
+ Modernizr.input || webforms();
290
+
291
+
292
+ Modernizr.addTest = function ( feature, test ) {
293
+ if ( typeof feature == 'object' ) {
294
+ for ( var key in feature ) {
295
+ if ( hasOwnProp( feature, key ) ) {
296
+ Modernizr.addTest( key, feature[ key ] );
297
+ }
298
+ }
299
+ } else {
300
+
301
+ feature = feature.toLowerCase();
302
+
303
+ if ( Modernizr[feature] !== undefined ) {
304
+ return Modernizr;
305
+ }
306
+
307
+ test = typeof test == 'function' ? test() : test;
308
+
309
+ if (typeof enableClasses !== "undefined" && enableClasses) {
310
+ docElement.className += ' ' + (test ? '' : 'no-') + feature;
311
+ }
312
+ Modernizr[feature] = test;
313
+
314
+ }
315
+
316
+ return Modernizr;
317
+ };
318
+
319
+
320
+ setCss('');
321
+ modElem = inputElem = null;
322
+
323
+ ;(function(window, document) {
324
+ var version = '3.7.0';
325
+
326
+ var options = window.html5 || {};
327
+
328
+ var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
329
+
330
+ var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
331
+
332
+ var supportsHtml5Styles;
333
+
334
+ var expando = '_html5shiv';
335
+
336
+ var expanID = 0;
337
+
338
+ var expandoData = {};
339
+
340
+ var supportsUnknownElements;
341
+
342
+ (function() {
343
+ try {
344
+ var a = document.createElement('a');
345
+ a.innerHTML = '<xyz></xyz>';
346
+ supportsHtml5Styles = ('hidden' in a);
347
+
348
+ supportsUnknownElements = a.childNodes.length == 1 || (function() {
349
+ (document.createElement)('a');
350
+ var frag = document.createDocumentFragment();
351
+ return (
352
+ typeof frag.cloneNode == 'undefined' ||
353
+ typeof frag.createDocumentFragment == 'undefined' ||
354
+ typeof frag.createElement == 'undefined'
355
+ );
356
+ }());
357
+ } catch(e) {
358
+ supportsHtml5Styles = true;
359
+ supportsUnknownElements = true;
360
+ }
361
+
362
+ }());
363
+
364
+ function addStyleSheet(ownerDocument, cssText) {
365
+ var p = ownerDocument.createElement('p'),
366
+ parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
367
+
368
+ p.innerHTML = 'x<style>' + cssText + '</style>';
369
+ return parent.insertBefore(p.lastChild, parent.firstChild);
370
+ }
371
+
372
+ function getElements() {
373
+ var elements = html5.elements;
374
+ return typeof elements == 'string' ? elements.split(' ') : elements;
375
+ }
376
+
377
+ function getExpandoData(ownerDocument) {
378
+ var data = expandoData[ownerDocument[expando]];
379
+ if (!data) {
380
+ data = {};
381
+ expanID++;
382
+ ownerDocument[expando] = expanID;
383
+ expandoData[expanID] = data;
384
+ }
385
+ return data;
386
+ }
387
+
388
+ function createElement(nodeName, ownerDocument, data){
389
+ if (!ownerDocument) {
390
+ ownerDocument = document;
391
+ }
392
+ if(supportsUnknownElements){
393
+ return ownerDocument.createElement(nodeName);
394
+ }
395
+ if (!data) {
396
+ data = getExpandoData(ownerDocument);
397
+ }
398
+ var node;
399
+
400
+ if (data.cache[nodeName]) {
401
+ node = data.cache[nodeName].cloneNode();
402
+ } else if (saveClones.test(nodeName)) {
403
+ node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
404
+ } else {
405
+ node = data.createElem(nodeName);
406
+ }
407
+
408
+ return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;
409
+ }
410
+
411
+ function createDocumentFragment(ownerDocument, data){
412
+ if (!ownerDocument) {
413
+ ownerDocument = document;
414
+ }
415
+ if(supportsUnknownElements){
416
+ return ownerDocument.createDocumentFragment();
417
+ }
418
+ data = data || getExpandoData(ownerDocument);
419
+ var clone = data.frag.cloneNode(),
420
+ i = 0,
421
+ elems = getElements(),
422
+ l = elems.length;
423
+ for(;i<l;i++){
424
+ clone.createElement(elems[i]);
425
+ }
426
+ return clone;
427
+ }
428
+
429
+ function shivMethods(ownerDocument, data) {
430
+ if (!data.cache) {
431
+ data.cache = {};
432
+ data.createElem = ownerDocument.createElement;
433
+ data.createFrag = ownerDocument.createDocumentFragment;
434
+ data.frag = data.createFrag();
435
+ }
436
+
437
+
438
+ ownerDocument.createElement = function(nodeName) {
439
+ if (!html5.shivMethods) {
440
+ return data.createElem(nodeName);
441
+ }
442
+ return createElement(nodeName, ownerDocument, data);
443
+ };
444
+
445
+ ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
446
+ 'var n=f.cloneNode(),c=n.createElement;' +
447
+ 'h.shivMethods&&(' +
448
+ getElements().join().replace(/[\w\-]+/g, function(nodeName) {
449
+ data.createElem(nodeName);
450
+ data.frag.createElement(nodeName);
451
+ return 'c("' + nodeName + '")';
452
+ }) +
453
+ ');return n}'
454
+ )(html5, data.frag);
455
+ }
456
+
457
+ function shivDocument(ownerDocument) {
458
+ if (!ownerDocument) {
459
+ ownerDocument = document;
460
+ }
461
+ var data = getExpandoData(ownerDocument);
462
+
463
+ if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
464
+ data.hasCSS = !!addStyleSheet(ownerDocument,
465
+ 'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +
466
+ 'mark{background:#FF0;color:#000}' +
467
+ 'template{display:none}'
468
+ );
469
+ }
470
+ if (!supportsUnknownElements) {
471
+ shivMethods(ownerDocument, data);
472
+ }
473
+ return ownerDocument;
474
+ }
475
+
476
+ var html5 = {
477
+
478
+ 'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video',
479
+
480
+ 'version': version,
481
+
482
+ 'shivCSS': (options.shivCSS !== false),
483
+
484
+ 'supportsUnknownElements': supportsUnknownElements,
485
+
486
+ 'shivMethods': (options.shivMethods !== false),
487
487
 
488
- 'type': 'default',
489
-
490
- 'shivDocument': shivDocument,
488
+ 'type': 'default',
489
+
490
+ 'shivDocument': shivDocument,
491
491
 
492
- createElement: createElement,
492
+ createElement: createElement,
493
493
 
494
- createDocumentFragment: createDocumentFragment
495
- };
494
+ createDocumentFragment: createDocumentFragment
495
+ };
496
496
 
497
- window.html5 = html5;
497
+ window.html5 = html5;
498
498
 
499
- shivDocument(document);
499
+ shivDocument(document);
500
500
 
501
- }(this, document));
501
+ }(this, document));
502
502
 
503
- Modernizr._version = version;
503
+ Modernizr._version = version;
504
504
 
505
- Modernizr._prefixes = prefixes;
506
- Modernizr._domPrefixes = domPrefixes;
507
- Modernizr._cssomPrefixes = cssomPrefixes;
505
+ Modernizr._prefixes = prefixes;
506
+ Modernizr._domPrefixes = domPrefixes;
507
+ Modernizr._cssomPrefixes = cssomPrefixes;
508
508
 
509
509
 
510
510
 
511
- Modernizr.testProp = function(prop){
512
- return testProps([prop]);
513
- };
511
+ Modernizr.testProp = function(prop){
512
+ return testProps([prop]);
513
+ };
514
514
 
515
- Modernizr.testAllProps = testPropsAll;
515
+ Modernizr.testAllProps = testPropsAll;
516
516
 
517
517
 
518
- Modernizr.prefixed = function(prop, obj, elem){
519
- if(!obj) {
520
- return testPropsAll(prop, 'pfx');
521
- } else {
522
- return testPropsAll(prop, obj, elem);
523
- }
524
- };
518
+ Modernizr.prefixed = function(prop, obj, elem){
519
+ if(!obj) {
520
+ return testPropsAll(prop, 'pfx');
521
+ } else {
522
+ return testPropsAll(prop, obj, elem);
523
+ }
524
+ };
525
525
 
526
526
 
527
- docElement.className = docElement.className.replace(/(^|\s)no-js(\s|$)/, '$1$2') +
527
+ docElement.className = docElement.className.replace(/(^|\s)no-js(\s|$)/, '$1$2') +
528
528
 
529
- (enableClasses ? ' js ' + classes.join(' ') : '');
529
+ (enableClasses ? ' js ' + classes.join(' ') : '');
530
530
 
531
- return Modernizr;
531
+ return Modernizr;
532
532
 
533
533
  })(this, this.document);
534
534
  // Track element + Timed Text Track API
@@ -542,4 +542,4 @@ Modernizr.addTest({
542
542
  // a more strict test for track including UI support: document.createElement('track').kind === 'subtitles'
543
543
  track: ('kind' in document.createElement('track'))
544
544
  });
545
- ;
545
+ ;