webshims-rails 0.4.7 → 1.10.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (168) hide show
  1. checksums.yaml +15 -0
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/extras/custom-validity.js +1 -1
  4. data/vendor/assets/javascripts/webshims/extras/mousepress.js +1 -1
  5. data/vendor/assets/javascripts/webshims/polyfiller.js +197 -166
  6. data/vendor/assets/javascripts/webshims/shims/combos/1.js +1711 -1609
  7. data/vendor/assets/javascripts/webshims/shims/combos/10.js +2575 -2253
  8. data/vendor/assets/javascripts/webshims/shims/combos/11.js +2452 -1476
  9. data/vendor/assets/javascripts/webshims/shims/combos/12.js +1405 -1159
  10. data/vendor/assets/javascripts/webshims/shims/combos/13.js +1316 -963
  11. data/vendor/assets/javascripts/webshims/shims/combos/14.js +1862 -179
  12. data/vendor/assets/javascripts/webshims/shims/combos/15.js +4327 -287
  13. data/vendor/assets/javascripts/webshims/shims/combos/16.js +3887 -586
  14. data/vendor/assets/javascripts/webshims/shims/combos/17.js +2911 -2159
  15. data/vendor/assets/javascripts/webshims/shims/combos/18.js +3425 -1730
  16. data/vendor/assets/javascripts/webshims/shims/combos/19.js +2854 -1203
  17. data/vendor/assets/javascripts/webshims/shims/combos/2.js +3351 -2130
  18. data/vendor/assets/javascripts/webshims/shims/combos/20.js +2426 -581
  19. data/vendor/assets/javascripts/webshims/shims/combos/21.js +1915 -1574
  20. data/vendor/assets/javascripts/webshims/shims/combos/22.js +864 -2275
  21. data/vendor/assets/javascripts/webshims/shims/combos/23.js +609 -1811
  22. data/vendor/assets/javascripts/webshims/shims/combos/3.js +1655 -2736
  23. data/vendor/assets/javascripts/webshims/shims/combos/4.js +1037 -603
  24. data/vendor/assets/javascripts/webshims/shims/combos/5.js +3100 -773
  25. data/vendor/assets/javascripts/webshims/shims/combos/6.js +3631 -840
  26. data/vendor/assets/javascripts/webshims/shims/combos/7.js +3596 -1354
  27. data/vendor/assets/javascripts/webshims/shims/combos/8.js +1731 -188
  28. data/vendor/assets/javascripts/webshims/shims/combos/9.js +3243 -1431
  29. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +107 -18
  30. data/vendor/assets/javascripts/webshims/shims/es5.js +1 -0
  31. data/vendor/assets/javascripts/webshims/shims/form-core.js +553 -464
  32. data/vendor/assets/javascripts/webshims/shims/form-datalist.js +160 -154
  33. data/vendor/assets/javascripts/webshims/shims/form-message.js +73 -49
  34. data/vendor/assets/javascripts/webshims/shims/form-native-extend.js +18 -1
  35. data/vendor/assets/javascripts/webshims/shims/form-number-date-api.js +161 -36
  36. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +2130 -813
  37. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +206 -58
  38. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-ar.js → formcfg-ar.js} +30 -0
  39. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-ch-ZN.js → formcfg-ch-ZN.js} +31 -0
  40. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-de.txt → formcfg-de.txt} +50 -11
  41. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-el.js → formcfg-el.js} +31 -0
  42. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-en.txt → formcfg-en.txt} +44 -11
  43. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-es.js → formcfg-es.js} +31 -0
  44. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-fr.js → formcfg-fr.js} +31 -0
  45. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-he.js → formcfg-he.js} +31 -0
  46. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-hi.js → formcfg-hi.js} +31 -0
  47. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-hu.js → formcfg-hu.js} +31 -0
  48. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-it.js → formcfg-it.js} +31 -0
  49. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-ja.js → formcfg-ja.js} +31 -0
  50. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-nl.js → formcfg-nl.js} +31 -0
  51. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-pt-PT.js → formcfg-pt-PT.js} +31 -0
  52. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-ru.js → formcfg-ru.js} +31 -0
  53. data/vendor/assets/javascripts/webshims/shims/i18n/{errormessages-sv.js → formcfg-sv.js} +32 -0
  54. data/vendor/assets/javascripts/webshims/shims/json-storage.js +16 -10
  55. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +155 -122
  56. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +76 -41
  57. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +8 -16
  58. data/vendor/assets/javascripts/webshims/shims/range-ui.js +388 -0
  59. data/vendor/assets/javascripts/webshims/shims/styles/config.rb +12 -0
  60. data/vendor/assets/javascripts/webshims/shims/styles/forms.png +0 -0
  61. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +1186 -0
  62. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +868 -548
  63. data/vendor/assets/javascripts/webshims/shims/styles/vertical-range.png +0 -0
  64. data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  65. data/vendor/assets/javascripts/webshims/shims/swfmini.js +497 -0
  66. data/vendor/assets/javascripts/webshims/shims/track-ui.js +3 -0
  67. data/vendor/assets/javascripts/webshims/shims/track.js +29 -29
  68. metadata +26 -125
  69. data/vendor/assets/javascripts/webshims/minified/extras/custom-validity.js +0 -1
  70. data/vendor/assets/javascripts/webshims/minified/extras/modernizr-custom.js +0 -1
  71. data/vendor/assets/javascripts/webshims/minified/extras/mousepress.js +0 -1
  72. data/vendor/assets/javascripts/webshims/minified/polyfiller.js +0 -1
  73. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvas/canvas2png.js +0 -1
  74. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvas/flashcanvas.js +0 -1
  75. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvas/flashcanvas.swf +0 -0
  76. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvas/proxy.php +0 -73
  77. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvas/save.php +0 -49
  78. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/canvas2png.js +0 -1
  79. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/flash10canvas.swf +0 -0
  80. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/flash9canvas.swf +0 -0
  81. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/flashcanvas.js +0 -1
  82. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/proxy.php +0 -73
  83. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/save.php +0 -49
  84. data/vendor/assets/javascripts/webshims/minified/shims/combos/1.js +0 -1
  85. data/vendor/assets/javascripts/webshims/minified/shims/combos/10.js +0 -1
  86. data/vendor/assets/javascripts/webshims/minified/shims/combos/11.js +0 -1
  87. data/vendor/assets/javascripts/webshims/minified/shims/combos/12.js +0 -1
  88. data/vendor/assets/javascripts/webshims/minified/shims/combos/13.js +0 -1
  89. data/vendor/assets/javascripts/webshims/minified/shims/combos/14.js +0 -1
  90. data/vendor/assets/javascripts/webshims/minified/shims/combos/15.js +0 -1
  91. data/vendor/assets/javascripts/webshims/minified/shims/combos/16.js +0 -1
  92. data/vendor/assets/javascripts/webshims/minified/shims/combos/17.js +0 -1
  93. data/vendor/assets/javascripts/webshims/minified/shims/combos/18.js +0 -1
  94. data/vendor/assets/javascripts/webshims/minified/shims/combos/19.js +0 -1
  95. data/vendor/assets/javascripts/webshims/minified/shims/combos/2.js +0 -1
  96. data/vendor/assets/javascripts/webshims/minified/shims/combos/20.js +0 -1
  97. data/vendor/assets/javascripts/webshims/minified/shims/combos/21.js +0 -1
  98. data/vendor/assets/javascripts/webshims/minified/shims/combos/22.js +0 -1
  99. data/vendor/assets/javascripts/webshims/minified/shims/combos/23.js +0 -1
  100. data/vendor/assets/javascripts/webshims/minified/shims/combos/24.js +0 -1
  101. data/vendor/assets/javascripts/webshims/minified/shims/combos/25.js +0 -1
  102. data/vendor/assets/javascripts/webshims/minified/shims/combos/26.js +0 -1
  103. data/vendor/assets/javascripts/webshims/minified/shims/combos/27.js +0 -1
  104. data/vendor/assets/javascripts/webshims/minified/shims/combos/3.js +0 -1
  105. data/vendor/assets/javascripts/webshims/minified/shims/combos/4.js +0 -1
  106. data/vendor/assets/javascripts/webshims/minified/shims/combos/5.js +0 -1
  107. data/vendor/assets/javascripts/webshims/minified/shims/combos/59.js +0 -1
  108. data/vendor/assets/javascripts/webshims/minified/shims/combos/6.js +0 -1
  109. data/vendor/assets/javascripts/webshims/minified/shims/combos/7.js +0 -1
  110. data/vendor/assets/javascripts/webshims/minified/shims/combos/8.js +0 -1
  111. data/vendor/assets/javascripts/webshims/minified/shims/combos/9.js +0 -1
  112. data/vendor/assets/javascripts/webshims/minified/shims/details.js +0 -1
  113. data/vendor/assets/javascripts/webshims/minified/shims/dom-extend.js +0 -1
  114. data/vendor/assets/javascripts/webshims/minified/shims/es5.js +0 -1
  115. data/vendor/assets/javascripts/webshims/minified/shims/excanvas.js +0 -1
  116. data/vendor/assets/javascripts/webshims/minified/shims/form-core.js +0 -1
  117. data/vendor/assets/javascripts/webshims/minified/shims/form-datalist.js +0 -1
  118. data/vendor/assets/javascripts/webshims/minified/shims/form-message.js +0 -1
  119. data/vendor/assets/javascripts/webshims/minified/shims/form-native-extend.js +0 -1
  120. data/vendor/assets/javascripts/webshims/minified/shims/form-number-date-api.js +0 -1
  121. data/vendor/assets/javascripts/webshims/minified/shims/form-number-date-ui.js +0 -1
  122. data/vendor/assets/javascripts/webshims/minified/shims/form-shim-extend.js +0 -1
  123. data/vendor/assets/javascripts/webshims/minified/shims/geolocation.js +0 -1
  124. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-ar.js +0 -1
  125. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-ch-ZN.js +0 -1
  126. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-de.txt +0 -33
  127. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-el.js +0 -1
  128. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-en.txt +0 -34
  129. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-es.js +0 -1
  130. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-fr.js +0 -1
  131. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-he.js +0 -1
  132. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-hi.js +0 -1
  133. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-hu.js +0 -1
  134. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-it.js +0 -1
  135. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-ja.js +0 -1
  136. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-nl.js +0 -1
  137. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-pt-PT.js +0 -1
  138. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-ru.js +0 -1
  139. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-sv.js +0 -1
  140. data/vendor/assets/javascripts/webshims/minified/shims/json-storage.js +0 -1
  141. data/vendor/assets/javascripts/webshims/minified/shims/jwplayer/license.txt +0 -1
  142. data/vendor/assets/javascripts/webshims/minified/shims/jwplayer/player.swf +0 -0
  143. data/vendor/assets/javascripts/webshims/minified/shims/jwplayer/readme.html +0 -87
  144. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-core.js +0 -1
  145. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-jaris.js +0 -1
  146. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-native-fix.js +0 -1
  147. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-swf.js +0 -1
  148. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-yt.js +0 -1
  149. data/vendor/assets/javascripts/webshims/minified/shims/styles/details-arrows.png +0 -0
  150. data/vendor/assets/javascripts/webshims/minified/shims/styles/forms.png +0 -0
  151. data/vendor/assets/javascripts/webshims/minified/shims/styles/polyfill-loader.gif +0 -0
  152. data/vendor/assets/javascripts/webshims/minified/shims/styles/shim.css +0 -1
  153. data/vendor/assets/javascripts/webshims/minified/shims/swf/JarisFLVPlayer.swf +0 -0
  154. data/vendor/assets/javascripts/webshims/minified/shims/swf/jwwebshims.swf +0 -0
  155. data/vendor/assets/javascripts/webshims/minified/shims/swf/localStorage.swf +0 -0
  156. data/vendor/assets/javascripts/webshims/minified/shims/track-ui.js +0 -1
  157. data/vendor/assets/javascripts/webshims/minified/shims/track.js +0 -1
  158. data/vendor/assets/javascripts/webshims/shims/FlashCanvas/README +0 -62
  159. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/README +0 -82
  160. data/vendor/assets/javascripts/webshims/shims/combos/24.js +0 -2872
  161. data/vendor/assets/javascripts/webshims/shims/combos/25.js +0 -2376
  162. data/vendor/assets/javascripts/webshims/shims/combos/26.js +0 -3009
  163. data/vendor/assets/javascripts/webshims/shims/combos/27.js +0 -4150
  164. data/vendor/assets/javascripts/webshims/shims/combos/59.js +0 -1747
  165. data/vendor/assets/javascripts/webshims/shims/jwplayer/license.txt +0 -1
  166. data/vendor/assets/javascripts/webshims/shims/jwplayer/player.swf +0 -0
  167. data/vendor/assets/javascripts/webshims/shims/jwplayer/readme.html +0 -87
  168. data/vendor/assets/javascripts/webshims/shims/mediaelement-swf.js +0 -972
