active_frontend 12.2.0 → 12.3.0

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 (61) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/fonts/gotham/gotham-bold.woff +0 -0
  3. data/app/assets/fonts/gotham/gotham-book.woff +0 -0
  4. data/app/assets/fonts/gotham/gotham-light.woff +0 -0
  5. data/app/assets/fonts/gotham/gotham-medium.woff +0 -0
  6. data/app/assets/fonts/gotham/gotham-rounded-bold.woff +0 -0
  7. data/app/assets/fonts/gotham/gotham-rounded-book.woff +0 -0
  8. data/app/assets/fonts/gotham/gotham-rounded-light.woff +0 -0
  9. data/app/assets/fonts/gotham/gotham-rounded-medium.woff +0 -0
  10. data/lib/active_frontend/version.rb +1 -1
  11. data/vendor/assets/javascripts/_affix.js +4 -4
  12. data/vendor/assets/javascripts/_alert.js +1 -1
  13. data/vendor/assets/javascripts/_animation.js +14 -14
  14. data/vendor/assets/javascripts/_button.js +1 -1
  15. data/vendor/assets/javascripts/_carousel.js +5 -5
  16. data/vendor/assets/javascripts/_chart.js +713 -280
  17. data/vendor/assets/javascripts/_collapse.js +6 -6
  18. data/vendor/assets/javascripts/_dropdown.js +47 -43
  19. data/vendor/assets/javascripts/_inputmask.js +6 -4
  20. data/vendor/assets/javascripts/_map.js +136 -88
  21. data/vendor/assets/javascripts/_modal.js +136 -42
  22. data/vendor/assets/javascripts/_popover.js +2 -7
  23. data/vendor/assets/javascripts/_scrollspy.js +16 -19
  24. data/vendor/assets/javascripts/_slider.js +156 -85
  25. data/vendor/assets/javascripts/_tab.js +5 -3
  26. data/vendor/assets/javascripts/_tooltip.js +73 -31
  27. data/vendor/assets/stylesheets/_header.scss +3 -1
  28. data/vendor/assets/stylesheets/_typography.scss +8 -40
  29. metadata +10 -34
  30. data/app/assets/fonts/gotham/regular/gotham-bold.eot +0 -0
  31. data/app/assets/fonts/gotham/regular/gotham-bold.svg +0 -2066
  32. data/app/assets/fonts/gotham/regular/gotham-bold.ttf +0 -0
  33. data/app/assets/fonts/gotham/regular/gotham-bold.woff +0 -0
  34. data/app/assets/fonts/gotham/regular/gotham-book.eot +0 -0
  35. data/app/assets/fonts/gotham/regular/gotham-book.svg +0 -631
  36. data/app/assets/fonts/gotham/regular/gotham-book.ttf +0 -0
  37. data/app/assets/fonts/gotham/regular/gotham-book.woff +0 -0
  38. data/app/assets/fonts/gotham/regular/gotham-light.eot +0 -0
  39. data/app/assets/fonts/gotham/regular/gotham-light.svg +0 -635
  40. data/app/assets/fonts/gotham/regular/gotham-light.ttf +0 -0
  41. data/app/assets/fonts/gotham/regular/gotham-light.woff +0 -0
  42. data/app/assets/fonts/gotham/regular/gotham-medium.eot +0 -0
  43. data/app/assets/fonts/gotham/regular/gotham-medium.svg +0 -629
  44. data/app/assets/fonts/gotham/regular/gotham-medium.ttf +0 -0
  45. data/app/assets/fonts/gotham/regular/gotham-medium.woff +0 -0
  46. data/app/assets/fonts/gotham/round/gothamrnd-bold.eot +0 -0
  47. data/app/assets/fonts/gotham/round/gothamrnd-bold.svg +0 -3528
  48. data/app/assets/fonts/gotham/round/gothamrnd-bold.ttf +0 -0
  49. data/app/assets/fonts/gotham/round/gothamrnd-bold.woff +0 -0
  50. data/app/assets/fonts/gotham/round/gothamrnd-book.eot +0 -0
  51. data/app/assets/fonts/gotham/round/gothamrnd-book.svg +0 -3654
  52. data/app/assets/fonts/gotham/round/gothamrnd-book.ttf +0 -0
  53. data/app/assets/fonts/gotham/round/gothamrnd-book.woff +0 -0
  54. data/app/assets/fonts/gotham/round/gothamrnd-light.eot +0 -0
  55. data/app/assets/fonts/gotham/round/gothamrnd-light.svg +0 -3503
  56. data/app/assets/fonts/gotham/round/gothamrnd-light.ttf +0 -0
  57. data/app/assets/fonts/gotham/round/gothamrnd-light.woff +0 -0
  58. data/app/assets/fonts/gotham/round/gothamrnd-medium.eot +0 -0
  59. data/app/assets/fonts/gotham/round/gothamrnd-medium.svg +0 -3659
  60. data/app/assets/fonts/gotham/round/gothamrnd-medium.ttf +0 -0
  61. data/app/assets/fonts/gotham/round/gothamrnd-medium.woff +0 -0
