webshims-rails 0.3 → 0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
+ ;