webshims-rails 0.3 → 0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (140) hide show
  1. data/lib/webshims-rails.rb +1 -1
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/readme.textile +5 -3
  4. data/vendor/assets/javascripts/webshims/dev/extras/custom-validity.js +261 -0
  5. data/vendor/assets/javascripts/webshims/dev/extras/modernizr-custom.js +535 -0
  6. data/vendor/assets/javascripts/webshims/dev/extras/mousepress.js +60 -0
  7. data/vendor/assets/javascripts/webshims/dev/polyfiller.js +1171 -0
  8. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvas/README +62 -0
  9. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvas/canvas2png.js +42 -0
  10. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvas/flashcanvas.js +28 -0
  11. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvas/flashcanvas.swf +0 -0
  12. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvas/proxy.php +73 -0
  13. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvas/save.php +49 -0
  14. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvasPro/README +82 -0
  15. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvasPro/canvas2png.js +42 -0
  16. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvasPro/flash10canvas.swf +0 -0
  17. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvasPro/flash9canvas.swf +0 -0
  18. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvasPro/flashcanvas.js +31 -0
  19. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvasPro/proxy.php +73 -0
  20. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvasPro/save.php +49 -0
  21. data/vendor/assets/javascripts/webshims/dev/shims/combos/1.js +1710 -0
  22. data/vendor/assets/javascripts/webshims/dev/shims/combos/10.js +3317 -0
  23. data/vendor/assets/javascripts/webshims/dev/shims/combos/11.js +1585 -0
  24. data/vendor/assets/javascripts/webshims/dev/shims/combos/12.js +1587 -0
  25. data/vendor/assets/javascripts/webshims/dev/shims/combos/13.js +1054 -0
  26. data/vendor/assets/javascripts/webshims/dev/shims/combos/14.js +476 -0
  27. data/vendor/assets/javascripts/webshims/dev/shims/combos/15.js +314 -0
  28. data/vendor/assets/javascripts/webshims/dev/shims/combos/16.js +2101 -0
  29. data/vendor/assets/javascripts/webshims/dev/shims/combos/17.js +2264 -0
  30. data/vendor/assets/javascripts/webshims/dev/shims/combos/18.js +2161 -0
  31. data/vendor/assets/javascripts/webshims/dev/shims/combos/19.js +2244 -0
  32. data/vendor/assets/javascripts/webshims/dev/shims/combos/2.js +2294 -0
  33. data/vendor/assets/javascripts/webshims/dev/shims/combos/20.js +1607 -0
  34. data/vendor/assets/javascripts/webshims/dev/shims/combos/21.js +1635 -0
  35. data/vendor/assets/javascripts/webshims/dev/shims/combos/22.js +2409 -0
  36. data/vendor/assets/javascripts/webshims/dev/shims/combos/23.js +2168 -0
  37. data/vendor/assets/javascripts/webshims/dev/shims/combos/24.js +2777 -0
  38. data/vendor/assets/javascripts/webshims/dev/shims/combos/25.js +2204 -0
  39. data/vendor/assets/javascripts/webshims/dev/shims/combos/26.js +2863 -0
  40. data/vendor/assets/javascripts/webshims/dev/shims/combos/27.js +4079 -0
  41. data/vendor/assets/javascripts/webshims/dev/shims/combos/3.js +2971 -0
  42. data/vendor/assets/javascripts/webshims/dev/shims/combos/4.js +823 -0
  43. data/vendor/assets/javascripts/webshims/dev/shims/combos/5.js +1078 -0
  44. data/vendor/assets/javascripts/webshims/dev/shims/combos/59.js +1754 -0
  45. data/vendor/assets/javascripts/webshims/dev/shims/combos/6.js +1230 -0
  46. data/vendor/assets/javascripts/webshims/dev/shims/combos/7.js +1485 -0
  47. data/vendor/assets/javascripts/webshims/dev/shims/combos/8.js +1442 -0
  48. data/vendor/assets/javascripts/webshims/dev/shims/combos/9.js +2515 -0
  49. data/vendor/assets/javascripts/webshims/dev/shims/details.js +146 -0
  50. data/vendor/assets/javascripts/webshims/dev/shims/dom-extend.js +908 -0
  51. data/vendor/assets/javascripts/webshims/dev/shims/es5.js +802 -0
  52. data/vendor/assets/javascripts/webshims/dev/shims/excanvas.js +924 -0
  53. data/vendor/assets/javascripts/webshims/dev/shims/form-core.js +660 -0
  54. data/vendor/assets/javascripts/webshims/dev/shims/form-datalist.js +677 -0
  55. data/vendor/assets/javascripts/webshims/dev/shims/form-message.js +164 -0
  56. data/vendor/assets/javascripts/webshims/dev/shims/form-native-extend.js +256 -0
  57. data/vendor/assets/javascripts/webshims/dev/shims/form-native-fix.js +261 -0
  58. data/vendor/assets/javascripts/webshims/dev/shims/form-number-date-api.js +384 -0
  59. data/vendor/assets/javascripts/webshims/dev/shims/form-number-date-ui.js +847 -0
  60. data/vendor/assets/javascripts/webshims/dev/shims/form-shim-extend.js +1472 -0
  61. data/vendor/assets/javascripts/webshims/dev/shims/geolocation.js +168 -0
  62. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-ar.js +32 -0
  63. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-ch-ZN.js +32 -0
  64. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-de.txt +33 -0
  65. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-el.js +32 -0
  66. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-en.txt +34 -0
  67. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-es.js +32 -0
  68. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-fr.js +32 -0
  69. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-he.js +32 -0
  70. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-hi.js +32 -0
  71. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-hu.js +32 -0
  72. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-it.js +32 -0
  73. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-ja.js +32 -0
  74. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-nl.js +32 -0
  75. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-pt-PT.js +32 -0
  76. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-ru.js +32 -0
  77. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-sv.js +32 -0
  78. data/vendor/assets/javascripts/webshims/dev/shims/json-storage.js +308 -0
  79. data/vendor/assets/javascripts/webshims/dev/shims/jwplayer/license.txt +1 -0
  80. data/vendor/assets/javascripts/webshims/dev/shims/jwplayer/player.swf +0 -0
  81. data/vendor/assets/javascripts/webshims/dev/shims/jwplayer/readme.html +87 -0
  82. data/vendor/assets/javascripts/webshims/dev/shims/mediaelement-core.js +534 -0
  83. data/vendor/assets/javascripts/webshims/dev/shims/mediaelement-native-fix.js +99 -0
  84. data/vendor/assets/javascripts/webshims/dev/shims/mediaelement-swf.js +1074 -0
  85. data/vendor/assets/javascripts/webshims/dev/shims/mediaelement-yt.js +543 -0
  86. data/vendor/assets/javascripts/webshims/dev/shims/styles/details-arrows.png +0 -0
  87. data/vendor/assets/javascripts/webshims/dev/shims/styles/forms.png +0 -0
  88. data/vendor/assets/javascripts/webshims/dev/shims/styles/polyfill-loader.gif +0 -0
  89. data/vendor/assets/javascripts/webshims/dev/shims/styles/shim.css +677 -0
  90. data/vendor/assets/javascripts/webshims/dev/shims/swf/jwwebshims.swf +0 -0
  91. data/vendor/assets/javascripts/webshims/dev/shims/swf/localStorage.swf +0 -0
  92. data/vendor/assets/javascripts/webshims/dev/shims/track-ui.js +292 -0
  93. data/vendor/assets/javascripts/webshims/dev/shims/track.js +763 -0
  94. data/vendor/assets/javascripts/webshims/minified/extras/modernizr-custom.js +20 -20
  95. data/vendor/assets/javascripts/webshims/minified/polyfiller.js +29 -29
  96. data/vendor/assets/javascripts/webshims/minified/shims/combos/1.js +37 -33
  97. data/vendor/assets/javascripts/webshims/minified/shims/combos/10.js +83 -76
  98. data/vendor/assets/javascripts/webshims/minified/shims/combos/11.js +44 -42
  99. data/vendor/assets/javascripts/webshims/minified/shims/combos/12.js +43 -38
  100. data/vendor/assets/javascripts/webshims/minified/shims/combos/13.js +27 -25
  101. data/vendor/assets/javascripts/webshims/minified/shims/combos/16.js +60 -55
  102. data/vendor/assets/javascripts/webshims/minified/shims/combos/17.js +68 -64
  103. data/vendor/assets/javascripts/webshims/minified/shims/combos/18.js +60 -59
  104. data/vendor/assets/javascripts/webshims/minified/shims/combos/19.js +66 -64
  105. data/vendor/assets/javascripts/webshims/minified/shims/combos/2.js +74 -69
  106. data/vendor/assets/javascripts/webshims/minified/shims/combos/20.js +46 -43
  107. data/vendor/assets/javascripts/webshims/minified/shims/combos/21.js +52 -47
  108. data/vendor/assets/javascripts/webshims/minified/shims/combos/22.js +61 -57
  109. data/vendor/assets/javascripts/webshims/minified/shims/combos/23.js +68 -60
  110. data/vendor/assets/javascripts/webshims/minified/shims/combos/24.js +82 -77
  111. data/vendor/assets/javascripts/webshims/minified/shims/combos/25.js +58 -0
  112. data/vendor/assets/javascripts/webshims/minified/shims/combos/26.js +80 -0
  113. data/vendor/assets/javascripts/webshims/minified/shims/combos/27.js +103 -0
  114. data/vendor/assets/javascripts/webshims/minified/shims/combos/3.js +96 -91
  115. data/vendor/assets/javascripts/webshims/minified/shims/combos/4.js +30 -31
  116. data/vendor/assets/javascripts/webshims/minified/shims/combos/5.js +37 -39
  117. data/vendor/assets/javascripts/webshims/minified/shims/combos/59.js +59 -61
  118. data/vendor/assets/javascripts/webshims/minified/shims/combos/6.js +31 -29
  119. data/vendor/assets/javascripts/webshims/minified/shims/combos/7.js +38 -37
  120. data/vendor/assets/javascripts/webshims/minified/shims/combos/8.js +38 -33
  121. data/vendor/assets/javascripts/webshims/minified/shims/combos/9.js +68 -63
  122. data/vendor/assets/javascripts/webshims/minified/shims/dom-extend.js +22 -20
  123. data/vendor/assets/javascripts/webshims/minified/shims/es5.js +15 -14
  124. data/vendor/assets/javascripts/webshims/minified/shims/form-core.js +22 -22
  125. data/vendor/assets/javascripts/webshims/minified/shims/form-datalist.js +22 -22
  126. data/vendor/assets/javascripts/webshims/minified/shims/form-message.js +8 -9
  127. data/vendor/assets/javascripts/webshims/minified/shims/form-native-extend.js +7 -8
  128. data/vendor/assets/javascripts/webshims/minified/shims/form-number-date-ui.js +23 -21
  129. data/vendor/assets/javascripts/webshims/minified/shims/form-shim-extend.js +44 -33
  130. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-sv.js +3 -0
  131. data/vendor/assets/javascripts/webshims/minified/shims/jwplayer/player.swf +0 -0
  132. data/vendor/assets/javascripts/webshims/minified/shims/jwplayer/readme.html +86 -86
  133. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-core.js +16 -13
  134. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-swf.js +30 -30
  135. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-yt.js +14 -0
  136. data/vendor/assets/javascripts/webshims/minified/shims/styles/shim.css +71 -10
  137. data/vendor/assets/javascripts/webshims/minified/shims/track-ui.js +9 -0
  138. data/vendor/assets/javascripts/webshims/minified/shims/track.js +20 -0
  139. metadata +101 -5
  140. data/vendor/assets/javascripts/webshims/minified/shims/form-output.js +0 -5