@@ -7,7 +7,8 @@
7
7
  var Collapse = function (element, options) {
8
8
  this.$element = $(element)
9
9
  this.options = $.extend({}, Collapse.DEFAULTS, options)
10
- this.$trigger = $(this.options.trigger).filter('[href="#' + element.id + '"], [data-target="#' + element.id + '"]')
10
+ this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
11
+ '[data-toggle="collapse"][data-target="#' + element.id + '"]')
11
12
  this.transitioning = null
12
13
 
13
14
  if (this.options.parent) {
@@ -19,13 +20,12 @@
19
20
  if (this.options.toggle) this.toggle()
20
21
  }
21
22
 
22
- Collapse.VERSION = '3.3.2'
23
+ Collapse.VERSION = '3.3.6'
23
24
 
24
25
  Collapse.TRANSITION_DURATION = 350
25
26
 
26
27
  Collapse.DEFAULTS = {
27
- toggle: true,
28
- trigger: '[data-toggle="collapse"]'
28
+ toggle: true
29
29
  }
30
30
 
31
31
  Collapse.prototype.dimension = function () {
@@ -163,7 +163,7 @@
163
163
  var data = $this.data('bs.collapse')
164
164
  var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
165
165
 
166
- if (!data && options.toggle && option == 'show') options.toggle = false
166
+ if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
167
167
  if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
168
168
  if (typeof option == 'string') data[option]()
169
169
  })
@@ -194,7 +194,7 @@
194
194
 
195
195
  var $target = getTargetFromTrigger($this)
196
196
  var data = $target.data('bs.collapse')
197
- var option = data ? 'toggle' : $.extend({}, $this.data(), { trigger: this })
197
+ var option = data ? 'toggle' : $this.data()
198
198
 
199
199
  Plugin.call($target, option)
200
200
  })
@@ -10,7 +10,41 @@
10
10
  $(element).on('click.bs.dropdown', this.toggle)
11
11
  }
12
12
 
13
- Dropdown.VERSION = '3.3.2'
13
+ Dropdown.VERSION = '3.3.6'
14
+
15
+ function getParent($this) {
16
+ var selector = $this.attr('data-target')
17
+
18
+ if (!selector) {
19
+ selector = $this.attr('href')
20
+ selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
21
+ }
22
+
23
+ var $parent = selector && $(selector)
24
+
25
+ return $parent && $parent.length ? $parent : $this.parent()
26
+ }
27
+
28
+ function clearMenus(e) {
29
+ if (e && e.which === 3) return
30
+ $(backdrop).remove()
31
+ $(toggle).each(function () {
32
+ var $this = $(this)
33
+ var $parent = getParent($this)
34
+ var relatedTarget = { relatedTarget: this }
35
+
36
+ if (!$parent.hasClass('open')) return
37
+
38
+ if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
39
+
40
+ $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
41
+
42
+ if (e.isDefaultPrevented()) return
43
+
44
+ $this.attr('aria-expanded', 'false')
45
+ $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
46
+ })
47
+ }
14
48
 
