webshims-rails 0.4.5 → 0.4.6

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