@@ -4,14 +4,16 @@ jQuery.webshims.register('form-message', function($, webshims, window, document,
4
4
 
5
5
  var implementProperties = (options.overrideMessages || options.customMessages) ? ['customValidationMessage'] : [];
6
6
 
7
- validityMessages['en'] = $.extend(true, {
7
+ validityMessages.en = $.extend(true, {
8
8
  typeMismatch: {
9
+ defaultMessage: 'Please enter a valid value.',
9
10
  email: 'Please enter an email address.',
10
11
  url: 'Please enter a URL.',
11
12
  number: 'Please enter a number.',
12
13
  date: 'Please enter a date.',
13
14
  time: 'Please enter a time.',
14
15
  range: 'Invalid input.',
16
+ month: 'Please enter a valid value.',
15
17
  "datetime-local": 'Please enter a datetime.'
16
18
  },
17
19
  rangeUnderflow: {
@@ -22,43 +24,42 @@ jQuery.webshims.register('form-message', function($, webshims, window, document,
22
24
  },
23
25
  stepMismatch: 'Invalid input.',
24
26
  tooLong: 'Please enter at most {%maxlength} character(s). You entered {%valueLen}.',
25
-
26
27
  patternMismatch: 'Invalid input. {%title}',
27
28
  valueMissing: {
28
29
  defaultMessage: 'Please fill out this field.',
29
30
  checkbox: 'Please check this box if you want to proceed.'
30
31
  }
31
- }, (validityMessages['en'] || validityMessages['en-US'] || {}));
32
-
33
-
34
- ['select', 'radio'].forEach(function(type){
35
- if(typeof validityMessages['en'].valueMissing == 'object'){
36
- validityMessages['en'].valueMissing[type] = 'Please select an option.';
37
- }
38
- });
32
+ }, (validityMessages.en || validityMessages['en-US'] || {}));
39
33
 
40
- ['date', 'time', 'datetime-local'].forEach(function(type){
41
- if(typeof validityMessages['en'].rangeUnderflow == 'object'){
34
+ if(typeof validityMessages['en'].valueMissing == 'object'){
35
+ ['select', 'radio'].forEach(function(type){
36
+ validityMessages.en.valueMissing[type] = 'Please select an option.';
37
+ });
38
+ }
39
+ if(typeof validityMessages.en.rangeUnderflow == 'object'){
40
+ ['date', 'time', 'datetime-local', 'month'].forEach(function(type){
42
41
  validityMessages.en.rangeUnderflow[type] = 'Value must be at or after {%min}.';
43
- }
44
- });
45
- ['date', 'time', 'datetime-local'].forEach(function(type){
46
- if(typeof validityMessages['en'].rangeOverflow == 'object'){
42
+ });
43
+ }
44
+ if(typeof validityMessages.en.rangeOverflow == 'object'){
45
+ ['date', 'time', 'datetime-local', 'month'].forEach(function(type){
47
46
  validityMessages.en.rangeOverflow[type] = 'Value must be at or before {%max}.';
48
- }
49
- });
47
+ });
48
+ }
50
49
 
51
- validityMessages['en-US'] = validityMessages['en-US'] || validityMessages['en'];
50
+ validityMessages['en-US'] = validityMessages['en-US'] || validityMessages.en;
52
51
  validityMessages[''] = validityMessages[''] || validityMessages['en-US'];
53
52
 
54
- validityMessages['de'] = $.extend(true, {
53
+ validityMessages.de = $.extend(true, {
55
54
  typeMismatch: {
56
- email: '{%value} ist keine zulässige E-Mail-Adresse',
57
- url: '{%value} ist keine zulässige Webadresse',
58
- number: '{%value} ist keine Nummer!',
59
- date: '{%value} ist kein Datum',
60
- time: '{%value} ist keine Uhrzeit',
61
- range: '{%value} ist keine Nummer!',
55
+ defaultMessage: '{%value} ist in diesem Feld nicht zulässig.',
56
+ email: '{%value} ist keine gültige E-Mail-Adresse.',
57
+ url: '{%value} ist kein(e) gültige(r) Webadresse/Pfad.',
58
+ number: '{%value} ist keine Nummer.',
59
+ date: '{%value} ist kein Datum.',
60
+ time: '{%value} ist keine Uhrzeit.',
61
+ month: '{%value} ist in diesem Feld nicht zulässig.',
62
+ range: '{%value} ist keine Nummer.',
62
63
  "datetime-local": '{%value} ist kein Datum-Uhrzeit Format.'
63
64
  },
64
65
  rangeUnderflow: {
@@ -69,51 +70,73 @@ jQuery.webshims.register('form-message', function($, webshims, window, document,
69
70
  },
70
71
  stepMismatch: 'Der Wert {%value} ist in diesem Feld nicht zulässig. Hier sind nur bestimmte Werte zulässig. {%title}',
71
72
  tooLong: 'Der eingegebene Text ist zu lang! Sie haben {%valueLen} Zeichen eingegeben, dabei sind {%maxlength} das Maximum.',
72
- patternMismatch: '{%value} hat für dieses Eingabefeld ein falsches Format! {%title}',
73
+ patternMismatch: '{%value} hat für dieses Eingabefeld ein falsches Format. {%title}',
73
74
  valueMissing: {
74
- defaultMessage: 'Bitte geben Sie einen Wert ein',
75
- checkbox: 'Bitte aktivieren Sie das Kästchen'
75
+ defaultMessage: 'Bitte geben Sie einen Wert ein.',
76
+ checkbox: 'Bitte aktivieren Sie das Kästchen.'
76
77
  }
77
- }, (validityMessages['de'] || {}));
78
+ }, (validityMessages.de || {}));
78
79
 
79
- ['select', 'radio'].forEach(function(type){
80
- if(typeof validityMessages['de'].valueMissing == 'object'){
81
- validityMessages['de'].valueMissing[type] = 'Bitte wählen Sie eine Option aus';
82
- }
83
- });
84
-
85
- ['date', 'time', 'datetime-local'].forEach(function(type){
86
- if(typeof validityMessages['de'].rangeUnderflow == 'object'){
80
+ if(typeof validityMessages.de.valueMissing == 'object'){
81
+ ['select', 'radio'].forEach(function(type){
82
+ validityMessages.de.valueMissing[type] = 'Bitte wählen Sie eine Option aus.';
83
+ });
84
+ }
85
+ if(typeof validityMessages.de.rangeUnderflow == 'object'){
86
+ ['date', 'time', 'datetime-local', 'month'].forEach(function(type){
87
87
  validityMessages.de.rangeUnderflow[type] = '{%value} ist zu früh. {%min} ist die früheste Zeit, die Sie benutzen können.';
88
- }
89
- });
90
- ['date', 'time', 'datetime-local'].forEach(function(type){
91
- if(typeof validityMessages['de'].rangeOverflow == 'object'){
88
+ });
89
+ }
90
+ if(typeof validityMessages.de.rangeOverflow == 'object'){
91
+ ['date', 'time', 'datetime-local', 'month'].forEach(function(type){
92
92
  validityMessages.de.rangeOverflow[type] = '{%value} ist zu spät. {%max} ist die späteste Zeit, die Sie benutzen können.';
93
- }
94
- });
93
+ });
94
+ }
95
95
 
96
96
  var currentValidationMessage = validityMessages[''];
97
-
98
-
99
- webshims.createValidationMessage = function(elem, name){
100
- var message = currentValidationMessage[name];
97
+ var getMessageFromObj = function(message, elem){
101
98
  if(message && typeof message !== 'string'){
102
99
  message = message[ $.prop(elem, 'type') ] || message[ (elem.nodeName || '').toLowerCase() ] || message[ 'defaultMessage' ];
103
100
  }
101
+ return message || '';
102
+ };
103
+ var valueVals = {
104
+ value: 1,
105
+ min: 1,
106
+ max: 1
107
+ };
108
+
109
+ webshims.createValidationMessage = function(elem, name){
110
+ var spinner;
111
+ var message = getMessageFromObj(currentValidationMessage[name], elem);
112
+
113
+ if(!message){
114
+ message = getMessageFromObj(validityMessages[''][name], elem) || 'invalid value';
115
+ webshims.info('could not find errormessage for: '+ name +' / '+ $.prop(elem, 'type') +'. in language: '+$.webshims.activeLang());
116
+ }
104
117
  if(message){
105
118
  ['value', 'min', 'max', 'title', 'maxlength', 'label'].forEach(function(attr){
106
119
  if(message.indexOf('{%'+attr) === -1){return;}
107
- var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.attr(elem, attr)) || '';
120
+ var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.prop(elem, attr)) || '';
108
121
  if(name == 'patternMismatch' && attr == 'title' && !val){
109
122
  webshims.error('no title for patternMismatch provided. Always add a title attribute.');
110
123
  }
124
+ if(valueVals[attr]){
125
+ if(!spinner){
126
+ spinner = $(elem).getShadowElement().data('wsspinner');
127
+ }
128
+ if(spinner && spinner.formatValue){
129
+ val = spinner.formatValue(val, false);
130
+ }
131
+ }
111
132
  message = message.replace('{%'+ attr +'}', val);
112
133
  if('value' == attr){
113
134
  message = message.replace('{%valueLen}', val.length);
114
135
  }
136
+
115
137
  });
116
138
  }
139
+
117
140
  return message || '';
118
141
  };
119
142
 
@@ -126,6 +149,7 @@ jQuery.webshims.register('form-message', function($, webshims, window, document,
126
149
  langObj: validityMessages,
127
150
  module: 'form-core',
128
151
  callback: function(langObj){
152
+
129
153
  currentValidationMessage = langObj;
130
154
  }
131
155
  });
@@ -6,15 +6,32 @@ jQuery.webshims.register('form-native-extend', function($, webshims, window, doc
6
6
  var typeModels = webshims.inputTypes;
7
7
  var validityRules = {};
8
8
 
9
+ var updateValidity = (function(){
10
+ var timer;
11
+ var getValidity = function(){
12
+ $(this).prop('validity');
13
+ };
14
+ var update = function(){
15
+ $('input').each(getValidity);
16
+ };
17
+ return function(fast){
18
+ clearTimeout(timer);
19
+ timer = setTimeout(update, 9);
20
+ };
21
+ })();
9
22
  webshims.addInputType = function(type, obj){
10
23
  typeModels[type] = obj;
24
+ //update validity of all implemented input types
25
+ if($.isDOMReady && Modernizr.formvalidation && !webshims.bugs.bustedValidity){
26
+ updateValidity();
27
+ }
11
28
  };
12
29
 
13
30
  webshims.addValidityRule = function(type, fn){
14
31
  validityRules[type] = fn;
15
32
  };
16
33
 
17
- webshims.addValidityRule('typeMismatch',function (input, val, cache, validityState){
34
+ webshims.addValidityRule('typeMismatch', function (input, val, cache, validityState){
18
35
  if(val === ''){return false;}
19
36
  var ret = validityState.typeMismatch;
20
37
  if(!('type' in cache)){
@@ -1,7 +1,7 @@
1
1
  jQuery.webshims.register('form-number-date-api', function($, webshims, window, document, undefined){
2
2
  "use strict";
3
3
 
4
- //ToDo
4
+
5
5
  if(!webshims.getStep){
6
6
  webshims.getStep = function(elem, type){
7
7
  var step = $.attr(elem, 'step');
@@ -13,7 +13,7 @@ jQuery.webshims.register('form-number-date-api', function($, webshims, window, d
13
13
  return step;
14
14
  }
15
15
  step = typeProtos.number.asNumber(step);
16
- return ((!isNaN(step) && step > 0) ? step : typeModels[type].step) * typeModels[type].stepScaleFactor;
16
+ return ((!isNaN(step) && step > 0) ? step : typeModels[type].step) * (typeModels[type].stepScaleFactor || 1);
17
17
  };
18
18
  }
19
19
  if(!webshims.addMinMaxNumberToCache){
@@ -40,7 +40,7 @@ jQuery.webshims.register('form-number-date-api', function($, webshims, window, d
40
40
  return (elem.getAttribute('type') || '').toLowerCase();
41
41
  },
42
42
  isDateTimePart = function(string){
43
- return (isNumber(string) || (string && string == '0' + (string * 1)));
43
+ return (string && !(isNaN(string * 1)));
44
44
  },
45
45
  addMinMaxNumberToCache = webshims.addMinMaxNumberToCache,
46
46
  addleadingZero = function(val, len){
@@ -60,11 +60,8 @@ jQuery.webshims.register('form-number-date-api', function($, webshims, window, d
60
60
  if(!('type' in cache)){
61
61
  cache.type = getType(input[0]);
62
62
  }
63
- //stepmismatch with date is computable, but it would be a typeMismatch (performance)
64
- if(cache.type == 'date'){
65
- return false;
66
- }
67
- var ret = (validityState || {}).stepMismatch, base;
63
+
64
+ var ret = (validityState || {}).stepMismatch || false, base;
68
65
  if(typeModels[cache.type] && typeModels[cache.type].step){
69
66
  if( !('step' in cache) ){
70
67
  cache.step = webshims.getStep(input[0], cache.type);
@@ -148,7 +145,7 @@ jQuery.webshims.register('form-number-date-api', function($, webshims, window, d
148
145
  if(set !== false){
149
146
  $.prop(elem, 'value', set);
150
147
  } else {
151
- webshims.warn('INVALID_STATE_ERR: DOM Exception 11');
148
+ webshims.error('INVALID_STATE_ERR: DOM Exception 11');
152
149
  }
153
150
  } else {
154
151
  valueAsNumberDescriptor.prop._supset && valueAsNumberDescriptor.prop._supset.apply(elem, arguments);
@@ -180,7 +177,7 @@ jQuery.webshims.register('form-number-date-api', function($, webshims, window, d
180
177
  $.prop(elem, 'value', set);
181
178
  return set;
182
179
  } else {
183
- webshims.warn('INVALID_STATE_ERR: DOM Exception 11');
180
+ webshims.error('INVALID_STATE_ERR: DOM Exception 11');
184
181
  }
185
182
  } else {
186
183
  return valueAsDateDescriptor.prop._supset && valueAsDateDescriptor.prop._supset.apply(elem, arguments) || null;
@@ -189,6 +186,69 @@ jQuery.webshims.register('form-number-date-api', function($, webshims, window, d
189
186
  }
190
187
  });
191
188
 
189
+ $.each({stepUp: 1, stepDown: -1}, function(name, stepFactor){
190
+ var stepDescriptor = webshims.defineNodeNameProperty('input', name, {
191
+ prop: {
192
+ value: function(factor){
193
+ var step, val, dateVal, valModStep, alignValue, cache;
194
+ var type = getType(this);
195
+ if(typeModels[type] && typeModels[type].asNumber){
196
+ cache = {type: type};
197
+ if(!factor){
198
+ factor = 1;
199
+ webshims.info("you should always use a factor for stepUp/stepDown");
200
+ }
201
+ factor *= stepFactor;
202
+
203
+ val = $.prop(this, 'valueAsNumber');
204
+
205
+ if(isNaN(val)){
206
+ webshims.info("valueAsNumber is NaN can't apply stepUp/stepDown ");
207
+ throw('invalid state error');
208
+ }
209
+
210
+ step = webshims.getStep(this, type);
211
+
212
+ if(step == 'any'){
213
+ webshims.info("step is 'any' can't apply stepUp/stepDown");
214
+ throw('invalid state error');
215
+ }
216
+
217
+ webshims.addMinMaxNumberToCache('min', $(this), cache);
218
+ webshims.addMinMaxNumberToCache('max', $(this), cache);
219
+
220
+ step *= factor;
221
+
222
+ val = (val + step).toFixed(5) * 1;
223
+ valModStep = (val - (cache.minAsNumber || 0)) % step;
224
+
225
+ if ( valModStep && (Math.abs(valModStep) > EPS) ) {
226
+ alignValue = val - valModStep;
227
+ alignValue += ( valModStep > 0 ) ? step : ( -step );
228
+ val = alignValue.toFixed(5) * 1;
229
+ }
230
+
231
+ if( (!isNaN(cache.maxAsNumber) && val > cache.maxAsNumber) || (!isNaN(cache.minAsNumber) && val < cache.minAsNumber) ){
232
+ webshims.info("max/min overflow can't apply stepUp/stepDown");
233
+ throw('invalid state error');
234
+ }
235
+ if(dateVal){
236
+ $.prop(this, 'valueAsDate', dateVal);
237
+ } else {
238
+ $.prop(this, 'valueAsNumber', val);
239
+ }
240
+ } else if(stepDescriptor.prop && stepDescriptor.prop.value){
241
+ return stepDescriptor.prop.value.apply(this, arguments);
242
+ } else {
243
+ webshims.info("no step method for type: "+ type);
244
+ throw('invalid state error');
245
+ }
246
+ }
247
+ }
248
+ });
249
+ });
250
+
251
+
192
252
  var typeProtos = {
193
253
 
194
254
  number: {
@@ -214,20 +274,24 @@ jQuery.webshims.register('form-number-date-api', function($, webshims, window, d
214
274
  date: {
215
275
  mismatch: function(val){
216
276
  if(!val || !val.split || !(/\d$/.test(val))){return true;}
277
+ var i;
217
278
  var valA = val.split(/\u002D/);
218
279
  if(valA.length !== 3){return true;}
219
280
  var ret = false;
220
- $.each(valA, function(i, part){
221
- if(!isDateTimePart(part)){
222
- ret = true;
223
- return false;
224
- }
225
- });
226
- if(ret){return ret;}
227
- if(valA[0].length !== 4 || valA[1].length != 2 || valA[1] > 12 || valA[2].length != 2 || valA[2] > 33){
281
+
282
+
283
+ if(valA[0].length < 4 || valA[1].length != 2 || valA[1] > 12 || valA[2].length != 2 || valA[2] > 33){
228
284
  ret = true;
285
+ } else {
286
+ for(i = 0; i < 3; i++){
287
+ if(!isDateTimePart(valA[i])){
288
+ ret = true;
289
+ break;
290
+ }
291
+ }
229
292
  }
230
- return (val !== this.dateToString( this.asDate(val, true) ) );
293
+
294
+ return ret || (val !== this.dateToString( this.asDate(val, true) ) );
231
295
  },
232
296
  step: 1,
233
297
  //stepBase: 0, 0 = default
@@ -250,7 +314,7 @@ jQuery.webshims.register('form-number-date-api', function($, webshims, window, d
250
314
  return (isNumber(num)) ? this.dateToString(new Date( num * 1)) : false;
251
315
  },
252
316
  dateToString: function(date){
253
- return (date && date.getFullYear) ? date.getUTCFullYear() +'-'+ addleadingZero(date.getUTCMonth()+1, 2) +'-'+ addleadingZero(date.getUTCDate(), 2) : false;
317
+ return (date && date.getFullYear) ? addleadingZero(date.getUTCFullYear(), 4) +'-'+ addleadingZero(date.getUTCMonth()+1, 2) +'-'+ addleadingZero(date.getUTCDate(), 2) : false;
254
318
  }
255
319
  },
256
320
  time: {
@@ -325,6 +389,53 @@ jQuery.webshims.register('form-number-date-api', function($, webshims, window, d
325
389
  return false;
326
390
  }
327
391
  }
392
+ },
393
+ month: {
394
+ mismatch: function(val){
395
+ return typeProtos.date.mismatch(val+'-01');
396
+ },
397
+ step: 1,
398
+ stepScaleFactor: false,
399
+ //stepBase: 0, 0 = default
400
+ asDate: function(val){
401
+ return new Date(typeProtos.date.asNumber(val+'-01'));
402
+ },
403
+ asNumber: function(val){
404
+ //1970-01
405
+ var ret = nan;
406
+ if(val && !this.mismatch(val)){
407
+ val = val.split(/\u002D/);
408
+ val[0] = (val[0] * 1) - 1970;
409
+ val[1] = (val[1] * 1) - 1;
410
+ ret = (val[0] * 12) + val[1];
411
+ }
412
+ return ret;
413
+ },
414
+ numberToString: function(num){
415
+ var mod;
416
+ var ret = false;
417
+ if(isNumber(num)){
418
+ mod = (num % 12);
419
+ num = ((num - mod) / 12) + 1970;
420
+ mod += 1;
421
+ if(mod < 1){
422
+ num -= 1;
423
+ mod += 12;
424
+ }
425
+ ret = addleadingZero(num, 4)+'-'+addleadingZero(mod, 2);
426
+
427
+ }
428
+
429
+ return ret;
430
+ },
431
+ dateToString: function(date){
432
+ if(date && date.getUTCHours){
433
+ var str = typeProtos.date.dateToString(date);
434
+ return (str.split && (str = str.split(/\u002D/))) ? str[0]+'-'+str[1] : false;
435
+ } else {
436
+ return false;
437
+ }
438
+ }
328
439
  }
329
440
  // ,'datetime-local': {
330
441
  // mismatch: function(val, _getParsed){
@@ -360,25 +471,39 @@ jQuery.webshims.register('form-number-date-api', function($, webshims, window, d
360
471
  if(typeBugs || !supportsType('range') || !supportsType('time')){
361
472
  typeProtos.range = $.extend({}, typeProtos.number, typeProtos.range);
362
473
  typeProtos.time = $.extend({}, typeProtos.date, typeProtos.time);
474
+ typeProtos.month = $.extend({}, typeProtos.date, typeProtos.month);
363
475
  // typeProtos['datetime-local'] = $.extend({}, typeProtos.date, typeProtos.time, typeProtos['datetime-local']);
364
476
  }
365
477
 
366
- if(typeBugs || !supportsType('number')){
367
- webshims.addInputType('number', typeProtos.number);
478
+ //'datetime-local'
479
+ ['number', 'month', 'range', 'date', 'time'].forEach(function(type){
480
+ if(typeBugs || !supportsType(type)){
481
+ webshims.addInputType(type, typeProtos[type]);
482
+ }
483
+ });
484
+
485
+ if($('<input />').prop('labels') == null){
486
+ webshims.defineNodeNamesProperty('button, input, keygen, meter, output, progress, select, textarea', 'labels', {
487
+ prop: {
488
+ get: function(){
489
+ if(this.type == 'hidden'){return null;}
490
+ var id = this.id;
491
+ var labels = $(this)
492
+ .closest('label')
493
+ .filter(function(){
494
+ var hFor = (this.attributes['for'] || {});
495
+ return (!hFor.specified || hFor.value == id);
496
+ })
497
+ ;
498
+
499
+ if(id) {
500
+ labels = labels.add('label[for="'+ id +'"]');
501
+ }
502
+ return labels.get();
503
+ },
504
+ writeable: false
505
+ }
506
+ });
368
507
  }
369
508
 
370
- if(typeBugs || !supportsType('range')){
371
- webshims.addInputType('range', typeProtos.range);
372
- }
373
- if(typeBugs || !supportsType('date')){
374
- webshims.addInputType('date', typeProtos.date);
375
- }
376
- if(typeBugs || !supportsType('time')){
377
- webshims.addInputType('time', typeProtos.time);
378
- }
379
-
380
- // if(typeBugs || !supportsType('datetime-local')){
381
- // webshims.addInputType('datetime-local', typeProtos['datetime-local']);
382
- // }
383
-
384
509
  });