webshims-rails 1.12.2 → 1.12.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) 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 +2 -40
  4. data/vendor/assets/javascripts/webshims/polyfiller.js +10 -18
  5. data/vendor/assets/javascripts/webshims/shims/combos/1.js +5 -2
  6. data/vendor/assets/javascripts/webshims/shims/combos/10.js +2 -2
  7. data/vendor/assets/javascripts/webshims/shims/combos/11.js +2 -2
  8. data/vendor/assets/javascripts/webshims/shims/combos/12.js +3 -2
  9. data/vendor/assets/javascripts/webshims/shims/combos/13.js +3 -2
  10. data/vendor/assets/javascripts/webshims/shims/combos/14.js +26 -19
  11. data/vendor/assets/javascripts/webshims/shims/combos/15.js +29 -19
  12. data/vendor/assets/javascripts/webshims/shims/combos/16.js +31 -21
  13. data/vendor/assets/javascripts/webshims/shims/combos/17.js +2 -2
  14. data/vendor/assets/javascripts/webshims/shims/combos/18.js +2 -2
  15. data/vendor/assets/javascripts/webshims/shims/combos/19.js +3 -2
  16. data/vendor/assets/javascripts/webshims/shims/combos/2.js +5 -2
  17. data/vendor/assets/javascripts/webshims/shims/combos/20.js +3 -2
  18. data/vendor/assets/javascripts/webshims/shims/combos/23.js +2 -2
  19. data/vendor/assets/javascripts/webshims/shims/combos/24.js +1 -1
  20. data/vendor/assets/javascripts/webshims/shims/combos/25.js +3 -2
  21. data/vendor/assets/javascripts/webshims/shims/combos/28.js +26 -19
  22. data/vendor/assets/javascripts/webshims/shims/combos/3.js +29 -19
  23. data/vendor/assets/javascripts/webshims/shims/combos/30.js +29 -19
  24. data/vendor/assets/javascripts/webshims/shims/combos/31.js +3 -0
  25. data/vendor/assets/javascripts/webshims/shims/combos/4.js +26 -19
  26. data/vendor/assets/javascripts/webshims/shims/combos/5.js +2 -2
  27. data/vendor/assets/javascripts/webshims/shims/combos/6.js +2 -2
  28. data/vendor/assets/javascripts/webshims/shims/combos/7.js +31 -21
  29. data/vendor/assets/javascripts/webshims/shims/combos/8.js +31 -21
  30. data/vendor/assets/javascripts/webshims/shims/combos/9.js +2 -2
  31. data/vendor/assets/javascripts/webshims/shims/form-core.js +3 -0
  32. data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +3 -3
  33. data/vendor/assets/javascripts/webshims/shims/form-message.js +26 -19
  34. data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +1 -1
  35. data/vendor/assets/javascripts/webshims/shims/form-validation.js +13 -12
  36. data/vendor/assets/javascripts/webshims/shims/form-validators.js +61 -58
  37. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +2 -2
  38. data/vendor/assets/javascripts/webshims/shims/range-ui.js +2 -2
  39. data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +45 -25
  40. data/vendor/assets/javascripts/webshims/shims/styles/scss/_api-forms-ext.scss +20 -4
  41. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +29 -26
  42. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +3 -0
  43. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +6 -3
  44. data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  45. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 64dc8a60020703d0b864c0f4f7ab4b8f39f0f63a
4
- data.tar.gz: b1ce0d9be3b195be8381b475f3298ceee290b134
3
+ metadata.gz: 4a2cd305c4543c3f88f05a7507c8994158874883
4
+ data.tar.gz: a47f33704f1475c5f7362d547c9ad15ced2f6827
5
5
  SHA512:
