Viewing File: /home/maglabs/exclusive/wp-content/plugins/g5-element/assets/vendors/gmap3/gmap3.js

/*!
 *  GMAP3 Plugin for jQuery
 *  Version   : 6.0.0
 *  Date      : 2014-04-25
 *  Author    : DEMONTE Jean-Baptiste
 *  Contact   : jbdemonte@gmail.com
 *  Web site  : http://gmap3.net
 *  Licence   : GPL v3 : http://www.gnu.org/licenses/gpl.html
 *
 *  Copyright (c) 2010-2014 Jean-Baptiste DEMONTE
 *  All rights reserved.
 */
! function(t, n) {
	function e(t) {
		return "object" == typeof t
	}
	
	function o(t) {
		return "string" == typeof t
	}
	
	function i(t) {
		return "number" == typeof t
	}
	
	function a(t) {
		return t === n
	}
	
	function r() {
		q = google.maps, A || (A = {
			verbose: !1,
			queryLimit: {
				attempt: 5,
				delay: 250,
				random: 250
			},
			classes: function() {
				var n = {};
				return t.each("Map Marker InfoWindow Circle Rectangle OverlayView StreetViewPanorama KmlLayer TrafficLayer BicyclingLayer GroundOverlay StyledMapType ImageMapType".split(" "), function(t, e) {
					n[e] = q[e]
				}), n
			}(),
			map: {
				mapTypeId: q.MapTypeId.ROADMAP,
				center: [46.578498, 2.457275],
				zoom: 2
			},
			overlay: {
				pane: "floatPane",
				content: "",
				offset: {
					x: 0,
					y: 0
				}
			},
			geoloc: {
				getCurrentPosition: {
					maximumAge: 6e4,
					timeout: 5e3
				}
			}
		})
	}
	
	function s(t, n) {
		return a(t) ? "gmap3_" + (n ? Z + 1 : ++Z) : t
	}
	
	function u(t) {
		var n, e = q.version.split(".");
		for (t = t.split("."), n = 0; n < e.length; n++) e[n] = parseInt(e[n], 10);
		for (n = 0; n < t.length; n++) {
			if (t[n] = parseInt(t[n], 10), !e.hasOwnProperty(n)) return !1;
			if (e[n] < t[n]) return !1
		}
		return !0
	}
	
	function l(n, e, o, i, a) {
		function r(e, i) {
			e && t.each(e, function(t, e) {
				var r = n,
					s = e;
				R(e) && (r = e[0], s = e[1]), i(o, t, function(t) {
					s.apply(r, [a || o, t, u])
				})
			})
		}
		var s = e.td || {},
			u = {
				id: i,
				data: s.data,
				tag: s.tag
			};
		r(s.events, q.event.addListener), r(s.onces, q.event.addListenerOnce)
	}
	
	function d(t) {
		var n, e = [];
		for (n in t) t.hasOwnProperty(n) && e.push(n);
		return e
	}
	
	function c(t, n) {
		var e, o = arguments;
		for (e = 2; e < o.length; e++)
			if (n in o[e] && o[e].hasOwnProperty(n)) return void(t[n] = o[e][n])
	}
	
	function p(n, e) {
		var o, i, a = ["data", "tag", "id", "events", "onces"],
			r = {};
		if (n.td)
			for (o in n.td) n.td.hasOwnProperty(o) && "options" !== o && "values" !== o && (r[o] = n.td[o]);
		for (i = 0; i < a.length; i++) c(r, a[i], e, n.td);
		return r.options = t.extend({}, n.opts || {}, e.options || {}), r
	}
	
	function f() {
		if (A.verbose) {
			var t, n = [];
			if (window.console && z(console.error)) {
				for (t = 0; t < arguments.length; t++) n.push(arguments[t]);
				console.error.apply(console, n)
			} else {
				for (n = "", t = 0; t < arguments.length; t++) n += arguments[t].toString() + " ";
				alert(n)
			}
		}
	}
	
	function g(t) {
		return (i(t) || o(t)) && "" !== t && !isNaN(t)
	}
	
	function h(t) {
		var n, o = [];
		if (!a(t))
			if (e(t))
				if (i(t.length)) o = t;
				else
					for (n in t) o.push(t[n]);
			else o.push(t);
		return o
	}
	
	function v(n) {
		return n ? z(n) ? n : (n = h(n), function(o) {
			var i;
			if (a(o)) return !1;
			if (e(o)) {
				for (i = 0; i < o.length; i++)
					if (t.inArray(o[i], n) >= 0) return !0;
				return !1
			}
			return t.inArray(o, n) >= 0
		}) : void 0
	}
	
	function m(t, n, e) {
		var i = n ? t : null;
		return !t || o(t) ? i : t.latLng ? m(t.latLng) : t instanceof q.LatLng ? t : g(t.lat) ? new q.LatLng(t.lat, t.lng) : !e && R(t) && g(t[0]) && g(t[1]) ? new q.LatLng(t[0], t[1]) : i
	}
	
	function y(t) {
		var n, e;
		return !t || t instanceof q.LatLngBounds ? t || null : (R(t) ? 2 === t.length ? (n = m(t[0]), e = m(t[1])) : 4 === t.length && (n = m([t[0], t[1]]), e = m([t[2], t[3]])) : "ne" in t && "sw" in t ? (n = m(t.ne), e = m(t.sw)) : "n" in t && "e" in t && "s" in t && "w" in t && (n = m([t.n, t.e]), e = m([t.s, t.w])), n && e ? new q.LatLngBounds(e, n) : null)
	}
	
	function w(t, n, e, i, a) {
		var r = e ? m(i.td, !1, !0) : !1,
			s = r ? {
				latLng: r
			} : i.td.address ? o(i.td.address) ? {
				address: i.td.address
			} : i.td.address : !1,
			u = s ? G.get(s) : !1,
			l = this;
		s ? (a = a || 0, u ? (i.latLng = u.results[0].geometry.location, i.results = u.results, i.status = u.status, n.apply(t, [i])) : (s.location && (s.location = m(s.location)), s.bounds && (s.bounds = y(s.bounds)), M().geocode(s, function(o, r) {
			r === q.GeocoderStatus.OK ? (G.store(s, {
				results: o,
				status: r
			}), i.latLng = o[0].geometry.location, i.results = o, i.status = r, n.apply(t, [i])) : r === q.GeocoderStatus.OVER_QUERY_LIMIT && a < A.queryLimit.attempt ? setTimeout(function() {
				w.apply(l, [t, n, e, i, a + 1])
			}, A.queryLimit.delay + Math.floor(Math.random() * A.queryLimit.random)) : (f("geocode failed", r, s), i.latLng = i.results = !1, i.status = r, n.apply(t, [i]))
		}))) : (i.latLng = m(i.td, !1, !0), n.apply(t, [i]))
	}
	
	function L(n, e, o, i) {
		function a() {
			do s++; while (s < n.length && !("address" in n[s]));
			return s >= n.length ? void o.apply(e, [i]) : void w(r, function(e) {
				delete e.td, t.extend(n[s], e), a.apply(r, [])
			}, !0, {
				td: n[s]
			})
		}
		var r = this,
			s = -1;
		a()
	}
	
	function b(t, n, e) {
		var o = !1;
		navigator && navigator.geolocation ? navigator.geolocation.getCurrentPosition(function(i) {
			o || (o = !0, e.latLng = new q.LatLng(i.coords.latitude, i.coords.longitude), n.apply(t, [e]))
		}, function() {
			o || (o = !0, e.latLng = !1, n.apply(t, [e]))
		}, e.opts.getCurrentPosition) : (e.latLng = !1, n.apply(t, [e]))
	}
	
	function x(t) {
		var n, o = !1;
		if (e(t) && t.hasOwnProperty("get")) {
			for (n in t)
				if ("get" !== n) return !1;
			o = !t.get.hasOwnProperty("callback")
		}
		return o
	}
	
	function M() {
		return V.geocoder || (V.geocoder = new q.Geocoder), V.geocoder
	}
	
	function I() {
		var t = [];
		this.get = function(n) {
			if (t.length) {
				var o, i, a, r, s, u = d(n);
				for (o = 0; o < t.length; o++) {
					for (r = t[o], s = u.length === r.keys.length, i = 0; i < u.length && s; i++) a = u[i], s = a in r.request, s && (s = e(n[a]) && "equals" in n[a] && z(n[a]) ? n[a].equals(r.request[a]) : n[a] === r.request[a]);
					if (s) return r.results
				}
			}
		}, this.store = function(n, e) {
			t.push({
				request: n,
				keys: d(n),
				results: e
			})
		}
	}
	
	function P() {
		var t = [],
			n = this;
		n.empty = function() {
			return !t.length
		}, n.add = function(n) {
			t.push(n)
		}, n.get = function() {
			return t.length ? t[0] : !1
		}, n.ack = function() {
			t.shift()
		}
	}
	
	function k() {
		function n(t) {
			return {
				id: t.id,
				name: t.name,
				object: t.obj,
				tag: t.tag,
				data: t.data
			}
		}
		
		function e(t) {
			z(t.setMap) && t.setMap(null), z(t.remove) && t.remove(), z(t.free) && t.free(), t = null
		}
		var o = {},
			i = {},
			r = this;
		r.add = function(t, n, e, a) {
			var u = t.td || {},
				l = s(u.id);
			return o[n] || (o[n] = []), l in i && r.clearById(l), i[l] = {
				obj: e,
				sub: a,
				name: n,
				id: l,
				tag: u.tag,
				data: u.data
			}, o[n].push(l), l
		}, r.getById = function(t, e, o) {
			var a = !1;
			return t in i && (a = e ? i[t].sub : o ? n(i[t]) : i[t].obj), a
		}, r.get = function(t, e, a, r) {
			var s, u, l = v(a);
			if (!o[t] || !o[t].length) return null;
			for (s = o[t].length; s;)
				if (s--, u = o[t][e ? s : o[t].length - s - 1], u && i[u]) {
					if (l && !l(i[u].tag)) continue;
					return r ? n(i[u]) : i[u].obj
				}
			return null
		}, r.all = function(t, e, r) {
			var s = [],
				u = v(e),
				l = function(t) {
					var e, a;
					for (e = 0; e < o[t].length; e++)
						if (a = o[t][e], a && i[a]) {
							if (u && !u(i[a].tag)) continue;
							s.push(r ? n(i[a]) : i[a].obj)
						}
				};
			if (t in o) l(t);
			else if (a(t))
				for (t in o) l(t);
			return s
		}, r.rm = function(t, n, e) {
			var a, s;
			if (!o[t]) return !1;
			if (n)
				if (e)
					for (a = o[t].length - 1; a >= 0 && (s = o[t][a], !n(i[s].tag)); a--);
				else
					for (a = 0; a < o[t].length && (s = o[t][a], !n(i[s].tag)); a++);
			else a = e ? o[t].length - 1 : 0;
			return a in o[t] ? r.clearById(o[t][a], a) : !1
		}, r.clearById = function(t, n) {
			if (t in i) {
				var r, s = i[t].name;
				for (r = 0; a(n) && r < o[s].length; r++) t === o[s][r] && (n = r);
				return e(i[t].obj), i[t].sub && e(i[t].sub), delete i[t], o[s].splice(n, 1), !0
			}
			return !1
		}, r.objGetById = function(t) {
			var n, e;
			if (o.clusterer)
				for (e in o.clusterer)
					if ((n = i[o.clusterer[e]].obj.getById(t)) !== !1) return n;
			return !1
		}, r.objClearById = function(t) {
			var n;
			if (o.clusterer)
				for (n in o.clusterer)
					if (i[o.clusterer[n]].obj.clearById(t)) return !0;
			return null
		}, r.clear = function(t, n, e, i) {
			var a, s, u, l = v(i);
			if (t && t.length) t = h(t);
			else {
				t = [];
				for (a in o) t.push(a)
			}
			for (s = 0; s < t.length; s++)
				if (u = t[s], n) r.rm(u, l, !0);
				else if (e) r.rm(u, l, !1);
				else
					for (; r.rm(u, l, !1););
		}, r.objClear = function(n, e, a, r) {
			var s;
			if (o.clusterer && (t.inArray("marker", n) >= 0 || !n.length))
				for (s in o.clusterer) i[o.clusterer[s]].obj.clear(e, a, r)
		}
	}
	
	function B(n, e, i) {
		function a(t) {
			var n = {};
			return n[t] = {}, n
		}
		
		function r() {
			var t;
			for (t in i)
				if (i.hasOwnProperty(t) && !u.hasOwnProperty(t)) return t
		}
		var s, u = {},
			l = this,
			d = {
				latLng: {
					map: !1,
					marker: !1,
					infowindow: !1,
					circle: !1,
					overlay: !1,
					getlatlng: !1,
					getmaxzoom: !1,
					getelevation: !1,
					streetviewpanorama: !1,
					getaddress: !0
				},
				geoloc: {
					getgeoloc: !0
				}
			};
		o(i) && (i = a(i)), l.run = function() {
			for (var o, a; o = r();) {
				if (z(n[o])) return s = o, a = t.extend(!0, {}, A[o] || {}, i[o].options || {}), void(o in d.latLng ? i[o].values ? L(i[o].values, n, n[o], {
					td: i[o],
					opts: a,
					session: u
				}) : w(n, n[o], d.latLng[o], {
					td: i[o],
					opts: a,
					session: u
				}) : o in d.geoloc ? b(n, n[o], {
					td: i[o],
					opts: a,
					session: u
				}) : n[o].apply(n, [{
					td: i[o],
					opts: a,
					session: u
				}]));
				u[o] = null
			}
			e.apply(n, [i, u])
		}, l.ack = function(t) {
			u[s] = t, l.run.apply(l, [])
		}
	}
	
	function j() {
		return V.ds || (V.ds = new q.DirectionsService), V.ds
	}
	
	function O() {
		return V.dms || (V.dms = new q.DistanceMatrixService), V.dms
	}
	
	function C() {
		return V.mzs || (V.mzs = new q.MaxZoomService), V.mzs
	}
	
	function E() {
		return V.es || (V.es = new q.ElevationService), V.es
	}
	
	function S(t) {
		function n() {
			var t = this;
			return t.onAdd = function() {}, t.onRemove = function() {}, t.draw = function() {}, A.classes.OverlayView.apply(t, [])
		}
		n.prototype = A.classes.OverlayView.prototype;
		var e = new n;
		return e.setMap(t), e
	}
	
	function T(n, o, i) {
		function a(t) {
			T[t] || (delete _[t].options.map, T[t] = new A.classes.Marker(_[t].options), l(n, {
				td: _[t]
			}, T[t], _[t].id))
		}
		
		function r() {
			return (y = U.getProjection()) ? (P = !0, j.push(q.event.addListener(o, "zoom_changed", f)), j.push(q.event.addListener(o, "bounds_changed", f)), void h()) : void setTimeout(function() {
				r.apply(B, [])
			}, 25)
		}
		
		function u(t) {
			e(O[t]) ? (z(O[t].obj.setMap) && O[t].obj.setMap(null), z(O[t].obj.remove) && O[t].obj.remove(), z(O[t].shadow.remove) && O[t].obj.remove(), z(O[t].shadow.setMap) && O[t].shadow.setMap(null), delete O[t].obj, delete O[t].shadow) : T[t] && T[t].setMap(null), delete O[t]
		}
		
		function d() {
			var t, n, e, o, i, a, r, s, u = Math.cos,
				l = Math.sin,
				d = arguments;
			return d[0] instanceof q.LatLng ? (t = d[0].lat(), e = d[0].lng(), d[1] instanceof q.LatLng ? (n = d[1].lat(), o = d[1].lng()) : (n = d[1], o = d[2])) : (t = d[0], e = d[1], d[2] instanceof q.LatLng ? (n = d[2].lat(), o = d[2].lng()) : (n = d[2], o = d[3])), i = Math.PI * t / 180, a = Math.PI * e / 180, r = Math.PI * n / 180, s = Math.PI * o / 180, 6371e3 * Math.acos(Math.min(u(i) * u(r) * u(a) * u(s) + u(i) * l(a) * u(r) * l(s) + l(i) * l(r), 1))
		}
		
		function c() {
			var t = d(o.getCenter(), o.getBounds().getNorthEast()),
				n = new q.Circle({
					center: o.getCenter(),
					radius: 1.25 * t
				});
			return n.getBounds()
		}
		
		function p() {
			var t, n = {};
			for (t in O) n[t] = !0;
			return n
		}
		
		function f() {
			clearTimeout(m), m = setTimeout(h, 25)
		}
		
		function g(t) {
			var n = y.fromLatLngToDivPixel(t),
				e = y.fromDivPixelToLatLng(new q.Point(n.x + i.radius, n.y - i.radius)),
				o = y.fromDivPixelToLatLng(new q.Point(n.x - i.radius, n.y + i.radius));
			return new q.LatLngBounds(o, e)
		}
		
		function h() {
			if (!x && !I && P) {
				var n, e, a, r, s, l, d, f, h, v, m, y = !1,
					b = [],
					B = {},
					j = o.getZoom(),
					C = "maxZoom" in i && j > i.maxZoom,
					E = p();
				for (M = !1, j > 3 && (s = c(), y = s.getSouthWest().lng() < s.getNorthEast().lng()), n = 0; n < _.length; n++) !_[n] || y && !s.contains(_[n].options.position) || w && !w(D[n]) || b.push(n);
				for (;;) {
					for (n = 0; B[n] && n < b.length;) n++;
					if (n === b.length) break;
					if (r = [], k && !C) {
						m = 10;
						do
							for (f = r, r = [], m--, d = f.length ? s.getCenter() : _[b[n]].options.position, s = g(d), e = n; e < b.length; e++) B[e] || s.contains(_[b[e]].options.position) && r.push(e); while (f.length < r.length && r.length > 1 && m)
					} else
						for (e = n; e < b.length; e++)
							if (!B[e]) {
								r.push(e);
								break
							} for (l = {
						indexes: [],
						ref: []
					}, h = v = 0, a = 0; a < r.length; a++) B[r[a]] = !0, l.indexes.push(b[r[a]]), l.ref.push(b[r[a]]), h += _[b[r[a]]].options.position.lat(), v += _[b[r[a]]].options.position.lng();
					h /= r.length, v /= r.length, l.latLng = new q.LatLng(h, v), l.ref = l.ref.join("-"), l.ref in E ? delete E[l.ref] : (1 === r.length && (O[l.ref] = !0), L(l))
				}
				t.each(E, function(t) {
					u(t)
				}), I = !1
			}
		}
		var m, y, w, L, b, x = !1,
			M = !1,
			I = !1,
			P = !1,
			k = !0,
			B = this,
			j = [],
			O = {},
			C = {},
			E = {},
			T = [],
			_ = [],
			D = [],
			U = S(o, i.radius);
		r(), B.getById = function(t) {
			return t in C ? (a(C[t]), T[C[t]]) : !1
		}, B.rm = function(t) {
			var n = C[t];
			T[n] && T[n].setMap(null), delete T[n], T[n] = !1, delete _[n], _[n] = !1, delete D[n], D[n] = !1, delete C[t], delete E[n], M = !0
		}, B.clearById = function(t) {
			return t in C ? (B.rm(t), !0) : void 0
		}, B.clear = function(t, n, e) {
			var o, i, a, r, s, u = [],
				l = v(e);
			for (t ? (o = _.length - 1, i = -1, a = -1) : (o = 0, i = _.length, a = 1), r = o; r !== i && (!_[r] || l && !l(_[r].tag) || (u.push(E[r]), !n && !t)); r += a);
			for (s = 0; s < u.length; s++) B.rm(u[s])
		}, B.add = function(t, n) {
			t.id = s(t.id), B.clearById(t.id), C[t.id] = T.length, E[T.length] = t.id, T.push(null), _.push(t), D.push(n), M = !0
		}, B.addMarker = function(t, e) {
			e = e || {}, e.id = s(e.id), B.clearById(e.id), e.options || (e.options = {}), e.options.position = t.getPosition(), l(n, {
				td: e
			}, t, e.id), C[e.id] = T.length, E[T.length] = e.id, T.push(t), _.push(e), D.push(e.data || {}), M = !0
		}, B.td = function(t) {
			return _[t]
		}, B.value = function(t) {
			return D[t]
		}, B.marker = function(t) {
			return t in T ? (a(t), T[t]) : !1
		}, B.markerIsSet = function(t) {
			return Boolean(T[t])
		}, B.setMarker = function(t, n) {
			T[t] = n
		}, B.store = function(t, n, e) {
			O[t.ref] = {
				obj: n,
				shadow: e
			}
		}, B.free = function() {
			var n;
			for (n = 0; n < j.length; n++) q.event.removeListener(j[n]);
			j = [], t.each(O, function(t) {
				u(t)
			}), O = {}, t.each(_, function(t) {
				_[t] = null
			}), _ = [], t.each(T, function(t) {
				T[t] && (T[t].setMap(null), delete T[t])
			}), T = [], t.each(D, function(t) {
				delete D[t]
			}), D = [], C = {}, E = {}
		}, B.filter = function(t) {
			w = t, h()
		}, B.enable = function(t) {
			k !== t && (k = t, h())
		}, B.display = function(t) {
			L = t
		}, B.error = function(t) {
			b = t
		}, B.beginUpdate = function() {
			x = !0
		}, B.endUpdate = function() {
			x = !1, M && h()
		}, B.autofit = function(t) {
			var n;
			for (n = 0; n < _.length; n++) _[n] && t.extend(_[n].options.position)
		}
	}
	
	function _(t, n) {
		var e = this;
		e.id = function() {
			return t
		}, e.filter = function(t) {
			n.filter(t)
		}, e.enable = function() {
			n.enable(!0)
		}, e.disable = function() {
			n.enable(!1)
		}, e.add = function(t, e, o) {
			o || n.beginUpdate(), n.addMarker(t, e), o || n.endUpdate()
		}, e.getById = function(t) {
			return n.getById(t)
		}, e.clearById = function(t, e) {
			var o;
			return e || n.beginUpdate(), o = n.clearById(t), e || n.endUpdate(), o
		}, e.clear = function(t, e, o, i) {
			i || n.beginUpdate(), n.clear(t, e, o), i || n.endUpdate()
		}
	}
	
	function D(n, e, o, i) {
		var a = this,
			r = [];
		A.classes.OverlayView.call(a), a.setMap(n), a.onAdd = function() {
			var n = a.getPanes();
			e.pane in n && t(n[e.pane]).append(i), t.each("dblclick click mouseover mousemove mouseout mouseup mousedown".split(" "), function(n, e) {
				r.push(q.event.addDomListener(i[0], e, function(n) {
					t.Event(n).stopPropagation(), q.event.trigger(a, e, [n]), a.draw()
				}))
			}), r.push(q.event.addDomListener(i[0], "contextmenu", function(n) {
				t.Event(n).stopPropagation(), q.event.trigger(a, "rightclick", [n]), a.draw()
			}))
		}, a.getPosition = function() {
			return o
		}, a.setPosition = function(t) {
			o = t, a.draw()
		}, a.draw = function() {
			var t = a.getProjection().fromLatLngToDivPixel(o);
			i.css("left", t.x + e.offset.x + "px").css("top", t.y + e.offset.y + "px")
		}, a.onRemove = function() {
			var t;
			for (t = 0; t < r.length; t++) q.event.removeListener(r[t]);
			i.remove()
		}, a.hide = function() {
			i.hide()
		}, a.show = function() {
			i.show()
		}, a.toggle = function() {
			i && (i.is(":visible") ? a.show() : a.hide())
		}, a.toggleDOM = function() {
			a.setMap(a.getMap() ? null : n)
		}, a.getDOMElement = function() {
			return i[0]
		}
	}
	
	function U(i) {
		function r() {
			!b && (b = M.get()) && b.run()
		}
		
		function d() {
			b = null, M.ack(), r.call(x)
		}
		
		function c(t) {
			var n, e = t.td.callback;
			e && (n = Array.prototype.slice.call(arguments, 1), z(e) ? e.apply(i, n) : R(e) && z(e[1]) && e[1].apply(e[0], n))
		}
		
		function g(t, n, e) {
			e && l(i, t, n, e), c(t, n), b.ack(n)
		}
		
		function v(n, e) {
			e = e || {};
			var o = e.td && e.td.options ? e.td.options : 0;
			S ? o && (o.center && (o.center = m(o.center)), S.setOptions(o)) : (o = e.opts || t.extend(!0, {}, A.map, o || {}), o.center = n || m(o.center), S = new A.classes.Map(i.get(0), o))
		}
		
		function w(e) {
			var o, a, r = new T(i, S, e),
				s = {},
				u = {},
				d = [],
				c = /^[0-9]+$/;
			for (a in e) c.test(a) ? (d.push(1 * a), u[a] = e[a], u[a].width = u[a].width || 0, u[a].height = u[a].height || 0) : s[a] = e[a];
			return d.sort(function(t, n) {
				return t > n
			}), o = s.calculator ? function(n) {
				var e = [];
				return t.each(n, function(t, n) {
					e.push(r.value(n))
				}), s.calculator.apply(i, [e])
			} : function(t) {
				return t.length
			}, r.error(function() {
				f.apply(x, arguments)
			}), r.display(function(a) {
				var c, p, f, g, h, v, y = o(a.indexes);
				if (e.force || y > 1)
					for (c = 0; c < d.length; c++) d[c] <= y && (p = u[d[c]]);
				p ? (h = p.offset || [-p.width / 2, -p.height / 2], f = t.extend({}, s), f.options = t.extend({
					pane: "overlayLayer",
					content: p.content ? p.content.replace("CLUSTER_COUNT", y) : "",
					offset: {
						x: ("x" in h ? h.x : h[0]) || 0,
						y: ("y" in h ? h.y : h[1]) || 0
					}
				}, s.options || {}), g = x.overlay({
					td: f,
					opts: f.options,
					latLng: m(a)
				}, !0), f.options.pane = "floatShadow", f.options.content = t(document.createElement("div")).width(p.width + "px").height(p.height + "px").css({
					cursor: "pointer"
				}), v = x.overlay({
					td: f,
					opts: f.options,
					latLng: m(a)
				}, !0), s.data = {
					latLng: m(a),
					markers: []
				}, t.each(a.indexes, function(t, n) {
					s.data.markers.push(r.value(n)), r.markerIsSet(n) && r.marker(n).setMap(null)
				}), l(i, {
					td: s
				}, v, n, {
					main: g,
					shadow: v
				}), r.store(a, g, v)) : t.each(a.indexes, function(t, n) {
					r.marker(n).setMap(S)
				})
			}), r
		}
		
		function L(n, e, o) {
			var a = [],
				r = "values" in n.td;
			return r || (n.td.values = [{
				options: n.opts
			}]), n.td.values.length ? (v(), t.each(n.td.values, function(t, r) {
				var s, u, d, c, f = p(n, r);
				if (f.options[o])
					if (f.options[o][0][0] && R(f.options[o][0][0]))
						for (u = 0; u < f.options[o].length; u++)
							for (d = 0; d < f.options[o][u].length; d++) f.options[o][u][d] = m(f.options[o][u][d]);
					else
						for (u = 0; u < f.options[o].length; u++) f.options[o][u] = m(f.options[o][u]);
				f.options.map = S, c = new q[e](f.options), a.push(c), s = I.add({
					td: f
				}, e.toLowerCase(), c), l(i, {
					td: f
				}, c, s)
			}), void g(n, r ? a : a[0])) : void g(n, !1)
		}
		var b, x = this,
			M = new P,
			I = new k,
			S = null;
		x._plan = function(t) {
			var n;
			for (n = 0; n < t.length; n++) M.add(new B(x, d, t[n]));
			r()
		}, x.map = function(t) {
			v(t.latLng, t), l(i, t, S), g(t, S)
		}, x.destroy = function(t) {
			I.clear(), i.empty(), S && (S = null), g(t, !0)
		}, x.overlay = function(n, e) {
			var o = [],
				a = "values" in n.td;
			return a || (n.td.values = [{
				latLng: n.latLng,
				options: n.opts
			}]), n.td.values.length ? (D.__initialised || (D.prototype = new A.classes.OverlayView, D.__initialised = !0), t.each(n.td.values, function(a, r) {
				var s, u, d = p(n, r),
					c = t(document.createElement("div")).css({
						border: "none",
						borderWidth: 0,
						position: "absolute"
					});
				c.append(d.options.content), u = new D(S, d.options, m(d) || m(r), c), o.push(u), c = null, e || (s = I.add(n, "overlay", u), l(i, {
					td: d
				}, u, s))
			}), e ? o[0] : void g(n, a ? o : o[0])) : void g(n, !1)
		}, x.marker = function(n) {
			var e, o, a, r = "values" in n.td,
				u = !S;
			return r || (n.opts.position = n.latLng || m(n.opts.position), n.td.values = [{
				options: n.opts
			}]), n.td.values.length ? (u && v(), n.td.cluster && !S.getBounds() ? void q.event.addListenerOnce(S, "bounds_changed", function() {
				x.marker.apply(x, [n])
			}) : void(n.td.cluster ? (n.td.cluster instanceof _ ? (o = n.td.cluster, a = I.getById(o.id(), !0)) : (a = w(n.td.cluster), o = new _(s(n.td.id, !0), a), I.add(n, "clusterer", o, a)), a.beginUpdate(), t.each(n.td.values, function(t, e) {
				var o = p(n, e);
				o.options.position = m(o.options.position ? o.options.position : e), o.options.position && (o.options.map = S, u && (S.setCenter(o.options.position), u = !1), a.add(o, e))
			}), a.endUpdate(), g(n, o)) : (e = [], t.each(n.td.values, function(t, o) {
				var a, r, s = p(n, o);
				s.options.position = m(s.options.position ? s.options.position : o), s.options.position && (s.options.map = S, u && (S.setCenter(s.options.position), u = !1), r = new A.classes.Marker(s.options), e.push(r), a = I.add({
					td: s
				}, "marker", r), l(i, {
					td: s
				}, r, a))
			}), g(n, r ? e : e[0])))) : void g(n, !1)
		}, x.getroute = function(t) {
			t.opts.origin = m(t.opts.origin, !0), t.opts.destination = m(t.opts.destination, !0), j().route(t.opts, function(n, e) {
				c(t, e === q.DirectionsStatus.OK ? n : !1, e), b.ack()
			})
		}, x.getdistance = function(t) {
			var n;
			for (t.opts.origins = h(t.opts.origins), n = 0; n < t.opts.origins.length; n++) t.opts.origins[n] = m(t.opts.origins[n], !0);
			for (t.opts.destinations = h(t.opts.destinations), n = 0; n < t.opts.destinations.length; n++) t.opts.destinations[n] = m(t.opts.destinations[n], !0);
			O().getDistanceMatrix(t.opts, function(n, e) {
				c(t, e === q.DistanceMatrixStatus.OK ? n : !1, e), b.ack()
			})
		}, x.infowindow = function(e) {
			var o = [],
				r = "values" in e.td;
			r || (e.latLng && (e.opts.position = e.latLng), e.td.values = [{
				options: e.opts
			}]), t.each(e.td.values, function(t, s) {
				var u, d, c = p(e, s);
				c.options.position = m(c.options.position ? c.options.position : s.latLng), S || v(c.options.position), d = new A.classes.InfoWindow(c.options), d && (a(c.open) || c.open) && (r ? d.open(S, c.anchor || n) : d.open(S, c.anchor || (e.latLng ? n : e.session.marker ? e.session.marker : n))), o.push(d), u = I.add({
					td: c
				}, "infowindow", d), l(i, {
					td: c
				}, d, u)
			}), g(e, r ? o : o[0])
		}, x.circle = function(n) {
			var e = [],
				o = "values" in n.td;
			return o || (n.opts.center = n.latLng || m(n.opts.center), n.td.values = [{
				options: n.opts
			}]), n.td.values.length ? (t.each(n.td.values, function(t, o) {
				var a, r, s = p(n, o);
				s.options.center = m(s.options.center ? s.options.center : o), S || v(s.options.center), s.options.map = S, r = new A.classes.Circle(s.options), e.push(r), a = I.add({
					td: s
				}, "circle", r), l(i, {
					td: s
				}, r, a)
			}), void g(n, o ? e : e[0])) : void g(n, !1)
		}, x.getaddress = function(t) {
			c(t, t.results, t.status), b.ack()
		}, x.getlatlng = function(t) {
			c(t, t.results, t.status), b.ack()
		}, x.getmaxzoom = function(t) {
			C().getMaxZoomAtLatLng(t.latLng, function(n) {
				c(t, n.status === q.MaxZoomStatus.OK ? n.zoom : !1, status), b.ack()
			})
		}, x.getelevation = function(t) {
			var n, e = [],
				o = function(n, e) {
					c(t, e === q.ElevationStatus.OK ? n : !1, e), b.ack()
				};
			if (t.latLng) e.push(t.latLng);
			else
				for (e = h(t.td.locations || []), n = 0; n < e.length; n++) e[n] = m(e[n]);
			if (e.length) E().getElevationForLocations({
				locations: e
			}, o);
			else {
				if (t.td.path && t.td.path.length)
					for (n = 0; n < t.td.path.length; n++) e.push(m(t.td.path[n]));
				e.length ? E().getElevationAlongPath({
					path: e,
					samples: t.td.samples
				}, o) : b.ack()
			}
		}, x.defaults = function(n) {
			t.each(n.td, function(n, o) {
				A[n] = e(A[n]) ? t.extend({}, A[n], o) : o
			}), b.ack(!0)
		}, x.rectangle = function(n) {
			var e = [],
				o = "values" in n.td;
			return o || (n.td.values = [{
				options: n.opts
			}]), n.td.values.length ? (t.each(n.td.values, function(t, o) {
				var a, r, s = p(n, o);
				s.options.bounds = y(s.options.bounds ? s.options.bounds : o), S || v(s.options.bounds.getCenter()), s.options.map = S, r = new A.classes.Rectangle(s.options), e.push(r), a = I.add({
					td: s
				}, "rectangle", r), l(i, {
					td: s
				}, r, a)
			}), void g(n, o ? e : e[0])) : void g(n, !1)
		}, x.polyline = function(t) {
			L(t, "Polyline", "path")
		}, x.polygon = function(t) {
			L(t, "Polygon", "paths")
		}, x.trafficlayer = function(t) {
			v();
			var n = I.get("trafficlayer");
			n || (n = new A.classes.TrafficLayer, n.setMap(S), I.add(t, "trafficlayer", n)), g(t, n)
		}, x.bicyclinglayer = function(t) {
			v();
			var n = I.get("bicyclinglayer");
			n || (n = new A.classes.BicyclingLayer, n.setMap(S), I.add(t, "bicyclinglayer", n)), g(t, n)
		}, x.groundoverlay = function(t) {
			t.opts.bounds = y(t.opts.bounds), t.opts.bounds && v(t.opts.bounds.getCenter());
			var n, e = new A.classes.GroundOverlay(t.opts.url, t.opts.bounds, t.opts.opts);
			e.setMap(S), n = I.add(t, "groundoverlay", e), g(t, e, n)
		}, x.streetviewpanorama = function(n) {
			n.opts.opts || (n.opts.opts = {}), n.latLng ? n.opts.opts.position = n.latLng : n.opts.opts.position && (n.opts.opts.position = m(n.opts.opts.position)), n.td.divId ? n.opts.container = document.getElementById(n.td.divId) : n.opts.container && (n.opts.container = t(n.opts.container).get(0));
			var e, o = new A.classes.StreetViewPanorama(n.opts.container, n.opts.opts);
			o && S.setStreetView(o), e = I.add(n, "streetviewpanorama", o), g(n, o, e)
		}, x.kmllayer = function(n) {
			var e = [],
				o = "values" in n.td;
			return o || (n.td.values = [{
				options: n.opts
			}]), n.td.values.length ? (t.each(n.td.values, function(t, o) {
				var a, r, s, d = p(n, o);
				S || v(), s = d.options, d.options.opts && (s = d.options.opts, d.options.url && (s.url = d.options.url)), s.map = S, r = u("3.10") ? new A.classes.KmlLayer(s) : new A.classes.KmlLayer(s.url, s), e.push(r), a = I.add({
					td: d
				}, "kmllayer", r), l(i, {
					td: d
				}, r, a)
			}), void g(n, o ? e : e[0])) : void g(n, !1)
		}, x.panel = function(n) {
			v();
			var e, o, r = 0,
				s = 0,
				u = t(document.createElement("div"));
			u.css({
				position: "absolute",
				zIndex: 1e3,
				visibility: "hidden"
			}), n.opts.content && (o = t(n.opts.content), u.append(o), i.first().prepend(u), a(n.opts.left) ? a(n.opts.right) ? n.opts.center && (r = (i.width() - o.width()) / 2) : r = i.width() - o.width() - n.opts.right : r = n.opts.left, a(n.opts.top) ? a(n.opts.bottom) ? n.opts.middle && (s = (i.height() - o.height()) / 2) : s = i.height() - o.height() - n.opts.bottom : s = n.opts.top, u.css({
				top: s,
				left: r,
				visibility: "visible"
			})), e = I.add(n, "panel", u), g(n, u, e), u = null
		}, x.directionsrenderer = function(n) {
			n.opts.map = S;
			var e, o = new q.DirectionsRenderer(n.opts);
			n.td.divId ? o.setPanel(document.getElementById(n.td.divId)) : n.td.container && o.setPanel(t(n.td.container).get(0)), e = I.add(n, "directionsrenderer", o), g(n, o, e)
		}, x.getgeoloc = function(t) {
			g(t, t.latLng)
		}, x.styledmaptype = function(t) {
			v();
			var n = new A.classes.StyledMapType(t.td.styles, t.opts);
			S.mapTypes.set(t.td.id, n), g(t, n)
		}, x.imagemaptype = function(t) {
			v();
			var n = new A.classes.ImageMapType(t.opts);
			S.mapTypes.set(t.td.id, n), g(t, n)
		}, x.autofit = function(n) {
			var e = new q.LatLngBounds;
			t.each(I.all(), function(t, n) {
				n.getPosition ? e.extend(n.getPosition()) : n.getBounds ? (e.extend(n.getBounds().getNorthEast()), e.extend(n.getBounds().getSouthWest())) : n.getPaths ? n.getPaths().forEach(function(t) {
					t.forEach(function(t) {
						e.extend(t)
					})
				}) : n.getPath ? n.getPath().forEach(function(t) {
					e.extend(t)
				}) : n.getCenter ? e.extend(n.getCenter()) : "function" == typeof _ && n instanceof _ && (n = I.getById(n.id(), !0), n && n.autofit(e))
			}), e.isEmpty() || S.getBounds() && S.getBounds().equals(e) || ("maxZoom" in n.td && q.event.addListenerOnce(S, "bounds_changed", function() {
				this.getZoom() > n.td.maxZoom && this.setZoom(n.td.maxZoom)
			}), S.fitBounds(e)), g(n, !0)
		}, x.clear = function(n) {
			if (o(n.td)) {
				if (I.clearById(n.td) || I.objClearById(n.td)) return void g(n, !0);
				n.td = {
					name: n.td
				}
			}
			n.td.id ? t.each(h(n.td.id), function(t, n) {
				I.clearById(n) || I.objClearById(n)
			}) : (I.clear(h(n.td.name), n.td.last, n.td.first, n.td.tag), I.objClear(h(n.td.name), n.td.last, n.td.first, n.td.tag)), g(n, !0)
		}, x.get = function(e, i, a) {
			var r, s, u = i ? e : e.td;
			return i || (a = u.full), o(u) ? (s = I.getById(u, !1, a) || I.objGetById(u), s === !1 && (r = u, u = {})) : r = u.name, "map" === r && (s = S), s || (s = [], u.id ? (t.each(h(u.id), function(t, n) {
				s.push(I.getById(n, !1, a) || I.objGetById(n))
			}), R(u.id) || (s = s[0])) : (t.each(r ? h(r) : [n], function(n, e) {
				var o;
				u.first ? (o = I.get(e, !1, u.tag, a), o && s.push(o)) : u.all ? t.each(I.all(e, u.tag, a), function(t, n) {
					s.push(n)
				}) : (o = I.get(e, !0, u.tag, a), o && s.push(o))
			}), u.all || R(r) || (s = s[0]))), s = R(s) || !u.all ? s : [s], i ? s : void g(e, s)
		}, x.exec = function(n) {
			t.each(h(n.td.func), function(e, o) {
				t.each(x.get(n.td, !0, n.td.hasOwnProperty("full") ? n.td.full : !0), function(t, n) {
					o.call(i, n)
				})
			}), g(n, !0)
		}, x.trigger = function(n) {
			if (o(n.td)) q.event.trigger(S, n.td);
			else {
				var e = [S, n.td.eventName];
				n.td.var_args && t.each(n.td.var_args, function(t, n) {
					e.push(n)
				}), q.event.trigger.apply(q.event, e)
			}
			c(n), b.ack()
		}
	}
	var A, q, Z = 0,
		z = t.isFunction,
		R = t.isArray,
		V = {},
		G = new I;
	t.fn.gmap3 = function() {
		var n, e = [],
			o = !0,
			i = [];
		for (r(), n = 0; n < arguments.length; n++) arguments[n] && e.push(arguments[n]);
		return e.length || e.push("map"), t.each(this, function() {
			var n = t(this),
				a = n.data("gmap3");
			o = !1, a || (a = new U(n), n.data("gmap3", a)), 1 !== e.length || "get" !== e[0] && !x(e[0]) ? a._plan(e) : i.push("get" === e[0] ? a.get("map", !0) : a.get(e[0].get, !0, e[0].get.full))
		}), i.length ? 1 === i.length ? i[0] : i : this
	}
}(jQuery);
Back to Directory File Manager