webshims-rails 1.12.5 → 1.12.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/polyfiller.js +111 -132
  4. data/vendor/assets/javascripts/webshims/shims/combos/1.js +40 -37
  5. data/vendor/assets/javascripts/webshims/shims/combos/10.js +217 -36
  6. data/vendor/assets/javascripts/webshims/shims/combos/11.js +151 -29
  7. data/vendor/assets/javascripts/webshims/shims/combos/12.js +70 -93
  8. data/vendor/assets/javascripts/webshims/shims/combos/13.js +70 -93
  9. data/vendor/assets/javascripts/webshims/shims/combos/14.js +90 -13
  10. data/vendor/assets/javascripts/webshims/shims/combos/15.js +202 -59
  11. data/vendor/assets/javascripts/webshims/shims/combos/16.js +208 -70
  12. data/vendor/assets/javascripts/webshims/shims/combos/17.js +151 -29
  13. data/vendor/assets/javascripts/webshims/shims/combos/18.js +155 -30
  14. data/vendor/assets/javascripts/webshims/shims/combos/19.js +79 -20
  15. data/vendor/assets/javascripts/webshims/shims/combos/2.js +109 -47
  16. data/vendor/assets/javascripts/webshims/shims/combos/20.js +79 -20
  17. data/vendor/assets/javascripts/webshims/shims/combos/21.js +80 -87
  18. data/vendor/assets/javascripts/webshims/shims/combos/22.js +66 -83
  19. data/vendor/assets/javascripts/webshims/shims/combos/23.js +4 -10
  20. data/vendor/assets/javascripts/webshims/shims/combos/25.js +79 -20
  21. data/vendor/assets/javascripts/webshims/shims/combos/26.js +66 -7
  22. data/vendor/assets/javascripts/webshims/shims/combos/28.js +100 -25
  23. data/vendor/assets/javascripts/webshims/shims/combos/3.js +192 -47
  24. data/vendor/assets/javascripts/webshims/shims/combos/30.js +193 -49
  25. data/vendor/assets/javascripts/webshims/shims/combos/31.js +103 -36
  26. data/vendor/assets/javascripts/webshims/shims/combos/32.js +5 -3
  27. data/vendor/assets/javascripts/webshims/shims/combos/33.js +1 -2
  28. data/vendor/assets/javascripts/webshims/shims/combos/34.js +2048 -0
  29. data/vendor/assets/javascripts/webshims/shims/combos/4.js +156 -20
  30. data/vendor/assets/javascripts/webshims/shims/combos/5.js +151 -29
  31. data/vendor/assets/javascripts/webshims/shims/combos/6.js +152 -31
  32. data/vendor/assets/javascripts/webshims/shims/combos/7.js +199 -60
  33. data/vendor/assets/javascripts/webshims/shims/combos/8.js +197 -58
  34. data/vendor/assets/javascripts/webshims/shims/combos/9.js +218 -38
  35. data/vendor/assets/javascripts/webshims/shims/combos/97.js +1004 -0
  36. data/vendor/assets/javascripts/webshims/shims/combos/98.js +1283 -0
  37. data/vendor/assets/javascripts/webshims/shims/combos/99.js +204 -1248
  38. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +66 -7
  39. data/vendor/assets/javascripts/webshims/shims/es5.js +4 -1
  40. data/vendor/assets/javascripts/webshims/shims/form-combat.js +3 -3
  41. data/vendor/assets/javascripts/webshims/shims/form-core.js +36 -27
  42. data/vendor/assets/javascripts/webshims/shims/form-datalist.js +1 -2
  43. data/vendor/assets/javascripts/webshims/shims/form-fixrangechange.js +137 -0
  44. data/vendor/assets/javascripts/webshims/shims/form-message.js +90 -13
  45. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +129 -15
  46. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +9 -10
  47. data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +886 -985
  48. data/vendor/assets/javascripts/webshims/shims/form-validation.js +78 -174
  49. data/vendor/assets/javascripts/webshims/shims/form-validators.js +39 -26
  50. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +45 -17
  51. data/vendor/assets/javascripts/webshims/shims/geolocation.js +10 -3
  52. data/vendor/assets/javascripts/webshims/shims/jme/b.js +71 -246
  53. data/vendor/assets/javascripts/webshims/shims/jme/c.js +133 -1002
  54. data/vendor/assets/javascripts/webshims/shims/jme/controls.css +62 -23
  55. data/vendor/assets/javascripts/webshims/shims/jme/controls.scss +73 -10
  56. data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols-lazy.js +1117 -0
  57. data/vendor/assets/javascripts/webshims/shims/jme/p.js +603 -0
  58. data/vendor/assets/javascripts/webshims/shims/jpicker/jpicker.css +5 -2
  59. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +4 -10
  60. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +4 -1
  61. data/vendor/assets/javascripts/webshims/shims/range-ui.js +22 -14
  62. data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +29 -344
  63. data/vendor/assets/javascripts/webshims/shims/styles/forms-picker.css +362 -0
  64. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +6 -483
  65. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-picker.scss +488 -0
  66. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim-ext.scss +2 -0
  67. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +10 -2
  68. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +6 -2
  69. data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  70. data/vendor/assets/javascripts/webshims/shims/track-ui.js +8 -1
  71. data/vendor/assets/javascripts/webshims/shims/track.js +66 -83
  72. metadata +12 -5
  73. data/vendor/assets/javascripts/webshims/shims/$ajax.js +0 -862
  74. data/vendor/assets/javascripts/webshims/shims/combos/24.js +0 -2087
