webshims-rails 0.4.3 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (124) hide show
  1. data/lib/webshims-rails/version.rb +2 -2
  2. data/vendor/assets/javascripts/webshims/extras/custom-validity.js +261 -261
  3. data/vendor/assets/javascripts/webshims/extras/modernizr-custom.js +534 -534
  4. data/vendor/assets/javascripts/webshims/extras/mousepress.js +60 -60
  5. data/vendor/assets/javascripts/webshims/minified/extras/custom-validity.js +1 -1
  6. data/vendor/assets/javascripts/webshims/minified/polyfiller.js +24 -24
  7. data/vendor/assets/javascripts/webshims/minified/shims/FlashCanvasPro/README +82 -82
  8. data/vendor/assets/javascripts/webshims/minified/shims/combos/1.js +35 -34
  9. data/vendor/assets/javascripts/webshims/minified/shims/combos/10.js +79 -82
  10. data/vendor/assets/javascripts/webshims/minified/shims/combos/11.js +45 -44
  11. data/vendor/assets/javascripts/webshims/minified/shims/combos/12.js +43 -42
  12. data/vendor/assets/javascripts/webshims/minified/shims/combos/13.js +28 -27
  13. data/vendor/assets/javascripts/webshims/minified/shims/combos/15.js +4 -4
  14. data/vendor/assets/javascripts/webshims/minified/shims/combos/16.js +57 -59
  15. data/vendor/assets/javascripts/webshims/minified/shims/combos/17.js +64 -66
  16. data/vendor/assets/javascripts/webshims/minified/shims/combos/18.js +53 -54
  17. data/vendor/assets/javascripts/webshims/minified/shims/combos/19.js +64 -66
  18. data/vendor/assets/javascripts/webshims/minified/shims/combos/2.js +72 -73
  19. data/vendor/assets/javascripts/webshims/minified/shims/combos/20.js +42 -46
  20. data/vendor/assets/javascripts/webshims/minified/shims/combos/21.js +52 -50
  21. data/vendor/assets/javascripts/webshims/minified/shims/combos/22.js +55 -59
  22. data/vendor/assets/javascripts/webshims/minified/shims/combos/23.js +66 -64
  23. data/vendor/assets/javascripts/webshims/minified/shims/combos/24.js +80 -82
  24. data/vendor/assets/javascripts/webshims/minified/shims/combos/25.js +60 -59
  25. data/vendor/assets/javascripts/webshims/minified/shims/combos/26.js +79 -81
  26. data/vendor/assets/javascripts/webshims/minified/shims/combos/27.js +101 -104
  27. data/vendor/assets/javascripts/webshims/minified/shims/combos/3.js +94 -95
  28. data/vendor/assets/javascripts/webshims/minified/shims/combos/4.js +26 -29
  29. data/vendor/assets/javascripts/webshims/minified/shims/combos/5.js +33 -36
  30. data/vendor/assets/javascripts/webshims/minified/shims/combos/59.js +51 -54
  31. data/vendor/assets/javascripts/webshims/minified/shims/combos/6.js +27 -28
  32. data/vendor/assets/javascripts/webshims/minified/shims/combos/7.js +27 -28
  33. data/vendor/assets/javascripts/webshims/minified/shims/combos/8.js +39 -38
  34. data/vendor/assets/javascripts/webshims/minified/shims/combos/9.js +65 -68
  35. data/vendor/assets/javascripts/webshims/minified/shims/details.js +4 -4
  36. data/vendor/assets/javascripts/webshims/minified/shims/dom-extend.js +23 -22
  37. data/vendor/assets/javascripts/webshims/minified/shims/form-core.js +19 -22
  38. data/vendor/assets/javascripts/webshims/minified/shims/form-datalist.js +14 -14
  39. data/vendor/assets/javascripts/webshims/minified/shims/form-number-date-api.js +9 -9
  40. data/vendor/assets/javascripts/webshims/minified/shims/form-number-date-ui.js +18 -19
  41. data/vendor/assets/javascripts/webshims/minified/shims/form-shim-extend.js +45 -43
  42. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-de.txt +33 -33
  43. data/vendor/assets/javascripts/webshims/minified/shims/i18n/errormessages-en.txt +34 -34
  44. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-core.js +12 -12
  45. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-jaris.js +23 -0
  46. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-native-fix.js +1 -1
  47. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-swf.js +26 -30
  48. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-yt.js +3 -3
  49. data/vendor/assets/javascripts/webshims/minified/shims/styles/shim.css +689 -686
  50. data/vendor/assets/javascripts/webshims/minified/shims/swf/JarisFLVPlayer.swf +0 -0
  51. data/vendor/assets/javascripts/webshims/minified/shims/track-ui.js +9 -9
  52. data/vendor/assets/javascripts/webshims/minified/shims/track.js +21 -21
  53. data/vendor/assets/javascripts/webshims/polyfiller.js +1191 -1175
  54. data/vendor/assets/javascripts/webshims/shims/combos/1.js +1754 -1714
  55. data/vendor/assets/javascripts/webshims/shims/combos/10.js +3247 -3320
  56. data/vendor/assets/javascripts/webshims/shims/combos/11.js +1633 -1588
  57. data/vendor/assets/javascripts/webshims/shims/combos/12.js +1636 -1591
  58. data/vendor/assets/javascripts/webshims/shims/combos/13.js +1100 -1058
  59. data/vendor/assets/javascripts/webshims/shims/combos/14.js +476 -476
  60. data/vendor/assets/javascripts/webshims/shims/combos/15.js +316 -314
  61. data/vendor/assets/javascripts/webshims/shims/combos/16.js +2094 -2104
  62. data/vendor/assets/javascripts/webshims/shims/combos/17.js +2258 -2267
  63. data/vendor/assets/javascripts/webshims/shims/combos/18.js +1380 -1364
  64. data/vendor/assets/javascripts/webshims/shims/combos/19.js +2239 -2247
  65. data/vendor/assets/javascripts/webshims/shims/combos/2.js +2339 -2294
  66. data/vendor/assets/javascripts/webshims/shims/combos/20.js +1493 -1606
  67. data/vendor/assets/javascripts/webshims/shims/combos/21.js +1733 -1635
  68. data/vendor/assets/javascripts/webshims/shims/combos/22.js +2295 -2408
  69. data/vendor/assets/javascripts/webshims/shims/combos/23.js +2269 -2168
  70. data/vendor/assets/javascripts/webshims/shims/combos/24.js +2775 -2780
  71. data/vendor/assets/javascripts/webshims/shims/combos/25.js +1505 -1456
  72. data/vendor/assets/javascripts/webshims/shims/combos/26.js +2111 -2115
  73. data/vendor/assets/javascripts/webshims/shims/combos/27.js +3264 -3331
  74. data/vendor/assets/javascripts/webshims/shims/combos/3.js +3020 -2970
  75. data/vendor/assets/javascripts/webshims/shims/combos/4.js +770 -822
  76. data/vendor/assets/javascripts/webshims/shims/combos/5.js +1025 -1077
  77. data/vendor/assets/javascripts/webshims/shims/combos/59.js +1706 -1753
  78. data/vendor/assets/javascripts/webshims/shims/combos/6.js +444 -433
  79. data/vendor/assets/javascripts/webshims/shims/combos/7.js +699 -688
  80. data/vendor/assets/javascripts/webshims/shims/combos/8.js +1488 -1445
  81. data/vendor/assets/javascripts/webshims/shims/combos/9.js +2445 -2518
  82. data/vendor/assets/javascripts/webshims/shims/details.js +148 -146
  83. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +952 -912
  84. data/vendor/assets/javascripts/webshims/shims/es5.js +802 -802
  85. data/vendor/assets/javascripts/webshims/shims/excanvas.js +924 -924
  86. data/vendor/assets/javascripts/webshims/shims/form-core.js +606 -659
  87. data/vendor/assets/javascripts/webshims/shims/form-datalist.js +681 -676
  88. data/vendor/assets/javascripts/webshims/shims/form-message.js +164 -163
  89. data/vendor/assets/javascripts/webshims/shims/form-native-extend.js +255 -255
  90. data/vendor/assets/javascripts/webshims/shims/form-number-date-api.js +383 -383
  91. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +61 -50
  92. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +1569 -1472
  93. data/vendor/assets/javascripts/webshims/shims/geolocation.js +168 -168
  94. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-ar.js +32 -32
  95. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-ch-ZN.js +32 -32
  96. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-de.txt +33 -33
  97. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-el.js +32 -32
  98. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-en.txt +34 -34
  99. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-es.js +31 -31
  100. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-fr.js +32 -32
  101. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-he.js +32 -32
  102. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-hi.js +32 -32
  103. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-hu.js +32 -32
  104. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-it.js +32 -32
  105. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-ja.js +32 -32
  106. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-nl.js +32 -32
  107. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-pt-PT.js +32 -32
  108. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-ru.js +31 -31
  109. data/vendor/assets/javascripts/webshims/shims/i18n/errormessages-sv.js +32 -32
  110. data/vendor/assets/javascripts/webshims/shims/json-storage.js +308 -308
  111. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +536 -533
  112. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +861 -0
  113. data/vendor/assets/javascripts/webshims/shims/mediaelement-native-fix.js +98 -98
  114. data/vendor/assets/javascripts/webshims/shims/mediaelement-swf.js +957 -1073
  115. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +543 -543
  116. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +689 -686
  117. data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  118. data/vendor/assets/javascripts/webshims/shims/track-ui.js +9 -8
  119. data/vendor/assets/javascripts/webshims/shims/track.js +17 -11
  120. metadata +6 -6
  121. data/vendor/assets/javascripts/webshims/minified/shims/form-native-fix.js +0 -7
  122. data/vendor/assets/javascripts/webshims/shims/FlashCanvas/README +0 -62
  123. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/README +0 -82
  124. data/vendor/assets/javascripts/webshims/shims/form-native-fix.js +0 -261