15
49
  Dropdown.prototype.toggle = function (e) {
16
50
  var $this = $(this)
@@ -25,7 +59,10 @@
25
59
  if (!isActive) {
26
60
  if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
27
61
  // if mobile we use a backdrop because click events don't delegate
28
- $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
62
+ $(document.createElement('div'))
63
+ .addClass('dropdown-backdrop')
64
+ .insertAfter($(this))
65
+ .on('click', clearMenus)
29
66
  }
30
67
 
31
68
  var relatedTarget = { relatedTarget: this }
@@ -39,7 +76,7 @@
39
76
 
40
77
  $parent
41
78
  .toggleClass('open')
42
- .trigger('shown.bs.dropdown', relatedTarget)
79
+ .trigger($.Event('shown.bs.dropdown', relatedTarget))
43
80
  }
44
81
 
45
82
  return false
@@ -58,57 +95,25 @@
58
95
  var $parent = getParent($this)
59
96
  var isActive = $parent.hasClass('open')
60
97
 
61
- if ((!isActive && e.which != 27) || (isActive && e.which == 27)) {
98
+ if (!isActive && e.which != 27 || isActive && e.which == 27) {
62
99
  if (e.which == 27) $parent.find(toggle).trigger('focus')
63
100
  return $this.trigger('click')
64
101
  }
65
102
 
66
- var desc = ' li:not(.divider):visible a'
67
- var $items = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc)
103
+ var desc = ' li:not(.disabled):visible a'
104
+ var $items = $parent.find('.dropdown-menu' + desc)
68
105
 
69
106
  if (!$items.length) return
70
107
 
71
108
  var index = $items.index(e.target)
72
109
 
73
- if (e.which == 38 && index > 0) index-- // up
74
- if (e.which == 40 && index < $items.length - 1) index++ // down
75
- if (!~index) index = 0
110
+ if (e.which == 38 && index > 0) index-- // up
111
+ if (e.which == 40 && index < $items.length - 1) index++ // down
112
+ if (!~index) index = 0
76
113
 
77
114
  $items.eq(index).trigger('focus')
78
115
  }
79
116
 
80
- function clearMenus(e) {
81
- if (e && e.which === 3) return
82
- $(backdrop).remove()
83
- $(toggle).each(function () {
84
- var $this = $(this)
85
- var $parent = getParent($this)
86
- var relatedTarget = { relatedTarget: this }
87
-
88
- if (!$parent.hasClass('open')) return
89
-
90
- $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
91
-
92
- if (e.isDefaultPrevented()) return
93
-
94
- $this.attr('aria-expanded', 'false')
95
- $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
96
- })
97
- }
98
-
99
- function getParent($this) {
100
- var selector = $this.attr('data-target')
101
-
102
- if (!selector) {
103
- selector = $this.attr('href')
104
- selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
105
- }
106
-
107
- var $parent = selector && $(selector)
108
-
109
- return $parent && $parent.length ? $parent : $this.parent()
110
- }
111
-
112
117
 
113
118
  // DROPDOWN PLUGIN DEFINITION
114
119
  // ==========================
@@ -146,7 +151,6 @@
146
151
  .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
147
152
  .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
148
153
  .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
149
- .on('keydown.bs.dropdown.data-api', '[role="menu"]', Dropdown.prototype.keydown)
150
- .on('keydown.bs.dropdown.data-api', '[role="listbox"]', Dropdown.prototype.keydown)
154
+ .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
151
155
 
152
156
  }(jQuery);