6
- metadata.gz: b77af804aa74df4ef6593b8aba59d7e8e8ee8deba60b34797abc81af83429b24be969e88d90cbce9762ff5085ec6715e7e06aaaaa9de84c8163a988c26a1e5f1
7
- data.tar.gz: 979c651edd8c44edba2cb9d8703538019d7fbfe4b2b5d61bae490d71cd86ab65b1cc7f252922153677bb723b2d41c9fee2541280dfb65208054c049e9c22428c
6
+ metadata.gz: 55bed905a5a943dfa132d9c86e8aadb6a59a1b4085f73786c752e16fe8c113b3d9cdd268a86caa97d860a98933235949563696eeeee41bf1eb86db1c185b4c87
7
+ data.tar.gz: 49ce052c26a6381f669267718b5f5d9dddc6362ccae5d6e1c0e43510f7622dcfb80b487489e8f37137b73c2be50e939b1c7822d676f9855d96cb643aba3dc97b
@@ -1,6 +1,6 @@
1
1
  module Webshims
2
2
  module Rails
3
- VERSION = "1.12.2"
4
- WEBSHIMS_VERSION = "1.12.2"
3
+ VERSION = "1.12.3"
4
+ WEBSHIMS_VERSION = "1.12.3"
5
5
  end
6
6
  end
@@ -1,5 +1,5 @@
1
1
  /* Modernizr 2.7.1 (Custom Build) | MIT & BSD
2
- * Build: http://modernizr.com/download/#-canvas-audio-video-input-inputtypes-localstorage-sessionstorage-geolocation-shiv-cssclasses-addtest-prefixed-testprop-testallprops-prefixes-domprefixes-elem_track
2
+ * Build: http://modernizr.com/download/#-canvas-audio-video-input-inputtypes-geolocation-shiv-addtest-prefixed-testprop-testallprops-prefixes-domprefixes
3
3
  */
4
4
  ;
5
5
 
@@ -11,7 +11,6 @@ window.Modernizr = (function( window, document, undefined ) {
11
11
 
12
12
  Modernizr = {},
13
13
 
14
- enableClasses = true,
15
14
 
16
15
  docElement = document.documentElement,
17
16
 
@@ -207,30 +206,7 @@ window.Modernizr = (function( window, document, undefined ) {
207
206
  } catch(e) { }
208
207
 
209
208
  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
-
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
-
233
- function webforms() {
209
+ }; function webforms() {
234
210
  Modernizr['input'] = (function( props ) {
235
211
  for ( var i = 0, len = props.length; i < len; i++ ) {
236
212
  attrs[ props[i] ] = !!(props[i] in inputElem);
@@ -524,22 +500,8 @@ window.Modernizr = (function( window, document, undefined ) {
524
500
  };
525
501
 
526
502
 
527
- docElement.className = docElement.className.replace(/(^|\s)no-js(\s|$)/, '$1$2') +
528
-
529
- (enableClasses ? ' js ' + classes.join(' ') : '');
530
503
 
531
504
  return Modernizr;
532
505
 
533
506
  })(this, this.document);
534
- // Track element + Timed Text Track API
535
- // http://www.w3.org/TR/html5/video.html#the-track-element
536
- // http://www.w3.org/TR/html5/media-elements.html#text-track-api
537
- //
538
- // While IE10 has implemented the track element, IE10 does not expose the underlying APIs to create timed text tracks by JS (really sad)
539
- // By Addy Osmani
540
- Modernizr.addTest({
541
- texttrackapi: (typeof (document.createElement('video').addTextTrack) === 'function'),
542
- // a more strict test for track including UI support: document.createElement('track').kind === 'subtitles'
543
- track: ('kind' in document.createElement('track'))
544
- });
545
507
  ;
@@ -113,7 +113,7 @@
113
113
  path = path.split('?')[0].slice(0, path.lastIndexOf("/") + 1) + 'shims/';
114
114
 
115
115
  $.extend(webshims, {
116
- version: '1.12.2',
116
+ version: '1.12.3',
117
117
  cfg: {
118
118
 
119
119
  //addCacheBuster: false,
@@ -967,7 +967,7 @@
967
967
  var bustedWidgetUi = false;
968
968
 
969
969
  var initialFormTest = function(){
970
- var range, tmp, fieldset;
970
+ var tmp, fieldset;
971
971
  if(!initialFormTest.run){
972
972
  fieldset = $('<fieldset><textarea required="" /></fieldset>')[0];
973
973
  addTest(formvalidation, !!(modernizrInputAttrs.required && modernizrInputAttrs.pattern));
@@ -985,17 +985,6 @@
985
985
  }
986
986
  addTest('fieldsetdisabled', tmp);
987
987
  }
988
- if(modernizrInputTypes && modernizrInputTypes.range && !window.opera){
989
- range = $('<input type="range" style="-webkit-appearance: slider-horizontal; -moz-appearance: range;" />').appendTo('html');
990
- tmp = range.css('appearance');
991
- range.remove();
992
-
993
- addTest('csstrackrange', tmp == null || tmp == 'range');
994
-
995
- addTest('cssrangeinput', tmp == 'slider-horizontal' || tmp == 'range');
996
-
997
- addTest('styleableinputrange', Modernizr.csstrackrange || Modernizr.cssrangeinput);
998
- }
999
988
 
1000
989
  if(Modernizr[formvalidation]){
1001
990
  bustedWidgetUi = !Modernizr.fieldsetdisabled ||!Modernizr.fieldsetelements || !('value' in document.createElement('progress')) || !('value' in document.createElement('output'));
@@ -1198,7 +1187,11 @@
1198
1187
  //<mediaelement
1199
1188
  (function(){
1200
1189
  webshims.mediaelement = {};
1201
-
1190
+ addTest({
1191
+ texttrackapi: ('addTextTrack' in document.createElement('video')),
1192
+ // a more strict test for track including UI support: document.createElement('track').kind === 'subtitles'
1193
+ track: ('kind' in document.createElement('track'))
1194
+ });
1202
1195
  addPolyfill('mediaelement-core', {
1203
1196
  f: 'mediaelement',
1204
1197
  noAutoCallback: true,
@@ -1212,7 +1205,7 @@
1212
1205
  methodNames: ['play', 'pause', 'canPlayType', 'mediaLoad:load'],
1213
1206
  d: ['swfmini'],
1214
1207
  c: [16, 7, 2, 8, 1, 12, 13, 19, 25, 20, 23],
1215
- nM: 'audio video texttrackapi'
1208
+ nM: 'audio video'
1216
1209
  });
1217
1210
 
1218
1211
 
@@ -1228,7 +1221,7 @@
1228
1221
  if(options.preferFlash && !modules.swfmini.test()){
1229
1222
  options.preferFlash = false;
1230
1223
  }
1231
- return !( options.preferFlash && swfmini.hasFlashPlayerVersion('9.0.115') );
1224
+ return !( options.preferFlash && swfmini.hasFlashPlayerVersion('10.0.3') );
1232
1225
  },
1233
1226
  c: [21, 19, 25, 20]
1234
1227
  });
@@ -1245,8 +1238,7 @@
1245
1238
  },
1246
1239
  d: ['mediaelement', DOMSUPPORT],
1247
1240
  methodNames: ['addTextTrack'],
1248
- c: [21, 12, 13, 22],
1249
- nM: 'texttrackapi'
1241
+ c: [21, 12, 13, 22]
1250
1242
  });
1251
1243
 
1252
1244
 
@@ -683,6 +683,9 @@ webshims.register('form-core', function($, webshims, window, document, undefined
683
683
  if(typeof message == 'object'){
684
684
  message = message.defaultMessage;
685
685
  }
686
+ if(webshims.replaceValidationplaceholder){
687
+ message = webshims.replaceValidationplaceholder(elem, message);
688
+ }
686
689
  return message || '';
687
690
  };
688
691
 
@@ -803,7 +806,7 @@ webshims.register('form-core', function($, webshims, window, document, undefined
803
806
  hasFullTrackSupport = Modernizr.track && !bugs.track;
804
807
 
805
808
  webshims.register('mediaelement-core', function($, webshims, window, document, undefined, options){
806
- hasSwf = swfmini.hasFlashPlayerVersion('9.0.115');
809
+ hasSwf = swfmini.hasFlashPlayerVersion('10.0.3');
807
810
  $('html').addClass(hasSwf ? 'swf' : 'no-swf');
808
811
  var mediaelement = webshims.mediaelement;
809
812
 
@@ -1396,4 +1399,4 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1396
1399
  }
1397
1400
  webshims.ready('track', loadTrackUi);
1398
1401
  });
1399
- })(Modernizr, webshims);
1402
+ })(Modernizr, webshims);
@@ -1160,7 +1160,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1160
1160
  _create: function(){
1161
1161
  var i;
1162
1162
 
1163
- this.element.addClass('ws-range').attr({role: 'slider'}).append('<span class="ws-range-min ws-range-progress" /><span class="ws-range-rail ws-range-track"><span class="ws-range-thumb"><span data-value="" data-valuetext="" /></span></span>');
1163
+ this.element.addClass('ws-range').attr({role: 'slider'}).append('<span class="ws-range-min ws-range-progress" /><span class="ws-range-rail ws-range-track"><span class="ws-range-thumb"><span><span data-value="" data-valuetext="" /></span></span></span>');
1164
1164
  this.trail = $('.ws-range-track', this.element);
1165
1165
  this.range = $('.ws-range-progress', this.element);
1166
1166
  this.thumb = $('.ws-range-thumb', this.trail);
@@ -1242,7 +1242,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1242
1242
  'aria-valuenow': this.options.value,
1243
1243
  'aria-valuetext': textValue
1244
1244
  });
1245
- $('span', this.thumb).attr({
1245
+ $('span[data-value]', this.thumb).attr({
1246
1246
  'data-value': this.options.value,
1247
1247
  'data-valuetext': textValue
1248
1248
  });
@@ -15,7 +15,7 @@
15
15
  _create: function(){
16
16
  var i;
17
17
 
18
- this.element.addClass('ws-range').attr({role: 'slider'}).append('<span class="ws-range-min ws-range-progress" /><span class="ws-range-rail ws-range-track"><span class="ws-range-thumb"><span data-value="" data-valuetext="" /></span></span>');
18
+ this.element.addClass('ws-range').attr({role: 'slider'}).append('<span class="ws-range-min ws-range-progress" /><span class="ws-range-rail ws-range-track"><span class="ws-range-thumb"><span><span data-value="" data-valuetext="" /></span></span></span>');
19
19
  this.trail = $('.ws-range-track', this.element);
20
20
  this.range = $('.ws-range-progress', this.element);
21
21
  this.thumb = $('.ws-range-thumb', this.trail);
@@ -97,7 +97,7 @@
97
97
  'aria-valuenow': this.options.value,
98
98
  'aria-valuetext': textValue
99
99
  });
100
- $('span', this.thumb).attr({
100
+ $('span[data-value]', this.thumb).attr({
101
101
  'data-value': this.options.value,
102
102
  'data-valuetext': textValue
103
103
  });
@@ -549,7 +549,7 @@ var swfmini = function() {
549
549
  hasFullTrackSupport = Modernizr.track && !bugs.track;
550
550
 
551
551
  webshims.register('mediaelement-core', function($, webshims, window, document, undefined, options){
552
- hasSwf = swfmini.hasFlashPlayerVersion('9.0.115');
552
+ hasSwf = swfmini.hasFlashPlayerVersion('10.0.3');
553
553
  $('html').addClass(hasSwf ? 'swf' : 'no-swf');
554
554
  var mediaelement = webshims.mediaelement;
555
555
 
@@ -1142,7 +1142,8 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1142
1142
  }
1143
1143
  webshims.ready('track', loadTrackUi);
1144
1144
  });
1145
- })(Modernizr, webshims);;webshims.register('track', function($, webshims, window, document, undefined){
1145
+ })(Modernizr, webshims);
1146
+ ;webshims.register('track', function($, webshims, window, document, undefined){
1146
1147
  "use strict";
1147
1148
  var mediaelement = webshims.mediaelement;
1148
1149
  var id = new Date().getTime();
@@ -98,7 +98,7 @@
98
98
  hasFullTrackSupport = Modernizr.track && !bugs.track;
99
99
 
100
100
  webshims.register('mediaelement-core', function($, webshims, window, document, undefined, options){
101
- hasSwf = swfmini.hasFlashPlayerVersion('9.0.115');
101
+ hasSwf = swfmini.hasFlashPlayerVersion('10.0.3');
102
102
  $('html').addClass(hasSwf ? 'swf' : 'no-swf');
103
103
  var mediaelement = webshims.mediaelement;
104
104
 
@@ -691,7 +691,8 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
691
691
  }
692
692
  webshims.ready('track', loadTrackUi);
693
693
  });
694
- })(Modernizr, webshims);;webshims.register('track', function($, webshims, window, document, undefined){
694
+ })(Modernizr, webshims);
695
+ ;webshims.register('track', function($, webshims, window, document, undefined){
695
696
  "use strict";
696
697
  var mediaelement = webshims.mediaelement;
697
698
  var id = new Date().getTime();
@@ -329,27 +329,17 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
329
329
  }
330
330
  return message || '';
331
331
  };
332
+ var lReg = /</g;
333
+ var gReg = />/g;
332
334
  var valueVals = {
333
335
  value: 1,
334
336
  min: 1,
335
337
  max: 1
336
338
  };
337
-
338
- webshims.createValidationMessage = function(elem, name){
339
- var widget;
340
- var type = $.prop(elem, 'type');
341
- var message = getMessageFromObj(currentValidationMessage[name], elem);
342
- if(!message && name == 'badInput'){
343
- message = getMessageFromObj(currentValidationMessage.typeMismatch, elem);
344
- }
345
- if(!message && name == 'typeMismatch'){
346
- message = getMessageFromObj(currentValidationMessage.badInput, elem);
347
- }
348
- if(!message){
349
- message = getMessageFromObj(validityMessages[''][name], elem) || $.prop(elem, 'validationMessage');
350
- webshims.info('could not find errormessage for: '+ name +' / '+ type +'. in language: '+webshims.activeLang());
351
- }
352
- if(message){
339
+
340
+ webshims.replaceValidationplaceholder = function(elem, message, name){
341
+ var type, widget;
342
+ if(message && message.indexOf('{%') != -1){
353
343
  ['value', 'min', 'max', 'title', 'maxlength', 'minlength', 'label'].forEach(function(attr){
354
344
  if(message.indexOf('{%'+attr) === -1){return;}
355
345
  var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.prop(elem, attr)) || '';
@@ -358,19 +348,36 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
358
348
  }
359
349
  if(valueVals[attr]){
360
350
  if(!widget){
361
- widget = $(elem).getShadowElement().data('wsWidget'+type);
351
+ widget = $(elem).getShadowElement().data('wsWidget'+ (type = $.prop(elem, 'type')));
362
352
  }
363
353
  if(widget && widget.formatValue){
364
354
  val = widget.formatValue(val, false);
365
355
  }
366
356
  }
367
- message = message.replace('{%'+ attr +'}', val);
357
+ message = message.replace('{%'+ attr +'}', val.replace(lReg, '&lt;').replace(gReg, '&gt;'));
368
358
  if('value' == attr){
369
359
  message = message.replace('{%valueLen}', val.length);
370
360
  }
371
-
361
+
372
362
  });
373
363
  }
364
+ return message;
365
+ };
366
+
367
+ webshims.createValidationMessage = function(elem, name){
368
+
369
+ var message = getMessageFromObj(currentValidationMessage[name], elem);
370
+ if(!message && name == 'badInput'){
371
+ message = getMessageFromObj(currentValidationMessage.typeMismatch, elem);
372
+ }
373
+ if(!message && name == 'typeMismatch'){
374
+ message = getMessageFromObj(currentValidationMessage.badInput, elem);
375
+ }
376
+ if(!message){
377
+ message = getMessageFromObj(validityMessages[''][name], elem) || $.prop(elem, 'validationMessage');
378
+ webshims.info('could not find errormessage for: '+ name +' / '+ $.prop(elem, 'type') +'. in language: '+webshims.activeLang());
379
+ }
380
+ message = webshims.replaceValidationplaceholder(elem, message, name);
374
381
 
375
382
  return message || '';
376
383
  };
@@ -1377,6 +1377,9 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1377
1377
  if(typeof message == 'object'){
1378
1378
  message = message.defaultMessage;
1379
1379
  }
1380
+ if(webshims.replaceValidationplaceholder){
1381
+ message = webshims.replaceValidationplaceholder(elem, message);
1382
+ }
1380
1383
  return message || '';
1381
1384
  };
1382
1385
 
@@ -2314,27 +2317,17 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
2314
2317
  }
2315
2318
  return message || '';
2316
2319
  };
2320
+ var lReg = /</g;
2321
+ var gReg = />/g;
2317
2322
  var valueVals = {
2318
2323
  value: 1,
2319
2324
  min: 1,
2320
2325
  max: 1
2321
2326
  };
2322
-
2323
- webshims.createValidationMessage = function(elem, name){
2324
- var widget;
2325
- var type = $.prop(elem, 'type');
2326
- var message = getMessageFromObj(currentValidationMessage[name], elem);
2327
- if(!message && name == 'badInput'){
2328
- message = getMessageFromObj(currentValidationMessage.typeMismatch, elem);
2329
- }
2330
- if(!message && name == 'typeMismatch'){
2331
- message = getMessageFromObj(currentValidationMessage.badInput, elem);
2332
- }
2333
- if(!message){
2334
- message = getMessageFromObj(validityMessages[''][name], elem) || $.prop(elem, 'validationMessage');
2335
- webshims.info('could not find errormessage for: '+ name +' / '+ type +'. in language: '+webshims.activeLang());
2336
- }
2337
- if(message){
2327
+
2328
+ webshims.replaceValidationplaceholder = function(elem, message, name){
2329
+ var type, widget;
2330
+ if(message && message.indexOf('{%') != -1){
2338
2331
  ['value', 'min', 'max', 'title', 'maxlength', 'minlength', 'label'].forEach(function(attr){
2339
2332
  if(message.indexOf('{%'+attr) === -1){return;}
2340
2333
  var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.prop(elem, attr)) || '';
@@ -2343,19 +2336,36 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
2343
2336
  }
2344
2337
  if(valueVals[attr]){
2345
2338
  if(!widget){
2346
- widget = $(elem).getShadowElement().data('wsWidget'+type);
2339
+ widget = $(elem).getShadowElement().data('wsWidget'+ (type = $.prop(elem, 'type')));
2347
2340
  }
2348
2341
  if(widget && widget.formatValue){
2349
2342
  val = widget.formatValue(val, false);
2350
2343
  }
2351
2344
  }
2352
- message = message.replace('{%'+ attr +'}', val);
2345
+ message = message.replace('{%'+ attr +'}', val.replace(lReg, '&lt;').replace(gReg, '&gt;'));
2353
2346
  if('value' == attr){
2354
2347
  message = message.replace('{%valueLen}', val.length);
2355
2348
  }
2356
-
2349
+
2357
2350
  });
2358
2351
  }
2352
+ return message;
2353
+ };
2354
+
2355
+ webshims.createValidationMessage = function(elem, name){
2356
+
2357
+ var message = getMessageFromObj(currentValidationMessage[name], elem);
2358
+ if(!message && name == 'badInput'){
2359
+ message = getMessageFromObj(currentValidationMessage.typeMismatch, elem);
2360
+ }
2361
+ if(!message && name == 'typeMismatch'){
2362
+ message = getMessageFromObj(currentValidationMessage.badInput, elem);
2363
+ }
2364
+ if(!message){
2365
+ message = getMessageFromObj(validityMessages[''][name], elem) || $.prop(elem, 'validationMessage');
2366
+ webshims.info('could not find errormessage for: '+ name +' / '+ $.prop(elem, 'type') +'. in language: '+webshims.activeLang());
2367
+ }
2368
+ message = webshims.replaceValidationplaceholder(elem, message, name);
2359
2369
 
2360
2370
  return message || '';
2361
2371
  };
@@ -1828,6 +1828,9 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1828
1828
  if(typeof message == 'object'){
1829
1829
  message = message.defaultMessage;
1830
1830
  }
1831
+ if(webshims.replaceValidationplaceholder){
1832
+ message = webshims.replaceValidationplaceholder(elem, message);
1833
+ }
1831
1834
  return message || '';
1832
1835
  };
1833
1836
 
@@ -2765,27 +2768,17 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
2765
2768
  }
2766
2769
  return message || '';
2767
2770
  };
2771
+ var lReg = /</g;
2772
+ var gReg = />/g;
2768
2773
  var valueVals = {
2769
2774
  value: 1,
2770
2775
  min: 1,
2771
2776
  max: 1
2772
2777
  };
2773
-
2774
- webshims.createValidationMessage = function(elem, name){
2775
- var widget;
2776
- var type = $.prop(elem, 'type');
2777
- var message = getMessageFromObj(currentValidationMessage[name], elem);
2778
- if(!message && name == 'badInput'){
2779
- message = getMessageFromObj(currentValidationMessage.typeMismatch, elem);
2780
- }
2781
- if(!message && name == 'typeMismatch'){
2782
- message = getMessageFromObj(currentValidationMessage.badInput, elem);
2783
- }
2784
- if(!message){
2785
- message = getMessageFromObj(validityMessages[''][name], elem) || $.prop(elem, 'validationMessage');
2786
- webshims.info('could not find errormessage for: '+ name +' / '+ type +'. in language: '+webshims.activeLang());
2787
- }
2788
- if(message){
2778
+
2779
+ webshims.replaceValidationplaceholder = function(elem, message, name){
2780
+ var type, widget;
2781
+ if(message && message.indexOf('{%') != -1){
2789
2782
  ['value', 'min', 'max', 'title', 'maxlength', 'minlength', 'label'].forEach(function(attr){
2790
2783
  if(message.indexOf('{%'+attr) === -1){return;}
2791
2784
  var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.prop(elem, attr)) || '';
@@ -2794,19 +2787,36 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
2794
2787
  }
2795
2788
  if(valueVals[attr]){
2796
2789
  if(!widget){
2797
- widget = $(elem).getShadowElement().data('wsWidget'+type);
2790
+ widget = $(elem).getShadowElement().data('wsWidget'+ (type = $.prop(elem, 'type')));
2798
2791
  }
2799
2792
  if(widget && widget.formatValue){
2800
2793
  val = widget.formatValue(val, false);
2801
2794
  }
2802
2795
  }
2803
- message = message.replace('{%'+ attr +'}', val);
2796
+ message = message.replace('{%'+ attr +'}', val.replace(lReg, '&lt;').replace(gReg, '&gt;'));
2804
2797
  if('value' == attr){
2805
2798
  message = message.replace('{%valueLen}', val.length);
2806
2799
  }
2807
-
2800
+
2808
2801
  });
2809
2802
  }
2803
+ return message;
2804
+ };
2805
+
2806
+ webshims.createValidationMessage = function(elem, name){
2807
+
2808
+ var message = getMessageFromObj(currentValidationMessage[name], elem);
2809
+ if(!message && name == 'badInput'){
2810
+ message = getMessageFromObj(currentValidationMessage.typeMismatch, elem);
2811
+ }
2812
+ if(!message && name == 'typeMismatch'){
2813
+ message = getMessageFromObj(currentValidationMessage.badInput, elem);
2814
+ }
2815
+ if(!message){
2816
+ message = getMessageFromObj(validityMessages[''][name], elem) || $.prop(elem, 'validationMessage');
2817
+ webshims.info('could not find errormessage for: '+ name +' / '+ $.prop(elem, 'type') +'. in language: '+webshims.activeLang());
2818
+ }
2819
+ message = webshims.replaceValidationplaceholder(elem, message, name);
2810
2820
 
2811
2821
  return message || '';
2812
2822
  };
@@ -3266,7 +3276,7 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
3266
3276
  hasFullTrackSupport = Modernizr.track && !bugs.track;
3267
3277
 
3268
3278
  webshims.register('mediaelement-core', function($, webshims, window, document, undefined, options){
3269
- hasSwf = swfmini.hasFlashPlayerVersion('9.0.115');
3279
+ hasSwf = swfmini.hasFlashPlayerVersion('10.0.3');
3270
3280
  $('html').addClass(hasSwf ? 'swf' : 'no-swf');
3271
3281
  var mediaelement = webshims.mediaelement;
3272
3282
 
@@ -3859,4 +3869,4 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3859
3869
  }
3860
3870
  webshims.ready('track', loadTrackUi);
3861
3871
  });
3862
- })(Modernizr, webshims);
3872
+ })(Modernizr, webshims);