webshims-rails 0.3 → 0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (140) hide show
  1. data/lib/webshims-rails.rb +1 -1
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/readme.textile +5 -3
  4. data/vendor/assets/javascripts/webshims/dev/extras/custom-validity.js +261 -0
  5. data/vendor/assets/javascripts/webshims/dev/extras/modernizr-custom.js +535 -0
  6. data/vendor/assets/javascripts/webshims/dev/extras/mousepress.js +60 -0
  7. data/vendor/assets/javascripts/webshims/dev/polyfiller.js +1171 -0
  8. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvas/README +62 -0
  9. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvas/canvas2png.js +42 -0
  10. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvas/flashcanvas.js +28 -0
  11. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvas/flashcanvas.swf +0 -0
  12. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvas/proxy.php +73 -0
  13. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvas/save.php +49 -0
  14. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvasPro/README +82 -0
  15. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvasPro/canvas2png.js +42 -0
  16. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvasPro/flash10canvas.swf +0 -0
  17. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvasPro/flash9canvas.swf +0 -0
  18. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvasPro/flashcanvas.js +31 -0
  19. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvasPro/proxy.php +73 -0
  20. data/vendor/assets/javascripts/webshims/dev/shims/FlashCanvasPro/save.php +49 -0
  21. data/vendor/assets/javascripts/webshims/dev/shims/combos/1.js +1710 -0
  22. data/vendor/assets/javascripts/webshims/dev/shims/combos/10.js +3317 -0
  23. data/vendor/assets/javascripts/webshims/dev/shims/combos/11.js +1585 -0
  24. data/vendor/assets/javascripts/webshims/dev/shims/combos/12.js +1587 -0
  25. data/vendor/assets/javascripts/webshims/dev/shims/combos/13.js +1054 -0
  26. data/vendor/assets/javascripts/webshims/dev/shims/combos/14.js +476 -0
  27. data/vendor/assets/javascripts/webshims/dev/shims/combos/15.js +314 -0
  28. data/vendor/assets/javascripts/webshims/dev/shims/combos/16.js +2101 -0
  29. data/vendor/assets/javascripts/webshims/dev/shims/combos/17.js +2264 -0
  30. data/vendor/assets/javascripts/webshims/dev/shims/combos/18.js +2161 -0
  31. data/vendor/assets/javascripts/webshims/dev/shims/combos/19.js +2244 -0
  32. data/vendor/assets/javascripts/webshims/dev/shims/combos/2.js +2294 -0
  33. data/vendor/assets/javascripts/webshims/dev/shims/combos/20.js +1607 -0
  34. data/vendor/assets/javascripts/webshims/dev/shims/combos/21.js +1635 -0
  35. data/vendor/assets/javascripts/webshims/dev/shims/combos/22.js +2409 -0
  36. data/vendor/assets/javascripts/webshims/dev/shims/combos/23.js +2168 -0
  37. data/vendor/assets/javascripts/webshims/dev/shims/combos/24.js +2777 -0
  38. data/vendor/assets/javascripts/webshims/dev/shims/combos/25.js +2204 -0
  39. data/vendor/assets/javascripts/webshims/dev/shims/combos/26.js +2863 -0
  40. data/vendor/assets/javascripts/webshims/dev/shims/combos/27.js +4079 -0
  41. data/vendor/assets/javascripts/webshims/dev/shims/combos/3.js +2971 -0
  42. data/vendor/assets/javascripts/webshims/dev/shims/combos/4.js +823 -0
  43. data/vendor/assets/javascripts/webshims/dev/shims/combos/5.js +1078 -0
  44. data/vendor/assets/javascripts/webshims/dev/shims/combos/59.js +1754 -0
  45. data/vendor/assets/javascripts/webshims/dev/shims/combos/6.js +1230 -0
  46. data/vendor/assets/javascripts/webshims/dev/shims/combos/7.js +1485 -0
  47. data/vendor/assets/javascripts/webshims/dev/shims/combos/8.js +1442 -0
  48. data/vendor/assets/javascripts/webshims/dev/shims/combos/9.js +2515 -0
  49. data/vendor/assets/javascripts/webshims/dev/shims/details.js +146 -0
  50. data/vendor/assets/javascripts/webshims/dev/shims/dom-extend.js +908 -0
  51. data/vendor/assets/javascripts/webshims/dev/shims/es5.js +802 -0
  52. data/vendor/assets/javascripts/webshims/dev/shims/excanvas.js +924 -0
  53. data/vendor/assets/javascripts/webshims/dev/shims/form-core.js +660 -0
  54. data/vendor/assets/javascripts/webshims/dev/shims/form-datalist.js +677 -0
  55. data/vendor/assets/javascripts/webshims/dev/shims/form-message.js +164 -0
  56. data/vendor/assets/javascripts/webshims/dev/shims/form-native-extend.js +256 -0
  57. data/vendor/assets/javascripts/webshims/dev/shims/form-native-fix.js +261 -0
  58. data/vendor/assets/javascripts/webshims/dev/shims/form-number-date-api.js +384 -0
  59. data/vendor/assets/javascripts/webshims/dev/shims/form-number-date-ui.js +847 -0
  60. data/vendor/assets/javascripts/webshims/dev/shims/form-shim-extend.js +1472 -0
  61. data/vendor/assets/javascripts/webshims/dev/shims/geolocation.js +168 -0
  62. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-ar.js +32 -0
  63. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-ch-ZN.js +32 -0
  64. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-de.txt +33 -0
  65. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-el.js +32 -0
  66. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-en.txt +34 -0
  67. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-es.js +32 -0
  68. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-fr.js +32 -0
  69. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-he.js +32 -0
  70. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-hi.js +32 -0
  71. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-hu.js +32 -0
  72. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-it.js +32 -0
  73. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-ja.js +32 -0
  74. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-nl.js +32 -0
  75. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-pt-PT.js +32 -0
  76. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-ru.js +32 -0
  77. data/vendor/assets/javascripts/webshims/dev/shims/i18n/errormessages-sv.js +32 -0
  78. data/vendor/assets/javascripts/webshims/dev/shims/json-storage.js +308 -0
  79. data/vendor/assets/javascripts/webshims/dev/shims/jwplayer/license.txt +1 -0
  80. data/vendor/assets/javascripts/webshims/dev/shims/jwplayer/player.swf +0 -0
  81. data/vendor/assets/javascripts/webshims/dev/shims/jwplayer/readme.html +87 -0
  82. data/vendor/assets/javascripts/webshims/dev/shims/mediaelement-core.js +534 -0
  83. data/vendor/assets/javascripts/webshims/dev/shims/mediaelement-native-fix.js +99 -0
  84. data/vendor/assets/javascripts/webshims/dev/shims/mediaelement-swf.js +1074 -0
  85. data/vendor/assets/javascripts/webshims/dev/shims/mediaelement-yt.js +543 -0
  86. data/vendor/assets/javascripts/webshims/dev/shims/styles/details-arrows.png +0 -0
  87. data/vendor/assets/javascripts/webshims/dev/shims/styles/forms.png +0 -0
  88. data/vendor/assets/javascripts/webshims/dev/shims/styles/polyfill-loader.gif +0 -0
  89. data/vendor/assets/javascripts/webshims/dev/shims/styles/shim.css +677 -0
  90. data/vendor/assets/javascripts/webshims/dev/shims/swf/jwwebshims.swf +0 -0
  91. data/vendor/assets/javascripts/webshims/dev/shims/swf/localStorage.swf +0 -0
  92. data/vendor/assets/javascripts/webshims/dev/shims/track-ui.js +292 -0
  93. data/vendor/assets/javascripts/webshims/dev/shims/track.js +763 -0
  94. data/vendor/assets/javascripts/webshims/minified/extras/modernizr-custom.js +20 -20
  95. data/vendor/assets/javascripts/webshims/minified/polyfiller.js +29 -29
  96. data/vendor/assets/javascripts/webshims/minified/shims/combos/1.js +37 -33
  97. data/vendor/assets/javascripts/webshims/minified/shims/combos/10.js +83 -76
  98. data/vendor/assets/javascripts/webshims/minified/shims/combos/11.js +44 -42
  99. data/vendor/assets/javascripts/webshims/minified/shims/combos/12.js +43 -38
  100. data/vendor/assets/javascripts/webshims/minified/shims/combos/13.js +27 -25
  101. data/vendor/assets/javascripts/webshims/minified/shims/combos/16.js +60 -55
  102. data/vendor/assets/javascripts/webshims/minified/shims/combos/17.js +68 -64
  103. data/vendor/assets/javascripts/webshims/minified/shims/combos/18.js +60 -59
  104. data/vendor/assets/javascripts/webshims/minified/shims/combos/19.js +66 -64
  105. data/vendor/assets/javascripts/webshims/minified/shims/combos/2.js +74 -69
  106. data/vendor/assets/javascripts/webshims/minified/shims/combos/20.js +46 -43
  107. data/vendor/assets/javascripts/webshims/minified/shims/combos/21.js +52 -47
  108. data/vendor/assets/javascripts/webshims/minified/shims/combos/22.js +61 -57
  109. data/vendor/assets/javascripts/webshims/minified/shims/combos/23.js +68 -60
  110. data/vendor/assets/javascripts/webshims/minified/shims/combos/24.js +82 -77
  111. data/vendor/assets/javascripts/webshims/minified/shims/combos/25.js +58 -0
  112. data/vendor/assets/javascripts/webshims/minified/shims/combos/26.js +80 -0
  113. data/vendor/assets/javascripts/webshims/minified/shims/combos/27.js +103 -0
  114. data/vendor/assets/javascripts/webshims/minified/shims/combos/3.js +96 -91
  115. data/vendor/assets/javascripts/webshims/minified/shims/combos/4.js +30 -31
  116. data/vendor/assets/javascripts/webshims/minified/shims/combos/5.js +37 -39
  117. data/vendor/assets/javascripts/webshims/minified/shims/combos/59.js +59 -61
  118. data/vendor/assets/javascripts/webshims/minified/shims/combos/6.js +31 -29
  119. data/vendor/assets/javascripts/webshims/minified/shims/combos/7.js +38 -37
  120. data/vendor/assets/javascripts/webshims/minified/shims/combos/8.js +38 -33
  121. data/vendor/assets/javascripts/webshims/minified/shims/combos/9.js +68 -63
  122. data/vendor/assets/javascripts/webshims/minified/shims/dom-extend.js +22 -20
  123. data/vendor/assets/javascripts/webshims/minified/shims/es5.js +15 -14
  124. data/vendor/assets/javascripts/webshims/minified/shims/form-core.js +22 -22
  125. data/vendor/assets/javascripts/webshims/minified/shims/form-datalist.js +22 -22
  126. data/vendor/assets/javascripts/webshims/minified/shims/form-message.js +8 -9
  127. data/vendor/assets/javascripts/webshims/minified/shims/form-native-extend.js +7 -8
  128. data/vendor/assets/javascripts/webshims/minified/shims/form-number-date-ui.js +23 -21
  129. data/vendor/assets/javascripts/webshims/minified/shims/form-shim-extend.js +44 -33
  130. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-sv.js +3 -0
  131. data/vendor/assets/javascripts/webshims/minified/shims/jwplayer/player.swf +0 -0
  132. data/vendor/assets/javascripts/webshims/minified/shims/jwplayer/readme.html +86 -86
  133. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-core.js +16 -13
  134. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-swf.js +30 -30
  135. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-yt.js +14 -0
  136. data/vendor/assets/javascripts/webshims/minified/shims/styles/shim.css +71 -10
  137. data/vendor/assets/javascripts/webshims/minified/shims/track-ui.js +9 -0
  138. data/vendor/assets/javascripts/webshims/minified/shims/track.js +20 -0
  139. metadata +101 -5
  140. data/vendor/assets/javascripts/webshims/minified/shims/form-output.js +0 -5