@@ -1,3 +1,61 @@
1
+
2
+ //this might was already extended by ES5 shim feature
3
+ (function($){
4
+ "use strict";
5
+ var webshims = window.webshims;
6
+ if(webshims.defineProperties){return;}
7
+ var defineProperty = 'defineProperty';
8
+ var has = Object.prototype.hasOwnProperty;
9
+ var descProps = ['configurable', 'enumerable', 'writable'];
10
+ var extendUndefined = function(prop){
11
+ for(var i = 0; i < 3; i++){
12
+ if(prop[descProps[i]] === undefined && (descProps[i] !== 'writable' || prop.value !== undefined)){
13
+ prop[descProps[i]] = true;
14
+ }
15
+ }
16
+ };
17
+
18
+ var extendProps = function(props){
19
+ if(props){
20
+ for(var i in props){
21
+ if(has.call(props, i)){
22
+ extendUndefined(props[i]);
23
+ }
24
+ }
25
+ }
26
+ };
27
+
28
+ if(Object.create){
29
+ webshims.objectCreate = function(proto, props, opts){
30
+ extendProps(props);
31
+ var o = Object.create(proto, props);
32
+ if(opts){
33
+ o.options = $.extend(true, {}, o.options || {}, opts);
34
+ opts = o.options;
35
+ }
36
+ if(o._create && $.isFunction(o._create)){
37
+ o._create(opts);
38
+ }
39
+ return o;
40
+ };
41
+ }
42
+
43
+ if(Object[defineProperty]){
44
+ webshims[defineProperty] = function(obj, prop, desc){
45
+ extendUndefined(desc);
46
+ return Object[defineProperty](obj, prop, desc);
47
+ };
48
+ }
49
+ if(Object.defineProperties){
50
+ webshims.defineProperties = function(obj, props){
51
+ extendProps(props);
52
+ return Object.defineProperties(obj, props);
53
+ };
54
+ }
55
+ webshims.getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
56
+
57
+ webshims.getPrototypeOf = Object.getPrototypeOf;
58
+ })(window.webshims.$);
1
59
  //DOM-Extension helper