@@ -0,0 +1,60 @@
1
+ /*
2
+ * simple helper for a mousepress event
3
+ * used by webshims improving spinbutton controls for input[type=time], input[type=number]...
4
+ *
5
+ * $(element).bind('mousepress', function(){
6
+ * //repeatedly called after mousedown, till mouseleave/mouseup
7
+ * });
8
+ */
9
+ (function($){
10
+ var removeTimer = function(elem, full){
11
+ var timer = elem.data('mousepresstimer');
12
+ if(timer){
13
+ clearTimeout(timer);
14
+ }
15
+ if(full){
16
+ elem.unbind('mouseup.mousepressext mouseleave.mousepressext');
17
+ }
18
+ elem = null;
19
+ };
20
+ $.event.special.mousepress = {
21
+ setup: function(){
22
+ var timer;
23
+ $(this).bind('mousedown.mousepressext', function(e){
24
+ var elem = $(this);
25
+
26
+ var startIntervall = function(delay){
27
+ var steps = 0;
28
+ removeTimer(elem);
29
+ elem.data('mousepresstimer', setInterval(function(){
30
+ $.event.special.mousepress.handler(elem[0], e);
31
+ steps++;
32
+ if(steps > 3 && delay > 45){
33
+ startIntervall(delay - 40);
34
+ }
35
+ }, delay));
36
+ };
37
+ var target = $(e.target).trigger('mousepressstart', [e]);
38
+
39
+ removeTimer(elem);
40
+ elem.data('mousepresstimer', setTimeout(function(){
41
+ startIntervall(180);
42
+ }, 200));
43
+
44
+ elem.bind('mouseup.mousepressext mouseleave.mousepressext', function(e){
45
+ removeTimer(elem, true);
46
+ target.trigger('mousepressend', [e]);
47
+ elem = null;
48
+ target = null;
49
+ });
50
+ });
51
+ },
52
+ teardown: function(){
53
+ removeTimer($(this).unbind('.mousepressext'), true);
54
+ },
55
+ handler: function(elem, e){
56
+ return $.event.handle.call(elem, {type: 'mousepress', target: e.target, pageX: e.pageX, pageY: e.pageY});
57
+ }
58
+ };
59
+
60
+ })(jQuery);
@@ -0,0 +1,1171 @@
1
+ (function (factory) {
2
+
3
+ if(window.jQuery){
4
+ factory(jQuery);
5
+ factory = jQuery.noop;
6
+ }
7
+ if (typeof define === 'function' && define.amd && define.amd.jQuery) {
8
+ define('polyfiller', ['jquery'], factory);
9
+ }
10
+ }(function($){
11
+ "use strict";
12
+ var DOMSUPPORT = 'dom-support';
13
+ var jScripts = $(document.scripts || 'script');
14
+ var special = $.event.special;
15
+ var emptyJ = $([]);
16
+ var Modernizr = window.Modernizr;
17
+ var asyncWebshims = window.asyncWebshims;
18
+ var addTest = Modernizr.addTest;
19
+ var browserVersion = parseFloat($.browser.version, 10);
20
+ var Object = window.Object;
21
+ var html5 = window.html5 || {};
22
+
23
+ Modernizr.genericDOM = !!($('<video><div></div></video>')[0].innerHTML);
24
+
25
+ Modernizr.advancedObjectProperties = Modernizr.objectAccessor = Modernizr.ES5 = !!('create' in Object && 'seal' in Object);
26
+
27
+ if($.browser.chrome){
28
+ $.browser.webkit = true;
29
+ }
30
+
31
+ var webshims = {
32
+ version: '1.9.1',
33
+ cfg: {
34
+ useImportantStyles: true,
35
+ //addCacheBuster: false,
36
+ waitReady: true,
37
+ extendNative: true,
38
+ loadStyles: true,
39
+ disableShivMethods: true,
40
+ basePath: (function(){
41
+ var script = jScripts.filter('[src*="polyfiller.js"]');
42
+ var path;
43
+ script = script[0] || script.end()[script.end().length - 1];
44
+ path = ( ($.support.hrefNormalized) ? script.src : script.getAttribute("src", 4) ).split('?')[0];
45
+ path = path.slice(0, path.lastIndexOf("/") + 1) + 'shims/';
46
+ return path;
47
+ })()
48
+ },
49
+ bugs: {},
50
+ browserVersion: browserVersion,
51
+ /*
52
+ * some data
53
+ */
54
+ modules: {},
55
+ features: {},
56
+ featureList: [],
57
+ setOptions: function(name, opts){
58
+ if (typeof name == 'string' && opts !== undefined) {
59
+ webCFG[name] = (!$.isPlainObject(opts)) ? opts : $.extend(true, webCFG[name] || {}, opts);
60
+ } else if (typeof name == 'object') {
61
+ $.extend(true, webCFG, name);
62
+ }
63
+ },
64
+ addPolyfill: function(name, cfg){
65
+ cfg = cfg || {};
66
+ var feature = cfg.f || name;
67
+ if (!webshimsFeatures[feature]) {
68
+ webshimsFeatures[feature] = [];
69
+ webshimsFeatures[feature].delayReady = 0;
70
+ webshims.featureList.push(feature);
71
+ webCFG[feature] = {};
72
+ }
73
+ webshimsFeatures[feature].push(name);
74
+ cfg.options = $.extend(webCFG[feature], cfg.options);
75
+
76
+ addModule(name, cfg);
77
+ if (cfg.methodNames) {
78
+ $.each(cfg.methodNames, function(i, methodName){
79
+ webshims.addMethodName(methodName);
80
+ });
81
+ }
82
+ },
83
+
84
+ polyfill: (function(){
85
+ var firstPolyfillCall = function(features){
86
+ var addClass = [];
87
+ var onReadyEvts = features;
88
+ var timer;
89
+
90
+ if(webCFG.disableShivMethods && Modernizr.genericDOM && 'html5Clone' in $.support){
91
+ html5.shivMethods = false;
92
+ }
93
+
94
+ var removeLoader = function(){
95
+ $('html').removeClass('loading-polyfills long-loading-polyfills');
96
+ $(window).unbind('.lP');
97
+ clearTimeout(timer);
98
+ };
99
+
100
+ addClass.push('loading-polyfills');
101
+ $(window).bind('load.lP error.lP', removeLoader);
102
+ timer = setTimeout(function(){
103
+ $('html').addClass('long-loading-polyfills');
104
+ }, 600);
105
+ if (webCFG.waitReady && $.isReady) {
106
+ webshims.warn('Call webshims.polyfill before DOM-Ready or set waitReady to false.');
107
+ }
108
+ onReady(features, removeLoader);
109
+ if (webCFG.useImportantStyles) {
110
+ addClass.push('polyfill-important');
111
+ }
112
+ if (addClass[0]) {
113
+ $('html').addClass(addClass.join(' '));
114
+ }
115
+ if(webCFG.loadStyles){
116
+ loader.loadCSS('styles/shim.css');
117
+ }
118
+ //remove function
119
+ firstPolyfillCall = $.noop;
120
+ };
121
+ var loadedFormBase;
122
+ return function(features){
123
+
124
+ var toLoadFeatures = [];
125
+
126
+ features = features || webshims.featureList;
127
+
128
+ if (typeof features == 'string') {
129
+ features = features.split(' ');
130
+ }
131
+ if(!loadedFormBase){
132
+ loadedFormBase = $.inArray('forms', features) !== -1;
133
+ if(!loadedFormBase && $.inArray('forms-ext', features) !== -1){
134
+ features.push('forms');
135
+ loadedFormBase = true;
136
+ }
137
+ }
138
+
139
+ if (webCFG.waitReady) {
140
+ $.readyWait++;
141
+ onReady(features, function(){
142
+ $.ready(true);
143
+ });
144
+ }
145
+
146
+ $.each(features, function(i, feature){
147
+ if(!webshimsFeatures[feature]){
148
+ webshims.warn("could not find webshims-feature (aborted): "+ feature);
149
+ isReady(feature, true);
150
+ return;
151
+ }
152
+ if (feature !== webshimsFeatures[feature][0]) {
153
+ onReady(webshimsFeatures[feature], function(){
154
+ isReady(feature, true);
155
+ });
156
+ }
157
+ toLoadFeatures = toLoadFeatures.concat(webshimsFeatures[feature]);
158
+ });
159
+
160
+ firstPolyfillCall(features);
161
+ loadList(toLoadFeatures);
162
+
163
+ };
164
+ })(),
165
+
166
+ /*
167
+ * handle ready modules
168
+ */
169
+ reTest: (function(){
170
+ var resList;
171
+ var noDelayReady;
172
+ var reTest = function(i, name){
173
+ var module = modules[name];
174
+ var readyName = name+'Ready';
175
+ var feature;
176
+ if(module && !module.loaded && !( (module.test && $.isFunction(module.test) ) ? module.test([]) : module.test )){
177
+ if(special[readyName]){
178
+ delete special[readyName];
179
+ }
180
+ feature = webshimsFeatures[module.f];
181
+ if(feature && !noDelayReady){
182
+ feature.delayReady++;
183
+ onReady(name, function(){
184
+ feature.delayReady--;
185
+ isReady(module.f, feature.callReady);
186
+ });
187
+ }
188
+ resList.push(name);
189
+ }
190
+ };
191
+ return function(moduleNames, _noDelay){
192
+ noDelayReady = _noDelay;
193
+ if(typeof moduleNames == 'string'){
194
+ moduleNames = moduleNames.split(' ');
195
+ }
196
+ resList = [];
197
+ $.each(moduleNames, reTest);
198
+ loadList(resList);
199
+ };
200
+ })(),
201
+ isReady: function(name, _set){
202
+ if(webshimsFeatures[name] && webshimsFeatures[name].delayReady > 0){
203
+ if(_set){
204
+ webshimsFeatures[name].callReady = true;
205
+ }
206
+ return false;
207
+ }
208
+ name = name + 'Ready';
209
+ if (_set) {
210
+ if (special[name] && special[name].add) {
211
+ return true;
212
+ }
213
+
214
+ special[name] = $.extend(special[name] || {}, {
215
+ add: function(details){
216
+ details.handler.call(this, name);
217
+ }
218
+ });
219
+ $.event.trigger(name);
220
+ }
221
+ return !!(special[name] && special[name].add) || false;
222
+ },
223
+ ready: function(events, fn /*, _created*/){
224
+ var _created = arguments[2];
225
+ var evt = events;
226
+ if (typeof events == 'string') {
227
+ events = events.split(' ');
228
+ }
229
+
230
+ if (!_created) {
231
+ events = $.map($.grep(events, function(evt){
232
+ return !isReady(evt);
233
+ }), function(evt){
234
+ return evt + 'Ready';
235
+ });
236
+ }
237
+ if (!events.length) {
238
+ fn($, webshims, window, document);
239
+ return;
240
+ }
241
+ var readyEv = events.shift(), readyFn = function(){
242
+ onReady(events, fn, true);
243
+ };
244
+
245
+ $(document).one(readyEv, readyFn);
246
+ },
247
+
248
+ /*
249
+ * basic DOM-/jQuery-Helpers
250
+ */
251
+
252
+
253
+ capturingEvents: function(names, _maybePrevented){
254
+ if (!document.addEventListener) {
255
+ return;
256
+ }
257
+ if (typeof names == 'string') {
258
+ names = [names];
259
+ }
260
+ $.each(names, function(i, name){
261
+ var handler = function(e){
262
+ e = $.event.fix(e);
263
+ if (_maybePrevented && webshims.capturingEventPrevented) {
264
+ webshims.capturingEventPrevented(e);
265
+ }
266
+ return $.event.handle.call(this, e);
267
+ };
268
+ special[name] = special[name] || {};
269
+ if (special[name].setup || special[name].teardown) {
270
+ return;
271
+ }
272
+ $.extend(special[name], {
273
+ setup: function(){
274
+ this.addEventListener(name, handler, true);
275
+ },
276
+ teardown: function(){
277
+ this.removeEventListener(name, handler, true);
278
+ }
279
+ });
280
+ });
281
+ },
282
+ register: function(name, fn){
283
+ var module = modules[name];
284
+ if (!module) {
285
+ webshims.warn("can't find module: " + name);
286
+ return;
287
+ }
288
+ if (module.noAutoCallback) {
289
+ var ready = function(){
290
+ fn($, webshims, window, document, undefined, module.options);
291
+ isReady(name, true);
292
+ };
293
+ if (module.d) {
294
+ onReady(module.d, ready);
295
+ }
296
+ else {
297
+ ready();
298
+ }
299
+ }
300
+ },
301
+ c: {},
302
+ /*
303
+ * loader
304
+ */
305
+ loader: {
306
+
307
+ addModule: function(name, ext){
308
+ modules[name] = ext;
309
+ ext.name = ext.name || name;
310
+ if(!ext.c){
311
+ ext.c = [];
312
+ }
313
+ $.each(ext.c, function(i, comboname){
314
+ if(!webshims.c[comboname]){
315
+ webshims.c[comboname] = [];
316
+ }
317
+ webshims.c[comboname].push(name);
318
+ });
319
+ },
320
+ loadList: (function(){
321
+
322
+ var loadedModules = [];
323
+ var loadScript = function(src, names){
324
+ if (typeof names == 'string') {
325
+ names = [names];
326
+ }
327
+ $.merge(loadedModules, names);
328
+ loader.loadScript(src, false, names);
329
+ };
330
+
331
+ var noNeedToLoad = function(name, list){
332
+ if (isReady(name) || $.inArray(name, loadedModules) != -1) {
333
+ return true;
334
+ }
335
+ var module = modules[name];
336
+ var cfg = webCFG[module.f || name] || {};
337
+ var supported;
338
+ if (module) {
339
+ supported = (module.test && $.isFunction(module.test)) ? module.test(list) : module.test;
340
+ if (supported) {
341
+ isReady(name, true);
342
+ return true;
343
+ } else {
344
+ return false;
345
+ }
346
+ }
347
+ return true;
348
+ };
349
+
350
+ var setDependencies = function(module, list){
351
+ if (module.d && module.d.length) {
352
+ var addDependency = function(i, dependency){
353
+ if (!noNeedToLoad(dependency, list) && $.inArray(dependency, list) == -1) {
354
+ list.push(dependency);
355
+ }
356
+ };
357
+ $.each(module.d, function(i, dependency){
358
+ if (modules[dependency]) {
359
+ addDependency(i, dependency);
360
+ }
361
+ else
362
+ if (webshimsFeatures[dependency]) {
363
+ $.each(webshimsFeatures[dependency], addDependency);
364
+ onReady(webshimsFeatures[dependency], function(){
365
+ isReady(dependency, true);
366
+ });
367
+ }
368
+ });
369
+ if (!module.noAutoCallback) {
370
+ module.noAutoCallback = true;
371
+ }
372
+ }
373
+ };
374
+
375
+ return function(list, combo){
376
+ var module;
377
+ var loadCombos = [];
378
+ var i;
379
+ var len;
380
+ var foundCombo;
381
+ var loadCombo = function(j, combo){
382
+ foundCombo = combo;
383
+ $.each(webshims.c[combo], function(i, moduleName){
384
+ if($.inArray(moduleName, loadCombos) == -1 || $.inArray(moduleName, loadedModules) != -1){
385
+ foundCombo = false;
386
+ return false;
387
+ }
388
+ });
389
+ if(foundCombo){
390
+ loadScript('combos/'+foundCombo, webshims.c[foundCombo]);
391
+ return false;
392
+ }
393
+ };
394
+
395
+ //length of list is dynamically
396
+ for (i = 0; i < list.length; i++) {
397
+ module = modules[list[i]];
398
+ if (!module || noNeedToLoad(module.name, list)) {
399
+ if (!module) {
400
+ webshims.warn('could not find: ' + list[i]);
401
+ }
402
+ continue;
403
+ }
404
+ if (module.css) {
405
+ loader.loadCSS(module.css);
406
+ }
407
+
408
+ if (module.loadInit) {
409
+ module.loadInit();
410
+ }
411
+
412
+ module.loaded = true;
413
+ setDependencies(module, list);
414
+ loadCombos.push(module.name);
415
+ }
416
+
417
+ for(i = 0, len = loadCombos.length; i < len; i++){
418
+ foundCombo = false;
419
+
420
+ module = loadCombos[i];
421
+
422
+ if($.inArray(module, loadedModules) == -1){
423
+ if(webshims.debug != 'noCombo'){
424
+ $.each(modules[module].c, loadCombo);
425
+ }
426
+ if(!foundCombo){
427
+ loadScript(modules[module].src || module, module);
428
+ }
429
+ }
430
+ }
431
+ };
432
+ })(),
433
+
434
+ makePath: function(src){
435
+ if (src.indexOf('//') != -1 || src.indexOf('/') === 0) {
436
+ return src;
437
+ }
438
+
439
+ if (src.indexOf('.') == -1) {
440
+ src += '.js';
441
+ }
442
+ if (webCFG.addCacheBuster) {
443
+ src += webCFG.addCacheBuster;
444
+ }
445
+ return webCFG.basePath + src;
446
+ },
447
+
448
+ loadCSS: (function(){
449
+ var parent, loadedSrcs = [];
450
+ return function(src){
451
+ src = this.makePath(src);
452
+ if ($.inArray(src, loadedSrcs) != -1) {
453
+ return;
454
+ }
455
+ parent = parent || $('link, style')[0] || $('script')[0];
456
+ loadedSrcs.push(src);
457
+ $('<link rel="stylesheet" />').insertBefore(parent).attr({
458
+ href: src
459
+ });
460
+ };
461
+ })(),
462
+
463
+ loadScript: (function(){
464
+ var loadedSrcs = [];
465
+ var scriptLoader;
466
+ return function(src, callback, name){
467
+
468
+ src = loader.makePath(src);
469
+ if ($.inArray(src, loadedSrcs) != -1) {return;}
470
+ var complete = function(){
471
+
472
+ complete = null;
473
+ if (callback) {
474
+ callback();
475
+ }
476
+
477
+ if (name) {
478
+ if (typeof name == 'string') {
479
+ name = name.split(' ');
480
+ }
481
+ $.each(name, function(i, name){
482
+ if (!modules[name]) {
483
+ return;
484
+ }
485
+ if (modules[name].afterLoad) {
486
+ modules[name].afterLoad();
487
+ }
488
+ isReady(!modules[name].noAutoCallback ? name : name + 'FileLoaded', true);
489
+ });
490
+
491
+ }
492
+ };
493
+
494
+ loadedSrcs.push(src);
495
+ if(window.require){
496
+ require([src], complete);
497
+ } else if (window.sssl) {
498
+ sssl(src, complete);
499
+ } else if (window.yepnope) {
500
+ yepnope.injectJs(src, complete);
501
+ } else if (window.steal) {
502
+ steal(src).then(complete);
503
+ }
504
+ };
505
+ })()
506
+ }
507
+ };
508
+
509
+ /*
510
+ * shortcuts
511
+ */
512
+ $.webshims = webshims;
513
+ var protocol = (location.protocol == 'https:') ? 'https://' : 'http://';
514
+ var googleAPIs = protocol + 'ajax.googleapis.com/ajax/libs/';
515
+ var uiLib = googleAPIs + 'jqueryui/1.8.23/';
516
+ var webCFG = webshims.cfg;
517
+ var webshimsFeatures = webshims.features;
518
+ var isReady = webshims.isReady;
519
+ var onReady = webshims.ready;
520
+ var addPolyfill = webshims.addPolyfill;
521
+ var modules = webshims.modules;
522
+ var loader = webshims.loader;
523
+ var loadList = loader.loadList;
524
+ var addModule = loader.addModule;
525
+ var removeCombos = [];
526
+ var importantLogs = {
527
+ warn: 1,
528
+ error: 1
529
+ };
530
+
531
+ webshims.addMethodName = function(name){
532
+ name = name.split(':');
533
+ var prop = name[1];
534
+ if (name.length == 1) {
535
+ prop = name[0];
536
+ name = name[0];
537
+ } else {
538
+ name = name[0];
539
+ }
540
+
541
+ $.fn[name] = function(){
542
+ return this.callProp(prop, arguments);
543
+ };
544
+ };
545
+ $.fn.callProp = function(prop, args){
546
+ var ret;
547
+ if(!args){
548
+ args = [];
549
+ }
550
+ this.each(function(){
551
+ var fn = $.prop(this, prop);
552
+
553
+ if (fn && fn.apply) {
554
+ ret = fn.apply(this, args);
555
+ if (ret !== undefined) {
556
+ return false;
557
+ }
558
+ } else {
559
+ webshims.warn(prop+ " is not a method of "+ this);
560
+ }
561
+ });
562
+ return (ret !== undefined) ? ret : this;
563
+ };
564
+
565
+ //activeLang will be overridden
566
+
567
+
568
+ // set current Lang:
569
+ // - webshims.activeLang(lang:string);
570
+ // get current lang
571
+ // - webshims.activeLang();
572
+ // - webshims.activeLang({
573
+ // module: moduleName:string,
574
+ // callback: callback:function,
575
+ // langObj: languageObj:array/object
576
+ // });
577
+
578
+ webshims.activeLang = (function(){
579
+ var curLang = navigator.browserLanguage || navigator.language || '';
580
+ onReady('webshimLocalization', function(){
581
+ webshims.activeLang(curLang);
582
+
583
+ });
584
+ return function(lang){
585
+ if(lang){
586
+ if (typeof lang == 'string' ) {
587
+ curLang = lang;
588
+ } else if(typeof lang == 'object'){
589
+ var args = arguments;
590
+ var that = this;
591
+ onReady('webshimLocalization', function(){
592
+ webshims.activeLang.apply(that, args);
593
+ });
594
+ }
595
+ }
596
+ return curLang;
597
+ };
598
+ })();
599
+
600
+ $.each(['log', 'error', 'warn', 'info'], function(i, fn){
601
+ webshims[fn] = function(message){
602
+ if(( (importantLogs[fn] && webshims.debug !== false) || webshims.debug) && window.console && console.log){
603
+ return console[(console[fn]) ? fn : 'log'](message);
604
+ }
605
+ };
606
+ });
607
+
608
+
609
+ //Overwrite DOM-Ready and implement a new ready-method
610
+ (function(){
611
+ $.isDOMReady = $.isReady;
612
+ if(!$.isDOMReady){
613
+ var $Ready = $.ready;
614
+ $.ready = function(unwait){
615
+ if(unwait !== true && !$.isDOMReady){
616
+ if(document.body){
617
+ $.isDOMReady = true;
618
+ isReady('DOM', true);
619
+ $.ready = $Ready;
620
+ } else {
621
+ setTimeout(function(){
622
+ $.ready(unwait);
623
+ }, 13);
624
+ }
625
+ }
626
+ return $Ready.apply(this, arguments);
627
+ };
628
+ $.ready.promise = $Ready.promise;
629
+ } else {
630
+ isReady('DOM', true);
631
+ }
632
+ $(function(){
633
+ $.isDOMReady = true;
634
+ isReady('DOM', true);
635
+ setTimeout(function(){
636
+ isReady('WINDOWLOAD', true);
637
+ }, 9999);
638
+ });
639
+ $(window).load(function(){
640
+ isReady('DOM', true);
641
+ isReady('WINDOWLOAD', true);
642
+ });
643
+ })();
644
+
645
+ /*
646
+ * jQuery-plugins for triggering dom updates can be also very usefull in conjunction with non-HTML5 DOM-Changes (AJAX)
647
+ * Example:
648
+ * $.webshims.addReady(function(context, insertedElement){
649
+ * $('div.tabs', context).add(insertedElement.filter('div.tabs')).tabs();
650
+ * });
651
+ *
652
+ * $.ajax({
653
+ * success: function(html){
654
+ * $('#main').htmlPolyfill(html);
655
+ * }
656
+ * });
657
+ */
658
+
659
+ (function(){
660
+ var readyFns = [];
661
+ $.extend(webshims, {
662
+ addReady: function(fn){
663
+ var readyFn = function(context, elem){
664
+ webshims.ready('DOM', function(){fn(context, elem);});
665
+ };
666
+ readyFns.push(readyFn);
667
+ readyFn(document, emptyJ);
668
+ },
669
+ triggerDomUpdate: function(context){
670
+ if(!context || !context.nodeType){
671
+ if(context && context.jquery){
672
+ context.each(function(){
673
+ webshims.triggerDomUpdate(this);
674
+ });
675
+ }
676
+ return;
677
+ }
678
+ var type = context.nodeType;
679
+ if(type != 1 && type != 9){return;}
680
+ var elem = (context !== document) ? $(context) : emptyJ;
681
+ $.each(readyFns, function(i, fn){
682
+ fn(context, elem);
683
+ });
684
+ }
685
+ });
686
+
687
+ $.fn.htmlPolyfill = function(a){
688
+ var ret = $.fn.html.call(this, a);
689
+ if(ret === this && $.isDOMReady){
690
+ this.each(function(){
691
+ if(this.nodeType == 1){
692
+ webshims.triggerDomUpdate(this);
693
+ }
694
+ });
695
+ }
696
+ return ret;
697
+ };
698
+
699
+
700
+ $.each(['after', 'before', 'append', 'prepend', 'replaceWith'], function(i, name){
701
+ $.fn[name+'Polyfill'] = function(a){
702
+ a = $(a);
703
+ $.fn[name].call(this, a);
704
+ if($.isDOMReady){
705
+ a.each(function(){
706
+ if (this.nodeType == 1) {
707
+ webshims.triggerDomUpdate(this);
708
+ }
709
+ });
710
+ }
711
+ return this;
712
+ };
713
+
714
+ });
715
+
716
+ $.each(['insertAfter', 'insertBefore', 'appendTo', 'prependTo', 'replaceAll'], function(i, name){
717
+ $.fn[name.replace(/[A-Z]/, function(c){return "Polyfill"+c;})] = function(){
718
+ $.fn[name].apply(this, arguments);
719
+ if($.isDOMReady){
720
+ webshims.triggerDomUpdate(this);
721
+ }
722
+ return this;
723
+ };
724
+ });
725
+
726
+ $.fn.updatePolyfill = function(){
727
+ if($.isDOMReady){
728
+ webshims.triggerDomUpdate(this);
729
+ }
730
+ return this;
731
+ };
732
+
733
+ $.each(['getNativeElement', 'getShadowElement', 'getShadowFocusElement'], function(i, name){
734
+ $.fn[name] = function(){
735
+ return this;
736
+ };
737
+ });
738
+
739
+ })();
740
+
741
+ //this might be extended by ES5 shim feature
742
+ (function(){
743
+ var defineProperty = 'defineProperty';
744
+ var has = Object.prototype.hasOwnProperty;
745
+ var descProps = ['configurable', 'enumerable', 'writable'];
746
+ var extendUndefined = function(prop){
747
+ for(var i = 0; i < 3; i++){
748
+ if(prop[descProps[i]] === undefined && (descProps[i] !== 'writable' || prop.value !== undefined)){
749
+ prop[descProps[i]] = true;
750
+ }
751
+ }
752
+ };
753
+ var extendProps = function(props){
754
+ if(props){
755
+ for(var i in props){
756
+ if(has.call(props, i)){
757
+ extendUndefined(props[i]);
758
+ }
759
+ }
760
+ }
761
+ };
762
+ if(Object.create){
763
+ webshims.objectCreate = function(proto, props, opts){
764
+ extendProps(props);
765
+ var o = Object.create(proto, props);
766
+ if(opts){
767
+ o.options = $.extend(true, {}, o.options || {}, opts);
768
+ opts = o.options;
769
+ }
770
+ if(o._create && $.isFunction(o._create)){
771
+ o._create(opts);
772
+ }
773
+ return o;
774
+ };
775
+ }
776
+ if(Object[defineProperty]){
777
+ webshims[defineProperty] = function(obj, prop, desc){
778
+ extendUndefined(desc);
779
+ return Object[defineProperty](obj, prop, desc);
780
+ };
781
+ }
782
+ if(Object.defineProperties){
783
+ webshims.defineProperties = function(obj, props){
784
+ extendProps(props);
785
+ return Object.defineProperties(obj, props);
786
+ };
787
+ }
788
+ webshims.getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
789
+
790
+ webshims.getPrototypeOf = Object.getPrototypeOf;
791
+ })();
792
+
793
+
794
+
795
+
796
+ /*
797
+ * Start Features
798
+ */
799
+
800
+ /* general modules */
801
+ /* change path $.webshims.modules[moduleName].src */
802
+
803
+ addModule('jquery-ui', {
804
+ src: uiLib+'jquery-ui.min.js',
805
+ test: function(){return !!($.widget && $.Widget);}
806
+ });
807
+
808
+ addModule('input-widgets', {
809
+ src: '',
810
+ test: function(){
811
+ return !this.src || !($.widget && !($.fn.datepicker && $.fn.slider));
812
+ }
813
+ });
814
+
815
+ addModule('swfobject', {
816
+ src: googleAPIs+'swfobject/2.2/swfobject.js',
817
+ test: function(){return ('swfobject' in window);}
818
+ });
819
+
820
+
821
+ /*
822
+ * polyfill-Modules
823
+ */
824
+
825
+ // webshims lib uses a of http://github.com/kriskowal/es5-shim/ to implement
826
+ addPolyfill('es5', {
827
+ test: !!(Modernizr.ES5 && Function.prototype.bind),
828
+ c: [27, 10, 1, 22]
829
+ });
830
+
831
+ addPolyfill('dom-extend', {
832
+ f: DOMSUPPORT,
833
+ noAutoCallback: true,
834
+ d: ['es5'],
835
+ c: [27, 10, 9, 12, 17, 26, 16, 25, 8, 1, 24, 19, 11, 13]
836
+ });
837
+
838
+
839
+ //<localstorage combos: 14
840
+ if('localstorage' in Modernizr) {
841
+ addPolyfill('json-storage', {
842
+ test: Modernizr.localstorage && 'sessionStorage' in window && 'JSON' in window,
843
+ loadInit: function(){
844
+ loadList(['swfobject']);
845
+ },
846
+ noAutoCallback: true,
847
+ c: [14]
848
+ });
849
+ }
850
+ //>localstorage
851
+
852
+
853
+ //<geolocation combos: 14,15
854
+ if('geolocation' in Modernizr){
855
+ addPolyfill('geolocation', {
856
+ test: Modernizr.geolocation,
857
+ options: {
858
+ destroyWrite: true
859
+ // ,confirmText: ''
860
+ },
861
+ d: ['json-storage'],
862
+ c: [14, 15]
863
+ });
864
+ }
865
+ //>
866
+
867
+ //<canvas
868
+ (function(){
869
+ if('canvas' in Modernizr) {
870
+ var flashCanvas;
871
+ addPolyfill('canvas', {
872
+ src: 'excanvas',
873
+ test: Modernizr.canvas,
874
+ options: {type: 'flash'}, //excanvas | flash | flashpro
875
+ noAutoCallback: true,
876
+ loadInit: function(){
877
+ var type = this.options.type;
878
+ var src;
879
+ if(type && type.indexOf('flash') !== -1 && (!window.swfobject || swfobject.hasFlashPlayerVersion('9.0.0'))){
880
+ window.FlashCanvasOptions = window.FlashCanvasOptions || {};
881
+ flashCanvas = FlashCanvasOptions;
882
+ if(type == 'flash'){
883
+ $.extend(flashCanvas, {
884
+ swfPath: webCFG.basePath + 'FlashCanvas/'
885
+ });
886
+ this.src = 'FlashCanvas/flashcanvas';
887
+ src = flashCanvas.swfPath + 'flashcanvas.swf';
888
+ } else {
889
+ $.extend(flashCanvas, {swfPath: webCFG.basePath + 'FlashCanvasPro/'});
890
+ this.src = 'FlashCanvasPro/flashcanvas';
891
+ //assume, that the user has flash10+
892
+ src = flashCanvas.swfPath + 'flash10canvas.swf';
893
+ }
894
+ //todo: implement cachbuster for flashcanvas
895
+ // if(webCFG.addCacheBuster){
896
+ // src += webCFG.addCacheBuster;
897
+ // }
898
+ }
899
+ },
900
+ afterLoad: function(){
901
+ webshims.addReady(function(context, elem){
902
+ if(context == document){
903
+ if(window.G_vmlCanvasManager && G_vmlCanvasManager.init_ ){
904
+ G_vmlCanvasManager.init_(document);
905
+ }
906
+ }
907
+ $('canvas', context).add(elem.filter('canvas')).each(function(){
908
+ var hasContext = this.getContext;
909
+ if(!hasContext && window.G_vmlCanvasManager){
910
+ G_vmlCanvasManager.initElement(this);
911
+ }
912
+ });
913
+ if(context == document){
914
+ isReady('canvas', true);
915
+ }
916
+ });
917
+ },
918
+ methodNames: ['getContext'],
919
+ d: [DOMSUPPORT]
920
+ });
921
+ }
922
+ })();
923
+ //>
924
+
925
+
926
+ //<forms combos: 3, 2, 59, 17, 16, 5, 4, 24, 19, 18, 7, 59, 5, 21, 11, 23, 26
927
+ var modernizrInputAttrs = Modernizr.input;
928
+ var modernizrInputTypes = Modernizr.inputtypes;
929
+
930
+ if(modernizrInputAttrs && modernizrInputTypes){
931
+ var formvalidation = 'formvalidation';
932
+ var formOptions;
933
+ var bugs = webshims.bugs;
934
+ var select = $('<select required="" name="a"><option disabled="" /></select>')[0];
935
+ addTest(formvalidation, function(){
936
+ return !!(modernizrInputAttrs.required && modernizrInputAttrs.pattern);
937
+ });
938
+ addTest('fieldsetdisabled', function(){
939
+ var fieldset = $('<fieldset />')[0];
940
+ return 'elements' in fieldset && 'disabled' in fieldset;
941
+ });
942
+
943
+ if(Modernizr[formvalidation]){
944
+ bugs.bustedValidity = Modernizr.formattribute === false || !Modernizr.fieldsetdisabled || !('value' in document.createElement('output')) || !($('<input type="date" value="1488-12-11" />')[0].validity || {valid: true}).valid || !('required' in select) || (select.validity || {}).valid;
945
+ }
946
+
947
+ addTest('styleableinputrange', function(){
948
+ if(!modernizrInputTypes.range){
949
+ return false;
950
+ }
951
+ var input = document.createElement('input');
952
+ input.setAttribute('type', 'range');
953
+ return input.style.WebkitAppearance !== undefined;
954
+ });
955
+
956
+
957
+ webshims.validationMessages = webshims.validityMessages = [];
958
+ webshims.inputTypes = {};
959
+
960
+ addPolyfill('form-core', {
961
+ f: 'forms',
962
+ d: ['es5'],
963
+ test: function(toLoad){
964
+ if(formOptions.lightweightDatalist && !this.datalistLoaded){
965
+ this.datalistLoaded = true;
966
+ modules['form-datalist'].f = 'forms';
967
+ webshims.reTest(['form-datalist']);
968
+ }
969
+ return false;
970
+ },
971
+ options: {
972
+ placeholderType: 'value',
973
+ langSrc: 'i18n/errormessages-',
974
+ lightweightDatalist: true,
975
+ availabeLangs: ['ar', 'ch-ZN', 'el', 'es', 'fr', 'he', 'hi', 'hu', 'it', 'ja', 'nl', 'pt-PT', 'ru', 'sv'] //en and de are directly implemented in core
976
+ // ,customMessages: false,
977
+ // overrideMessages: false,
978
+ // replaceValidationUI: false
979
+ },
980
+ methodNames: ['setCustomValidity','checkValidity'],
981
+ c: [3, 2, 59, 17, 26, 16, 5, 4, 24, 19]
982
+ });
983
+
984
+ formOptions = webCFG.forms;
985
+
986
+ if(Modernizr[formvalidation] && !bugs.bustedValidity){
987
+ addPolyfill('form-extend', {
988
+ f: 'forms',
989
+ src: 'form-native-extend',
990
+ test: function(toLoad){
991
+ return ((modules['form-number-date-api'].test() || $.inArray('form-number-date-api', toLoad || []) == -1) && !formOptions.overrideMessages );
992
+ },
993
+ d: ['form-core', DOMSUPPORT, 'form-message'],
994
+ c: [18, 7, 59, 5]
995
+ });
996
+ removeCombos = removeCombos.concat([2, 3, 23, 21]);
997
+
998
+ } else {
999
+ removeCombos = removeCombos.concat([18, 7, 4, 59, 5]);
1000
+
1001
+ addPolyfill('form-extend', {
1002
+ f: 'forms',
1003
+ src: 'form-shim-extend',
1004
+ test: function(){
1005
+ return false;
1006
+ },
1007
+ d: ['form-core', DOMSUPPORT],
1008
+ c: [3, 2, 23, 21]
1009
+ });
1010
+ }
1011
+
1012
+ addPolyfill('form-message', {
1013
+ f: 'forms',
1014
+ test: function(toLoad){
1015
+ return !( formOptions.customMessages || !Modernizr[formvalidation] || !modules['form-extend'].test(toLoad) || bugs.validationMessage || bugs.bustedValidity );
1016
+ },
1017
+ d: [DOMSUPPORT],
1018
+ c: [3, 2, 23, 21, 59, 17, 5, 4]
1019
+ });
1020
+
1021
+ addPolyfill('form-number-date-api', {
1022
+ f: 'forms-ext',
1023
+ uiTest: function(){return (modernizrInputTypes.range && modernizrInputTypes.date /*&& modernizrInputTypes.time*/ && modernizrInputTypes.number);},
1024
+ test: function(toLoad){
1025
+ return (this.uiTest() && !webshims.bugs.valueAsNumberSet);
1026
+ },
1027
+ d: ['forms', DOMSUPPORT],
1028
+ c: [18, 7, 6]
1029
+ });
1030
+
1031
+ addPolyfill('form-number-date-ui', {
1032
+ f: 'forms-ext',
1033
+ test: function(){return modules['form-number-date-api'].test() && !this.options.replaceUI;},
1034
+ d: ['forms', DOMSUPPORT, 'form-number-date-api'],
1035
+ loadInit: function(){
1036
+ loadList(['jquery-ui']);
1037
+ if(modules['input-widgets'].src){
1038
+ loadList(['input-widgets']);
1039
+ }
1040
+ },
1041
+ options: {
1042
+ stepArrows: {number: 1, time: 1},
1043
+ calculateWidth: true,
1044
+ slider: {},
1045
+ datepicker: {},
1046
+ langSrc: uiLib+'i18n/jquery.ui.datepicker-',
1047
+ lazyDate: true
1048
+ // ,replaceUI: false
1049
+ },
1050
+ c: [18, 7, 6]
1051
+ });
1052
+
1053
+ addPolyfill('form-datalist', {
1054
+ f: 'forms-ext',
1055
+ test: function(){
1056
+ return modernizrInputAttrs.list && !formOptions.customDatalist;
1057
+ },
1058
+ d: ['form-core', DOMSUPPORT],
1059
+ c: [3, 59, 18, 24, 19, 11]
1060
+ });
1061
+ }
1062
+ //>
1063
+
1064
+ //<details combos: 12,13,15
1065
+ if(!('details' in Modernizr)){
1066
+ addTest('details', function(){
1067
+ return ('open' in document.createElement('details'));
1068
+ });
1069
+ }
1070
+ addPolyfill('details', {
1071
+ test: Modernizr.details,
1072
+ d: [DOMSUPPORT],
1073
+ options: {
1074
+ // animate: false,
1075
+ text: 'Details'
1076
+ },
1077
+ c: [12, 13, 15]
1078
+ });
1079
+ //>
1080
+
1081
+ //<mediaelement combos: 10, 9, 12, 17, 16, 8, 20, 22, 23, 24, 25, 26, 27
1082
+ if ('audio' in Modernizr && 'video' in Modernizr && 'texttrackapi' in Modernizr){
1083
+ webshims.mediaelement = {};
1084
+
1085
+ addPolyfill('mediaelement-core', {
1086
+ f: 'mediaelement',
1087
+ noAutoCallback: true,
1088
+
1089
+ d: ['swfobject',DOMSUPPORT],
1090
+ c: [27, 10, 9, 12, 17, 26, 16, 25, 8, 22, 23, 24, 20]
1091
+ });
1092
+ addPolyfill('mediaelement-swf', {
1093
+ f: 'mediaelement',
1094
+ options: {
1095
+ hasToPlay: 'any',
1096
+ preferFlash: false,
1097
+ jwVars: {},
1098
+ jwParams: {},
1099
+ jwAttrs: {},
1100
+ changeJW: $.noop
1101
+ },
1102
+ methodNames: ['play', 'pause', 'canPlayType', 'mediaLoad:load'],
1103
+ d: ['swfobject', DOMSUPPORT],
1104
+ test: function(){
1105
+ if(!Modernizr.audio || !Modernizr.video){
1106
+ return false;
1107
+ }
1108
+ var options = this.options;
1109
+ var hasToPlay = options.hasToPlay;
1110
+ return !( (!window.swfobject || window.swfobject.hasFlashPlayerVersion('9.0.115')) && (options.preferFlash || (hasToPlay != 'any' && !Modernizr.video[hasToPlay] && !Modernizr.audio[hasToPlay])));
1111
+ },
1112
+ c: [27, 10, 9, 22, 20]
1113
+ });
1114
+
1115
+ bugs.track = (Modernizr.track && (!Modernizr.texttrackapi || typeof (document.createElement('track').track || {}).mode != 'string'));
1116
+
1117
+ addPolyfill('track', {
1118
+ options: {
1119
+ positionDisplay: true,
1120
+ override: bugs.track
1121
+ },
1122
+ test: function(){
1123
+ return Modernizr.track && !this.options.override && !bugs.track;
1124
+ },
1125
+ d: ['mediaelement', DOMSUPPORT],
1126
+ methodNames: ['addTextTrack'],
1127
+ c: [27, 26, 25]
1128
+ });
1129
+
1130
+ addModule('track-ui', {
1131
+ d: ['track']
1132
+ });
1133
+ }
1134
+ //>
1135
+
1136
+
1137
+ //>removeCombos<
1138
+ addPolyfill('feature-dummy', {
1139
+ test: true,
1140
+ loaded: true,
1141
+ c: removeCombos
1142
+ });
1143
+
1144
+
1145
+ jScripts
1146
+ .filter('[data-polyfill-cfg]')
1147
+ .each(function(){
1148
+ try {
1149
+ webshims.setOptions( $(this).data('polyfillCfg') );
1150
+ } catch(e){
1151
+ webshims.warn('error parsing polyfill cfg: '+e);
1152
+ }
1153
+ })
1154
+ .end()
1155
+ .filter('[data-polyfill]')
1156
+ .each(function(){
1157
+ webshims.polyfill( $.trim( $(this).data('polyfill') || '' ) );
1158
+ })
1159
+ ;
1160
+ if(asyncWebshims){
1161
+ if(asyncWebshims.cfg){
1162
+ webshims.setOptions(asyncWebshims.cfg);
1163
+ }
1164
+ if(asyncWebshims.lang){
1165
+ webshims.activeLang(asyncWebshims.lang);
1166
+ }
1167
+ if('polyfill' in asyncWebshims){
1168
+ webshims.polyfill(asyncWebshims.polyfill);
1169
+ }
1170
+ }
1171
+ }));