Created
March 23, 2011 19:33
-
-
Save jayzeng/883776 to your computer and use it in GitHub Desktop.
bing map
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
window.Microsoft = window.Microsoft || {}; | |
window.Microsoft.Maps = window.Microsoft.Maps || {}; | |
window.Microsoft.Maps.initMapDelayCode = function () { | |
var K = 'Invalid Credentials. Sign up for a developer account at: <a href="http://www.microsoft.com/maps/developers">http://www.microsoft.com/maps/developers</a>', | |
M = "{num} km", | |
Y = "{num} m", | |
ab = "{num} miles", | |
bb = "{num} yds", | |
db = "{num} feet", | |
X = "Click to pan in any direction", | |
P = "Rotate left", | |
L = "Rotate right", | |
cb = "Zoom in", | |
Z = "Zoom out", | |
Q = "Move slider to zoom in or out", | |
N = "N", | |
U = "Automatic", | |
F = "Switches to the best map style as you zoom", | |
V = "Road", | |
H = "A standard road map, no refolding needed", | |
O = "Bird's eye", | |
E = "A map made up of photos taken from the air", | |
J = "Bird's eye", | |
C = "A map made up of photos taken from the air", | |
G = "London Street Map", | |
B = "Detailed maps for Greater London", | |
D = "Ordnance Survey Map", | |
A = "Maps for outdoor life", | |
S = "show labels", | |
R = "show angled view", | |
v = "Search on Bing", | |
I = "Search on Bing", | |
T = "Bing Maps", | |
fb = "World", | |
d = window.Microsoft.Maps, | |
a = d.Gimme, | |
i = d.Globals, | |
l = d.Point, | |
r = d.LabelOverlay, | |
b = d.Events, | |
x = d.LocationRect, | |
y = d.Location, | |
pb = d.Pushpin, | |
k = d.MapTypeId, | |
j = d.InternalNamespaceForDelay, | |
mb = j.Dynamic, | |
jb = j.DelayMap, | |
s = j.IdGenerator, | |
t = j.Network, | |
o = j.MapMath, | |
z = j.Quirks, | |
q = { | |
auto: { | |
title: U, | |
description: F | |
}, | |
r: { | |
title: V, | |
description: H | |
}, | |
a: { | |
title: O, | |
description: E | |
}, | |
be: { | |
title: J, | |
description: C | |
}, | |
cb: { | |
title: G, | |
description: B | |
}, | |
os: { | |
title: D, | |
description: A | |
} | |
}; | |
function lb(n, y, z) { | |
var A = this, | |
d, h, r, f, g, m, w, c, t = 15, | |
p, s, q; | |
d = document.createElement("a"); | |
d.appendChild(document.createTextNode(N)); | |
h = a(d); | |
d.title = X; | |
h.add_event("mousedown", i).add_event("mouseup", k).add_event("mousemove", j).add_event("dblclick", e).add_event("touchstart", i).add_event("touchmove", j).add_event("touchend", k); | |
y.appendChild(d); | |
s = b.addHandler(n, "targetviewchanged", v); | |
this.dispose = function () { | |
if (d) { | |
h.remove_event("mousedown", i).remove_event("mouseup", k).remove_event("mousemove", j).remove_event("dblclick", e).remove_event("touchstart", i).remove_event("touchmove", j).remove_event("touchend", k); | |
y.removeChild(d); | |
d = null; | |
b.removeHandler(s) | |
} | |
}; | |
this.enableRotation = function (a) { | |
if (a !== p) { | |
p = a; | |
if (!a) { | |
d.className = "NavBar_compass NavBar_compassFlat"; | |
q = null | |
} | |
v() | |
} | |
}; | |
function v() { | |
if (p) { | |
var b = n.getTargetHeading(); | |
if (b !== q) { | |
var a = ""; | |
switch (o.snapToCardinalHeading(b)) { | |
case o.northUpHeading: | |
a = "NavBar_compassN"; | |
break; | |
case o.eastUpHeading: | |
a = "NavBar_compassE"; | |
break; | |
case o.southUpHeading: | |
a = "NavBar_compassS"; | |
break; | |
case o.westUpHeading: | |
a = "NavBar_compassW" | |
} | |
d.className = "NavBar_compass " + a; | |
q = b | |
} | |
} | |
} | |
function u(d) { | |
var b = a.Screen.get_mouse_pos(d); | |
if (isNaN(b.x)) b = new l(d.touches[0].pageX, d.touches[0].pageY); | |
c = new l(b.x - r.x - f.x, b.y - r.y - f.y); | |
var e = Math.sqrt(c.x * c.x + c.y * c.y); | |
if (e < g) { | |
c.x = c.x / g * t; | |
c.y = c.y / g * t | |
} | |
} | |
function x() { | |
if (Math.abs(c.x) <= 1) c.x = 0; | |
if (Math.abs(c.y) <= 1) c.y = 0; | |
if (c.x || c.y) { | |
var a = n.tryPixelToLocation(c); | |
a && n.setView({ | |
center: a, | |
animate: false | |
}) | |
} | |
} | |
function i(b) { | |
e(b); | |
z.reportAction(b); | |
f = new l(d.offsetWidth / 2, d.offsetHeight / 2); | |
g = Math.min(f.x, f.y); | |
r = h.get_absolute_pos(); | |
a.Events.capture_mouse(d); | |
u(b); | |
x(); | |
m = true; | |
w = window.setInterval(x, 100) | |
} | |
function j(a) { | |
if (m) { | |
e(a); | |
u(a) | |
} | |
} | |
function k(b) { | |
e(b); | |
if (m) { | |
window.clearInterval(w); | |
a.Events.release_mouse(); | |
m = false | |
} | |
} | |
function e(a) { | |
a.stopPropagation(); | |
a.preventDefault() | |
} | |
} | |
function gb(l, O, x) { | |
var X = this, | |
e, n, D, L = document.body, | |
c, p, d = l.getMapTypeId(), | |
j = true, | |
h = true, | |
u, t, C = k.auto, | |
K = k.road, | |
A = k.aerial, | |
f = k.birdseye, | |
M = k.collinsBart, | |
N = k.ordnanceSurvey, | |
G, F, y = false, | |
J = new Date(0), | |
Q = .3; | |
e = document.createElement("a"); | |
e.href = "#"; | |
e.className = "NavBar_button NavBar_typeButton"; | |
a(e).add_event("click", U).add_event("mouseenter", T).add_event("mouseleave", o).add_event("touchstart", V); | |
n = document.createElement("span"); | |
n.appendChild(document.createTextNode("")); | |
D = document.createElement("span"); | |
D.className = "NavBar_dropIcon"; | |
e.appendChild(D); | |
e.appendChild(n); | |
G = b.addHandler(l, "maptypechanged", B); | |
F = b.addHandler(l, "optionschanged", B); | |
O.appendChild(e); | |
B(); | |
this.dispose = function () { | |
if (e) { | |
v(); | |
b.removeHandler(G); | |
b.removeHandler(F); | |
O.removeChild(e); | |
e = null | |
} | |
}; | |
this.getAerialViewSettings = function () { | |
return { | |
showLabels: j, | |
enableTilt: h | |
} | |
}; | |
this.setAerialViewSettings = function (b, a) { | |
j = b; | |
h = a; | |
w(d) && g(f) | |
}; | |
function B() { | |
var b = l.getOptions(); | |
d = l.getMapTypeId(); | |
if (q.hasOwnProperty(d)) { | |
var a = q[d]; | |
n.replaceChild(document.createTextNode(a.title), n.firstChild) | |
} | |
if (d === A) h = false; | |
else if (d === f) h = true; | |
j = b.labelOverlay !== r.hidden | |
} | |
function T(a) { | |
if (!c) J = new Date; | |
E(a) | |
} | |
function E() { | |
z(); | |
if (!c) { | |
c = document.createElement("ul"); | |
c.className = "MicrosoftMap_NavBar_typeMenu"; | |
c.style.cssText = "position:absolute;visibility:hidden"; | |
L.appendChild(c); | |
a(c).add_event("mouseenter", E).add_event("mouseleave", o); | |
m(c, K, d === K, g); | |
i.allowCollinsBart && m(c, M, d === M, g); | |
i.allowOrdnanceSurvey && m(c, N, d === N, g); | |
m(c, C, d === C, g); | |
var r = m(c, f, w(d), g); | |
P(r) | |
} | |
if (c.style.visibility === "hidden") { | |
var k = a(e).get_absolute_pos(), | |
n = l.getRootElement(), | |
q = a(n).get_absolute_pos(), | |
p = n.offsetWidth, | |
s = c.offsetWidth, | |
v = k.y + e.offsetHeight, | |
b = k.x; | |
b = Math.min(b, q.x + p - s); | |
c.style.top = v + "px"; | |
c.style.left = b + "px"; | |
c.style.visibility = "visible"; | |
t.checked = h; | |
u.checked = j | |
} | |
} | |
function w(a) { | |
return a === A || a === f | |
} | |
function U(b) { | |
if (c) { | |
var a = new Date; | |
(a - J) / 1e3 > Q && v() | |
} else { | |
x.reportAction(b); | |
E() | |
} | |
} | |
function o() { | |
z(); | |
p = window.setTimeout(v, 1e3) | |
} | |
function v() { | |
z(); | |
if (c) { | |
L.removeChild(c); | |
c = null | |
} | |
} | |
function z() { | |
if (p) { | |
window.clearTimeout(p); | |
p = null | |
} | |
} | |
function g(a) { | |
if (a === f) a = h ? f : A; | |
l.setView({ | |
mapTypeId: a, | |
labelOverlay: j || a === C ? r.visible : r.hidden | |
}) | |
} | |
function V() { | |
y = true | |
} | |
function I(a) { | |
a.stopPropagation(); | |
x.reportAction(a); | |
if (a.currentTarget.tagName === "SPAN") u.checked = !j; | |
j = u.checked; | |
w(d) && g(f); | |
y && o() | |
} | |
function H(a) { | |
a.stopPropagation(); | |
x.reportAction(a); | |
if (a.currentTarget.tagName === "SPAN") t.checked = !h; | |
h = t.checked; | |
w(d) && g(f); | |
y && o() | |
} | |
function m(l, c, k, h) { | |
var b = document.createElement("li"), | |
i = q[c]; | |
b.className = "NavBar_menuitem" + (k ? " NavBar_menuItemSel" : ""); | |
l.appendChild(b); | |
if (h) { | |
var d = document.createElement("div"); | |
d.className = "NavBar_itemContainer NavBar_itemContainer_" + c; | |
b.appendChild(d); | |
a(d).add_event("click", function (a) { | |
a.stopPropagation(); | |
x.reportAction(a); | |
h(c); | |
v() | |
}); | |
b = d | |
} | |
var j = document.createElement("div"); | |
j.className = "NavBar_typePreview NavBar_typePreview_" + c; | |
b.appendChild(j); | |
var e = document.createElement("div"); | |
e.className = "NavBar_typeContent"; | |
b.appendChild(e); | |
b = e; | |
var f = document.createElement("div"); | |
f.className = "NavBar_typeTitle"; | |
f.appendChild(document.createTextNode(i.title)); | |
b.appendChild(f); | |
var g = document.createElement("div"); | |
g.className = "NavBar_typeDesc"; | |
g.appendChild(document.createTextNode(i.description)); | |
b.appendChild(g); | |
return b | |
} | |
function P(f) { | |
var e = document.createElement("div"); | |
e.className = "NavBar_checkControls"; | |
var c = document.createElement("div"); | |
c.className = "NavBar_checkControl"; | |
var b = document.createElement("input"); | |
b.id = "LabelCB_" + s.getNext(); | |
b.setAttribute("type", "checkbox"); | |
a(b).add_event("click", I); | |
u = b; | |
c.appendChild(b); | |
var d = document.createElement("span"); | |
d.appendChild(document.createTextNode(S)); | |
a(d).add_event("click", I); | |
c.appendChild(d); | |
e.appendChild(c); | |
c = document.createElement("div"); | |
c.className = "NavBar_checkControl"; | |
b = document.createElement("input"); | |
b.id = "TiltCB_" + s.getNext(); | |
b.setAttribute("type", "checkbox"); | |
a(b).add_event("click", H); | |
t = b; | |
c.appendChild(b); | |
d = document.createElement("span"); | |
d.appendChild(document.createTextNode(R)); | |
a(d).add_event("click", H); | |
c.appendChild(d); | |
e.appendChild(c); | |
f.appendChild(e) | |
} | |
} | |
function nb(n, x, u) { | |
var L = this, | |
g, e, q, d, y, A, h, f, j, k, C, p; | |
g = document.createElement("div"); | |
g.className = "NavBar_zoom"; | |
g.style.cssText = z.safariRenderHack; | |
e = document.createElement("div"); | |
e.className = "NavBar_zoomBar"; | |
e.style.cssText = "position:absolute;overflow:hidden"; | |
a(e).add_event("click", H).add_event("touchstart", r).add_event("touchmove", s).add_event("touchend", t); | |
q = document.createElement("div"); | |
q.className = "NavBar_zoomBarBg"; | |
q.style.cssText = "position:absolute"; | |
e.appendChild(q); | |
d = document.createElement("div"); | |
d.className = "NavBar_zoomSlider"; | |
d.style.cssText = "position:absolute"; | |
d.title = Q; | |
a(d).add_event("mousedown", D).add_event("mouseup", G).add_event("mousemove", E).add_event("click", c).add_event("touchstart", r).add_event("touchmove", s).add_event("touchend", t); | |
a(g).add_event("mousedown", c).add_event("mouseup", c).add_event("mousemove", c).add_event("click", c).add_event("touchstart", c).add_event("touchmove", c).add_event("touchend", c); | |
e.appendChild(d); | |
g.appendChild(e); | |
x.appendChild(g); | |
y = b.addHandler(n, "targetviewchanged", v); | |
A = b.addHandler(n, "imagerychanged", v); | |
m(); | |
this.dispose = function () { | |
if (g) { | |
a(e).remove_event("click", H).remove_event("touchstart", r).remove_event("touchmove", s).remove_event("touchend", t); | |
a(d).remove_event("mousedown", D).remove_event("mouseup", G).remove_event("mousemove", E).remove_event("click", c).remove_event("touchstart", r).remove_event("touchmove", s).remove_event("touchend", t); | |
a(g).remove_event("mousedown", c).remove_event("mouseup", c).remove_event("mousemove", c).remove_event("click", c).remove_event("touchstart", c).remove_event("touchmove", c).remove_event("touchend", c); | |
b.removeHandler(y); | |
b.removeHandler(A); | |
x.removeChild(g); | |
e = null; | |
d = null; | |
g = null | |
} | |
}; | |
this.show = function () { | |
v() | |
}; | |
this.resetZoomBarTimer = m; | |
function c(a) { | |
a.stopPropagation(); | |
a.preventDefault() | |
} | |
function D(b) { | |
c(b); | |
a.Events.capture_mouse(d); | |
h = true | |
} | |
function r(a) { | |
m(); | |
var b = Math.min(1, a.touches.length); | |
if (!C && a.touches.length === 1) { | |
j = new l(a.touches[0].pageX, a.touches[0].pageY); | |
j.target = a.target; | |
j.start = new Date | |
} | |
k = new l(a.touches[0].pageX, a.touches[0].pageY); | |
C = k; | |
h = true; | |
c(a) | |
} | |
function E(b) { | |
c(b); | |
if (h) d.style.top = i(a.Screen.get_mouse_pos(b).y) + "px" | |
} | |
function s(a) { | |
m(); | |
F(); | |
k = new l(a.touches[0].pageX, a.touches[0].pageY); | |
if (h) d.style.top = i(k.y) + "px"; | |
c(a) | |
} | |
function G(b) { | |
c(b); | |
if (h) { | |
a.Events.release_mouse(); | |
h = false; | |
o(i(a.Screen.get_mouse_pos(b).y)); | |
w(); | |
u.reportAction(b) | |
} | |
} | |
function t(a) { | |
m(); | |
if (j) { | |
K(a); | |
u.reportAction(a) | |
} else if (h) { | |
h = false; | |
o(i(k.y)); | |
w(); | |
u.reportAction(a) | |
} | |
F() | |
} | |
function H(b) { | |
c(b); | |
o(i(a.Screen.get_mouse_pos(b).y)); | |
u.reportAction(b) | |
} | |
function K(a) { | |
a.target === e && o(i(j.y)) | |
} | |
function F() { | |
j = null | |
} | |
function v() { | |
var a = n.getZoomRange(); | |
if (!f || f.min != a.min || f.max != a.max) f = a; | |
w() | |
} | |
function i(b) { | |
var c = e.offsetHeight - d.offsetHeight; | |
b -= a(e).get_absolute_pos().y + d.offsetHeight / 2; | |
b = Math.max(b, 0); | |
b = Math.min(b, c); | |
return b | |
} | |
function o(b) { | |
var a = d.offsetHeight / 2, | |
c = e.offsetHeight - a, | |
g = b + a, | |
h = Math.round(f.max + (g - a) * -(f.max - f.min) / (c - a)); | |
n.setView({ | |
zoom: h | |
}) | |
} | |
function I(b, h) { | |
if (f) { | |
var a = d.offsetHeight / 2, | |
c = e.offsetHeight - a, | |
g = Math.round(a + (c - a) * (h - f.max) / -(f.max - f.min)); | |
b.style.top = g - b.offsetHeight / 2 + "px" | |
} | |
} | |
function w() { | |
I(d, n.getTargetZoom()) | |
} | |
function B() { | |
if (p) { | |
window.clearTimeout(p); | |
p = null | |
} | |
} | |
function m() { | |
B(); | |
p = window.setTimeout(J, 5e3) | |
} | |
function J() { | |
B(); | |
x.style.display = "none" | |
} | |
} | |
var e = { | |
left: 0, | |
middle: 1, | |
right: 2, | |
getName: function (a) { | |
switch (a) { | |
case e.left: | |
return "left"; | |
case e.middle: | |
return "middle"; | |
case e.right: | |
return "right" | |
} | |
return "" | |
}, | |
isValid: function (a) { | |
return a === e.left || a === e.middle || a === e.right | |
} | |
}; | |
d.ClientRegion = e; | |
function m(d, R) { | |
var V = this, | |
N = d.getRootElement(), | |
g, h, l, t, q, G, E, u, z, o, f, w, x, C, y = false, | |
k, v, S = { | |
visibility: "hidden" | |
}, | |
T = { | |
visibility: "visible" | |
}, | |
F, Q = "navbaraction"; | |
g = document.createElement("div"); | |
g.className = "NavBar Navbar_" + i.locale; | |
h = document.createElement("div"); | |
h.className = "NavBar_top"; | |
g.appendChild(h); | |
a(g).select("> div").add_event("mousedown", c).add_event("mouseup", c).add_event("mousewheel", c).add_event("dblclick", c).add_event("contextmenu", c).add_event("keydown", c).add_event("keyup", c).add_event("click", c).add_event("touchstart", j).add_event("touchmove", j).add_event("touchend", j).add_event("touchcancel", j); | |
l = document.createElement("div"); | |
l.className = "NavBar_compassContainer"; | |
h.appendChild(l); | |
t = r("NavBar_rotateLeft", P); | |
l.appendChild(t); | |
a(t).add_event("click", K); | |
E = new lb(d, l, this); | |
q = r("NavBar_rotateRight", L); | |
l.appendChild(q); | |
a(q).add_event("click", I); | |
G = a([t, q]); | |
u = document.createElement("div"); | |
u.className = "NavBar_zoomContainer"; | |
h.appendChild(u); | |
o = r("NavBar_zoomOut", Z); | |
u.appendChild(o); | |
a(o).add_event("click", H).add_event("mouseenter", n).add_event("mouseleave", s); | |
z = r("NavBar_zoomIn", cb); | |
u.appendChild(z); | |
a(z).add_event("click", J).add_event("mouseenter", n).add_event("mouseleave", s); | |
k = document.createElement("div"); | |
k.className = "NavBar_typeButtonContainer"; | |
h.appendChild(k); | |
if (R.showMapTypeSelector !== false) { | |
a(g).add_class("NavBarFull"); | |
m.appendSeparator(k); | |
v = new gb(d, k, this) | |
} | |
N.appendChild(g); | |
F = b.addHandler(d, "imagerychanged", M); | |
M(); | |
var A = b.addHandler(d, "ondispose", U); | |
function U() { | |
if (A && g) { | |
b.removeHandler(A); | |
A = null; | |
a(g).select("> div").remove_event("mousedown", c).remove_event("mouseup", c).remove_event("mousewheel", c).remove_event("dblclick", c).remove_event("contextmenu", c).remove_event("keydown", c).remove_event("keyup", c).remove_event("click", c).remove_event("touchstart", j).remove_event("touchmove", j).remove_event("touchend", j).remove_event("touchcancel", j); | |
a(t).remove_event("click", K); | |
a(q).remove_event("click", I); | |
a(o).remove_event("click", H).remove_event("mouseenter", n).remove_event("mouseleave", s); | |
a(z).remove_event("click", J).remove_event("mouseenter", n).remove_event("mouseleave", s); | |
E.dispose(); | |
w && w.dispose(); | |
v && v.dispose(); | |
b.removeHandler(F); | |
N.removeChild(g); | |
g = null | |
} | |
} | |
_publicApi = new | |
function () { | |
var f = {}, | |
b = {}; | |
function d(b) { | |
var a = f[b]; | |
if (!a) { | |
a = document.createElement("div"); | |
a.className = "NavBar_clientRegion NavBar_clientRegion_" + e.getName(b); | |
switch (b) { | |
case e.left: | |
h.insertBefore(a, l); | |
break; | |
case e.middle: | |
h.insertBefore(a, k); | |
k.className += " NavBar_typeButton_client"; | |
m.appendSeparator(a); | |
break; | |
case e.right: | |
h.appendChild(a); | |
m.appendSeparator(a) | |
} | |
f[b] = a | |
} | |
return a | |
} | |
this.getBreadcrumbRegion = function () { | |
return d(e.left) | |
}; | |
this.addClientButton = function (h, g, k, i, f) { | |
var j = d(h), | |
e = r(i, k); | |
j.appendChild(e); | |
b[g] = e; | |
a(e).add_event("click", function (a) { | |
c(a); | |
p(a); | |
f && f(g) | |
}) | |
}; | |
this.updateClientButton = function (e, d, c) { | |
var a = b[e]; | |
if (a) { | |
a.className = "NavBar_button NavBar_toolButton " + (c || ""); | |
a.title = d || "" | |
} | |
}; | |
this.removeClientButton = function (e, c) { | |
var f = d(e), | |
a = b[c]; | |
if (a) { | |
delete b[c]; | |
f.removeChild(a) | |
} | |
}; | |
this.getAerialViewSettings = function () { | |
return { | |
aerialViewSettings: v.getAerialViewSettings() | |
} | |
}; | |
this.setAerialViewSettings = function (b, a) { | |
v.setAerialViewSettings(b, a) | |
} | |
}; | |
d.addComponent("navigationBar", _publicApi); | |
function M() { | |
var a = d.isRotationEnabled(); | |
G.set_style(a ? T : S); | |
E.enableRotation(a) | |
} | |
function c(a) { | |
a.stopPropagation(); | |
a.preventDefault() | |
} | |
function j(a) { | |
y = true; | |
a.stopPropagation() | |
} | |
function r(c, b) { | |
var a = document.createElement("a"); | |
a.href = "#"; | |
a.className = "NavBar_button NavBar_toolButton " + (c || ""); | |
if (b) a.title = b; | |
return a | |
} | |
function p(c) { | |
var a = c.currentTarget; | |
a && b.invoke(_publicApi, Q, { | |
id: a.id, | |
typeName: a.className, | |
title: a.title | |
}) | |
} | |
function K(a) { | |
c(a); | |
p(a); | |
O(90) | |
} | |
function I(a) { | |
c(a); | |
p(a); | |
O(-90) | |
} | |
function O(a) { | |
d.setView({ | |
heading: d.getTargetHeading() + a | |
}) | |
} | |
function J(a) { | |
c(a); | |
p(a); | |
if (y) n(); | |
else D(); | |
d.setView({ | |
zoom: d.getTargetZoom() + 1 | |
}) | |
} | |
function H(a) { | |
c(a); | |
p(a); | |
if (y) n(); | |
else D(); | |
d.setView({ | |
zoom: d.getTargetZoom() - 1 | |
}) | |
} | |
function n() { | |
B(); | |
if (!f) { | |
f = document.createElement("div"); | |
f.className = "NavBar_zoomDrop"; | |
f.style.cssText = "position:absolute;display:none;"; | |
g.appendChild(f); | |
w = new nb(d, f, V); | |
a(f).add_event("mouseenter", n).add_event("mouseleave", s) | |
} | |
if (f.style.display === "none") { | |
var b = a(o).get_absolute_pos(), | |
c = a(g).get_absolute_pos(); | |
f.style.top = b.y - c.y + o.offsetHeight + "px"; | |
f.style.left = b.x - c.x + "px"; | |
f.style.display = ""; | |
w.show() | |
} | |
y && w.resetZoomBarTimer() | |
} | |
function s() { | |
B(); | |
x = window.setTimeout(D, 1e3) | |
} | |
function D() { | |
B(); | |
if (f) f.style.display = "none" | |
} | |
function B() { | |
if (x) { | |
window.clearTimeout(x); | |
x = null | |
} | |
if (C) { | |
window.clearTimeout(C); | |
C = null | |
} | |
} | |
this.reportAction = p | |
} | |
m.appendSeparator = function (b) { | |
var a = document.createElement("span"); | |
a.className = "NavBar_separator"; | |
b.appendChild(a) | |
}; | |
function hb(h) { | |
var gb = d.Globals.bingMapsRESTServicesUrl, | |
S = "en-us", | |
Ib = ["cs-cz", "da-dk", "nl-nl", "en-ca", "en-gb", "en-us", "fi-fi", "fr-ca", "fr-fr", "de-de", "it-it", "ja-jp", "nb-no", "pt-br", "pt-pt", "es-es", "es-us", "sv-se"], | |
db = 0, | |
v = 0, | |
w = 0, | |
u, p, J = null, | |
K = null, | |
I = {}, | |
m = {}, | |
N, R = true, | |
i = this, | |
A = false, | |
bb, Y, O = "navigationBar", | |
Q = {}, | |
q = "world", | |
dc = 0, | |
sb = "ready", | |
ub = "wait", | |
U = sb, | |
ob, tb, F, E, Lb = 1e3, | |
o, l = [], | |
f = { | |
world: fb, | |
worldBounds: [-75, -175, 75, 175], | |
countryZoom: 4, | |
stateZoom: 7, | |
countyZoom: 10, | |
cityZoom: 13, | |
neighborhoodZoom: 15, | |
streetZoom: 16, | |
current: "" | |
}, | |
c = f, | |
s = { | |
world: 0, | |
country: 1, | |
state: 2, | |
county: 3, | |
city: 4, | |
neighborhood: 5, | |
street: 6, | |
current: 7 | |
}, | |
k = ["world", "country", "state", "county", "city", "neighborhood", "street", "current"], | |
n = s.world, | |
D = 0, | |
e = {}, | |
g = {}, | |
pb = { | |
_cacheSize: 100, | |
_history: [], | |
_recentlyUsed: [], | |
_cache: {}, | |
add: function (a, b) { | |
if (!a) return; | |
this._cache[a] = b; | |
this._history.push(a); | |
if (this._history.length > this._cacheSize) delete this._cache[this._history.shift()] | |
}, | |
"get": function (a) { | |
return a ? this._cache[a] : null | |
} | |
}; | |
function Ub() { | |
b.removeHandler(F); | |
F = null; | |
ob = h.getTargetCenter(); | |
tb = h.getTargetZoom() | |
} | |
function G() { | |
if (N) { | |
h.entities.remove(N); | |
N = null | |
} | |
if (e.current.style.display !== "none") { | |
e.current.style.display = "none"; | |
e.currentDelim.style.display = "none"; | |
q = k[n]; | |
j() | |
} | |
} | |
function rb() { | |
if (e.current.style.display === "none") { | |
f.currentZoom = h.getTargetZoom(); | |
f.currentCenter = h.getTargetCenter(); | |
e.current.style.display = "inline-block"; | |
e.currentDelim.style.display = "inline"; | |
j() | |
} | |
} | |
function vb() { | |
v = ac() | |
} | |
function ac() { | |
var b = e.breadcrumbContainer, | |
f = e.breadcrumb; | |
if (f && b) { | |
var c = a(e.breadcrumb), | |
d = b.offsetWidth - parseInt(c.get_style("paddingLeft")) - parseInt(c.get_style("paddingRight")); | |
return d > 0 ? d : 0 | |
} | |
return 0 | |
} | |
function Rb() { | |
j() | |
} | |
function Nb() { | |
vb(); | |
if (v <= 0) { | |
e.breadcrumb.style.display = "none"; | |
return | |
} else e.breadcrumb.style.display = "block"; | |
var b = e.breadcrumbBar.offsetWidth; | |
if (b >= v) for (var a = 0, c = k.length - 1; a < c; a++) { | |
e[k[a]].firstChild.nodeValue = "..."; | |
e[k[a]].setAttribute("title", f[k[a]]); | |
b = e.breadcrumbBar.offsetWidth; | |
if (b < v) break | |
} | |
xb() | |
} | |
function xb() { | |
vb(); | |
if (v <= 0) { | |
e.breadcrumb.style.display = "none"; | |
return | |
} else e.breadcrumb.style.display = "block"; | |
var b = e.breadcrumbBar.offsetWidth; | |
if (b >= v) for (var a = 0, c = l.length; a < c; a++) { | |
g[l[a].name].firstChild.nodeValue = "..."; | |
g[l[a].name].setAttribute("title", l[a].value); | |
b = e.breadcrumbBar.offsetWidth; | |
if (b < v) break | |
} | |
cb(p) | |
} | |
function ab() { | |
if (e.breadcrumb) { | |
e.breadcrumb.parentNode.removeChild(e.breadcrumb); | |
e.breadcrumb = null | |
} | |
} | |
function Mb(a) { | |
var e = g[a + "Delim"]; | |
if (e) { | |
e.parentNode.removeChild(e); | |
g[a + "Delim"] = null | |
} | |
var f = z(a); | |
if (f.type === "group") { | |
var c = a + "Click"; | |
b.removeHandler(m[c]); | |
m[c] = null; | |
c = a + "MouseEnter"; | |
b.removeHandler(m[c]); | |
m[c] = null; | |
c = a + "MouseLeave"; | |
b.removeHandler(m[c]); | |
m[c] = null; | |
f === p && r(true); | |
var d = g[a + "Container"]; | |
g[a + "Container"] = null; | |
g[a] = null; | |
g[a + "ListSign"] = null; | |
d.parentNode.removeChild(d) | |
} else { | |
var c = a + "Click"; | |
b.removeHandler(m[c]); | |
m[c] = null; | |
var d = g[a]; | |
g[a] = null; | |
d.parentNode.removeChild(d) | |
} | |
} | |
function Pb(a) { | |
q = a; | |
j(); | |
switch (a) { | |
case "world": | |
case "country": | |
case "state": | |
case "county": | |
case "city": | |
case "neighborhood": | |
rb(); | |
break; | |
case "current": | |
G(); | |
break; | |
default: | |
b.invoke(i, "pathnodeclicked", { | |
pathNodeLevel: a, | |
pathNodeValue: z(a).value | |
}); | |
return | |
} | |
D++; | |
var c = f[a + "Bounds"]; | |
if (c) { | |
var d = x.fromEdges(c[2], c[1], c[0], c[3]); | |
T({ | |
bounds: d, | |
animate: R | |
}) | |
} else if (a === "current") T({ | |
center: f.currentCenter, | |
zoom: f.currentZoom, | |
animate: R | |
}); | |
else T({ | |
center: u, | |
zoom: f[a + "Zoom"], | |
animate: R | |
}); | |
b.invoke(i, "pathnodeclicked", { | |
pathNodeLevel: a, | |
pathNodeValue: f[a] | |
}) | |
} | |
function V() { | |
Pb(this.attributes.pathNodeLevel.value) | |
} | |
function qb(a) { | |
if (a && a.componentName === O && a.component) { | |
var c = a.component.getBreadcrumbRegion(); | |
e.breadcrumbContainer = c; | |
c.appendChild(e.breadcrumb); | |
b.removeHandler(Y) | |
} | |
} | |
function Z() { | |
if (!e.root) { | |
e.root = h.getRootElement(); | |
var d = document.createElement("div"); | |
e.breadcrumb = d; | |
d.className = "pathContainer"; | |
d.setAttribute("onselectstart", "return false;"); | |
var f = h.getComponent(O); | |
if (!f) Y = b.addHandler(h, "componentadded", qb); | |
else qb({ | |
componentName: O, | |
component: f | |
}); | |
var c = document.createElement("div"); | |
c.className = "unlockButton"; | |
a(c).add_event("click", Ab); | |
e.root.appendChild(c); | |
e.breadcrumbUnlock = c; | |
yb() | |
} | |
} | |
function yb() { | |
if (e.breadcrumb) { | |
var g = document.createElement("span"); | |
g.className = "path"; | |
for (var c in s) { | |
var d = document.createElement("span"); | |
if (c !== "world") { | |
if (c === "current") { | |
var h = document.createElement("span"); | |
g.appendChild(h); | |
e.breadcrumbExtension = h | |
} | |
var i = "•"; | |
d.className = "pathNodeDelim"; | |
d.style.display = "none" | |
} else { | |
var i = ""; | |
d.className = "pathHeight"; | |
d.style.display = "inline-block" | |
} | |
d.appendChild(document.createTextNode(i)); | |
g.appendChild(d); | |
e[c + "Delim"] = d; | |
if (c === "current") { | |
var b = document.createElement("span"); | |
b.className = "currentIcon" | |
} else { | |
var b = document.createElement("span"); | |
b.className = "pathNode"; | |
if (c !== "world") b.appendChild(document.createTextNode("")); | |
else b.appendChild(document.createTextNode(f[c])) | |
} | |
if (c !== "world") b.style.display = "none"; | |
a(b).add_event("click", V); | |
b.setAttribute("pathNodeLevel", c); | |
g.appendChild(b); | |
e[c] = b | |
} | |
e.breadcrumbBar = g; | |
e.breadcrumb.appendChild(g) | |
} | |
} | |
function nb() { | |
c.country = null; | |
c.state = null; | |
c.county = null; | |
c.city = null; | |
c.neighborhood = null; | |
c.street = null; | |
c.current = null; | |
c.countryBounds = null; | |
c.stateBounds = null; | |
c.countyBounds = null; | |
c.cityBounds = null; | |
c.neighborhoodBounds = null; | |
c.streetBounds = null; | |
c.currentBounds = null; | |
c.countryEntityId = null; | |
c.stateEntityId = null; | |
c.countyEntityId = null; | |
c.cityEntityId = null; | |
c.neighborhoodEntityId = null; | |
c.streetEntityId = null; | |
c.currentEntityId = null | |
} | |
function kb() { | |
e.breadcrumbUnlock.style.display = "block" | |
} | |
function ib() { | |
e.breadcrumbUnlock.style.display = "none" | |
} | |
function Zb(f, e, d, c, b) { | |
var a = { | |
type: f, | |
name: e, | |
value: d, | |
values: c, | |
isVisible: b | |
}; | |
l.push(a); | |
Vb(a) | |
} | |
function Vb(b) { | |
var f = document.createElement("span"), | |
i = "•"; | |
f.className = "pathNodeDelim"; | |
f.style.display = "none"; | |
f.appendChild(document.createTextNode(i)); | |
g[b.name + "Delim"] = f; | |
e.breadcrumbExtension.appendChild(f); | |
if (b.type === "group") { | |
var d = document.createElement("span"); | |
d.className = "groupContainer"; | |
d.style.display = "none"; | |
d.setAttribute("pathNodeLevel", b.name); | |
m[b.name + "Click"] = a(d).add_event("click", Fb); | |
m[b.name + "MouseEnter"] = a(d).add_event("mouseenter", eb); | |
m[b.name + "MouseLeave"] = a(d).add_event("mouseleave", hb); | |
var c = document.createElement("span"); | |
c.className = "group"; | |
c.appendChild(document.createTextNode("")); | |
var h = document.createElement("span"); | |
h.className = "groupListSign"; | |
g[b.name + "Container"] = d; | |
g[b.name] = c; | |
g[b.name + "ListSign"] = h; | |
d.appendChild(c); | |
d.appendChild(h); | |
e.breadcrumbExtension.appendChild(d) | |
} else { | |
var c = document.createElement("span"); | |
c.className = "pathNode"; | |
c.appendChild(document.createTextNode("")); | |
c.style.display = "none"; | |
m[b.name + "Click"] = a(c).add_event("click", V); | |
c.setAttribute("pathNodeLevel", b.name); | |
g[b.name] = c; | |
e.breadcrumbExtension.appendChild(c) | |
} | |
} | |
function Tb(c, b) { | |
var a = z(c); | |
a.type === "group" && b === false && a === p && r(true); | |
a.isVisible = b; | |
j() | |
} | |
function Xb(a) { | |
Mb(a); | |
l.splice(Jb(a), 1); | |
j() | |
} | |
function z(b) { | |
var a = l.length; | |
while (a--) if (l[a].name === b) return l[a] | |
} | |
function Jb(b) { | |
var a = l.length; | |
while (a--) if (l[a].name === b) return a | |
} | |
function jb(a, c) { | |
var d = z(a), | |
e = d.value; | |
d.value = c; | |
g[a].firstChild.nodeValue = c; | |
P(a); | |
j(); | |
b.invoke(i, "groupselecteditemchanged", { | |
groupName: a, | |
newItem: c, | |
oldItem: e | |
}) | |
} | |
function lb(a) { | |
A = true; | |
u = a; | |
C(true); | |
b.invoke(i, "locked") | |
} | |
function T(a) { | |
if (!F) F = b.addHandler(h, "targetviewchanged", Ub); | |
h.setView(a) | |
} | |
function Gb() { | |
A = false | |
} | |
function Kb() { | |
A = false; | |
ib(); | |
r(true); | |
G(); | |
nb(); | |
c.currentZoom = h.getTargetZoom(); | |
X(); | |
q = k[n]; | |
j(); | |
u = h.getTargetCenter(); | |
C(true); | |
b.invoke(i, "unlocked") | |
} | |
function Ab() { | |
Kb(); | |
b.invoke(i, "closed") | |
} | |
function Fb() { | |
var a = this.attributes.pathNodeLevel.value, | |
c = z(a); | |
P(a); | |
j(); | |
if (!g.groupList) mb(c); | |
else r(true); | |
b.invoke(i, "pathnodeclicked", { | |
pathNodeLevel: a, | |
pathNodeValue: c.value | |
}) | |
} | |
function eb() { | |
mb(z(this.attributes.pathNodeLevel.value)) | |
} | |
function hb() { | |
g.groupList && r() | |
} | |
function Eb() { | |
jb(p.name, this.firstChild.nodeValue); | |
r(true) | |
} | |
function W() { | |
o = null; | |
if (g.groupList) { | |
b.removeHandler(J); | |
b.removeHandler(K); | |
for (var a in p.values) b.removeHandler(I[a]); | |
J = null; | |
K = null; | |
I = {}; | |
g.groupList.parentNode.removeChild(g.groupList); | |
g.groupList = null; | |
p = null | |
} | |
} | |
function r(a) { | |
if (g.groupList) if (a) { | |
if (o) { | |
clearTimeout(o); | |
o = null | |
} | |
W() | |
} else if (!o) o = setTimeout(W, 1e3) | |
} | |
function cb(d) { | |
var a = g.groupList; | |
if (a) { | |
var b = e.breadcrumb, | |
h = b.offsetTop + b.offsetHeight, | |
c = g[d.name + "ListSign"], | |
f = c.offsetLeft + c.offsetWidth - a.offsetWidth; | |
a.style.top = h + "px"; | |
a.style.left = f + "px" | |
} | |
} | |
function mb(c) { | |
if (p) if (p !== c) r(true); | |
else { | |
if (o) { | |
clearTimeout(o); | |
o = null | |
} | |
return | |
} | |
var b = document.createElement("ul"); | |
g.groupList = b; | |
p = c; | |
b.className = "pathList"; | |
b.style.position = "absolute"; | |
b.setAttribute("pathNodeLevel", c.name); | |
e.root.appendChild(b); | |
J = a(b).add_event("mouseenter", eb); | |
K = a(b).add_event("mouseleave", hb); | |
for (var f in c.values) { | |
var d = document.createElement("li"); | |
d.appendChild(document.createTextNode(c.values[f])); | |
b.appendChild(d); | |
I[f] = a(d).add_event("click", Eb) | |
} | |
cb(c) | |
} | |
function Yb() { | |
f.country = null; | |
f.state = null; | |
f.county = null; | |
f.city = null; | |
f.neighborhood = null; | |
f.street = null; | |
f.current = null; | |
f.countryBounds = null; | |
f.stateBounds = null; | |
f.countyBounds = null; | |
f.cityBounds = null; | |
f.neighborhoodBounds = null; | |
f.streetBounds = null; | |
f.currentBounds = null; | |
f.countryEntityId = null; | |
f.stateEntityId = null; | |
f.countyEntityId = null; | |
f.cityEntityId = null; | |
f.neighborhoodEntityId = null; | |
f.streetEntityId = null; | |
f.currentEntityId = null; | |
n = s.world; | |
q = "world" | |
} | |
function L() { | |
U = sb; | |
w++; | |
h.getCredentials(function (a) { | |
if (a) { | |
var b = gb + "/" + u.latitude.toFixed(10) + "," + u.longitude.toFixed(10) + "?include=EntityId&includeEntityTypes=Neighborhood,PopulatedPlace,AdminDivision1,AdminDivision2,CountryRegion&output=json&jsonp=microsoftMapsNetworkCallback&key=" + a + "&jsonso={jsono}&culture=" + S; | |
t.getObjectAsync(b, Bb, w) | |
} | |
}) | |
} | |
function C(b, a) { | |
if (!b) { | |
U === ub && clearTimeout(E); | |
w++; | |
U = ub; | |
if (a) E = setTimeout(L, a); | |
else E = setTimeout(L, Lb) | |
} else { | |
clearTimeout(E); | |
L() | |
} | |
} | |
var Hb = { | |
street: "addressLine", | |
city: "locality", | |
county: "adminDistrict2", | |
state: "adminDistrict", | |
country: "countryRegion" | |
}; | |
function M(a) { | |
var e = "", | |
i = s[a] + 1; | |
while (i-- > 1) { | |
var g = k[i], | |
d = Hb[g], | |
b = c[g]; | |
if (d && b) e += "&" + d + "=" + b; | |
else { | |
H(); | |
return | |
} | |
} | |
if (a !== "street") var f = pb.get(c[a + "EntityId"]); | |
if (!f) h.getCredentials(function (a) { | |
if (a) { | |
var b = gb + "?key=" + a + "&jsonso={jsono}&culture=" + S + "&output=json&jsonp=microsoftMapsNetworkCallback" + e; | |
t.getObjectAsync(b, zb, w) | |
} | |
}); | |
else { | |
c[a + "Bounds"] = f; | |
H() | |
} | |
} | |
function j() { | |
var h = s, | |
g; | |
for (var b in h) { | |
var c = e[b]; | |
if (b !== "current") { | |
if (b === "street") c.firstChild.nodeValue = "Near " + f[b]; | |
else { | |
g = f[b]; | |
if (!g) g = ""; | |
c.firstChild.nodeValue = g | |
} | |
c.removeAttribute("title"); | |
var d = e[b + "Delim"]; | |
if (s[b] > n && !A || !f[b]) { | |
if (c) c.style.display = "none"; | |
if (d) if (b !== "world") d.style.display = "none" | |
} else { | |
if (c) { | |
c.style.display = "inline"; | |
if (b === q) a(c).add_class("pathNodeSelected"); | |
else a(c).remove_class("pathNodeSelected") | |
} | |
if (d) if (b !== "world") d.style.display = "inline" | |
} | |
} | |
} | |
Db(); | |
Nb() | |
} | |
function Db() { | |
for (var e = 0, f = l.length; e < f; e++) { | |
var b = l[e], | |
c = g[b.name]; | |
c.firstChild.nodeValue = b.value; | |
c.removeAttribute("title"); | |
var d = g[b.name + "Delim"]; | |
if (!b.isVisible) { | |
if (c) if (b.type === "group") { | |
g[b.name + "Container"].style.display = "none"; | |
r(true) | |
} else c.style.display = "none"; | |
if (d) d.style.display = "none" | |
} else { | |
if (c) { | |
if (b.type === "group") g[b.name + "Container"].style.display = "inline"; | |
else c.style.display = "inline"; | |
if (b.name === q) a(c).add_class("pathNodeSelected"); | |
else a(c).remove_class("pathNodeSelected") | |
} | |
if (d) d.style.display = "inline" | |
} | |
} | |
} | |
function Bb(g, i) { | |
var k = i.userData; | |
if (k === w && i.success && g.statusCode === 200) { | |
var h = g.resourceSets[0]; | |
if (h.estimatedTotal > 0) { | |
var d = h.resources; | |
nb(); | |
var f = d.length; | |
while (f--) { | |
var e = d[f], | |
b = e.entityType; | |
if (b === "Address" || b === "PopulatedPlace" || b === "AdminDivision2" || b === "AdminDivision1" || b === "Sovereign" || b === "CountryRegion") { | |
var a = e.address; | |
c.country = a.countryRegion; | |
c.state = a.adminDistrict; | |
c.county = a.adminDistrict2; | |
c.city = a.locality; | |
c.street = a.addressLine; | |
c.countryEntityId = a.countryRegionEntityId; | |
c.stateEntityId = a.adminDistrictEntityId; | |
c.countyEntityId = a.adminDistrict2EntityId; | |
c.cityEntityId = a.localityEntityId; | |
c.streetEntityId = a.addressLineEntityId; | |
break | |
} | |
} | |
var f = d.length; | |
while (f--) { | |
var e = d[f]; | |
if (e.entityType === "Neighborhood") { | |
var a = e.address; | |
c.country = a.countryRegion; | |
c.state = a.adminDistrict; | |
c.county = a.adminDistrict2; | |
c.neighborhood = a.locality; | |
c.countryEntityId = a.countryRegionEntityId; | |
c.stateEntityId = a.adminDistrictEntityId; | |
c.countyEntityId = a.adminDistrict2EntityId; | |
c.neighborhoodEntityId = a.localityEntityId; | |
break | |
} | |
} | |
wb() | |
} else { | |
Yb(); | |
j() | |
} | |
Q = { | |
country: c.country, | |
state: c.state, | |
county: c.county, | |
neighborhood: c.neighborhood, | |
city: c.city, | |
street: c.street, | |
location: g | |
} | |
} | |
} | |
var Sb = { | |
Sovereign: "country", | |
CountryRegion: "country", | |
AdminDivision1: "state", | |
AdminDivision2: "county", | |
PopulatedPlace: "city", | |
Neighborhood: "neighborhood", | |
Address: "street" | |
}; | |
function Wb(d, b) { | |
var a = Sb[d]; | |
c[a + "Bounds"] = b; | |
pb.add(c[a + "EntityId"], b) | |
} | |
function wb() { | |
db = 3; | |
M("city"); | |
M("state"); | |
M("country") | |
} | |
function zb(a, c) { | |
var d = c.userData; | |
if (d === w && c.success && a && a.statusCode === 200) if (a.resourceSets && a.resourceSets.length > 0 && a.resourceSets[0].resources && a.resourceSets[0].resources.length > 0) { | |
var b = a.resourceSets[0].resources[0]; | |
Wb(b.entityType, b.bbox) | |
} | |
H() | |
} | |
function H() { | |
if (!--db) { | |
f = c; | |
X(); | |
Q.currentCrumb = k[n]; | |
b.invoke(i, "breadcrumbschanged"); | |
j() | |
} | |
} | |
function Ob(b) { | |
var a = h.getBounds(); | |
return !(b.width > a.width || b.height > a.height) | |
} | |
function Cb(b) { | |
var a = h.getBounds(), | |
c = Math.min(a.width / 4, a.height / 4); | |
return b.width >= c || b.height >= c | |
} | |
function X() { | |
if (A) { | |
n = s.neighborhood; | |
return | |
} | |
for (var a = 0, e = k.length - 1; a < e; a++) if (f[k[a]]) { | |
var b = f[k[a] + "Bounds"]; | |
if (b) { | |
var c = x.fromEdges(b[2], b[1], b[0], b[3]); | |
if (Ob(c)) { | |
var g = c; | |
if (Cb(c)) n = a; | |
break | |
} else n = a | |
} else { | |
var d = f[k[a] + "Zoom"]; | |
if (d) if (d >= f.currentZoom) { | |
if (d < f.currentZoom + 2) { | |
n = a; | |
break | |
} | |
} else n = a | |
} | |
} | |
q = k[n] | |
} | |
function cc() { | |
Z(); | |
u = h.getTargetCenter(); | |
c.currentZoom = h.getTargetZoom(); | |
C(false, 5e3); | |
bb = b.addHandler(h, "viewchangeend", Qb) | |
} | |
function Qb() { | |
if (D > 0) D--; | |
else { | |
D = 0; | |
if (!y.areEqual(h.getTargetCenter(), ob) || h.getTargetZoom() !== tb) { | |
G(); | |
if (A === false) { | |
u = h.getCenter(); | |
c.currentZoom = h.getZoom(); | |
C() | |
} else j() | |
} | |
} | |
} | |
function P(a) { | |
q = a; | |
j() | |
} | |
function bc() { | |
b.removeHandler(bb); | |
ab() | |
} | |
var B = d.Globals.locale; | |
if (B) { | |
B = B.toLowerCase(); | |
if (a(Ib).index_of(B) !== -1) S = B | |
} | |
b.addHandler(h, "resize", Rb); | |
h.addComponent("breadcrumb", i); | |
i.enable = cc; | |
i.disable = bc; | |
i.lockToLocation = lb; | |
i.unlockFromLocation = Gb; | |
i.showCloseButton = kb; | |
i.hideCloseButton = ib; | |
i.addCrumb = Zb; | |
i.removeCrumb = Xb; | |
i.setVisibility = Tb; | |
i.selectGroupItem = jb; | |
i.highlightCrumb = P; | |
i.showBookmark = rb; | |
i.hideBookmark = G; | |
i.relocateCloseButton = function (b, a) { | |
e.breadcrumbUnlock.style.top = b; | |
e.breadcrumbUnlock.style.right = a | |
}; | |
i.getBreadcrumbs = function () { | |
return Q | |
} | |
} | |
function n(e) { | |
var d = e; | |
a(e).add_class("shadowtextDark"); | |
var b = document.createElement("div"); | |
b.className = "bg"; | |
d.appendChild(b); | |
var c = document.createElement("div"); | |
c.className = "fg"; | |
d.appendChild(c); | |
this.setColorsForDarkBackground = function () { | |
a(d).swap_class("shadowtextDark", "shadowtextLight") | |
}; | |
this.setColorsForLightBackground = function () { | |
a(d).swap_class("shadowtextLight", "shadowtextDark") | |
}; | |
this.setHtmlContent = function (a) { | |
c.innerHTML = a; | |
b.innerHTML = a | |
}; | |
this.setTextContent = function (a) { | |
n._clearChildNodes(c); | |
n._clearChildNodes(b); | |
c.appendChild(document.createTextNode(a)); | |
b.appendChild(document.createTextNode(a)) | |
} | |
} | |
n._clearChildNodes = function (a) { | |
if (a.hasChildNodes && a.removeChild) while (a.hasChildNodes()) a.removeChild(a.firstChild) | |
}; | |
var h = { | |
light: 0, | |
dark: 1 | |
}; | |
h.getImageryBackground = function (a) { | |
return a === "Aerial" || a === "EnhancedBirdseye" || a === "NativeBirdseye" ? h.dark : h.light | |
}; | |
function ib(d, o) { | |
var l = o; | |
a(l).add_class("Copyright"); | |
var j = new n(l), | |
r = 2.5, | |
p = 80, | |
q = " ", | |
m = 3, | |
c = d, | |
f = [], | |
e; | |
i(); | |
g(); | |
var k = [b.addThrottledHandler(c, "copyrightchanged", i, 2e3), b.addHandler(c, "imagerychanged", g), b.addHandler(c, "modechanged", g)], | |
e = b.addHandler(d, "ondispose", t); | |
function i() { | |
for (var d = [c.getCopyrights(), f], a = 0, b = [], k = 1, e = 0; e < d.length; e++) if (d) for (var i = d[e] || [], g = 0; g < i.length; g++) { | |
var h = i[g]; | |
if (a + h.length > p) { | |
b.push("<br />"); | |
a = 0; | |
k++ | |
} else { | |
b.push(q); | |
a += m | |
} | |
b.push(h); | |
a += h.length | |
} | |
j.setHtmlContent(b.join("")); | |
l.style.height = r * k + "ex" | |
} | |
function g() { | |
if (h.getImageryBackground(d.getImageryId()) === h.light) j.setColorsForLightBackground(); | |
else j.setColorsForDarkBackground() | |
} | |
var s = new | |
function () { | |
this.get_customAttributions = function () { | |
return f | |
}; | |
this.set_customAttributions = function (a) { | |
f = a; | |
i() | |
} | |
}; | |
function t() { | |
if (e) { | |
b.removeHandler(e); | |
e = null; | |
var a = k.length; | |
while (a--) b.removeHandler(k[a]); | |
k.length = 0 | |
} | |
} | |
d.addComponent("copyright", s) | |
} | |
function ob(w, r, N, M) { | |
var W = this, | |
O = false, | |
e = null, | |
n = false, | |
j = false, | |
k = false, | |
l = null, | |
g = null, | |
d = null, | |
f = null, | |
s = null, | |
h = null, | |
o = null, | |
q, B = "logo2.png", | |
R = "logo_no_shadow2.png"; | |
function V() { | |
q = b.addHandler(w, "ondispose", U); | |
O = z.isIE6; | |
h = document.createElement("div"); | |
h.className = "LogoContainer"; | |
r.appendChild(h); | |
if (N || M) { | |
g = a(h); | |
g.add_event("mouseover", H).add_event("mouseout", K).add_event("mousedown", c).add_event("mouseup", c).add_event("dblclick", c).add_event("contextmenu", c).add_event("click", c) | |
} | |
if (N) { | |
e = document.createElement("a"); | |
e.href = "#"; | |
e.target = "mc_bingMaps"; | |
e.title = T; | |
o = e; | |
b.addHandler(w, "viewchangeend", x); | |
try { | |
x() | |
} catch (t) {} | |
} else e = document.createElement("div"); | |
e.id = "PoweredByLogo"; | |
p(e, B); | |
h.appendChild(e); | |
if (M) { | |
var n = document.createElement("div"); | |
n.className = "LogoSearchContainer"; | |
var m = document.createElement("div"); | |
m.className = "LogoSearchGroup"; | |
n.appendChild(m); | |
var i = document.createElement("input"); | |
i.id = "LogoSearchInput"; | |
i.type = "text"; | |
i.maxLength = 60; | |
i.className = "watermark"; | |
i.value = v; | |
k = true; | |
m.appendChild(i); | |
var l = document.createElement("input"); | |
l.id = "LogoSearchGo"; | |
l.type = "button"; | |
l.title = I; | |
m.appendChild(l); | |
d = a(n); | |
d.set_style({ | |
display: "none" | |
}); | |
j = false; | |
d.add_event("mouseover", F).add_event("mouseout", G).add_event("mousedown", c).add_event("mouseup", c).add_event("dblclick", c).add_event("contextmenu", c); | |
s = a(l); | |
s.add_event("blur", A).add_event("focus", y).add_event("click", C); | |
f = a(i); | |
f.add_event("blur", E).add_event("focus", D).add_event("keydown", J); | |
r.appendChild(n) | |
} | |
} | |
function U() { | |
if (q) { | |
b.removeHandler(q); | |
q = null | |
} | |
o && b.removeHandler(x); | |
g && g.remove_event("mouseover", H).remove_event("mouseout", K).remove_event("mousedown", c).remove_event("mouseup", c).remove_event("dblclick", c).remove_event("contextmenu", c).remove_event("click", c); | |
r.removeChild(h); | |
if (d) { | |
d.remove_event("mouseover", F).remove_event("mouseout", G).remove_event("mousedown", c).remove_event("mouseup", c).remove_event("dblclick", c).remove_event("contextmenu", c); | |
s.remove_event("blur", A).remove_event("focus", y).remove_event("click", C); | |
f.remove_event("blur", E).remove_event("focus", D).remove_event("keydown", J); | |
r.removeChild(d.element()) | |
} | |
m(); | |
o = null; | |
e = null; | |
h = null; | |
s = null; | |
f = null; | |
d = null; | |
g = null | |
} | |
function p(a, b) { | |
if (O) { | |
a.style.background = ""; | |
a.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + i.domain + "/i/" + b + '", sizingMethod="scale")' | |
} | |
} | |
function m() { | |
if (d && l) { | |
window.clearTimeout(l); | |
l = null | |
} | |
} | |
function t() { | |
if (d && n) { | |
m(); | |
l = window.setTimeout(Q, 2e3) | |
} | |
} | |
function L() { | |
if (!k && !f.element().value) { | |
f.element().value = v; | |
f.add_class("watermark"); | |
k = true | |
} | |
} | |
function S() { | |
if (k) { | |
f.element().value = ""; | |
f.remove_class("watermark"); | |
k = false | |
} | |
} | |
function Q() { | |
l = null; | |
P(); | |
n = false | |
} | |
function P() { | |
d.set_style({ | |
display: "none" | |
}); | |
g.swap_class("LogoContainerActive", "LogoContainer"); | |
p(e, B); | |
d.set_style("width", null) | |
} | |
function x() { | |
if (o) { | |
var a = w.getCenter(); | |
if (a) o.href = i.logoBingMapsLink.replace("{0}", a.latitude).replace("{1}", a.longitude).replace("{2}", w.getZoom()) | |
} | |
} | |
function F() { | |
m() | |
} | |
function G() { | |
!j && t() | |
} | |
function A() { | |
j = false; | |
t() | |
} | |
function y() { | |
j = true; | |
m() | |
} | |
function E(a) { | |
A(a); | |
L() | |
} | |
function D(a) { | |
y(a); | |
S() | |
} | |
function C() { | |
var a = f.element().value; | |
if (!k && typeof a === "string" && a.length > 0) { | |
f.element().value = ""; | |
L(); | |
a = u.encodeUrl(a); | |
var b = i.logoBingSearchUrl.replace("{0}", a); | |
window.open(b, "mc_bingSearch"); | |
t() | |
} | |
} | |
function J(a) { | |
j && a.keyCode === 13 && C() | |
} | |
function H() { | |
m(); | |
if (d && !n) { | |
d.set_style({ | |
display: "" | |
}); | |
n = true | |
} | |
g.swap_class("LogoContainer", "LogoContainerActive"); | |
p(e, R) | |
} | |
function K() { | |
if (d) n && !j && t(); | |
else { | |
g.swap_class("LogoContainerActive", "LogoContainer"); | |
p(e, B) | |
} | |
} | |
V() | |
} | |
var p = { | |
milesFeet: 0, | |
milesYards: 1, | |
kilometersMeters: 2 | |
}, | |
f = { | |
metersPerKm: 1e3, | |
yardsPerMeter: 1.0936133, | |
yardsPerMile: 1760, | |
feetPerYard: 3, | |
feetPerMeter: 3.2808399, | |
feetPerMile: 5280 | |
}; | |
function w(r, t) { | |
var s = 2.3025850929940459, | |
c = r, | |
j = t, | |
m = 0, | |
k = 0, | |
g = [5, 2], | |
i = [5, 2.5, 2]; | |
a(c).add_class("ScaleBar"); | |
var l = document.createElement("div"); | |
c.appendChild(l); | |
var e = new n(l), | |
d = document.createElement("div"); | |
d.className = "scalerect"; | |
c.appendChild(d); | |
function o(d) { | |
for (var c = Math.floor(d), a = 0; a < g.length; a++) { | |
var b = g[a]; | |
if (c > b) return b | |
} | |
return 1 | |
} | |
function q(d, b) { | |
for (var a = 0; a < i.length; a++) { | |
var c = i[a]; | |
if (d > c) return c * b | |
} | |
return b | |
} | |
function b(c) { | |
var e = Math.log(c) / s, | |
d = Math.floor(e), | |
a = Math.pow(10, d), | |
b = c / a; | |
return 1 === a ? o(b) : q(b, a) | |
} | |
this.getMaxWidth = function () { | |
return m | |
}; | |
this.setMaxWidth = function (a) { | |
m = a; | |
return a | |
}; | |
this.getActualWidth = function () { | |
return k | |
}; | |
this.setActualWidth = function (a) { | |
k = a; | |
return a | |
}; | |
this.setColorsForBackground = function (a) { | |
if (a === h.light) e.setColorsForLightBackground(); | |
else e.setColorsForDarkBackground() | |
}; | |
this.setScale = function (e) { | |
var d, a, c; | |
if (j === p.kilometersMeters) { | |
var i = e * this.getMaxWidth(); | |
if (i > f.metersPerKm) { | |
a = b(i / f.metersPerKm); | |
d = Math.floor(a * f.metersPerKm / e); | |
c = M | |
} else { | |
a = b(i); | |
d = Math.floor(a / e); | |
c = Y | |
} | |
} else { | |
var g = e * f.feetPerMeter, | |
h = g * this.getMaxWidth(); | |
if (h > f.feetPerMile) { | |
a = b(h / f.feetPerMile); | |
d = Math.floor(a * f.feetPerMile / g); | |
c = ab | |
} else if (j === p.milesFeet) { | |
a = b(h); | |
d = Math.floor(a / g); | |
c = db | |
} else { | |
a = b(h / f.feetPerYard); | |
d = Math.floor(a * f.feetPerYard / g); | |
c = bb | |
} | |
} | |
this.setControlScale(d, c.replace("{num}", a)) | |
}, this.setControlScale = function (a, b) { | |
this.setActualWidth(a + 2); | |
c.style.width = this.getActualWidth().toFixed() + "px"; | |
e.setTextContent(b); | |
d.style.width = a.toFixed() + "px" | |
} | |
} | |
function W(g) { | |
var f = 200, | |
b = g; | |
a(b).add_class("DoubleScaleBar"); | |
_scaleBarMiElement = document.createElement("div"); | |
var e = new w(_scaleBarMiElement, p.milesFeet); | |
e.setMaxWidth(f / 2); | |
b.appendChild(_scaleBarMiElement); | |
var d = document.createElement("div"), | |
c = new w(d, p.kilometersMeters); | |
c.setMaxWidth(f / 2); | |
d.style.right = "0"; | |
b.appendChild(d); | |
this.setBottomOffset = function (a) { | |
b.style.display = "block"; | |
b.style.bottom = a.toFixed() + "px" | |
}; | |
this.setColorsForBackground = function (a) { | |
c.setColorsForBackground(a); | |
e.setColorsForBackground(a) | |
}; | |
this.setScale = function (a) { | |
c.setScale(a); | |
e.setScale(a); | |
_scaleBarMiElement.style.right = (c.getActualWidth() + 2).toFixed() + "px" | |
} | |
} | |
function kb(a, g) { | |
var d = new W(g); | |
d.setScale(a.getMetersPerPixel()); | |
var e = [b.addHandler(a, "viewchangeend", f), b.addHandler(a, "imagerychanged", i), b.addHandler(a, "modechanged", f)], | |
c = b.addHandler(a, "ondispose", j); | |
function f() { | |
d.setScale(a.getMetersPerPixel()) | |
} | |
function i() { | |
d.setColorsForBackground(h.getImageryBackground(a.getImageryId())) | |
} | |
function j() { | |
if (c) { | |
b.removeHandler(c); | |
c = null; | |
var a = e.length; | |
while (a--) b.removeHandler(e[a]); | |
e.length = 0 | |
} | |
} | |
} | |
function c(a) { | |
a.stopPropagation() | |
} | |
var u = { | |
singleByteHex: function (c) { | |
if (!c) return ""; | |
for (var a = c.toString(16), b = a.length; b < 2; b++) a = "0" + a; | |
return a | |
}, | |
twoByteHex: function (c) { | |
if (!c) return ""; | |
for (var a = c.toString(16), b = a.length; b < 4; b++) a = "0" + a; | |
return a | |
}, | |
encodeUrl: function (d) { | |
if (!d) return ""; | |
for (var a, e = d.length, b = new Array(e), c = 0; c < e; ++c) { | |
a = d.charCodeAt(c); | |
if (a > 96 && a < 123 || a > 64 && a < 91 || a > 47 && a < 58 || a == 46 || a == 45 || a == 95) b.push(String.fromCharCode(a)); | |
else if (a > 127) { | |
b.push("%u"); | |
b.push(u.twoByteHex(a)) | |
} else { | |
b.push("%"); | |
b.push(u.singleByteHex(a)) | |
} | |
} | |
return b.join("") | |
} | |
}, | |
g = jb.prototype; | |
g.showNavcontrol = function (a) { | |
this._map && new m(this._map, a) | |
}; | |
g.showScalebar = function () { | |
if (this._map) { | |
this.createBottomRightBar(); | |
new kb(this._map, this._scalebarDiv) | |
} | |
}; | |
g.showCopyright = function () { | |
if (this._map) { | |
this.createBottomRightBar(); | |
new ib(this._map, this._copyrightDiv) | |
} | |
}; | |
g.createBottomRightBar = function () { | |
if (!this._scalebarDiv || !this._copyrightDiv) { | |
var b = document.createElement("div"); | |
a(b).add_class("BottomRightBar"); | |
this._map.getRootElement().appendChild(b); | |
var d = document.createElement("div"); | |
b.appendChild(d); | |
this._scalebarDiv = d; | |
var c = document.createElement("div"); | |
b.appendChild(c); | |
this._copyrightDiv = c | |
} | |
}; | |
g.showLogo = function (b, a) { | |
if (this._map) var c = new ob(this._map, this._map.getRootElement(), b, a) | |
}; | |
g.showBreadcrumb = function () { | |
if (this._map) { | |
var a = new hb(this._map); | |
a.enable() | |
} | |
}; | |
g.authenticate = function (a) { | |
if (this._map) this._authentication = new eb(this._map, a) | |
}; | |
g.getCredentials = function (a) { | |
this._map && this._authentication.getCredentials(a) | |
}; | |
mb.done("delay"); | |
function eb(k, e) { | |
var h = this, | |
d = i.logServiceUriFormat; | |
if (d) { | |
var f = [], | |
b, a, c = "microsoftMapsNetworkCallback" + s.getNext(); | |
d = d.replace(/{credentials}/, e).replace(/{jsonp}/, c); | |
this.getCredentials = function (a) { | |
f.push(a) | |
}; | |
function g() { | |
h.getCredentials = function (b) { | |
b(a) | |
}; | |
var c = f.length; | |
while (c--) h.getCredentials(f[c]); | |
b && b.parentNode && b.parentNode.removeChild(b) | |
} | |
var j = setTimeout(function () { | |
window[c] = function () {}; | |
a = e; | |
g() | |
}, 1e4); | |
window[c] = function (b) { | |
clearInterval(j); | |
var f = b && b.authenticationResultCode == "ValidCredentials"; | |
a = f && typeof b.sessionId == "string" && b.sessionId.length > 0 ? b.sessionId : null; | |
if (!f) { | |
var d = document.createElement("div"); | |
d.style.cssText = "position:absolute; width:100%; top:50%; text-Align:center"; | |
var e = document.createElement("div"); | |
e.innerHTML = K; | |
e.style.cssText = "background: #f8f7f5; padding:10px"; | |
d.appendChild(e); | |
k.getRootElement().appendChild(d) | |
} | |
window[c] = null; | |
g() | |
}; | |
b = t.downloadScript(d) | |
} else { | |
a = e; | |
this.getCredentials = function (b) { | |
b(a) | |
} | |
} | |
} | |
delete window.Microsoft.Maps.initMapDelayCode | |
}; | |
Microsoft.Maps.Map && Microsoft.Maps.initMapDelayCode && window.Microsoft.Maps.initMapDelayCode(); | |
typeof closeDependency !== "undefined" && closeDependency("mapcontroldelay.js") | |
1 | |
Watch Expressions |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment