webshims-rails 1.12.2 → 1.12.3

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -831,7 +831,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
831
831
  _create: function(){
832
832
  var i;
833
833
 
834
- 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>');
834
+ 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>');
835
835
  this.trail = $('.ws-range-track', this.element);
836
836
  this.range = $('.ws-range-progress', this.element);
837
837
  this.thumb = $('.ws-range-thumb', this.trail);
@@ -913,7 +913,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
913
913
  'aria-valuenow': this.options.value,
914
914
  'aria-valuetext': textValue
915
915
  });
916
- $('span', this.thumb).attr({
916
+ $('span[data-value]', this.thumb).attr({
917
917
  'data-value': this.options.value,
918
918
  'data-valuetext': textValue
919
919
  });
@@ -831,7 +831,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
831
831
  _create: function(){
832
832
  var i;
833
833
 
834
- 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>');
834
+ 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>');
835
835
  this.trail = $('.ws-range-track', this.element);
836
836
  this.range = $('.ws-range-progress', this.element);
837
837
  this.thumb = $('.ws-range-thumb', this.trail);
@@ -913,7 +913,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
913
913
  'aria-valuenow': this.options.value,
914
914
  'aria-valuetext': textValue
915
915
  });
916
- $('span', this.thumb).attr({
916
+ $('span[data-value]', this.thumb).attr({
917
917
  'data-value': this.options.value,
918
918
  'data-valuetext': textValue
919
919
  });
@@ -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
 
@@ -1968,27 +1971,17 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1968
1971
  }
1969
1972
  return message || '';
1970
1973
  };
1974
+ var lReg = /</g;
1975
+ var gReg = />/g;
1971
1976
  var valueVals = {
1972
1977
  value: 1,
1973
1978
  min: 1,
1974
1979
  max: 1
1975
1980
  };
1976
-
1977
- webshims.createValidationMessage = function(elem, name){
1978
- var widget;
1979
- var type = $.prop(elem, 'type');
1980
- var message = getMessageFromObj(currentValidationMessage[name], elem);
1981
- if(!message && name == 'badInput'){
1982
- message = getMessageFromObj(currentValidationMessage.typeMismatch, elem);
1983
- }
1984
- if(!message && name == 'typeMismatch'){
1985
- message = getMessageFromObj(currentValidationMessage.badInput, elem);
1986
- }
1987
- if(!message){
1988
- message = getMessageFromObj(validityMessages[''][name], elem) || $.prop(elem, 'validationMessage');
1989
- webshims.info('could not find errormessage for: '+ name +' / '+ type +'. in language: '+webshims.activeLang());
1990
- }
1991
- if(message){
1981
+
1982
+ webshims.replaceValidationplaceholder = function(elem, message, name){
1983
+ var type, widget;
1984
+ if(message && message.indexOf('{%') != -1){
1992
1985
  ['value', 'min', 'max', 'title', 'maxlength', 'minlength', 'label'].forEach(function(attr){
1993
1986
  if(message.indexOf('{%'+attr) === -1){return;}
1994
1987
  var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.prop(elem, attr)) || '';
@@ -1997,19 +1990,36 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1997
1990
  }
1998
1991
  if(valueVals[attr]){
1999
1992
  if(!widget){
2000
- widget = $(elem).getShadowElement().data('wsWidget'+type);
1993
+ widget = $(elem).getShadowElement().data('wsWidget'+ (type = $.prop(elem, 'type')));
2001
1994
  }
2002
1995
  if(widget && widget.formatValue){
2003
1996
  val = widget.formatValue(val, false);
2004
1997
  }
2005
1998
  }
2006
- message = message.replace('{%'+ attr +'}', val);
1999
+ message = message.replace('{%'+ attr +'}', val.replace(lReg, '&lt;').replace(gReg, '&gt;'));
2007
2000
  if('value' == attr){
2008
2001
  message = message.replace('{%valueLen}', val.length);
2009
2002
  }
2010
-
2003
+
2011
2004
  });
2012
2005
  }
2006
+ return message;
2007
+ };
2008
+
2009
+ webshims.createValidationMessage = function(elem, name){
2010
+
2011
+ var message = getMessageFromObj(currentValidationMessage[name], elem);
2012
+ if(!message && name == 'badInput'){
2013
+ message = getMessageFromObj(currentValidationMessage.typeMismatch, elem);
2014
+ }
2015
+ if(!message && name == 'typeMismatch'){
2016
+ message = getMessageFromObj(currentValidationMessage.badInput, elem);
2017
+ }
2018
+ if(!message){
2019
+ message = getMessageFromObj(validityMessages[''][name], elem) || $.prop(elem, 'validationMessage');
2020
+ webshims.info('could not find errormessage for: '+ name +' / '+ $.prop(elem, 'type') +'. in language: '+webshims.activeLang());
2021
+ }
2022
+ message = webshims.replaceValidationplaceholder(elem, message, name);
2013
2023
 
2014
2024
  return message || '';
2015
2025
  };
@@ -2469,7 +2479,7 @@ webshims.register('form-core', function($, webshims, window, document, undefined
2469
2479
  hasFullTrackSupport = Modernizr.track && !bugs.track;
2470
2480
 
2471
2481
  webshims.register('mediaelement-core', function($, webshims, window, document, undefined, options){
2472
- hasSwf = swfmini.hasFlashPlayerVersion('9.0.115');
2482
+ hasSwf = swfmini.hasFlashPlayerVersion('10.0.3');
2473
2483
  $('html').addClass(hasSwf ? 'swf' : 'no-swf');
2474
2484
  var mediaelement = webshims.mediaelement;
2475
2485
 
@@ -3062,4 +3072,4 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3062
3072
  }
3063
3073
  webshims.ready('track', loadTrackUi);
3064
3074
  });
3065
- })(Modernizr, webshims);
3075
+ })(Modernizr, webshims);
@@ -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
 
@@ -1968,27 +1971,17 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1968
1971
  }
1969
1972
  return message || '';
1970
1973
  };
1974
+ var lReg = /</g;
1975
+ var gReg = />/g;
1971
1976
  var valueVals = {
1972
1977
  value: 1,
1973
1978
  min: 1,
1974
1979
  max: 1
1975
1980
  };
1976
-
1977
- webshims.createValidationMessage = function(elem, name){
1978
- var widget;
1979
- var type = $.prop(elem, 'type');
1980
- var message = getMessageFromObj(currentValidationMessage[name], elem);
1981
- if(!message && name == 'badInput'){
1982
- message = getMessageFromObj(currentValidationMessage.typeMismatch, elem);
1983
- }
1984
- if(!message && name == 'typeMismatch'){
1985
- message = getMessageFromObj(currentValidationMessage.badInput, elem);
1986
- }
1987
- if(!message){
1988
- message = getMessageFromObj(validityMessages[''][name], elem) || $.prop(elem, 'validationMessage');
1989
- webshims.info('could not find errormessage for: '+ name +' / '+ type +'. in language: '+webshims.activeLang());
1990
- }
1991
- if(message){
1981
+
1982
+ webshims.replaceValidationplaceholder = function(elem, message, name){
1983
+ var type, widget;
1984
+ if(message && message.indexOf('{%') != -1){
1992
1985
  ['value', 'min', 'max', 'title', 'maxlength', 'minlength', 'label'].forEach(function(attr){
1993
1986
  if(message.indexOf('{%'+attr) === -1){return;}
1994
1987
  var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.prop(elem, attr)) || '';
@@ -1997,19 +1990,36 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1997
1990
  }
1998
1991
  if(valueVals[attr]){
1999
1992
  if(!widget){
2000
- widget = $(elem).getShadowElement().data('wsWidget'+type);
1993
+ widget = $(elem).getShadowElement().data('wsWidget'+ (type = $.prop(elem, 'type')));
2001
1994
  }
2002
1995
  if(widget && widget.formatValue){
2003
1996
  val = widget.formatValue(val, false);
2004
1997
  }
2005
1998
  }
2006
- message = message.replace('{%'+ attr +'}', val);
1999
+ message = message.replace('{%'+ attr +'}', val.replace(lReg, '&lt;').replace(gReg, '&gt;'));
2007
2000
  if('value' == attr){
2008
2001
  message = message.replace('{%valueLen}', val.length);
2009
2002
  }
2010
-
2003
+
2011
2004
  });
2012
2005
  }
2006
+ return message;
2007
+ };
2008
+
2009
+ webshims.createValidationMessage = function(elem, name){
2010
+
2011
+ var message = getMessageFromObj(currentValidationMessage[name], elem);
2012
+ if(!message && name == 'badInput'){
2013
+ message = getMessageFromObj(currentValidationMessage.typeMismatch, elem);
2014
+ }
2015
+ if(!message && name == 'typeMismatch'){
2016
+ message = getMessageFromObj(currentValidationMessage.badInput, elem);
2017
+ }
2018
+ if(!message){
2019
+ message = getMessageFromObj(validityMessages[''][name], elem) || $.prop(elem, 'validationMessage');
2020
+ webshims.info('could not find errormessage for: '+ name +' / '+ $.prop(elem, 'type') +'. in language: '+webshims.activeLang());
2021
+ }
2022
+ message = webshims.replaceValidationplaceholder(elem, message, name);
2013
2023
 
2014
2024
  return message || '';
2015
2025
  };
@@ -2172,7 +2182,7 @@ webshims.register('form-core', function($, webshims, window, document, undefined
2172
2182
  hasFullTrackSupport = Modernizr.track && !bugs.track;
2173
2183
 
2174
2184
  webshims.register('mediaelement-core', function($, webshims, window, document, undefined, options){
2175
- hasSwf = swfmini.hasFlashPlayerVersion('9.0.115');
2185
+ hasSwf = swfmini.hasFlashPlayerVersion('10.0.3');
2176
2186
  $('html').addClass(hasSwf ? 'swf' : 'no-swf');
2177
2187
  var mediaelement = webshims.mediaelement;
2178
2188
 
@@ -2765,4 +2775,4 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2765
2775
  }
2766
2776
  webshims.ready('track', loadTrackUi);
2767
2777
  });
2768
- })(Modernizr, webshims);
2778
+ })(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
  });
@@ -232,6 +232,9 @@ webshims.register('form-core', function($, webshims, window, document, undefined
232
232
  if(typeof message == 'object'){
233
233
  message = message.defaultMessage;
234
234
  }
235
+ if(webshims.replaceValidationplaceholder){
236
+ message = webshims.replaceValidationplaceholder(elem, message);
237
+ }
235
238
  return message || '';
236
239
  };
237
240
 
@@ -80,7 +80,7 @@ webshims.register('form-datalist-lazy', function($, webshims, window, document,
80
80
  var keyCode = e.keyCode;
81
81
  var activeItem;
82
82
  var items;
83
- var doValue = that.options.noInlineValue ? 'onlyScroll' : true;
83
+ var doValue = !!that.options.inlineValue || 'onlyScroll';
84
84
 
85
85
  if(keyCode == 40 && !that.showList()){
86
86
  that.markItem(that.index + 1, doValue);
@@ -198,7 +198,7 @@ webshims.register('form-datalist-lazy', function($, webshims, window, document,
198
198
  }
199
199
  }
200
200
 
201
- if(this.options.noInlineValue && !this.options.valueCompletion){
201
+ if(!this.options.inlineValue && !this.options.valueCompletion){
202
202
  $.attr(this.input, 'aria-autocomplete', 'list');
203
203
  $.attr(this.input, 'aria-expanded', 'false');
204
204
  }
@@ -376,7 +376,7 @@ webshims.register('form-datalist-lazy', function($, webshims, window, document,
376
376
  this.removeMark(lis.removeClass('hidden-item'));
377
377
  found = true;
378
378
  }
379
-
379
+
380
380
  this.hasViewableData = found;
381
381
  if(!_fromShowList && found){
382
382
  if(this.popover.isVisible && this.popover.element.attr('data-vertical') == 'bottom'){
@@ -118,27 +118,17 @@ webshims.register('form-message', function($, webshims, window, document, undefi
118
118
  }
119
119
  return message || '';
120
120
  };
121
+ var lReg = /</g;
122
+ var gReg = />/g;
121
123
  var valueVals = {
122
124
  value: 1,
123
125
  min: 1,
124
126
  max: 1
125
127
  };
126
-
127
- webshims.createValidationMessage = function(elem, name){
128
- var widget;
129
- var type = $.prop(elem, 'type');
130
- var message = getMessageFromObj(currentValidationMessage[name], elem);
131
- if(!message && name == 'badInput'){
132
- message = getMessageFromObj(currentValidationMessage.typeMismatch, elem);
133
- }
134
- if(!message && name == 'typeMismatch'){
135
- message = getMessageFromObj(currentValidationMessage.badInput, elem);
136
- }
137
- if(!message){
138
- message = getMessageFromObj(validityMessages[''][name], elem) || $.prop(elem, 'validationMessage');
139
- webshims.info('could not find errormessage for: '+ name +' / '+ type +'. in language: '+webshims.activeLang());
140
- }
141
- if(message){
128
+
129
+ webshims.replaceValidationplaceholder = function(elem, message, name){
130
+ var type, widget;
131
+ if(message && message.indexOf('{%') != -1){
142
132
  ['value', 'min', 'max', 'title', 'maxlength', 'minlength', 'label'].forEach(function(attr){
143
133
  if(message.indexOf('{%'+attr) === -1){return;}
144
134
  var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.prop(elem, attr)) || '';
@@ -147,19 +137,36 @@ webshims.register('form-message', function($, webshims, window, document, undefi
147
137
  }
148
138
  if(valueVals[attr]){
149
139
  if(!widget){
150
- widget = $(elem).getShadowElement().data('wsWidget'+type);
140
+ widget = $(elem).getShadowElement().data('wsWidget'+ (type = $.prop(elem, 'type')));
151
141
  }
152
142
  if(widget && widget.formatValue){
153
143
  val = widget.formatValue(val, false);
154
144
  }
155
145
  }
156
- message = message.replace('{%'+ attr +'}', val);
146
+ message = message.replace('{%'+ attr +'}', val.replace(lReg, '&lt;').replace(gReg, '&gt;'));
157
147
  if('value' == attr){
158
148
  message = message.replace('{%valueLen}', val.length);
159
149
  }
160
-
150
+
161
151
  });
162
152
  }
153
+ return message;
154
+ };
155
+
156
+ webshims.createValidationMessage = function(elem, name){
157
+
158
+ var message = getMessageFromObj(currentValidationMessage[name], elem);
159
+ if(!message && name == 'badInput'){
160
+ message = getMessageFromObj(currentValidationMessage.typeMismatch, elem);
161
+ }
162
+ if(!message && name == 'typeMismatch'){
163
+ message = getMessageFromObj(currentValidationMessage.badInput, elem);
164
+ }
165
+ if(!message){
166
+ message = getMessageFromObj(validityMessages[''][name], elem) || $.prop(elem, 'validationMessage');
167
+ webshims.info('could not find errormessage for: '+ name +' / '+ $.prop(elem, 'type') +'. in language: '+webshims.activeLang());
168
+ }
169
+ message = webshims.replaceValidationplaceholder(elem, message, name);
163
170
 
164
171
  return message || '';
165
172
  };
@@ -263,7 +263,7 @@ if(!Modernizr.formattribute || !Modernizr.fieldsetdisabled || !Modernizr.fieldse
263
263
  },
264
264
  removeAttr: {
265
265
  value: function(){
266
- desc.set.call(this, false);
266
+ desc.prop.set.call(this, false);
267
267
  }
268
268
  }
269
269
  });
@@ -507,7 +507,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
507
507
  message = elem.getErrorMessage();
508
508
  }
509
509
  if (message) {
510
- api.contentElement.text(message);
510
+ api.contentElement.html(message);
511
511
  } else {
512
512
  this.hide();
513
513
  }
@@ -623,7 +623,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
623
623
  $(elem).data('errormessage', errorMessages);
624
624
  }
625
625
  if(webshims.getOptions){
626
- webshims.getOptions(elem, 'errormessage');
626
+ webshims.getOptions(elem, 'errormessage', false, true);
627
627
  }
628
628
  });
629
629
 
@@ -638,14 +638,16 @@ webshims.register('form-validation', function($, webshims, window, document, und
638
638
  if(!fieldWrapper){
639
639
  fieldWrapper = this.getFieldWrapper(elem);
640
640
  }
641
+ var type;
641
642
  var errorBox = fieldWrapper.data('errorbox');
642
- if(!errorBox){
643
- errorBox = this.create(elem, fieldWrapper);
643
+ if((type = typeof errorBox) != 'object'){
644
+ if(!errorBox){
645
+ errorBox = this.create(elem, fieldWrapper);
646
+ } else if(type == 'string'){
647
+ errorBox = $('#'+errorBox);
648
+ fieldWrapper.data('errorbox', errorBox, fieldWrapper);
649
+ }
644
650
  this._createContentMessage(elem, errorBox, fieldWrapper);
645
- } else if(typeof errorBox == 'string'){
646
- errorBox = $('#'+errorBox);
647
- fieldWrapper.data('errorbox', errorBox, fieldWrapper);
648
- this._createContentMessage(elem, errorBox);
649
651
  }
650
652
  return errorBox;
651
653
  },
@@ -661,16 +663,15 @@ webshims.register('form-validation', function($, webshims, window, document, und
661
663
  check();
662
664
  },
663
665
  hideError: function(elem, reset){
664
- var invalid;
666
+ var invalid, errorBox;
665
667
  var fieldWrapper = this.getFieldWrapper(elem);
666
- //only if an errorbox was already created! don't use this.get here!
667
- var errorBox = fieldWrapper.data('errorbox');
668
668
 
669
- if(errorBox && errorBox.jquery){
669
+ if(fieldWrapper.hasClass(invalidWrapperClass)){
670
670
  $(elem).filter('input').off('.recheckinvalid');
671
671
  if(!reset && (invalid = $('input:invalid, select:invalid, textarea:invalid', fieldWrapper)[0])){
672
672
  $(invalid).trigger('refreshvalidityui');
673
673
  } else {
674
+ errorBox = this.get(elem, fieldWrapper);
674
675
  fieldWrapper.removeClass(invalidWrapperClass);
675
676
  errorBox.message = '';
676
677
  errorBox[fx[iVal.fx].hide](function(){
@@ -42,40 +42,38 @@ webshims.register('form-validators', function($, webshims, window, document, und
42
42
  };
43
43
  webshims.refreshCustomValidityRules = function(elem){
44
44
  if(!initTest){return;}
45
- var val;
46
- var data = $(elem).data() || $.data(elem, {});
47
- var customMismatchedRule = data.customMismatchedRule;
48
- var validity = $.prop(elem, 'validity') || {};
45
+ var val, setMessage;
46
+ var data = $(elem).data();
49
47
  var message = '';
50
- var setMessage = function(message, errorType){
51
- blockCustom = true;
52
-
53
-
54
- if(message){
55
- data.customMismatchedRule = errorType;
56
-
57
- if(typeof message != 'string'){
58
- message = webshims.getContentValidationMessage(elem, false, errorType);
59
-
60
- if(message && typeof message == 'object'){
61
- message = message[errorType];
62
- }
63
-
64
- if(!message || typeof message != 'string'){
65
- message = webshims.customErrorMessages[errorType][webshims.activeLang()] || webshims.customErrorMessages[errorType][''] || message.customError || message.defaultMessage || '';
48
+ var customMismatchedRule = data && data.customMismatchedRule;
49
+ var validity = data && $.prop(elem, 'validity') || {valid: 1};
50
+
51
+ if(data && (customMismatchedRule || validity.valid)){
52
+ setMessage = function(message, errorType){
53
+ blockCustom = true;
54
+
55
+ if(message){
56
+ data.customMismatchedRule = errorType;
57
+
58
+ if(typeof message != 'string'){
59
+ message = webshims.getContentValidationMessage(elem, false, errorType);
60
+
61
+ if(message && typeof message == 'object'){
62
+ message = message[errorType];
63
+ }
64
+
65
+ if(!message || typeof message != 'string'){
66
+ message = webshims.customErrorMessages[errorType][webshims.activeLang()] || webshims.customErrorMessages[errorType][''] || message.customError || message.defaultMessage || '';
67
+ }
66
68
  }
69
+ } else {
70
+ message = '';
71
+ data.customMismatchedRule = '';
67
72
  }
68
- } else {
69
- message = '';
70
- data.customMismatchedRule = '';
71
- }
72
-
73
-
74
-
75
- $(elem).setCustomValidity(message);
76
- blockCustom = false;
77
- };
78
- if(customMismatchedRule || validity.valid){
73
+
74
+ $(elem).setCustomValidity(message);
75
+ blockCustom = false;
76
+ };
79
77
  val = $(elem).val();
80
78
  $.each(customValidityRules, function(name, test){
81
79
  message = test(elem, val, data, setMessage) || '';
@@ -85,7 +83,7 @@ webshims.register('form-validators', function($, webshims, window, document, und
85
83
  }
86
84
  });
87
85
 
88
- if(data.dependentValidation && !data.dependentValidation._init && !data.dependentValidation.masterElement){
86
+ if(data && data.dependentValidation && !data.dependentValidation._init && !data.dependentValidation.masterElement){
89
87
  customValidityRules.dependent(elem, val, data, $.noop);
90
88
  }
91
89
  if(message != 'async' && (message || !validity.valid)){
@@ -130,7 +128,7 @@ webshims.register('form-validators', function($, webshims, window, document, und
130
128
  /*
131
129
  * adds support for HTML5 constraint validation
132
130
  * - partial pattern: <input data-partial-pattern="RegExp" />
133
- * - creditcard-validation: <input class="creditcard-input" />
131
+ * - creditcard-validation: <input data-creditcard="" />
134
132
  * - several dependent-validation patterns (examples):
135
133
  * - <input type="email" id="mail" /> <input data-dependent-validation='mail' />
136
134
  * - <input type="date" id="start" data-dependent-validation='{"from": "end", "prop": "max"}' /> <input type="date" id="end" data-dependent-validation='{"from": "start", "prop": "min"}' />
@@ -140,7 +138,7 @@ webshims.register('form-validators', function($, webshims, window, document, und
140
138
  var formCFG = webshims.cfg.forms;
141
139
  var addCustomValidityRule = webshims.addCustomValidityRule;
142
140
  var getId = function(name){
143
- return document.getElementById(name);
141
+ return document.getElementById(name) || document.getElementsByName(name);
144
142
  };
145
143
  addCustomValidityRule('partialPattern', function(elem, val, pattern){
146
144
  pattern = pattern.partialPattern;
@@ -157,34 +155,30 @@ webshims.register('form-validators', function($, webshims, window, document, und
157
155
  }
158
156
  return data.minlength > val.length;
159
157
  }, 'Entered value is too short.');
160
-
161
- var groupTimer = {};
162
- addCustomValidityRule('group-required', function(elem, val){
158
+
159
+ addCustomValidityRule('grouprequired', function(elem, val, data){
160
+ var form;
163
161
  var name = elem.name;
164
- if(!name || elem.type !== 'checkbox' || !$(elem).hasClass('group-required')){return;}
165
- var checkboxes = $( (elem.form && elem.form[name]) || document.getElementsByName(name));
166
- var isValid = checkboxes.filter(':checked:enabled');
167
- if(groupTimer[name]){
168
- clearTimeout(groupTimer[name]);
169
- }
170
- groupTimer[name] = setTimeout(function(){
171
- checkboxes
172
- .addClass('group-required')
162
+ if(!name || elem.type !== 'checkbox' || !('grouprequired' in data)){return;}
163
+
164
+ if(!data.grouprequired || !data.grouprequired.checkboxes){
165
+ data.grouprequired.checkboxes = $( ((form = $.prop(elem, 'form')) && form[name]) || document.getElementsByName(name)).filter('[type="checkbox"]');
166
+ data.grouprequired.checkboxes
173
167
  .off('click.groupRequired')
174
168
  .on('click.groupRequired', function(){
175
- checkboxes.filter('.group-required').each(function(){
176
- webshims.refreshCustomValidityRules(this);
177
- });
169
+ webshims.refreshCustomValidityRules(elem);
178
170
  })
179
171
  ;
180
- }, 9);
172
+ data.grouprequired.checkboxes.not(elem).removeData('grouprequired');
173
+ }
174
+
181
175
 
182
- return !(isValid[0]);
176
+ return !(data.grouprequired.checkboxes.filter(':checked:enabled')[0]);
183
177
  }, 'Please check one of these checkboxes.');
184
178
 
185
179
  // based on https://sites.google.com/site/abapexamples/javascript/luhn-validation
186
- addCustomValidityRule('creditcard', function(elem, value){
187
- if(!value || !$(elem).hasClass('creditcard-input')){return;}
180
+ addCustomValidityRule('creditcard', function(elem, value, data){
181
+ if(!value || (!data || !('creditcard' in data))){return;}
188
182
  value = value.replace(/\-/g, "");
189
183
  //if it's not numeric return true >- for invalid
190
184
  if(value != value * 1){return true;}
@@ -267,11 +261,17 @@ webshims.register('form-validators', function($, webshims, window, document, und
267
261
  data = $.data(elem, 'dependentValidation', $.extend({_init: true}, dependentDefaults, data));
268
262
 
269
263
  if(data.prop !== "value" || specialVal){
270
- $(data.masterElement.type === 'radio' && getGroupElements(data.masterElement) || data.masterElement).bind('change', depFn);
264
+ $(data.masterElement.type === 'radio' && getGroupElements(data.masterElement) || data.masterElement).on('change', depFn);
271
265
  } else {
272
- $(data.masterElement).bind('change', function(){
273
- webshims.refreshCustomValidityRules(elem);
274
- $(elem).getShadowElement().filter('.user-error, .user-success').trigger('refreshvalidityui');
266
+ $(data.masterElement).on('change', function(){
267
+ $(elem)
268
+ .getShadowElement()
269
+ .filter('.user-error, .user-success')
270
+ .each(function(){
271
+ webshims.refreshCustomValidityRules(elem);
272
+ })
273
+ .trigger('refreshvalidityui')
274
+ ;
275
275
  });
276
276
  }
277
277
  }
@@ -294,7 +294,10 @@ webshims.register('form-validators', function($, webshims, window, document, und
294
294
  if(typeof data.ajaxvalidate == 'string'){
295
295
  data.ajaxvalidate = {url: data.ajaxvalidate, depends: $([])};
296
296
  } else {
297
- data.ajaxvalidate.depends = data.ajaxvalidate.depends ? $(data.ajaxvalidate.depends).map(getId) : $([]);
297
+ data.ajaxvalidate.depends = data.ajaxvalidate.depends ?
298
+ $(typeof data.ajaxvalidate.depends == 'string' && data.ajaxvalidate.depends.split(' ') || data.ajaxvalidate.depends).map(getId) :
299
+ $([])
300
+ ;
298
301
  }
299
302
 
300
303
  data.ajaxvalidate.depends.on('refreshCustomValidityRules', function(){