@@ -1,314 +1,316 @@
1
- jQuery.webshims.register('details', function($, webshims, window, doc, undefined, options){
2
- var isInterActiveSummary = function(summary){
3
- var details = $(summary).parent('details');
4
- if(details[0] && details.children(':first').get(0) === summary){
5
- return details;
6
- }
7
- };
8
-
9
- var bindDetailsSummary = function(summary, details){
10
- summary = $(summary);
11
- details = $(details);
12
- var oldSummary = $.data(details[0], 'summaryElement');
13
- $.data(summary[0], 'detailsElement', details);
14
- if(!oldSummary || summary[0] !== oldSummary[0]){
15
- if(oldSummary){
16
- if(oldSummary.hasClass('fallback-summary')){
17
- oldSummary.remove();
18
- } else {
19
- oldSummary
20
- .unbind('.summaryPolyfill')
21
- .removeData('detailsElement')
22
- .removeAttr('role')
23
- .removeAttr('tabindex')
24
- .removeAttr('aria-expanded')
25
- .removeClass('summary-button')
26
- .find('span.details-open-indicator')
27
- .remove()
28
- ;
29
- }
30
- }
31
- $.data(details[0], 'summaryElement', summary);
32
- details.prop('open', details.prop('open'));
33
- }
34
- };
35
- var getSummary = function(details){
36
- var summary = $.data(details, 'summaryElement');
37
- if(!summary){
38
- summary = $('> summary:first-child', details);
39
- if(!summary[0]){
40
- $(details).prependPolyfill('<summary class="fallback-summary">'+ options.text +'</summary>');
41
- summary = $.data(details, 'summaryElement');
42
- } else {
43
- bindDetailsSummary(summary, details);
44
- }
45
- }
46
- return summary;
47
- };
48
-
49
- // var isOriginalPrevented = function(e){
50
- // var src = e.originalEvent;
51
- // if(!src){return e.isDefaultPrevented();}
52
- //
53
- // return src.defaultPrevented || src.returnValue === false ||
54
- // src.getPreventDefault && src.getPreventDefault();
55
- // };
56
-
57
- webshims.createElement('summary', function(){
58
- var details = isInterActiveSummary(this);
59
- if(!details || $.data(this, 'detailsElement')){return;}
60
- var timer;
61
- var stopNativeClickTest;
62
- var tabindex = $.attr(this, 'tabIndex') || '0';
63
- bindDetailsSummary(this, details);
64
- $(this)
65
- .bind('focus.summaryPolyfill', function(){
66
- $(this).addClass('summary-has-focus');
67
- })
68
- .bind('blur.summaryPolyfill', function(){
69
- $(this).removeClass('summary-has-focus');
70
- })
71
- .bind('mouseenter.summaryPolyfill', function(){
72
- $(this).addClass('summary-has-hover');
73
- })
74
- .bind('mouseleave.summaryPolyfill', function(){
75
- $(this).removeClass('summary-has-hover');
76
- })
77
- .bind('click.summaryPolyfill', function(e){
78
- var details = isInterActiveSummary(this);
79
- if(details){
80
- if(!stopNativeClickTest && e.originalEvent){
81
- stopNativeClickTest = true;
82
- e.stopImmediatePropagation();
83
- e.preventDefault();
84
- $(this).trigger('click');
85
- stopNativeClickTest = false;
86
- return false;
87
- } else {
88
- clearTimeout(timer);
89
-
90
- timer = setTimeout(function(){
91
- if(!e.isDefaultPrevented()){
92
- details.prop('open', !details.prop('open'));
93
- }
94
- }, 0);
95
- }
96
- }
97
- })
98
- .bind('keydown.summaryPolyfill', function(e){
99
- if( (e.keyCode == 13 || e.keyCode == 32) && !e.isDefaultPrevented()){
100
- stopNativeClickTest = true;
101
- e.preventDefault();
102
- $(this).trigger('click');
103
- stopNativeClickTest = false;
104
- }
105
- })
106
- .attr({tabindex: tabindex, role: 'button'})
107
- .prepend('<span class="details-open-indicator" />')
108
- ;
109
- webshims.moveToFirstEvent(this, 'click');
110
- });
111
-
112
- var initDetails;
113
- webshims.defineNodeNamesBooleanProperty('details', 'open', function(val){
114
- var summary = $($.data(this, 'summaryElement'));
115
- if(!summary){return;}
116
- var action = (val) ? 'removeClass' : 'addClass';
117
- var details = $(this);
118
- if (!initDetails && options.animate){
119
- details.stop().css({width: '', height: ''});
120
- var start = {
121
- width: details.width(),
122
- height: details.height()
123
- };
124
- }
125
- summary.attr('aria-expanded', ''+val);
126
- details[action]('closed-details-summary').children().not(summary[0])[action]('closed-details-child');
127
- if(!initDetails && options.animate){
128
- var end = {
129
- width: details.width(),
130
- height: details.height()
131
- };
132
- details.css(start).animate(end, {
133
- complete: function(){
134
- $(this).css({width: '', height: ''});
135
- }
136
- });
137
- }
138
-
139
- });
140
- webshims.createElement('details', function(){
141
- initDetails = true;
142
- var summary = getSummary(this);
143
- $.prop(this, 'open', $.prop(this, 'open'));
144
- initDetails = false;
145
- });
146
- });
147
- (function($){
148
- if(navigator.geolocation){return;}
149
- var domWrite = function(){
150
- setTimeout(function(){
151
- throw('document.write is overwritten by geolocation shim. This method is incompatible with this plugin');
152
- }, 1);
153
- },
154
- id = 0
155
- ;
156
- var geoOpts = $.webshims.cfg.geolocation.options || {};
157
- navigator.geolocation = (function(){
158
- var pos;
159
- var api = {
160
- getCurrentPosition: function(success, error, opts){
161
- var locationAPIs = 2,
162
- errorTimer,
163
- googleTimer,
164
- calledEnd,
165
- endCallback = function(){
166
- if(calledEnd){return;}
167
- if(pos){
168
- calledEnd = true;
169
- success($.extend({timestamp: new Date().getTime()}, pos));
170
- resetCallback();
171
- if(window.JSON && window.sessionStorage){
172
- try{
173
- sessionStorage.setItem('storedGeolocationData654321', JSON.stringify(pos));
174
- } catch(e){}
175
- }
176
- } else if(error && !locationAPIs) {
177
- calledEnd = true;
178
- resetCallback();
179
- error({ code: 2, message: "POSITION_UNAVAILABLE"});
180
- }
181
- },
182
- googleCallback = function(){
183
- locationAPIs--;
184
- getGoogleCoords();
185
- endCallback();
186
- },
187
- resetCallback = function(){
188
- $(document).unbind('google-loader', resetCallback);
189
- clearTimeout(googleTimer);
190
- clearTimeout(errorTimer);
191
- },
192
- getGoogleCoords = function(){
193
- if(pos || !window.google || !google.loader || !google.loader.ClientLocation){return false;}
194
- var cl = google.loader.ClientLocation;
195
- pos = {
196
- coords: {
197
- latitude: cl.latitude,
198
- longitude: cl.longitude,
199
- altitude: null,
200
- accuracy: 43000,
201
- altitudeAccuracy: null,
202
- heading: parseInt('NaN', 10),
203
- velocity: null
204
- },
205
- //extension similiar to FF implementation
206
- address: $.extend({streetNumber: '', street: '', premises: '', county: '', postalCode: ''}, cl.address)
207
- };
208
- return true;
209
- },
210
- getInitCoords = function(){
211
- if(pos){return;}
212
- getGoogleCoords();
213
- if(pos || !window.JSON || !window.sessionStorage){return;}
214
- try{
215
- pos = sessionStorage.getItem('storedGeolocationData654321');
216
- pos = (pos) ? JSON.parse(pos) : false;
217
- if(!pos.coords){pos = false;}
218
- } catch(e){
219
- pos = false;
220
- }
221
- }
222
- ;
223
-
224
- getInitCoords();
225
-
226
- if(!pos){
227
- if(geoOpts.confirmText && !confirm(geoOpts.confirmText.replace('{location}', location.hostname))){
228
- if(error){
229
- error({ code: 1, message: "PERMISSION_DENIED"});
230
- }
231
- return;
232
- }
233
- $.ajax({
234
- url: 'http://freegeoip.net/json/',
235
- dataType: 'jsonp',
236
- cache: true,
237
- jsonp: 'callback',
238
- success: function(data){
239
- locationAPIs--;
240
- if(!data){return;}
241
- pos = pos || {
242
- coords: {
243
- latitude: data.latitude,
244
- longitude: data.longitude,
245
- altitude: null,
246
- accuracy: 43000,
247
- altitudeAccuracy: null,
248
- heading: parseInt('NaN', 10),
249
- velocity: null
250
- },
251
- //extension similiar to FF implementation
252
- address: {
253
- city: data.city,
254
- country: data.country_name,
255
- countryCode: data.country_code,
256
- county: "",
257
- postalCode: data.zipcode,
258
- premises: "",
259
- region: data.region_name,
260
- street: "",
261
- streetNumber: ""
262
- }
263
- };
264
- endCallback();
265
- },
266
- error: function(){
267
- locationAPIs--;
268
- endCallback();
269
- }
270
- });
271
- clearTimeout(googleTimer);
272
- if (!window.google || !window.google.loader) {
273
- googleTimer = setTimeout(function(){
274
- //destroys document.write!!!
275
- if (geoOpts.destroyWrite) {
276
- document.write = domWrite;
277
- document.writeln = domWrite;
278
- }
279
- $(document).one('google-loader', googleCallback);
280
- $.webshims.loader.loadScript('http://www.google.com/jsapi', false, 'google-loader');
281
- }, 800);
282
- } else {
283
- locationAPIs--;
284
- }
285
- } else {
286
- setTimeout(endCallback, 1);
287
- return;
288
- }
289
- if(opts && opts.timeout){
290
- errorTimer = setTimeout(function(){
291
- resetCallback();
292
- if(error) {
293
- error({ code: 3, message: "TIMEOUT"});
294
- }
295
- }, opts.timeout);
296
- } else {
297
- errorTimer = setTimeout(function(){
298
- locationAPIs = 0;
299
- endCallback();
300
- }, 10000);
301
- }
302
- },
303
- clearWatch: $.noop
304
- };
305
- api.watchPosition = function(a, b, c){
306
- api.getCurrentPosition(a, b, c);
307
- id++;
308
- return id;
309
- };
310
- return api;
311
- })();
312
-
313
- $.webshims.isReady('geolocation', true);
314
- })(jQuery);
1
+ jQuery.webshims.register('details', function($, webshims, window, doc, undefined, options){
2
+ var isInterActiveSummary = function(summary){
3
+ var details = $(summary).parent('details');
4
+ if(details[0] && details.children(':first').get(0) === summary){
5
+ return details;
6
+ }
7
+ };
8
+
9
+ var bindDetailsSummary = function(summary, details){
10
+ summary = $(summary);
11
+ details = $(details);
12
+ var oldSummary = $.data(details[0], 'summaryElement');
13
+ $.data(summary[0], 'detailsElement', details);
14
+ if(!oldSummary || summary[0] !== oldSummary[0]){
15
+ if(oldSummary){
16
+ if(oldSummary.hasClass('fallback-summary')){
17
+ oldSummary.remove();
18
+ } else {
19
+ oldSummary
20
+ .unbind('.summaryPolyfill')
21
+ .removeData('detailsElement')
22
+ .removeAttr('role')
23
+ .removeAttr('tabindex')
24
+ .removeAttr('aria-expanded')
25
+ .removeClass('summary-button')
26
+ .find('span.details-open-indicator')
27
+ .remove()
28
+ ;
29
+ }
30
+ }
31
+ $.data(details[0], 'summaryElement', summary);
32
+ details.prop('open', details.prop('open'));
33
+ }
34
+ };
35
+ var getSummary = function(details){
36
+ var summary = $.data(details, 'summaryElement');
37
+ if(!summary){
38
+ summary = $('> summary:first-child', details);
39
+ if(!summary[0]){
40
+ $(details).prependPolyfill('<summary class="fallback-summary">'+ options.text +'</summary>');
41
+ summary = $.data(details, 'summaryElement');
42
+ } else {
43
+ bindDetailsSummary(summary, details);
44
+ }
45
+ }
46
+ return summary;
47
+ };
48
+
49
+ // var isOriginalPrevented = function(e){
50
+ // var src = e.originalEvent;
51
+ // if(!src){return e.isDefaultPrevented();}
52
+ //
53
+ // return src.defaultPrevented || src.returnValue === false ||
54
+ // src.getPreventDefault && src.getPreventDefault();
55
+ // };
56
+
57
+ webshims.createElement('summary', function(){
58
+ var details = isInterActiveSummary(this);
59
+ if(!details || $.data(this, 'detailsElement')){return;}
60
+ var timer;
61
+ var stopNativeClickTest;
62
+ var tabindex = $.attr(this, 'tabIndex') || '0';
63
+ bindDetailsSummary(this, details);
64
+ $(this)
65
+ .on({
66
+ 'focus.summaryPolyfill': function(){
67
+ $(this).addClass('summary-has-focus');
68
+ },
69
+ 'blur.summaryPolyfill': function(){
70
+ $(this).removeClass('summary-has-focus');
71
+ },
72
+ 'mouseenter.summaryPolyfill': function(){
73
+ $(this).addClass('summary-has-hover');
74
+ },
75
+ 'mouseleave.summaryPolyfill': function(){
76
+ $(this).removeClass('summary-has-hover');
77
+ },
78
+ 'click.summaryPolyfill': function(e){
79
+ var details = isInterActiveSummary(this);
80
+ if(details){
81
+ if(!stopNativeClickTest && e.originalEvent){
82
+ stopNativeClickTest = true;
83
+ e.stopImmediatePropagation();
84
+ e.preventDefault();
85
+ $(this).trigger('click');
86
+ stopNativeClickTest = false;
87
+ return false;
88
+ } else {
89
+ clearTimeout(timer);
90
+
91
+ timer = setTimeout(function(){
92
+ if(!e.isDefaultPrevented()){
93
+ details.prop('open', !details.prop('open'));
94
+ }
95
+ }, 0);
96
+ }
97
+ }
98
+ },
99
+ 'keydown.summaryPolyfill': function(e){
100
+ if( (e.keyCode == 13 || e.keyCode == 32) && !e.isDefaultPrevented()){
101
+ stopNativeClickTest = true;
102
+ e.preventDefault();
103
+ $(this).trigger('click');
104
+ stopNativeClickTest = false;
105
+ }
106
+ }
107
+ })
108
+ .attr({tabindex: tabindex, role: 'button'})
109
+ .prepend('<span class="details-open-indicator" />')
110
+ ;
111
+ webshims.moveToFirstEvent(this, 'click');
112
+ });
113
+
114
+ var initDetails;
115
+ webshims.defineNodeNamesBooleanProperty('details', 'open', function(val){
116
+ var summary = $($.data(this, 'summaryElement'));
117
+ if(!summary){return;}
118
+ var action = (val) ? 'removeClass' : 'addClass';
119
+ var details = $(this);
120
+ if (!initDetails && options.animate){
121
+ details.stop().css({width: '', height: ''});
122
+ var start = {
123
+ width: details.width(),
124
+ height: details.height()
125
+ };
126
+ }
127
+ summary.attr('aria-expanded', ''+val);
128
+ details[action]('closed-details-summary').children().not(summary[0])[action]('closed-details-child');
129
+ if(!initDetails && options.animate){
130
+ var end = {
131
+ width: details.width(),
132
+ height: details.height()
133
+ };
134
+ details.css(start).animate(end, {
135
+ complete: function(){
136
+ $(this).css({width: '', height: ''});
137
+ }
138
+ });
139
+ }
140
+
141
+ });
142
+ webshims.createElement('details', function(){
143
+ initDetails = true;
144
+ var summary = getSummary(this);
145
+ $.prop(this, 'open', $.prop(this, 'open'));
146
+ initDetails = false;
147
+ });
148
+ });
149
+ (function($){
150
+ if(navigator.geolocation){return;}
151
+ var domWrite = function(){
152
+ setTimeout(function(){
153
+ throw('document.write is overwritten by geolocation shim. This method is incompatible with this plugin');
154
+ }, 1);
155
+ },
156
+ id = 0
157
+ ;
158
+ var geoOpts = $.webshims.cfg.geolocation.options || {};
159
+ navigator.geolocation = (function(){
160
+ var pos;
161
+ var api = {
162
+ getCurrentPosition: function(success, error, opts){
163
+ var locationAPIs = 2,
164
+ errorTimer,
165
+ googleTimer,
166
+ calledEnd,
167
+ endCallback = function(){
168
+ if(calledEnd){return;}
169
+ if(pos){
170
+ calledEnd = true;
171
+ success($.extend({timestamp: new Date().getTime()}, pos));
172
+ resetCallback();
173
+ if(window.JSON && window.sessionStorage){
174
+ try{
175
+ sessionStorage.setItem('storedGeolocationData654321', JSON.stringify(pos));
176
+ } catch(e){}
177
+ }
178
+ } else if(error && !locationAPIs) {
179
+ calledEnd = true;
180
+ resetCallback();
181
+ error({ code: 2, message: "POSITION_UNAVAILABLE"});
182
+ }
183
+ },
184
+ googleCallback = function(){
185
+ locationAPIs--;
186
+ getGoogleCoords();
187
+ endCallback();
188
+ },
189
+ resetCallback = function(){
190
+ $(document).unbind('google-loader', resetCallback);
191
+ clearTimeout(googleTimer);
192
+ clearTimeout(errorTimer);
193
+ },
194
+ getGoogleCoords = function(){
195
+ if(pos || !window.google || !google.loader || !google.loader.ClientLocation){return false;}
196
+ var cl = google.loader.ClientLocation;
197
+ pos = {
198
+ coords: {
199
+ latitude: cl.latitude,
200
+ longitude: cl.longitude,
201
+ altitude: null,
202
+ accuracy: 43000,
203
+ altitudeAccuracy: null,
204
+ heading: parseInt('NaN', 10),
205
+ velocity: null
206
+ },
207
+ //extension similiar to FF implementation
208
+ address: $.extend({streetNumber: '', street: '', premises: '', county: '', postalCode: ''}, cl.address)
209
+ };
210
+ return true;
211
+ },
212
+ getInitCoords = function(){
213
+ if(pos){return;}
214
+ getGoogleCoords();
215
+ if(pos || !window.JSON || !window.sessionStorage){return;}
216
+ try{
217
+ pos = sessionStorage.getItem('storedGeolocationData654321');
218
+ pos = (pos) ? JSON.parse(pos) : false;
219
+ if(!pos.coords){pos = false;}
220
+ } catch(e){
221
+ pos = false;
222
+ }
223
+ }
224
+ ;
225
+
226
+ getInitCoords();
227
+
228
+ if(!pos){
229
+ if(geoOpts.confirmText && !confirm(geoOpts.confirmText.replace('{location}', location.hostname))){
230
+ if(error){
231
+ error({ code: 1, message: "PERMISSION_DENIED"});
232
+ }
233
+ return;
234
+ }
235
+ $.ajax({
236
+ url: 'http://freegeoip.net/json/',
237
+ dataType: 'jsonp',
238
+ cache: true,
239
+ jsonp: 'callback',
240
+ success: function(data){
241
+ locationAPIs--;
242
+ if(!data){return;}
243
+ pos = pos || {
244
+ coords: {
245
+ latitude: data.latitude,
246
+ longitude: data.longitude,
247
+ altitude: null,
248
+ accuracy: 43000,
249
+ altitudeAccuracy: null,
250
+ heading: parseInt('NaN', 10),
251
+ velocity: null
252
+ },
253
+ //extension similiar to FF implementation
254
+ address: {
255
+ city: data.city,
256
+ country: data.country_name,
257
+ countryCode: data.country_code,
258
+ county: "",
259
+ postalCode: data.zipcode,
260
+ premises: "",
261
+ region: data.region_name,
262
+ street: "",
263
+ streetNumber: ""
264
+ }
265
+ };
266
+ endCallback();
267
+ },
268
+ error: function(){
269
+ locationAPIs--;
270
+ endCallback();
271
+ }
272
+ });
273
+ clearTimeout(googleTimer);
274
+ if (!window.google || !window.google.loader) {
275
+ googleTimer = setTimeout(function(){
276
+ //destroys document.write!!!
277
+ if (geoOpts.destroyWrite) {
278
+ document.write = domWrite;
279
+ document.writeln = domWrite;
280
+ }
281
+ $(document).one('google-loader', googleCallback);
282
+ $.webshims.loader.loadScript('http://www.google.com/jsapi', false, 'google-loader');
283
+ }, 800);
284
+ } else {
285
+ locationAPIs--;
286
+ }
287
+ } else {
288
+ setTimeout(endCallback, 1);
289
+ return;
290
+ }
291
+ if(opts && opts.timeout){
292
+ errorTimer = setTimeout(function(){
293
+ resetCallback();
294
+ if(error) {
295
+ error({ code: 3, message: "TIMEOUT"});
296
+ }
297
+ }, opts.timeout);
298
+ } else {
299
+ errorTimer = setTimeout(function(){
300
+ locationAPIs = 0;
301
+ endCallback();
302
+ }, 10000);
303
+ }
304
+ },
305
+ clearWatch: $.noop
306
+ };
307
+ api.watchPosition = function(a, b, c){
308
+ api.getCurrentPosition(a, b, c);
309
+ id++;
310
+ return id;
311
+ };
312
+ return api;
313
+ })();
314
+
315
+ $.webshims.isReady('geolocation', true);
316
+ })(jQuery);