2
60
  webshims.register('dom-extend', function($, webshims, window, document, undefined){
3
61
  "use strict";
@@ -633,6 +691,13 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
633
691
  this.width = docObserve.getWidth();
634
692
  setInterval(this.test, 999);
635
693
  $(this.test);
694
+ if($.support.boxSizing == null){
695
+ $(function(){
696
+ if($.support.boxSizing){
697
+ docObserve.handler({type: 'boxsizing'});
698
+ }
699
+ });
700
+ }
636
701
  webshims.ready('WINDOWLOAD', this.test);
637
702
  $(document).on('updatelayout.webshim pageinit popupafteropen panelbeforeopen tabsactivate collapsibleexpand shown.bs.modal shown.bs.collapse slid.bs.carousel', this.handler);
638
703
  $(window).on('resize', this.handler);
@@ -644,13 +709,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
644
709
  webshims.docObserve = function(){
645
710
  webshims.ready('DOM', function(){
646
711
  docObserve.start();
647
- if($.support.boxSizing == null){
648
- $(function(){
649
- if($.support.boxSizing){
650
- docObserve.handler({type: 'boxsizing'});
651
- }
652
- });
653
- }
712
+
654
713
  });
655
714
  };
656
715
  return function(nativeElem, shadowElem, opts){
@@ -2,7 +2,9 @@
2
2
  // vim: ts=4 sts=4 sw=4 expandtab
3
3
 
4
4
  (function () {
5
-
5
+ setTimeout(function(){
6
+ webshims.isReady('es5', true);
7
+ });
6
8
  /**
7
9
  * Brings an environment as close to ECMAScript 5 compliance
8
10
  * as is possible with the facilities of erstwhile engines.
@@ -1441,6 +1443,7 @@ if((!advancedObjectProperties || !Object.create || !Object.defineProperties || !
1441
1443
  };
1442
1444
 
1443
1445
  }
1446
+ webshims.isReady('es5', true);
1444
1447
  })(webshims.$, webshims);
1445
1448
 
1446
1449
 
@@ -24,7 +24,7 @@ webshims.register('form-combat', function($,webshims){
24
24
  if(('container' in widgetData) && $.isFunction(widgetData.opened)){
25
25
  var onValidate = function(e){
26
26
  if (!webshims.wsPopover.isInElement([elem, shadow, shadowFocus, $(widgetData.container)], e.target)) {
27
- $(elem).trigger('refreshvalidityui');
27
+ $(elem).trigger('updatevalidation.webshims');
28
28
  }
29
29
  };
30
30
 
@@ -51,7 +51,7 @@ webshims.register('form-combat', function($,webshims){
51
51
  if(('$menu' in widgetData)){
52
52
  var onValidate = function(e){
53
53
  if (!webshims.wsPopover.isInElement([elem, shadow, shadowFocus, $(widgetData.$menu)], e.target)) {
54
- $(elem).trigger('refreshvalidityui');
54
+ $(elem).trigger('updatevalidation.webshims');
55
55
  }
56
56
  };
57
57
 
@@ -85,7 +85,7 @@ webshims.register('form-combat', function($,webshims){
85
85
  if(('listbox' in widgetData)){
86
86
  var onValidate = function(e){
87
87
  if (!webshims.wsPopover.isInElement([elem, shadow, shadowFocus, $(widgetData.listbox).parent()], e.target)) {
88
- $(elem).trigger('refreshvalidityui');
88
+ $(elem).trigger('updatevalidation.webshims');
89
89
  }
90
90
  };
91
91
 
@@ -49,27 +49,27 @@ webshims.register('form-core', function($, webshims, window, document, undefined
49
49
  /*
50
50
  * Selectors for all browsers
51
51
  */
52
- var rElementsGroup = /^(?:form|fieldset)$/i;
53
- var hasInvalid = function(elem){
54
- var ret = false;
55
- $(elem).jProp('elements').each(function(){
56
- if(!rElementsGroup.test(this.nodeName || '')){
57
- ret = $(this).is(':invalid');
58
- if(ret){
59
- return false;
60
- }
61
- }
62
-
63
- });
64
- return ret;
65
- };
66
52
 
67
53
  var extendSels = function(){
68
54
  var matches, matchesOverride;
69
55
  var exp = $.expr[":"];
56
+ var rElementsGroup = /^(?:form|fieldset)$/i;
57
+ var hasInvalid = function(elem){
58
+ var ret = false;
59
+ $(elem).jProp('elements').each(function(){
60
+ if(!rElementsGroup.test(this.nodeName || '')){
61
+ ret = exp.invalid(this);
62
+ if(ret){
63
+ return false;
64
+ }
65
+ }
66
+
67
+ });
68
+ return ret;
69
+ };
70
70
  $.extend(exp, {
71
71
  "valid-element": function(elem){
72
- return rElementsGroup.test(elem.nodeName || '') ? !hasInvalid(elem) :!!($.prop(elem, 'willValidate') && isValid(elem));
72
+ return rElementsGroup.test(elem.nodeName || '') ? !hasInvalid(elem) : !!($.prop(elem, 'willValidate') && isValid(elem));
73
73
  },
74
74
  "invalid-element": function(elem){
75
75
  return rElementsGroup.test(elem.nodeName || '') ? hasInvalid(elem) : !!($.prop(elem, 'willValidate') && !isValid(elem));
@@ -124,27 +124,36 @@ webshims.register('form-core', function($, webshims, window, document, undefined
124
124
  };
125
125
  }
126
126
  };
127
+ var formExtras = {
128
+ noAutoCallback: true,
129
+ options: options
130
+ };
131
+ var addModule = webshims.loader.addModule;
132
+ var lazyLoadProxy = function(obj, fn, args){
133
+ lazyLoad();
134
+ webshims.ready('form-validation', function(){
135
+ obj[fn].apply(obj, args);
136
+ });
137
+ };
138
+
139
+ var transClass = ('transitionDelay' in document.documentElement.style) ? '' : ' no-transition';
140
+ var poCFG = webshims.cfg.wspopover;
141
+
142
+ addModule('form-validation', $.extend({d: ['form-message']}, formExtras));
143
+
144
+ addModule('form-validators', $.extend({}, formExtras));
127
145
 
128
146
  if($.expr.filters){
129
147
  extendSels();
130
148
  } else {
131
149
  webshims.ready('sizzle', extendSels);
132
150
  }
133
-
134
-
151
+
135
152
  webshims.triggerInlineForm = function(elem, event){
136
153
  $(elem).trigger(event);
137
154
  };
138
155
 
139
- var lazyLoadProxy = function(obj, fn, args){
140
- lazyLoad();
141
- webshims.ready('form-validation', function(){
142
- obj[fn].apply(obj, args);
143
- });
144
- };
145
-
146
- var transClass = ('transitionDelay' in document.documentElement.style) ? '' : ' no-transition';
147
- var poCFG = webshims.cfg.wspopover;
156
+
148
157
  if(!poCFG.position && poCFG.position !== false){
149
158
  poCFG.position = {
150
159
  at: 'left bottom',
@@ -266,7 +275,7 @@ webshims.register('form-core', function($, webshims, window, document, undefined
266
275
 
267
276
  webshims.ready('WINDOWLOAD', lazyLoad);
268
277
 
269
- if(modules['form-number-date-ui'].loaded && modules['form-number-date-api'].test()){
278
+ if(modules['form-number-date-ui'].loaded && !options.customMessages && (modules['form-number-date-api'].test() || (Modernizr.inputtypes.range && Modernizr.inputtypes.color))){
270
279
  webshims.isReady('form-number-date-ui', true);
271
280
  }
272
281
  });
@@ -1,6 +1,5 @@
1
1
  webshims.register('form-datalist', function($, webshims, window, document, undefined, options){
2
2
  "use strict";
3
- var doc = document;
4
3
  var lazyLoad = function(name){
5
4
  if(!name || typeof name != 'string'){
6
5
  name = 'DOM';
@@ -295,4 +294,4 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
295
294
  initializeDatalist();
296
295
  })();
297
296
 
298
- });
297
+ });
@@ -0,0 +1,137 @@
1
+ webshims.register('form-fixrangechange', function($, webshims){
2
+ "use strict";
3
+ var rangeChange = {
4
+
5
+ trigger: function(e){
6
+ if(rangeChange.blockElement){
7
+ rangeChange.blockElement = false;
8
+ setTimeout(function(){
9
+ if(rangeChange.requestedChange && rangeChange.value != rangeChange.requestedChange.value){
10
+ $(rangeChange.requestedChange).trigger('change');
11
+ }
12
+ rangeChange.value = false;
13
+ }, 9);
14
+ }
15
+
16
+ },
17
+ lastValue: false,
18
+ updateInputValue: function(e){
19
+ rangeChange.lastValue = e.target.value;
20
+ },
21
+ triggerInput: function(e){
22
+ if(rangeChange.lastValue !== false && rangeChange.lastValue != e.target.value){
23
+ $(e.target).trigger('input');
24
+ }
25
+ },
26
+ inputTeardown: function(e){
27
+ $(e.target)
28
+ .off('input', rangeChange.updateInputValue)
29
+ .off('blur', rangeChange.inputTeardown)
30
+ ;
31
+ rangeChange.lastValue = false;
32
+ },
33
+ inputSetup: function(e){
34
+
35
+ if(e.target.type == 'range'){
36
+ rangeChange.inputTeardown(e);
37
+ rangeChange.lastValue = e.target.value;
38
+ $(e.target)
39
+ .on('input', rangeChange.updateInputValue)
40
+ .on('blur', rangeChange.inputTeardown)
41
+ ;
42
+ }
43
+ }
44
+ };
45
+
46
+
47
+ $.each([{name: 'key', evt: 'keyup'}, {name: 'mouse', evt: 'mouseup'}, {name: 'touch', evt: 'touchend'}], function(i, obj){
48
+ var setup = obj.name + 'Setup';
49
+ var commit = obj.name + 'Commit';
50
+ rangeChange[obj.name+'Block'] = function(e){
51
+
52
+ if(!rangeChange.blockElement && e.target.type == 'range'){
53
+
54
+ rangeChange.blockElement = e.target;
55
+ rangeChange.value = e.target.value;
56
+ $(rangeChange.blockElement)
57
+ .off('blur', rangeChange.trigger)
58
+ .on('blur', rangeChange.trigger)
59
+ ;
60
+
61
+ $(document.body)
62
+ .off(obj.evt, rangeChange[commit])
63
+ .on(obj.evt, rangeChange[commit])
64
+ ;
65
+ }
66
+ };
67
+
68
+ rangeChange[commit] = function(e){
69
+ $(document.body).off(obj.evt, rangeChange[commit]);
70
+ rangeChange.trigger();
71
+ };
72
+
73
+ });
74
+
75
+ $(document.body || 'html').on({
76
+ mousedown: rangeChange.mouseBlock,
77
+ 'keydown kepress': function(e){
78
+ if(e.keyCode < 45 && e.keyCode > 30){
79
+ rangeChange.keyBlock(e);
80
+ }
81
+ },
82
+ 'touchstart': rangeChange.touchBlock,
83
+ focusin: rangeChange.inputSetup
84
+ });
85
+
86
+ $.extend(true, $.event.special, {
87
+ change: {
88
+ handle: function(e){
89
+
90
+ if(!e.isTrigger && rangeChange.blockElement == e.target){
91
+ rangeChange.requestedChange = e.target;
92
+ rangeChange.triggerInput(e);
93
+ return false;
94
+ } else if(rangeChange.requestedChange == e.target){
95
+ rangeChange.requestedChange = false;
96
+ }
97
+ e.handleObj.handler.apply(this, arguments);
98
+ }
99
+ },
100
+ input: {
101
+ handle: (function(){
102
+ var lastValue, lastElement;
103
+
104
+ var remove = function(){
105
+ if(lastElement){
106
+ $(lastElement).off('change', remove);
107
+ }
108
+ lastValue = false;
109
+ lastElement = false;
110
+ };
111
+
112
+ var setup = function(e){
113
+ remove(e);
114
+ lastElement = e.target;
115
+ lastValue = e.target.value;
116
+ $(e.target).on('change', remove);
117
+ };
118
+
119
+ return function(e){
120
+ var value;
121
+ if(!e.isTrigger && e.target.type == 'range'){
122
+
123
+ if(lastElement != e.target){
124
+ setup(e);
125
+ } else if(lastElement == e.target){
126
+ if(lastValue == (value = e.target.value)){
127
+ return false;
128
+ }
129
+ lastValue = e.target.value;
130
+ }
131
+ }
132
+ e.handleObj.handler.apply(this, arguments);
133
+ };
134
+ })()
135
+ }
136
+ });
137
+ });
@@ -125,26 +125,103 @@ webshims.register('form-message', function($, webshims, window, document, undefi
125
125
  min: 1,
126
126
  max: 1
127
127
  };
128
+ var toLocale = (function(){
129
+ var monthFormatter;
130
+ var transforms = {
131
+ number: function(val){
132
+ var num = val * 1;
133
+ if(num.toLocaleString && !isNaN(num)){
134
+ val = num.toLocaleString() || val;
135
+ }
136
+ return val;
137
+ }
138
+ };
139
+ var _toLocale = function(val, elem, attr){
140
+ var type, widget;
141
+ if(valueVals[attr]){
142
+ type = $.prop(elem, 'type');
143
+ widget = $(elem).getShadowElement().data('wsWidget'+ type );
144
+ if(widget && widget.formatValue){
145
+ val = widget.formatValue(val, false);
146
+ } else if(transforms[type]){
147
+ val = transforms[type](val);
148
+ }
149
+ }
150
+ return val;
151
+ };
152
+
153
+ [{n: 'date', f: 'toLocaleDateString'}, {n: 'time', f: 'toLocaleTimeString'}, {n: 'datetime-local', f: 'toLocaleString'}].forEach(function(desc){
154
+ transforms[desc.n] = function(val){
155
+ var date = new Date(val);
156
+ if(date && date[desc.f]){
157
+ val = date[desc.f]() || val;
158
+ }
159
+ return val;
160
+ };
161
+ });
162
+
163
+ if(window.Intl && Intl.DateTimeFormat){
164
+ monthFormatter = new Intl.DateTimeFormat(navigator.browserLanguage || navigator.language, {year: "numeric", month: "2-digit"}).format(new Date());
165
+ if(monthFormatter && monthFormatter.format){
166
+ transforms.month = function(val){
167
+ var date = new Date(val);
168
+ if(date){
169
+ val = monthFormatter.format(date) || val;
170
+ }
171
+ return val;
172
+ };
173
+ }
174
+ }
175
+
176
+ webshims.format = {};
177
+
178
+ ['date', 'number', 'month', 'time', 'datetime-local'].forEach(function(name){
179
+ webshims.format[name] = function(val, opts){
180
+ if(opts && opts.nodeType){
181
+ return _toLocale(val, opts, name);
182
+ }
183
+ if(name == 'number' && opts && opts.toFixed ){
184
+ val = (val * 1);
185
+ if(!opts.fixOnlyFloat || val % 1){
186
+ val = val.toFixed(opts.toFixed);
187
+ }
188
+ }
189
+ if(webshims._format && webshims._format[name]){
190
+ return webshims._format[name](val, opts);
191
+ }
192
+ return transforms[name](val);
193
+ };
194
+ });
195
+
196
+ return _toLocale;
197
+ })();
128
198
 
129
199
  webshims.replaceValidationplaceholder = function(elem, message, name){
130
- var type, widget;
200
+ var val = $.prop(elem, 'title');
201
+ if(message){
202
+ if(name == 'patternMismatch' && !val){
203
+ webshims.error('no title for patternMismatch provided. Always add a title attribute.');
204
+ }
205
+ if(val){
206
+ val = '<span class="ws-titlevalue">'+ val.replace(lReg, '&lt;').replace(gReg, '&gt;') +'</span>';
207
+ }
208
+
209
+ if(message.indexOf('{%title}') != -1){
210
+ message = message.replace('{%title}', val);
211
+ } else if(val) {
212
+ message = message+' '+val;
213
+ }
214
+ }
215
+
131
216
  if(message && message.indexOf('{%') != -1){
132
- ['value', 'min', 'max', 'title', 'maxlength', 'minlength', 'label'].forEach(function(attr){
217
+ ['value', 'min', 'max', 'maxlength', 'minlength', 'label'].forEach(function(attr){
133
218
  if(message.indexOf('{%'+attr) === -1){return;}
134
219
  var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.prop(elem, attr)) || '';
135
220
  val = ''+val;
136
- if(name == 'patternMismatch' && attr == 'title' && !val){
137
- webshims.error('no title for patternMismatch provided. Always add a title attribute.');
138
- }
139
221
 
140
- if(valueVals[attr]){
141
- if(!widget){
142
- widget = $(elem).getShadowElement().data('wsWidget'+ (type = $.prop(elem, 'type')));
143
- }
144
- if(widget && widget.formatValue){
145
- val = widget.formatValue(val, false);
146
- }
147
- }
222
+
223
+ val = toLocale(val, elem, attr);
224
+
148
225
  message = message.replace('{%'+ attr +'}', val.replace(lReg, '&lt;').replace(gReg, '&gt;'));
149
226
  if('value' == attr){
150
227
  message = message.replace('{%valueLen}', val.length);