@@ -6,7 +6,7 @@ module Webshims
6
6
  # Everything in the webshims directory should be precompiled, since
7
7
  # it all needs to be accessed dynamically depending on the browser
8
8
  initializer :append_webshims_assets_path, :group => :all do |app|
9
- app.config.assets.precompile << /webshims\/minified/
9
+ app.config.assets.precompile << /webshims\/dev/
10
10
  end
11
11
  end
12
12
  end
@@ -1,6 +1,6 @@
1
1
  module Webshims
2
2
  module Rails
3
- VERSION = "0.3"
4
- WEBSHIMS_VERSION = "1.8.13"
3
+ VERSION = "0.4"
4
+ WEBSHIMS_VERSION = "1.9.1"
5
5
  end
6
6
  end
data/readme.textile CHANGED
@@ -7,16 +7,18 @@ h2. Usage
7
7
  1. Add webshims-rails to your Gemfile for bundler: @gem 'webshims-rails'@
8
8
  2. Require modernizr and the webshims polyfiller, eg, in your application.js:
9
9
 
10
+ *Update note:* Previous webshims-rails included only the minified versions; this was incorrect, since the dev (unminified) versions should be required by Sprockets and then the Rails asset pipeline will compress as necessary in production. Users of previous webshims-rails versions should update their sprockets requires and webshims options as below (though I'll leave the minified assets in there to prevent errors).
11
+
10
12
  <pre>
11
- //= require webshims/minified/extras/modernizr-custom
12
- //= require webshims/minified/polyfiller
13
+ //= require webshims/dev/extras/modernizr-custom
14
+ //= require webshims/dev/polyfiller
13
15
  </pre>
14
16
 
15
17
  3. In your javascript, after the polyfiller has been required, set the basePath for webshims as shown below, and then call $.webshims.polyfill(); see webshims docs for more options.
16
18
  (Note that this should be run directly, not in a dom-ready block.)
17
19
 
18
20
  <pre>
19
- $.webshims.setOptions('basePath', '/assets/webshims/minified/shims/')
21
+ $.webshims.setOptions('basePath', '/assets/webshims/dev/shims/')
20
22
  $.webshims.polyfill()
21
23
  </pre>
22
24
 
@@ -0,0 +1,261 @@
1
+ (function($, window, document, undefined){
2
+ "use strict";
3
+ if(!$.webshims){
4
+ var langs = navigator.browserLanguage || navigator.language || $('html').attr('lang') || '';
5
+ $.webshims = {
6
+ addReady: function(fn){$(function(){fn(document, $([]));});},
7
+ ready: function(n, fn){fn();},
8
+ activeLang: function(){return langs;}
9
+ };
10
+ }
11
+ var webshims = $.webshims;
12
+ var customValidityRules = {};
13
+ var formReady = false;
14
+ var blockCustom;
15
+ var initTest;
16
+ var onEventTest = function(e){
17
+ webshims.refreshCustomValidityRules(e.target);
18
+ };
19
+
20
+
21
+ webshims.customErrorMessages = {};
22
+ webshims.addCustomValidityRule = function(name, test, defaultMessage){
23
+ customValidityRules[name] = test;
24
+ if(!webshims.customErrorMessages[name]){
25
+ webshims.customErrorMessages[name] = [];
26
+ webshims.customErrorMessages[name][''] = defaultMessage || name;
27
+ }
28
+ if($.isReady && formReady){
29
+ $('input, select, textarea').each(function(){
30
+ testValidityRules(this);
31
+ });
32
+ }
33
+ };
34
+ webshims.refreshCustomValidityRules = function(elem){
35
+ if(!elem.form || (!initTest && !$.prop(elem, 'willValidate')) ){return;}
36
+ blockCustom = true;
37
+ var customMismatchedRule = $.data(elem, 'customMismatchedRule');
38
+ var validity = $.prop(elem, 'validity') || {};
39
+ var message = '';
40
+ if(customMismatchedRule || !validity.customError){
41
+ var val = $(elem).val();
42
+ $.each(customValidityRules, function(name, test){
43
+ message = test(elem, val) || '';
44
+ customMismatchedRule = name;
45
+ if(message){
46
+
47
+ if(typeof message != 'string'){
48
+ message = $(elem).data('errormessage') || elem.getAttribute('x-moz-errormessage') || webshims.customErrorMessages[name][webshims.activeLang()] || webshims.customErrorMessages[name][''];
49
+ }
50
+
51
+ if(typeof message == 'object'){
52
+ message = message[name] || message.customError || message.defaultMessage;
53
+ }
54
+ return false;
55
+ }
56
+ });
57
+
58
+ if(message){
59
+ $.data(elem, 'customMismatchedRule', customMismatchedRule);
60
+ }
61
+ $(elem).setCustomValidity(message);
62
+ }
63
+ blockCustom = false;
64
+ };
65
+ var testValidityRules = webshims.refreshCustomValidityRules;
66
+
67
+ webshims.ready('forms', function(){
68
+ formReady = true;
69
+
70
+ var oldCustomValidity = $.fn.setCustomValidity || function(message){
71
+ return this.each(function(){
72
+ if(this.setCustomValidity){
73
+ this.setCustomValidity(message);
74
+ }
75
+ });
76
+ };
77
+
78
+
79
+ $.fn.setCustomValidity = function(message){
80
+ if(!blockCustom){
81
+ this.data('customMismatchedRule', '');
82
+ }
83
+ return oldCustomValidity.apply(this, arguments);
84
+ };
85
+
86
+
87
+ $(document).bind('change', onEventTest);
88
+
89
+ webshims.addReady(function(context, selfElement){
90
+ initTest = true;
91
+ $('input, select, textarea', context).add(selfElement.filter('input, select, textarea')).each(function(){
92
+ testValidityRules(this);
93
+ });
94
+ initTest = false;
95
+ });
96
+ $(document).bind('refreshCustomValidityRules', onEventTest);
97
+
98
+ });
99
+
100
+ })(jQuery, window, document);
101
+
102
+ /*
103
+ * adds support for HTML5 constraint validation
104
+ * - partial pattern: <input data-partial-pattern="RegExp" />
105
+ * - creditcard-validation: <input class="creditcard-input" />
106
+ * - several dependent-validation patterns (examples):
107
+ * - <input type="email" id="mail" /> <input data-dependent-validation='mail' />
108
+ * - <input type="date" id="start" data-dependent-validation='{"from": "end", "prop": "max"}' /> <input type="date" id="end" data-dependent-validation='{"from": "start", "prop": "min"}' />
109
+ * - <input type="checkbox" id="check" /> <input data-dependent-validation='checkbox' />
110
+ */
111
+ (function($, window, document, undefined){
112
+ "use strict";
113
+ var addCustomValidityRule = $.webshims.addCustomValidityRule;
114
+ addCustomValidityRule('partialPattern', function(elem, val){
115
+ if(!val || !elem.getAttribute('data-partial-pattern')){return;}
116
+ var pattern = $(elem).data('partial-pattern');
117
+ if(!pattern){return;}
118
+ return !(new RegExp('(' + pattern + ')', 'i').test(val));
119
+ }, 'This format is not allowed here.');
120
+
121
+ addCustomValidityRule('tooShort', function(elem, val){
122
+ if(!val || !elem.getAttribute('data-minlength')){return;}
123
+ return $(elem).data('minlength') > val.length;
124
+ }, 'Entered value is too short.');
125
+
126
+ var groupTimer = {};
127
+ addCustomValidityRule('group-required', function(elem, val){
128
+ var name = elem.name;
129
+ if(!name || elem.type !== 'checkbox' || !$(elem).hasClass('group-required')){return;}
130
+ var checkboxes = $( (elem.form && elem.form[name]) || document.getElementsByName(name));
131
+ var isValid = checkboxes.filter(':checked');
132
+ if(groupTimer[name]){
133
+ clearTimeout(groupTimer[name]);
134
+ }
135
+ groupTimer[name] = setTimeout(function(){
136
+ checkboxes
137
+ .unbind('click.groupRequired')
138
+ .bind('click.groupRequired', function(){
139
+ checkboxes.filter('.group-required').each(function(){
140
+ $.webshims.refreshCustomValidityRules(this);
141
+ });
142
+ })
143
+ ;
144
+ }, 9);
145
+
146
+ return !(isValid[0]);
147
+ }, 'Please check one of these checkboxes.');
148
+
149
+ //based on jörn zaefferes validiation plugin
150
+ // http://docs.jquery.com/Plugins/Validation/Methods/creditcard
151
+ // based on http://en.wikipedia.org/wiki/Luhn
152
+ var dashDigit = /[^0-9-]+/;
153
+ addCustomValidityRule('creditcard', function(elem, value){
154
+ if(!value || !$(elem).hasClass('creditcard-input')){return;}
155
+ if (!dashDigit.test(value)){
156
+ return true;
157
+ }
158
+ var nCheck = 0,
159
+ nDigit = 0,
160
+ bEven = false;
161
+
162
+ value = value.replace(/\D/g, "");
163
+
164
+ for (n = value.length - 1; n >= 0; n--) {
165
+ var cDigit = value.charAt(n);
166
+ nDigit = parseInt(cDigit, 10);
167
+ if (bEven && (nDigit *= 2) > 9) {
168
+ nDigit -= 9;
169
+ }
170
+ nCheck += nDigit;
171
+ bEven = !bEven;
172
+ }
173
+
174
+ return (nCheck % 10) !== 0;
175
+ }, 'Please enter a valid credit card number');
176
+
177
+ var dependentDefaults = {
178
+ //"from": "IDREF || UniqueNAMEREF", //required property: element
179
+ "prop": "value", //default: value||disabled (last if "from-prop" is checked)
180
+ "from-prop": "value", //default: value||checked (last if element checkbox or radio)
181
+ "toggle": false
182
+ };
183
+
184
+ var getGroupElements = function(elem) {
185
+ return $(elem.form[elem.name]).filter('[type="radio"]');
186
+ };
187
+ $.webshims.ready('form-core', function(){
188
+ if($.webshims.modules){
189
+ getGroupElements = $.webshims.modules["form-core"].getGroupElements || getGroupElements;
190
+ }
191
+ });
192
+
193
+ addCustomValidityRule('dependent', function(elem, val){
194
+
195
+ if( !elem.getAttribute('data-dependent-validation') ){return;}
196
+
197
+ var data = $(elem).data('dependentValidation');
198
+ var specialVal;
199
+ if(!data){return;}
200
+ var depFn = function(e){
201
+ var val = $.prop(data.masterElement, data["from-prop"]);
202
+ if(specialVal){
203
+ val = $.inArray(val, specialVal) !== -1;
204
+ }
205
+ if(data.toggle){
206
+ val = !val;
207
+ }
208
+ $.prop( elem, data.prop, val);
209
+ };
210
+
211
+ if(!data._init || !data.masterElement){
212
+
213
+ if(typeof data == 'string'){
214
+ data = {"from": data};
215
+ }
216
+
217
+
218
+ data.masterElement = document.getElementById(data["from"]) || (document.getElementsByName(data["from"] || [])[0]);
219
+
220
+ if (!data.masterElement || !data.masterElement.form) {return;}
221
+
222
+ if(/radio|checkbox/i.test(data.masterElement.type)){
223
+ if(!data["from-prop"]){
224
+ data["from-prop"] = 'checked';
225
+ }
226
+ if(!data.prop && data["from-prop"] == 'checked'){
227
+ data.prop = 'disabled';
228
+ }
229
+ } else if(!data["from-prop"]){
230
+ data["from-prop"] = 'value';
231
+ }
232
+
233
+ if(data["from-prop"].indexOf('value:') === 0){
234
+ specialVal = data["from-prop"].replace('value:', '').split('||');
235
+ data["from-prop"] = 'value';
236
+
237
+ }
238
+
239
+ data = $.data(elem, 'dependentValidation', $.extend({_init: true}, dependentDefaults, data));
240
+
241
+ if(data.prop !== "value" || specialVal){
242
+ $(data.masterElement.type === 'radio' && getGroupElements(data.masterElement) || data.masterElement).bind('change', depFn);
243
+ } else {
244
+ $(data.masterElement).bind('change', function(){
245
+ $.webshims.refreshCustomValidityRules(elem);
246
+ if($(elem).is('.form-ui-invalid, .form-ui-valid')){
247
+ $(elem).trigger('refreshvalidityui');
248
+ }
249
+ });
250
+ }
251
+ }
252
+
253
+ if(data.prop == "value" && !specialVal){
254
+ return ($.prop(data.masterElement, 'value') != val);
255
+ } else {
256
+ depFn();
257
+ return '';
258
+ }
259
+
260
+ }, 'The value of this field does not repeat the value of the other field');
261
+ })(jQuery, window, document);
@@ -0,0 +1,535 @@
1
+ /* Modernizr 2.6.2 (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-load
3
+ */
4
+ ;
5
+
6
+
7
+
8
+ window.Modernizr = (function( window, document, undefined ) {
9
+
10
+ var version = '2.6.2',
11
+
12
+ Modernizr = {},
13
+
14
+ enableClasses = true,
15
+
16
+ docElement = document.documentElement,
17
+
18
+ mod = 'modernizr',
19
+ modElem = document.createElement(mod),
20
+ mStyle = modElem.style,
21
+
22
+ inputElem = document.createElement('input') ,
23
+
24
+ smile = ':)',
25
+
26
+ toString = {}.toString,
27
+
28
+ prefixes = ' -webkit- -moz- -o- -ms- '.split(' '),
29
+
30
+
31
+
32
+ omPrefixes = 'Webkit Moz O ms',
33
+
34
+ cssomPrefixes = omPrefixes.split(' '),
35
+
36
+ domPrefixes = omPrefixes.toLowerCase().split(' '),
37
+
38
+
39
+ tests = {},
40
+ inputs = {},
41
+ attrs = {},
42
+
43
+ classes = [],
44
+
45
+ slice = classes.slice,
46
+
47
+ featureName,
48
+
49
+
50
+
51
+ _hasOwnProperty = ({}).hasOwnProperty, hasOwnProp;
52
+
53
+ if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) {
54
+ hasOwnProp = function (object, property) {
55
+ return _hasOwnProperty.call(object, property);
56
+ };
57
+ }
58
+ else {
59
+ hasOwnProp = function (object, property) {
60
+ return ((property in object) && is(object.constructor.prototype[property], 'undefined'));
61
+ };
62
+ }
63
+
64
+
65
+ if (!Function.prototype.bind) {
66
+ Function.prototype.bind = function bind(that) {
67
+
68
+ var target = this;
69
+
70
+ if (typeof target != "function") {
71
+ throw new TypeError();
72
+ }
73
+
74
+ var args = slice.call(arguments, 1),
75
+ bound = function () {
76
+
77
+ if (this instanceof bound) {
78
+
79
+ var F = function(){};
80
+ F.prototype = target.prototype;
81
+ var self = new F();
82
+
83
+ var result = target.apply(
84
+ self,
85
+ args.concat(slice.call(arguments))
86
+ );
87
+ if (Object(result) === result) {
88
+ return result;
89
+ }
90
+ return self;
91
+
92
+ } else {
93
+
94
+ return target.apply(
95
+ that,
96
+ args.concat(slice.call(arguments))
97
+ );
98
+
99
+ }
100
+
101
+ };
102
+
103
+ return bound;
104
+ };
105
+ }
106
+
107
+ function setCss( str ) {
108
+ mStyle.cssText = str;
109
+ }
110
+
111
+ function setCssAll( str1, str2 ) {
112
+ return setCss(prefixes.join(str1 + ';') + ( str2 || '' ));
113
+ }
114
+
115
+ function is( obj, type ) {
116
+ return typeof obj === type;
117
+ }
118
+
119
+ function contains( str, substr ) {
120
+ return !!~('' + str).indexOf(substr);
121
+ }
122
+
123
+ function testProps( props, prefixed ) {
124
+ for ( var i in props ) {
125
+ var prop = props[i];
126
+ if ( !contains(prop, "-") && mStyle[prop] !== undefined ) {
127
+ return prefixed == 'pfx' ? prop : true;
128
+ }
129
+ }
130
+ return false;
131
+ }
132
+
133
+ function testDOMProps( props, obj, elem ) {
134
+ for ( var i in props ) {
135
+ var item = obj[props[i]];
136
+ if ( item !== undefined) {
137
+
138
+ if (elem === false) return props[i];
139
+
140
+ if (is(item, 'function')){
141
+ return item.bind(elem || obj);
142
+ }
143
+
144
+ return item;
145
+ }
146
+ }
147
+ return false;
148
+ }
149
+
150
+ function testPropsAll( prop, prefixed, elem ) {
151
+
152
+ var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),
153
+ props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' ');
154
+
155
+ if(is(prefixed, "string") || is(prefixed, "undefined")) {
156
+ return testProps(props, prefixed);
157
+
158
+ } else {
159
+ props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' ');
160
+ return testDOMProps(props, prefixed, elem);
161
+ }
162
+ }
163
+
164
+
165
+
166
+ tests['canvas'] = function() {
167
+ var elem = document.createElement('canvas');
168
+ return !!(elem.getContext && elem.getContext('2d'));
169
+ }; tests['geolocation'] = function() {
170
+ return 'geolocation' in navigator;
171
+ };
172
+
173
+
174
+ tests['video'] = function() {
175
+ var elem = document.createElement('video'),
176
+ bool = false;
177
+
178
+ try {
179
+ if ( bool = !!elem.canPlayType ) {
180
+ bool = new Boolean(bool);
181
+ bool.ogg = elem.canPlayType('video/ogg; codecs="theora"') .replace(/^no$/,'');
182
+
183
+ bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"') .replace(/^no$/,'');
184
+
185
+ bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,'');
186
+ }
187
+
188
+ } catch(e) { }
189
+
190
+ return bool;
191
+ };
192
+
193
+ tests['audio'] = function() {
194
+ var elem = document.createElement('audio'),
195
+ bool = false;
196
+
197
+ try {
198
+ if ( bool = !!elem.canPlayType ) {
199
+ bool = new Boolean(bool);
200
+ bool.ogg = elem.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,'');
201
+ bool.mp3 = elem.canPlayType('audio/mpeg;') .replace(/^no$/,'');
202
+
203
+ bool.wav = elem.canPlayType('audio/wav; codecs="1"') .replace(/^no$/,'');
204
+ bool.m4a = ( elem.canPlayType('audio/x-m4a;') ||
205
+ elem.canPlayType('audio/aac;')) .replace(/^no$/,'');
206
+ }
207
+ } catch(e) { }
208
+
209
+ 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() {
234
+ Modernizr['input'] = (function( props ) {
235
+ for ( var i = 0, len = props.length; i < len; i++ ) {
236
+ attrs[ props[i] ] = !!(props[i] in inputElem);
237
+ }
238
+ if (attrs.list){
239
+ attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement);
240
+ }
241
+ return attrs;
242
+ })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));
243
+ Modernizr['inputtypes'] = (function(props) {
244
+
245
+ for ( var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++ ) {
246
+
247
+ inputElem.setAttribute('type', inputElemType = props[i]);
248
+ bool = inputElem.type !== 'text';
249
+
250
+ if ( bool ) {
251
+
252
+ inputElem.value = smile;
253
+ inputElem.style.cssText = 'position:absolute;visibility:hidden;';
254
+
255
+ if ( /^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined ) {
256
+
257
+ docElement.appendChild(inputElem);
258
+ defaultView = document.defaultView;
259
+
260
+ bool = defaultView.getComputedStyle &&
261
+ defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' &&
262
+ (inputElem.offsetHeight !== 0);
263
+
264
+ docElement.removeChild(inputElem);
265
+
266
+ } else if ( /^(search|tel)$/.test(inputElemType) ){
267
+ } else if ( /^(url|email)$/.test(inputElemType) ) {
268
+ bool = inputElem.checkValidity && inputElem.checkValidity() === false;
269
+
270
+ } else {
271
+ bool = inputElem.value != smile;
272
+ }
273
+ }
274
+
275
+ inputs[ props[i] ] = !!bool;
276
+ }
277
+ return inputs;
278
+ })('search tel url email datetime date month week time datetime-local number range color'.split(' '));
279
+ }
280
+ for ( var feature in tests ) {
281
+ if ( hasOwnProp(tests, feature) ) {
282
+ featureName = feature.toLowerCase();
283
+ Modernizr[featureName] = tests[feature]();
284
+
285
+ classes.push((Modernizr[featureName] ? '' : 'no-') + featureName);
286
+ }
287
+ }
288
+
289
+ Modernizr.input || webforms();
290
+
291
+
292
+ Modernizr.addTest = function ( feature, test ) {
293
+ if ( typeof feature == 'object' ) {
294
+ for ( var key in feature ) {
295
+ if ( hasOwnProp( feature, key ) ) {
296
+ Modernizr.addTest( key, feature[ key ] );
297
+ }
298
+ }
299
+ } else {
300
+
301
+ feature = feature.toLowerCase();
302
+
303
+ if ( Modernizr[feature] !== undefined ) {
304
+ return Modernizr;
305
+ }
306
+
307
+ test = typeof test == 'function' ? test() : test;
308
+
309
+ if (typeof enableClasses !== "undefined" && enableClasses) {
310
+ docElement.className += ' ' + (test ? '' : 'no-') + feature;
311
+ }
312
+ Modernizr[feature] = test;
313
+
314
+ }
315
+
316
+ return Modernizr;
317
+ };
318
+
319
+
320
+ setCss('');
321
+ modElem = inputElem = null;
322
+
323
+ ;(function(window, document) {
324
+ var options = window.html5 || {};
325
+
326
+ var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
327
+
328
+ var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
329
+
330
+ var supportsHtml5Styles;
331
+
332
+ var expando = '_html5shiv';
333
+
334
+ var expanID = 0;
335
+
336
+ var expandoData = {};
337
+
338
+ var supportsUnknownElements;
339
+
340
+ (function() {
341
+ try {
342
+ var a = document.createElement('a');
343
+ a.innerHTML = '<xyz></xyz>';
344
+ supportsHtml5Styles = ('hidden' in a);
345
+
346
+ supportsUnknownElements = a.childNodes.length == 1 || (function() {
347
+ (document.createElement)('a');
348
+ var frag = document.createDocumentFragment();
349
+ return (
350
+ typeof frag.cloneNode == 'undefined' ||
351
+ typeof frag.createDocumentFragment == 'undefined' ||
352
+ typeof frag.createElement == 'undefined'
353
+ );
354
+ }());
355
+ } catch(e) {
356
+ supportsHtml5Styles = true;
357
+ supportsUnknownElements = true;
358
+ }
359
+
360
+ }()); function addStyleSheet(ownerDocument, cssText) {
361
+ var p = ownerDocument.createElement('p'),
362
+ parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
363
+
364
+ p.innerHTML = 'x<style>' + cssText + '</style>';
365
+ return parent.insertBefore(p.lastChild, parent.firstChild);
366
+ }
367
+
368
+ function getElements() {
369
+ var elements = html5.elements;
370
+ return typeof elements == 'string' ? elements.split(' ') : elements;
371
+ }
372
+
373
+ function getExpandoData(ownerDocument) {
374
+ var data = expandoData[ownerDocument[expando]];
375
+ if (!data) {
376
+ data = {};
377
+ expanID++;
378
+ ownerDocument[expando] = expanID;
379
+ expandoData[expanID] = data;
380
+ }
381
+ return data;
382
+ }
383
+
384
+ function createElement(nodeName, ownerDocument, data){
385
+ if (!ownerDocument) {
386
+ ownerDocument = document;
387
+ }
388
+ if(supportsUnknownElements){
389
+ return ownerDocument.createElement(nodeName);
390
+ }
391
+ if (!data) {
392
+ data = getExpandoData(ownerDocument);
393
+ }
394
+ var node;
395
+
396
+ if (data.cache[nodeName]) {
397
+ node = data.cache[nodeName].cloneNode();
398
+ } else if (saveClones.test(nodeName)) {
399
+ node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
400
+ } else {
401
+ node = data.createElem(nodeName);
402
+ }
403
+
404
+ return node.canHaveChildren && !reSkip.test(nodeName) ? data.frag.appendChild(node) : node;
405
+ }
406
+
407
+ function createDocumentFragment(ownerDocument, data){
408
+ if (!ownerDocument) {
409
+ ownerDocument = document;
410
+ }
411
+ if(supportsUnknownElements){
412
+ return ownerDocument.createDocumentFragment();
413
+ }
414
+ data = data || getExpandoData(ownerDocument);
415
+ var clone = data.frag.cloneNode(),
416
+ i = 0,
417
+ elems = getElements(),
418
+ l = elems.length;
419
+ for(;i<l;i++){
420
+ clone.createElement(elems[i]);
421
+ }
422
+ return clone;
423
+ }
424
+
425
+ function shivMethods(ownerDocument, data) {
426
+ if (!data.cache) {
427
+ data.cache = {};
428
+ data.createElem = ownerDocument.createElement;
429
+ data.createFrag = ownerDocument.createDocumentFragment;
430
+ data.frag = data.createFrag();
431
+ }
432
+
433
+
434
+ ownerDocument.createElement = function(nodeName) {
435
+ if (!html5.shivMethods) {
436
+ return data.createElem(nodeName);
437
+ }
438
+ return createElement(nodeName, ownerDocument, data);
439
+ };
440
+
441
+ ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
442
+ 'var n=f.cloneNode(),c=n.createElement;' +
443
+ 'h.shivMethods&&(' +
444
+ getElements().join().replace(/\w+/g, function(nodeName) {
445
+ data.createElem(nodeName);
446
+ data.frag.createElement(nodeName);
447
+ return 'c("' + nodeName + '")';
448
+ }) +
449
+ ');return n}'
450
+ )(html5, data.frag);
451
+ } function shivDocument(ownerDocument) {
452
+ if (!ownerDocument) {
453
+ ownerDocument = document;
454
+ }
455
+ var data = getExpandoData(ownerDocument);
456
+
457
+ if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
458
+ data.hasCSS = !!addStyleSheet(ownerDocument,
459
+ 'article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}' +
460
+ 'mark{background:#FF0;color:#000}'
461
+ );
462
+ }
463
+ if (!supportsUnknownElements) {
464
+ shivMethods(ownerDocument, data);
465
+ }
466
+ return ownerDocument;
467
+ } var html5 = {
468
+
469
+ 'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video',
470
+
471
+ 'shivCSS': (options.shivCSS !== false),
472
+
473
+ 'supportsUnknownElements': supportsUnknownElements,
474
+
475
+ 'shivMethods': (options.shivMethods !== false),
476
+
477
+ 'type': 'default',
478
+
479
+ 'shivDocument': shivDocument,
480
+
481
+ createElement: createElement,
482
+
483
+ createDocumentFragment: createDocumentFragment
484
+ }; window.html5 = html5;
485
+
486
+ shivDocument(document);
487
+
488
+ }(this, document));
489
+
490
+ Modernizr._version = version;
491
+
492
+ Modernizr._prefixes = prefixes;
493
+ Modernizr._domPrefixes = domPrefixes;
494
+ Modernizr._cssomPrefixes = cssomPrefixes;
495
+
496
+
497
+
498
+ Modernizr.testProp = function(prop){
499
+ return testProps([prop]);
500
+ };
501
+
502
+ Modernizr.testAllProps = testPropsAll;
503
+
504
+
505
+ Modernizr.prefixed = function(prop, obj, elem){
506
+ if(!obj) {
507
+ return testPropsAll(prop, 'pfx');
508
+ } else {
509
+ return testPropsAll(prop, obj, elem);
510
+ }
511
+ };
512
+
513
+
514
+ docElement.className = docElement.className.replace(/(^|\s)no-js(\s|$)/, '$1$2') +
515
+
516
+ (enableClasses ? ' js ' + classes.join(' ') : '');
517
+
518
+ return Modernizr;
519
+
520
+ })(this, this.document);
521
+ /*yepnope1.5.4|WTFPL*/
522
+ (function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().split("?").shift()?"c":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}})(this,document);
523
+ Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0));};
524
+ // Track element + Timed Text Track API
525
+ // http://www.w3.org/TR/html5/video.html#the-track-element
526
+ // http://www.w3.org/TR/html5/media-elements.html#text-track-api
527
+ //
528
+ // While IE10 has implemented the track element, IE10 does not expose the underlying APIs to create timed text tracks by JS (really sad)
529
+ // By Addy Osmani
530
+ Modernizr.addTest({
531
+ texttrackapi: (typeof (document.createElement('video').addTextTrack) === 'function'),
532
+ // a more strict test for track including UI support: document.createElement('track').kind === 'subtitles'
533
+ track: ('kind' in document.createElement('track'))
534
+ });
535
+ ;