@@ -68,7 +68,7 @@
68
68
  Inputmask.prototype.listen = function() {
69
69
  if (this.$element.attr("readonly")) return
70
70
 
71
- var pasteEventName = (isIE ? 'paste' : 'input') + ".mask"
71
+ var pasteEventName = (isIE ? 'paste' : 'input') + ".bs.inputmask"
72
72
 
73
73
  this.$element
74
74
  .on("unmask.bs.inputmask", $.proxy(this.unmask, this))
@@ -164,8 +164,8 @@
164
164
 
165
165
  Inputmask.prototype.unmask = function() {
166
166
  this.$element
167
- .unbind(".mask")
168
- .removeData("inputmask")
167
+ .unbind(".bs.inputmask")
168
+ .removeData("bs.inputmask")
169
169
  }
170
170
 
171
171
  Inputmask.prototype.focusEvent = function() {
@@ -188,8 +188,10 @@
188
188
 
189
189
  Inputmask.prototype.blurEvent = function() {
190
190
  this.checkVal()
191
- if (this.$element.val() !== this.focusText)
191
+ if (this.$element.val() !== this.focusText) {
192
192
  this.$element.trigger('change')
193
+ this.$element.trigger('input')
194
+ }
193
195
  }
194
196
 
195
197
  Inputmask.prototype.keydownEvent = function(e) {
@@ -13,10 +13,6 @@
13
13
 
14
14
  }(this, function() {
15
15
 
16
- if (!(typeof window.google === 'object' && window.google.maps)) {
17
- throw 'Google Maps API is required. Please register the following JavaScript library http://maps.google.com/maps/api/js?sensor=true.'
18
- }
19
-
20
16
  var extend_object = function(obj, new_obj) {
21
17
  var name;
22
18
 
@@ -25,7 +21,9 @@ var extend_object = function(obj, new_obj) {
25
21
  }
26
22
 
27
23
  for (name in new_obj) {
28
- obj[name] = new_obj[name];
24
+ if (new_obj[name] !== undefined) {
25
+ obj[name] = new_obj[name];
26
+ }
29
27
  }
30
28
 
31
29
  return obj;
@@ -112,9 +110,7 @@ var arrayToLatLng = function(coords, useGeoJSON) {
112
110
  return coords;
113
111
  };
114
112
 
115
-
116
113
  var getElementsByClassName = function (class_name, context) {
117
-
118
114
  var element,
119
115
  _class = class_name.replace('.', '');
120
116
 
@@ -160,6 +156,15 @@ var GMaps = (function(global) {
160
156
  var doc = document;
161
157
 
162
158
  var GMaps = function(options) {
159
+
160
+ if (!(typeof window.google === 'object' && window.google.maps)) {
161
+ if (typeof window.console === 'object' && window.console.error) {
162
+ console.error('Google Maps API is required. Please register the following JavaScript library https://maps.googleapis.com/maps/api/js.');
163
+ }
164
+
165
+ return function() {};
166
+ }
167
+
163
168
  if (!this) return new GMaps(options);
164
169
 
165
170
  options.zoom = options.zoom || 15;
@@ -214,13 +219,11 @@ var GMaps = (function(global) {
214
219
  };
215
220
 
216
221
  if (typeof(options.el) === 'string' || typeof(options.div) === 'string') {
217
-
218
- if (identifier.indexOf("#") > -1) {
219
- this.el = getElementById(identifier, options.context);
220
- } else {
221
- this.el = getElementsByClassName.apply(this, [identifier, options.context]);
222
- }
223
-
222
+ if (identifier.indexOf("#") > -1) {
223
+ this.el = getElementById(identifier, options.context);
224
+ } else {
225
+ this.el = getElementsByClassName.apply(this, [identifier, options.context]);
226
+ }
224
227
  } else {
225
228
  this.el = identifier;
226
229
  }
@@ -1366,7 +1369,7 @@ GMaps.prototype.getRoutes = function(options) {
1366
1369
  }
1367
1370
 
1368
1371
  if (options.callback) {
1369
- options.callback(self.routes);
1372
+ options.callback(self.routes, result, status);
1370
1373
  }
1371
1374
  }
1372
1375
  else {
@@ -1378,7 +1381,7 @@ GMaps.prototype.getRoutes = function(options) {
1378
1381
  };
1379
1382
 
1380
1383
  GMaps.prototype.removeRoutes = function() {
1381
- this.routes = [];
1384
+ this.routes.length = 0;
1382
1385
  };
1383
1386
 
1384
1387
  GMaps.prototype.getElevations = function(options) {
@@ -1426,6 +1429,35 @@ GMaps.prototype.getElevations = function(options) {
1426
1429
 
1427
1430
  GMaps.prototype.cleanRoute = GMaps.prototype.removePolylines;
1428
1431
 
1432
+ GMaps.prototype.renderRoute = function(options, renderOptions) {
1433
+ var self = this,
1434
+ panel = ((typeof renderOptions.panel === 'string') ? document.getElementById(renderOptions.panel.replace('#', '')) : renderOptions.panel),
1435
+ display;
1436
+
1437
+ renderOptions.panel = panel;
1438
+ renderOptions = extend_object({
1439
+ map: this.map
1440
+ }, renderOptions);
1441
+ display = new google.maps.DirectionsRenderer(renderOptions);
1442
+
1443
+ this.getRoutes({
1444
+ origin: options.origin,
1445
+ destination: options.destination,
1446
+ travelMode: options.travelMode,
1447
+ waypoints: options.waypoints,
1448
+ unitSystem: options.unitSystem,
1449
+ error: options.error,
1450
+ avoidHighways: options.avoidHighways,
1451
+ avoidTolls: options.avoidTolls,
1452
+ optimizeWaypoints: options.optimizeWaypoints,
1453
+ callback: function(routes, response, status) {
1454
+ if (status === google.maps.DirectionsStatus.OK) {
1455
+ display.setDirections(response);
1456
+ }
1457
+ }
1458
+ });
1459
+ };
1460
+
1429
1461
  GMaps.prototype.drawRoute = function(options) {
1430
1462
  var self = this;
1431
1463
 
@@ -1436,10 +1468,13 @@ GMaps.prototype.drawRoute = function(options) {
1436
1468
  waypoints: options.waypoints,
1437
1469
  unitSystem: options.unitSystem,
1438
1470
  error: options.error,
1439
- callback: function(e) {
1440
- if (e.length > 0) {
1471
+ avoidHighways: options.avoidHighways,
1472
+ avoidTolls: options.avoidTolls,
1473
+ optimizeWaypoints: options.optimizeWaypoints,
1474
+ callback: function(routes) {
1475
+ if (routes.length > 0) {
1441
1476
  var polyline_options = {
1442
- path: e[e.length - 1].overview_path,
1477
+ path: routes[routes.length - 1].overview_path,
1443
1478
  strokeColor: options.strokeColor,
1444
1479
  strokeOpacity: options.strokeOpacity,
1445
1480
  strokeWeight: options.strokeWeight
@@ -1452,7 +1487,7 @@ GMaps.prototype.drawRoute = function(options) {
1452
1487
  self.drawPolyline(polyline_options);
1453
1488
 
1454
1489
  if (options.callback) {
1455
- options.callback(e[e.length - 1]);
1490
+ options.callback(routes[routes.length - 1]);
1456
1491
  }
1457
1492
  }
1458
1493
  }
@@ -1852,7 +1887,7 @@ GMaps.staticMapURL = function(options){
1852
1887
  opacity = parseFloat(opacity);
1853
1888
  opacity = Math.min(1, Math.max(opacity, 0));
1854
1889
  if (opacity === 0) {
1855
- return '0x10121900';
1890
+ return '0x00000000';
1856
1891
  }
1857
1892
  opacity = (opacity * 255).toString(16);
1858
1893
  if (opacity.length === 1) {
@@ -1998,6 +2033,10 @@ GMaps.prototype.off = function(event_name) {
1998
2033
  GMaps.off(event_name, this);
1999
2034
  };
2000
2035
 
2036
+ GMaps.prototype.once = function(event_name, handler) {
2037
+ return GMaps.once(event_name, this, handler);
2038
+ };
2039
+
2001
2040
  GMaps.custom_events = ['marker_added', 'marker_removed', 'polyline_added', 'polyline_removed', 'polygon_added', 'polygon_removed', 'geolocated', 'geolocation_failed'];
2002
2041
 
2003
2042
  GMaps.on = function(event_name, object, handler) {
@@ -2028,6 +2067,13 @@ GMaps.off = function(event_name, object) {
2028
2067
  }
2029
2068
  };
2030
2069
 
2070
+ GMaps.once = function(event_name, object, handler) {
2071
+ if (GMaps.custom_events.indexOf(event_name) == -1) {
2072
+ if(object instanceof GMaps) object = object.map;
2073
+ return google.maps.event.addListenerOnce(object, event_name, handler);
2074
+ }
2075
+ };
2076
+
2031
2077
  GMaps.fire = function(event_name, object, scope) {
2032
2078
  if (GMaps.custom_events.indexOf(event_name) == -1) {
2033
2079
  google.maps.event.trigger(object, event_name, Array.prototype.slice.apply(arguments).slice(2));
@@ -2088,91 +2134,93 @@ GMaps.geocode = function(options) {
2088
2134
  });
2089
2135
  };
2090
2136
 
2091
- //==========================
2092
- // Polygon containsLatLng
2093
- // https://github.com/tparkin/Google-Maps-Point-in-Polygon
2094
- // Poygon getBounds extension - google-maps-extensions
2095
- // http://code.google.com/p/google-maps-extensions/source/browse/google.maps.Polygon.getBounds.js
2096
- if (!google.maps.Polygon.prototype.getBounds) {
2097
- google.maps.Polygon.prototype.getBounds = function(latLng) {
2098
- var bounds = new google.maps.LatLngBounds();
2099
- var paths = this.getPaths();
2100
- var path;
2101
-
2102
- for (var p = 0; p < paths.getLength(); p++) {
2103
- path = paths.getAt(p);
2104
- for (var i = 0; i < path.getLength(); i++) {
2105
- bounds.extend(path.getAt(i));
2137
+ if (typeof window.google === 'object' && window.google.maps) {
2138
+ //==========================
2139
+ // Polygon containsLatLng
2140
+ // https://github.com/tparkin/Google-Maps-Point-in-Polygon
2141
+ // Poygon getBounds extension - google-maps-extensions
2142
+ // http://code.google.com/p/google-maps-extensions/source/browse/google.maps.Polygon.getBounds.js
2143
+ if (!google.maps.Polygon.prototype.getBounds) {
2144
+ google.maps.Polygon.prototype.getBounds = function(latLng) {
2145
+ var bounds = new google.maps.LatLngBounds();
2146
+ var paths = this.getPaths();
2147
+ var path;
2148
+
2149
+ for (var p = 0; p < paths.getLength(); p++) {
2150
+ path = paths.getAt(p);
2151
+ for (var i = 0; i < path.getLength(); i++) {
2152
+ bounds.extend(path.getAt(i));
2153
+ }
2106
2154
  }
2107
- }
2108
2155
 
2109
- return bounds;
2110
- };
2111
- }
2156
+ return bounds;
2157
+ };
2158
+ }
2112
2159
 
2113
- if (!google.maps.Polygon.prototype.containsLatLng) {
2114
- // Polygon containsLatLng - method to determine if a latLng is within a polygon
2115
- google.maps.Polygon.prototype.containsLatLng = function(latLng) {
2116
- // Exclude points outside of bounds as there is no way they are in the poly
2117
- var bounds = this.getBounds();
2160
+ if (!google.maps.Polygon.prototype.containsLatLng) {
2161
+ // Polygon containsLatLng - method to determine if a latLng is within a polygon
2162
+ google.maps.Polygon.prototype.containsLatLng = function(latLng) {
2163
+ // Exclude points outside of bounds as there is no way they are in the poly
2164
+ var bounds = this.getBounds();
2118
2165
 
2119
- if (bounds !== null && !bounds.contains(latLng)) {
2120
- return false;
2121
- }
2166
+ if (bounds !== null && !bounds.contains(latLng)) {
2167
+ return false;
2168
+ }
2122
2169
 
2123
- // Raycast point in polygon method
2124
- var inPoly = false;
2170
+ // Raycast point in polygon method
2171
+ var inPoly = false;
2125
2172
 
2126
- var numPaths = this.getPaths().getLength();
2127
- for (var p = 0; p < numPaths; p++) {
2128
- var path = this.getPaths().getAt(p);
2129
- var numPoints = path.getLength();
2130
- var j = numPoints - 1;
2173
+ var numPaths = this.getPaths().getLength();
2174
+ for (var p = 0; p < numPaths; p++) {
2175
+ var path = this.getPaths().getAt(p);
2176
+ var numPoints = path.getLength();
2177
+ var j = numPoints - 1;
2131
2178
 
2132
- for (var i = 0; i < numPoints; i++) {
2133
- var vertex1 = path.getAt(i);
2134
- var vertex2 = path.getAt(j);
2179
+ for (var i = 0; i < numPoints; i++) {
2180
+ var vertex1 = path.getAt(i);
2181
+ var vertex2 = path.getAt(j);
2135
2182
 
2136
- if (vertex1.lng() < latLng.lng() && vertex2.lng() >= latLng.lng() || vertex2.lng() < latLng.lng() && vertex1.lng() >= latLng.lng()) {
2137
- if (vertex1.lat() + (latLng.lng() - vertex1.lng()) / (vertex2.lng() - vertex1.lng()) * (vertex2.lat() - vertex1.lat()) < latLng.lat()) {
2138
- inPoly = !inPoly;
2183
+ if (vertex1.lng() < latLng.lng() && vertex2.lng() >= latLng.lng() || vertex2.lng() < latLng.lng() && vertex1.lng() >= latLng.lng()) {
2184
+ if (vertex1.lat() + (latLng.lng() - vertex1.lng()) / (vertex2.lng() - vertex1.lng()) * (vertex2.lat() - vertex1.lat()) < latLng.lat()) {
2185
+ inPoly = !inPoly;
2186
+ }
2139
2187
  }
2188
+
2189
+ j = i;
2140
2190
  }
2191
+ }
2141
2192
 
2142
- j = i;
2193
+ return inPoly;
2194
+ };
2195
+ }
2196
+
2197
+ if (!google.maps.Circle.prototype.containsLatLng) {
2198
+ google.maps.Circle.prototype.containsLatLng = function(latLng) {
2199
+ if (google.maps.geometry) {
2200
+ return google.maps.geometry.spherical.computeDistanceBetween(this.getCenter(), latLng) <= this.getRadius();
2143
2201
  }
2144
- }
2202
+ else {
2203
+ return true;
2204
+ }
2205
+ };
2206
+ }
2145
2207
 
2146
- return inPoly;
2208
+ google.maps.LatLngBounds.prototype.containsLatLng = function(latLng) {
2209
+ return this.contains(latLng);
2147
2210
  };
2148
- }
2149
2211
 
2150
- if (!google.maps.Circle.prototype.containsLatLng) {
2151
- google.maps.Circle.prototype.containsLatLng = function(latLng) {
2152
- if (google.maps.geometry) {
2153
- return google.maps.geometry.spherical.computeDistanceBetween(this.getCenter(), latLng) <= this.getRadius();
2154
- }
2155
- else {
2156
- return true;
2157
- }
2212
+ google.maps.Marker.prototype.setFences = function(fences) {
2213
+ this.fences = fences;
2158
2214
  };
2159
- }
2160
2215
 
2161
- google.maps.LatLngBounds.prototype.containsLatLng = function(latLng) {
2162
- return this.contains(latLng);
2163
- };
2164
-
2165
- google.maps.Marker.prototype.setFences = function(fences) {
2166
- this.fences = fences;
2167
- };
2168
-
2169
- google.maps.Marker.prototype.addFence = function(fence) {
2170
- this.fences.push(fence);
2171
- };
2216
+ google.maps.Marker.prototype.addFence = function(fence) {
2217
+ this.fences.push(fence);
2218
+ };
2172
2219
 
2173
- google.maps.Marker.prototype.getId = function() {
2174
- return this['__gm_id'];
2175
- };
2220
+ google.maps.Marker.prototype.getId = function() {
2221
+ return this['__gm_id'];
2222
+ };
2223
+ }
2176
2224
 
2177
2225
  //==========================
2178
2226
  // Array indexOf