[richfaces-issues] [JBoss JIRA] Updated: (RF-2670) virtualEarth: is not displayed in opera

Pavel Yaschenko (JIRA) jira-events at lists.jboss.org
Fri Mar 21 12:07:51 EDT 2008


     [ http://jira.jboss.com/jira/browse/RF-2670?page=all ]

Pavel Yaschenko updated RF-2670:
--------------------------------

    Priority: Minor  (was: Major)

JavaScript - http://localhost:8080/virtualEarth-sample/
Inline script thread
Error:
name: SyntaxError
message: Statement on line 1: RegExp.prototype.compile: syntax error in pattern or string
Backtrace:
  Line 1 of linked script http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6
    if (a.Locale != null)
    a.Locale = "en-US";
if (a.UserAgent.indexOf("MSIE") != - 1)
    else
      Line 1 of linked script http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6
    if (a.UserAgent.indexOf("Gecko") != - 1)
    else
    e();
g();
d();
f();
h();
i();
j();
c();
b();
  Line 1 of linked script http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6
    var a = this;
this.Type = null;
this.BrowserCaps = 0;
this.CLRType = 0;
this.MajorVersion = null;
this.MinorVersion = null;
this.versionString = null;
this.UserAgent = null;
this.OSType = null;
this.Locale = null;
if (arguments.length == 0)
    else
    this.IsCompatibleWith = (function (c)
{
  for (var b = 0;b < c.length;b++)
    {
      var a = c[b];
      if (a.Type == this.Type && (this.MajorVersion > a.MajorVersion || a.MajorVersion == this.MajorVersion && a.MinorVersion >= this.MinorVersion))
        return true;
    }
  return false;
}
);
this.GetVersionString = (function ()
{
  if (this.versionString == null)
    if (a.UserAgent.indexOf("Win") != - 1 && a.UserAgent.indexOf("MSIE") != - 1)
      {
        var b = null, c;
        try
          {
            b = document.createElement("<DIV STYLE='behavior:url(#default#clientCaps); display: none' ID='__clientCaps'>");
            document.body.appendChild(b);
            c = b.getComponentVersion("{89820200-ECBD-11CF-8B85-00AA005B4383}", "componentid");
          }
        catch (d)
          {
            c = a.MajorVersion + "." + a.MinorVersion;
          }
        finally
          {
            if ($ID("__clientCaps") != null)
              ($ID("__clientCaps")).parentNode.removeChild(b);
          }
        this.versionString = c;
      }
    else
      if (a.MajorVersion != null && a.MajorVersion != null)
        this.versionString = a.MajorVersion + "." + a.MinorVersion;
      else
        this.versionString = "";
  return this.versionString;
}
);
k();
  Line 1 of linked script http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6
    var L_invalidinvoketarget_text = "Invalid invoke target specified.", L_invaliddirections_text = "Invalid argument passed; both start and end must be present.", L_invalidpageindex_text = "Invalid search results page index is passed.", L_invalidelement_text = "Invalid element id; unable to find the element in the document body.", L_noheadelement_text = "Head element is missing for the current document; cannot initialize the API framework.", L_noserviceurl_text = "Either a service url or script url is required to create VENetwork instance.", L_noscripturl_text = "Invalid script source url is assigned; cannot download the assigned script.", L_nostylesurl_text = "Invalid style source url is assigned; cannot attach the assigned styles.", L_invalidwhatwhere_text = "Invalid what/where parameters; either 'what' or 'where' must be present.", L_notinitialized_text = "Map is not loaded; cannot perform this operation.", L_noroute_text = "Cannot calculate route at this point; try again later.", L_invalidpushpin_text = "Invalid pushpin instance.", L_invalidpushpinid_text = "Invalid pushpin id; either id is empty or another pushpin already exists with that id.", L_invalidpolylineid_text = "Invalid polyline id; either id is empty or another polyline already exists with that id.", L_invalidpolygonid_text = "Invalid polygon id; either id is empty or another polygon already exists with that id.", L_invalidargument_text = "Invalid argument; input argument '%1' is not a valid '%2' value.", L_invalidlayerid_text = "Invalid layer id; either id is empty or another layer already exists with that id.", L_invalidlayertype_text = "Invalid layer type.", L_invalidlayersource_text = "Invalid layer source; either layer is empty or does not exist.", L_invalidsourceid_text = "Invalid source id; either id is empty or another tile source already exists with that id.", L_invalidminmaxzoom_text = "Min zoom is greater than max zoom.", L_invalidopacity_text = "Invalid opacity value.", L_loadxml_text = "Unable to load source file.", L_Help_Text = "Help", L_ErrorServerBusy_Text = "The server is temporarily unavailable. Try again later.", L_error_text = "Error", L_close_text = "close", L_what_text = "What", L_where_text = "Where", L_find_text = "Find", L_selectlocation_text = "Select a location", L_Start_Text = "Start", L_End_Text = "End", L_DirectionsGetDirections_Text = "Get directions", L_loading_text = ".. Loading ..", L_arriveat_text = "Arrive at", L_startat_text = "Start at", L_step_text = "Step %1 of %2", L_DirectionsStep_Text = "Step", L_invalidroute = "Virtual Earth cannot find a route for the locations you entered. Ensure that your start and end locations are correct, and try again.", L_invalidlocation = "The location you entered cannot be found.", L_CollectionManagerViewerDefaultTitle_Text = "Shared Collection", L_CollectionManagerUnsavedCollectionTitle_Text = "Unsaved Collection", L_AnnotationConfDefaultTitle_Text = "Untitled item", L_TrafficPopupSeverity_Text = "Severity", L_TrafficPopupLocation_Text = "Location", L_TrafficPopupDescription_Text = "Description", L_TrafficPopupStartTime_Text = "Start time", L_TrafficPopupEstEndTime_Text = "Est. end time", L_TrafficManagerSerious_Text = "Serious", L_TrafficManagerModerate_Text = "Moderate", L_TrafficManagerMinor_Text = "Minor", L_TrafficManager_Zoomout_Text = "Zoom out to view Traffic information", L_TrafficManager_Zoomin_Text = "Zoom in to view Traffic information", L_ClientTokenInvalid = "Invalid client token.", L_ClientTokenExpired = "Expired client token.", L_Shp_IncorrectPoints = "The number of points does not match the specified VEShape type.", L_Shp_IncorrectLineWidth = "The line width must be a positive integer.", L_Shp_IncorrectZoomLevel = "The specified  zoom level is invalid.  The valid range is 1 to 21,inclusive.", L_Shp_IncorrectZoomLevel2 = "Max zoom is less than min zoom.", L_shp_Notinitialized_text = "Shape is not initialized.", L_ShpExist_text = "This shape has already been added to layer.", L_invalidzindex_text = "Invalid z-Index parameters; either 'icon' or 'polyshape' must be present.", L_altitudemodemismatch = "All altitudes must have the same altitudeMode in a VEShape.", L_invalidwhere_text = "Invalid argument; input argument 'where' is not a valid 'string, VELatLong, VELatLongRectangle, or VEPlace ' value.", L_invalidnonnegativeint_text = "Invalid argument; input argument '%1' must be a non-negative int value.", L_invalidbetweenint_text = "Invalid argument; input argument '%1' must be between %2 and %3, inclusive.", L_invalidsearchlocation = "%1 could not find a match for the location. Please check your spelling, enter the complete address including country name and commas, and try again.", L_DashboardBirdsEye_Text = "Bird's eye", L_DashboardBirdsEyeText_Text = "See this location in bird's eye view", L_Dashboard3DText_Text = "See this location in Virtual Earth 3D", L_ObliqueCompassSelectDirection_Text = "Change the direction of the view", L_ObliqueModeImageNotAvailable_Text = "Sorry, bird's eye images aren't available here.", L_MinimapHybrid_Text = "H", L_MinimapRoad_Text = "R", L_MinimapHideToolTip_Text = "Hide the mini map", L_MinimapShowToolTip_Text = "Show the mini map", L_MinimapLargerToolTip_Text = "Larger mini map", L_MinimapSmallerToolTip_Text = "Smaller mini map", L_MinimapRoadToolTip_Text = "Switch to road view", L_MinimapHybridToolTip_Text = "Switch to hybrid view", L_MinimapDragToolTip_Text = "Drag to move the map", L_MinimapReticuleDragToolTip_Text = "Drag to center map", L_ScaleBarMiles_Text = "miles", L_ScaleBarKilometers_Text = "km", L_ScaleBarMeters_Text = "m", L_ScaleBarYards_Text = "yds", L_NavActionFlatland_Text = "2D", L_NavActionView3D_Text = "3D", L_NavActionRoad_Text = "Road", L_NavActionAerial_Text = "Aerial", L_NavActionHybrid_Text = "Hybrid", L_NavActionTraffic_Text = "Traffic", L_NavActionHideToolTip_Text = "Hide the view control", L_NavActionShowToolTip_Text = "Show the view control", L_NavActionFlatlandToolTip_Text = "View map in 2D mode", L_NavActionView3DToolTip_Text = "View map in 3D mode with Virtual Earth 3D (Beta)", L_NavActionOrthoToolTip_Text = "Switch to map view", L_NavActionObliqueToolTip_Text = "Switch to bird's eye view", L_NavActionStreetSideToolTip_Text = "Street-level view", L_NavAction3DOrthoToolTip_Text = "Look down", L_NavAction3DObliqueToolTip_Text = "Look down at an angle", L_NavAction3DStreetSideToolTip_Text = "Look toward horizon", L_NavActionShowTrafficToolTip_Text = "Show traffic on the map", L_NavActionHideTrafficToolTip_Text = "Hide traffic on the map", L_NavActionRoadToolTip_Text = "Switch to road view", L_NavActionAerialToolTip_Text = "Switch to aerial view", L_NavActionHybridToolTip_Text = "Switch to hybrid view", L_NavActionObliqueRotationToolTip_CW_Text = "Rotate the camera angle counterclockwise", L_NavActionObliqueRotationToolTip_CCW_Text = "Rotate the camera angle clockwise", L_NavActionShowObliqueToolTip_Text = "Switch to bird's eye view", L_NavActionCompassPan = "Pan in any direction", L_ZoomBarMinusToolTip_Text = "Zoom out. To zoom continuously, click and hold the mouse button.", L_ZoomBarPlusToolTip_Text = "Zoom in. To zoom continuously, click and hold the mouse button.", L_ZoomBarSliderToolTip_Text = "Move slider to zoom in or zoom out", L_BrowserNotSupported_Text = "To use this feature, open Live Search in Windows Internet Explorer version 6 or 7. For more information, and to download the latest version, visit the Microsoft Internet Explorer website (%1%3%2).", L_BrowserNotSupported3D_Text = "Virtual Earth 3D is currently not supported for your browser. For a list of supported browsers, see Help.", L_NoHardwareAcceleration_Text = "Virtual Earth 3D has detected that hardware acceleration is turned off.", L_3DLoading_Text = "Initializing Virtual Earth 3D (Beta).", L_MapLegendTrafficSlow_Text = "Slow", L_MapLegendTrafficFast_Text = "Fast", L_GeoRssInvalidFormatError_Text = "The GeoRSS file you have tried to import is improperly formatted.", L_MapControlNavteq_Text = "&copy; 2007 NAVTEQ", L_MapControlImageCourtesyOfNASA_Text = "Image courtesy of NASA", L_MapControlHarrisCorp_Text = "&copy; Harris Corp, Earthstar Geographics LLC", L_MapControlImageCourtesyOfUSGS_Text = "Image courtesy of USGS", L_MapControlImageCourtesyOfPictometry_Text = "&copy; 2007 Pictometry International Corp.", L_MapControlImageCourtesyOfEarthData_Text = "&copy; EarthData", L_MapControlImageCourtesyOfGetmapping_Text = "&copy; Getmapping plc", L_MapControlImageCourtesyOfAND_Text = "&copy; AND", L_MapControlImageCourtesyOfBlom_Text = "&copy; 2007 Blom", L_MapCopyrightMicrosoft = "&copy; 2007 Microsoft Corporation", L_MapCopyrightTraffic = "Traffic.com", L_MapControlPlatformName_Text = "Virtual Earth", L_MapControlImageCourtesyOfGeoEye_Text = "&copy; 2007 GeoEye", L_MapControlImageCourtesyOfMapDataSciences_Text = "&copy; 2006 MapData Sciences Pty Ltd", L_MapControlImageCourtesyOfZenrin_Text = "&copy; 2007 Zenrin", L_MapControlImageCourtesyOfPasco_Text = "&copy; 2005 Pasco", L_MapControlImageCourtesyOfIntergraph_Text = "&copy; GeoContent / (p) Intergraph", L_MapControlImageCourtesyOfTerraItaly_Text = "&copy; 2007 TerraItaly", L_MapControlImageCourtesyOfIntermap_Text = "&copy; 2007 Intermap", L_MapControlImageCourtesyOfIndianaMap_Text = "Image courtesy of the IndianaMap", L_MapControlImageCourtesyOfStateOfNevada_Text = "Image courtesy of the Nevada State Mapping Advisory Committee", L_SupportedBrowserDownloadUrl_Text = "http://www.microsoft.com/windows/ie/downloads/default.mspx";
_VERegisterNamespaces("MapControl");
MapControl.Features = {PlatformName : L_MapControlPlatformName_Text, Copyright : {Navteq : L_MapControlNavteq_Text, ImageCourtesyOfNASA : L_MapControlImageCourtesyOfNASA_Text, HarrisCorp : L_MapControlHarrisCorp_Text, ImageCourtesyOfUSGS : L_MapControlImageCourtesyOfUSGS_Text, ImageCourtesyOfPictometry : L_MapControlImageCourtesyOfPictometry_Text}, Image : {PoweredLogo : "logo_powered_by.png"}, MapStyle : {Road : true, Shaded : true, Aerial : true, Hybrid : true, BirdsEye : true, View3D : true}, BirdsEyeAtZoomLevel : 10, ScaleBarKilometers : false, Traffic : {Flow : {Slow : "0-25 mph", Moderate : "25-45 mph", Fast : "45+ mph"}}, Minimap : {ShowByDefault : false}};
_VERegisterNamespaces("Msn.MVC");
Msn.MVC.AbstractView = (function ()
{
  this._contextPin = null;
}
);
Msn.MVC.AbstractView.prototype.OnBeforeSwitchAway = (function ()
{
  }
);
Msn.MVC.AbstractView.prototype.ShowShimIfSupported = (function ()
{
  }
);
Msn.MVC.AbstractView.prototype.UpdateShimIfSupported = (function ()
{
  }
);
_VERegisterNamespaces("Msn.MVC");
Msn.MVC.FlatlandView = (function ()
{
  this._superObj = Msn.MVC.FlatlandView.prototype;
  this._mapDrawingView = null;
}
);
Msn.MVC.FlatlandView.prototype = new Msn.MVC.AbstractView();
Msn.MVC.FlatlandView.prototype.OnBeforeSwitchAway = (function ()
{
  if (window.__drawingLoaded)
    {
      this._ClearAllCollectionLayers();
      VE_MapDispatch.Clear();
    }
}
);
_VERegisterNamespaces("Msn.MVC");
Msn.MVC.View3D = (function ()
{
  this._superObj = Msn.MVC.View3D.prototype;
  this._hackUniqueLayerId = "UniqueLayer_Hack";
  this._entityIdShapePostfix = "_Shape";
  this._spacecontrol = null;
}
);
Msn.MVC.View3D.prototype = new Msn.MVC.AbstractView();
Msn.MVC.View3D.prototype.OnBeforeSwitchAway = (function ()
{
  this._SetView3DControl(null);
}
);
Msn.MVC.View3D.prototype._SetView3DControl = (function (a)
{
  this._spacecontrol = a;
}
);
Msn.MVC.View3D.prototype.ShowShimIfSupported = (function (b,a)
{
  ShowShim(b, a);
}
);
Msn.MVC.View3D.prototype.UpdateShimIfSupported = (function (b,a)
{
  UpdateIFrameShim(b, a);
}
);
_VERegisterNamespaces("Msn.MVC");
Msn.MVC.ViewFacade = (function ()
{
  this._mvcFlatlandView = null;
  this._mvcView3D = null;
  this._curMvcView = null;
}
);
Msn.MVC.ViewFacade.prototype.OnSwitchToFlatlandView = (function ()
{
  if (this._mvcFlatlandView == null)
    this._mvcFlatlandView = new Msn.MVC.FlatlandView();
  if (this._curMvcView == this._mvcFlatlandView)
    return ;
  if (this._curMvcView != null)
    this._curMvcView.OnBeforeSwitchAway();
  this._curMvcView = this._mvcFlatlandView;
  if (window.__drawingLoaded)
    this._curMvcView.OnAllCollectionLayersRepaint();
}
);
Msn.MVC.ViewFacade.prototype.OnSwitchToView3D = (function (a)
{
  if (this._mvcView3D == null)
    this._mvcView3D = new Msn.MVC.View3D();
  this._mvcView3D._SetView3DControl(a);
  if (this._curMvcView == this._mvcView3D)
    return ;
  if (this._curMvcView != null)
    this._curMvcView.OnBeforeSwitchAway();
  this._curMvcView = this._mvcView3D;
  if (window.__drawingLoaded)
    this._curMvcView.OnAllCollectionLayersRepaint();
}
);
Msn.MVC.ViewFacade.prototype.ShowShimIfSupported = (function (b,a)
{
  if (this._curMvcView == null)
    return ;
  return this._curMvcView.ShowShimIfSupported(b, a);
}
);
Msn.MVC.ViewFacade.prototype.UpdateShimIfSupported = (function (b,a)
{
  if (this._curMvcView == null)
    return ;
  return this._curMvcView.UpdateShimIfSupported(b, a);
}
);
var mvcViewFacade = new Msn.MVC.ViewFacade(), windowWidth = 0, windowHeight = 0, scrollbarWidth = null;
_VERegisterNamespaces("Msn.VE");
Msn.VE.DistanceUnit = {Kilometers : "km", Miles : "mi"};
Msn.VE.DistanceUnit.IsValidType = (function (a)
{
  if (typeof a == "string")
    if (a == Msn.VE.DistanceUnit.Miles || a == Msn.VE.DistanceUnit.Kilometers)
      return true;
  return false;
}
);
VEException.prototype.Name = this.name;
VEException.prototype.Source = this.source;
VEException.prototype.Message = this.message;
VEParameter.prototype.Name = this.name;
VEParameter.prototype.Value = this.value;
VENetwork.GetExecutionID = (function ()
{
  var a = new Date(), b = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate(), a.getHours(), a.getMinutes(), a.getSeconds(), a.getMilliseconds());
  b += Math.round(Math.random() * 1000000);
  return b;
}
);
VENetwork.AttachStyleSheetCallback = (function (a)
{
  if (a)
    a();
}
);
VENetwork.AttachStyleSheet = (function (a,b,d,c)
{
  if (a == null || a == "undefined" || a.length == 0)
    throw new VEException("VENetwork:AttachStylesheet", "err_nostylesurl", "");
  elStyle = document.createElement("link");
  if (d == true)
    elStyle.rel = "alternate stylesheet";
  else
    elStyle.rel = "stylesheet";
  if (c)
    elStyle.media = c;
  elStyle.type = "text/css";
  elStyle.rev = "stylesheet";
  elStyle.id = VENetwork.GetExecutionID();
  elStyle.href = a;
  VENetwork.GetAttachTarget().appendChild(elStyle);
  if (navigator.userAgent.indexOf("IE") >= 0)
    elStyle.onreadystatechange = (function ()
{
  if (elStyle && ("loaded" == elStyle.readyState || "complete" == elStyle.readyState))
    {
      elStyle.onreadystatechange = null;
      VENetwork.AttachStyleSheetCallback(b);
    }
}
);
  else
    VENetwork.AttachStyleSheetCallback(b);
  return ;
}
);
VENetwork.DownloadScriptCallback = (function (a,b)
{
  if (a)
    a(b);
}
);
VENetwork.DownloadScript = (function (b,c,d)
{
  if (b == null || b == "undefined" || b.length == 0)
    throw new VEException("VENetwork:DownloadScript", "err_noscripturl", L_noscripturl_text);
  var a = document.createElement("script");
  a.type = "text/javascript";
  a.language = "javascript";
  a.id = VENetwork.GetExecutionID();
  a.src = b;
  if (navigator.userAgent.indexOf("IE") >= 0)
    a.onreadystatechange = (function ()
{
  if (a && ("loaded" == a.readyState || "complete" == a.readyState))
    {
      a.onreadystatechange = null;
      VENetwork.DownloadScriptCallback(c, d);
    }
}
);
  else
    a.onload = (function ()
{
  a.onload = null;
  VENetwork.DownloadScriptCallback(c, d);
}
);
  VENetwork.GetAttachTarget().appendChild(a);
  return a.id;
}
);
VENetwork.DownloadXml = (function (e,c,b,d)
{
  var a = GetXmlHttp();
  a.open(c, e, true);
  a.onreadystatechange = (function ()
{
  if (a.readyState == 4)
    {
      if (b)
        b(a.responseXML, d);
      a = null;
    }
}
);
  a.send(null);
}
);
VENetwork.GetAttachTarget = (function ()
{
  if ((document.getElementsByTagName("head"))[0] != null)
    return (document.getElementsByTagName("head"))[0];
  else
    throw new VEException("VENetwork:cstr", "err_noheadelement", L_noheadelement_text);
}
);
VENetwork.prototype.BeginInvoke = BeginInvoke;
VENetwork.prototype.EndInvoke = EndInvoke;
JSONConstant.culture = "culture";
JSONConstant.format = "format";
JSONConstant.json = "json";
JSONConstant.requestid = "rid";
_VERegisterNamespaces("Msn.Drawing");
var MC_PointID = 10000, MC_PolylineID = 30000, MC_PolygonID = 50000, MC_SYMBOL_IID = 70000, MC_TEXT_IID = 90000, MC_ENTITY_IID = 200000, MC_COL_IID = 1000, MC_GEO_TYPE_SYMBOL = "Symbol", MC_GEO_TYPE_POINT = "Point", MC_GEO_TYPE_POLYLINE = "Polyline", MC_GEO_TYPE_POLYGON = "Polygon", MC_GEO_TYPE_TEXT = "Text", MC_GEO_TYPE_COL = "Collection", MC_GEO_TYPE_ENTITY = "Entity", VEShapeType = {Pushpin : "Point", Polyline : "Polyline", Polygon : "Polygon"};
Msn.Drawing.GetGeoUID = (function (b)
{
  var a = "";
  switch (b)
  {
    case VEShapeType.Polygon:
      a = MC_PolygonID++;
      break ;
    case VEShapeType.Pushpin:
      a = MC_PointID++;
      break ;
    case VEShapeType.Polyline:
      a = MC_PolylineID++;
      break ;
    case MC_GEO_TYPE_SYMBOL:
      a = MC_SYMBOL_IID++;
      break ;
    case MC_GEO_TYPE_TEXT:
      a = MC_TEXT_IID++;
      break ;
    case MC_GEO_TYPE_COL:
      a = MC_COL_IID++;
      break ;
    case MC_GEO_TYPE_ENTITY:
      a = MC_ENTITY_IID++;
  }
  return a.toString();
}
);
Msn.Drawing.Exception = (function (a)
{
  this.message = a;
  this.name = "Msn.Drawing.Exception";
}
);
Msn.Drawing.Exception.prototype.toString = (function ()
{
  return this.name + ": " + this.message;
}
);
Msn.Drawing.Point = (function (a,b)
{
  this.id = 0;
  this.points = [];
  this.points.push(a);
  this.points.push(b);
  this.iid = Msn.Drawing.GetGeoUID(VEShapeType.Pushpin);
}
);
Msn.Drawing.Point.prototype.altitudes = null;
Msn.Drawing.Point.prototype.altitudeMode = "Ground";
Msn.Drawing.Point.prototype.type = VEShapeType.Pushpin;
Msn.Drawing.Point.prototype.name = null;
Msn.Drawing.Point.prototype.symbol = null;
Msn.Drawing.Point.prototype.isLabel = true;
Msn.Drawing.Point.prototype.isOnLegend = false;
Msn.Drawing.Point.prototype.Destroy = (function ()
{
  this.symbol = null;
  this.points = null;
  this.altitudes = null;
  this.altitudeMode = null;
}
);
Msn.Drawing.Point.prototype.toString = (function ()
{
  return this.points[0] + "," + this.points[1];
}
);
Msn.Drawing.PolyLine = (function (a)
{
  this.id = 0;
  this.iid = Msn.Drawing.GetGeoUID(VEShapeType.Polyline);
  this.points = a ? a : [];
  this.minX = null;
  this.minY = null;
  this.maxX = null;
  this.maxY = null;
  this.length = - 1;
}
);
Msn.Drawing.PolyLine.prototype.toString = (function ()
{
  if (this.points != null)
    return this.points.join(" ");
  else
    return "";
}
);
Msn.Drawing.PolyLine.prototype.altitudes = null;
Msn.Drawing.PolyLine.prototype.altitudeMode = "Ground";
Msn.Drawing.PolyLine.prototype.extruded = false;
Msn.Drawing.PolyLine.prototype.minZ = null;
Msn.Drawing.PolyLine.prototype.maxZ = null;
Msn.Drawing.PolyLine.prototype.minX = null;
Msn.Drawing.PolyLine.prototype.minY = null;
Msn.Drawing.PolyLine.prototype.maxX = null;
Msn.Drawing.PolyLine.prototype.maxY = null;
Msn.Drawing.PolyLine.prototype.iid = Msn.Drawing.GetGeoUID(VEShapeType.Polyline);
Msn.Drawing.PolyLine.prototype.labelPosX = null;
Msn.Drawing.PolyLine.prototype.labelPosY = null;
Msn.Drawing.PolyLine.prototype.labelPosZ = null;
Msn.Drawing.PolyLine.prototype.name = null;
Msn.Drawing.PolyLine.prototype.type = VEShapeType.Polyline;
Msn.Drawing.PolyLine.prototype.symbol = null;
Msn.Drawing.PolyLine.prototype.isLabel = true;
Msn.Drawing.PolyLine.prototype.isOnLegend = false;
Msn.Drawing.PolyLine.prototype.Destroy = (function ()
{
  this.symbol = null;
  this.points = null;
  this.altitudes = null;
  this.altitudeMode = null;
  this.extruded = null;
  this.minX = null;
  this.minY = null;
  this.maxX = null;
  this.maxY = null;
  this.minZ = null;
  this.maxZ = null;
}
);
Msn.Drawing.PolyLine.prototype.GetLength = (function ()
{
  if (this.length < 0)
    this.length = CalculateShapeLengthP(this.points);
  return this.length;
}
);
Msn.Drawing.PolyLine.prototype.SetLength = (function (a)
{
  this.length = a;
}
);
Msn.Drawing.Polygon = (function (a)
{
  this.id = 0;
  this.iid = Msn.Drawing.GetGeoUID(VEShapeType.Polygon);
  this.points = a;
  this.length = - 1;
  this.area = - 1;
  this.minX = null;
  this.minY = null;
  this.maxX = null;
  this.maxY = null;
}
);
Msn.Drawing.Polygon.prototype.altitudes = null;
Msn.Drawing.Polygon.prototype.altitudeMode = "Ground";
Msn.Drawing.Polygon.prototype.extruded = false;
Msn.Drawing.Polygon.prototype.minZ = null;
Msn.Drawing.Polygon.prototype.maxZ = null;
Msn.Drawing.Polygon.prototype.labelPosX = null;
Msn.Drawing.Polygon.prototype.labelPosY = null;
Msn.Drawing.Polygon.prototype.labelPosZ = null;
Msn.Drawing.Polygon.prototype.symbol = null;
Msn.Drawing.Polygon.prototype.isLabel = true;
Msn.Drawing.Polygon.prototype.isOnLegend = false;
Msn.Drawing.Polygon.prototype.type = VEShapeType.Polygon;
Msn.Drawing.Polygon.prototype.name = null;
Msn.Drawing.Polygon.prototype.Destroy = (function ()
{
  this.symbol = null;
  this.points = null;
  this.altitudes = null;
  this.altitudeMode = null;
  this.extruded = null;
  this.minX = null;
  this.minY = null;
  this.maxX = null;
  this.maxY = null;
  this.minZ = null;
  this.maxZ = null;
}
);
Msn.Drawing.Polygon.prototype.GetLength = (function ()
{
  if (this.length < 0)
    this.length = CalculateShapeLength(this);
  return this.length;
}
);
Msn.Drawing.Polygon.prototype.SetLength = (function (a)
{
  this.length = a;
}
);
Msn.Drawing.Polygon.prototype.GetArea = (function ()
{
  if (this.area < 0)
    this.area = CalculateAreaP(this.points);
  if (this.area < 0)
    this.area = CalculateAreaP(this.points, false);
  return this.area;
}
);
Msn.Drawing.Polygon.prototype.SetArea = (function (a)
{
  this.area = a;
}
);
Msn.Drawing.Stroke = (function ()
{
  this.width = 1;
  this.linecap = "round";
  this.opacity = 1;
  this.linejoin = "miter";
  this.color = new Msn.Drawing.Color(255, 255, 255, 1);
  this.fillcolor = new Msn.Drawing.Color(0, 255, 0, 1);
}
);
Msn.Drawing.Color = (function (d,c,b,a)
{
  this.R = d ? d : 0;
  this.G = c ? c : 0;
  this.B = b ? b : 0;
  this.A = a ? a : 0;
  this.ToHexString = (function ()
{
  return "#" + Number(this.R).toString(16) + (this.R < 16 ? "0" : "") + Number(this.G).toString(16) + (this.G < 16 ? "0" : "") + Number(this.B).toString(16) + (this.B < 16 ? "0" : "");
}
);
}
);
VEShapeStyle = (function ()
{
  this.iid = Msn.Drawing.GetGeoUID(MC_GEO_TYPE_SYMBOL);
  this.id = this.iid;
}
);
VEShapeStyle.prototype.point_type = "v:rect";
VEShapeStyle.prototype.name = "symbol";
VEShapeStyle.prototype.highlight_stroke_color = "#336666";
VEShapeStyle.prototype.highlight_fill_color = "#FFCC33";
VEShapeStyle.prototype.shape_drawtype = "v:shape";
VEShapeStyle.prototype.shape_fill = "false";
VEShapeStyle.prototype.shape_filled = "false";
VEShapeStyle.prototype.shape_unselectable = "off";
VEShapeStyle.prototype.style_zIndex = 60;
VEShapeStyle.prototype.style_zIndex_polyshape = 50;
VEShapeStyle.prototype.style_position = "absolute";
VEShapeStyle.prototype.style_filter = "alpha(opacity=30)";
VEShapeStyle.prototype.style_width = "10";
VEShapeStyle.prototype.style_height = "10";
VEShapeStyle.prototype.style_visibility = "visible";
VEShapeStyle.prototype.style_display = "block";
VEShapeStyle.prototype.stroke_drawtype = "v:stroke";
VEShapeStyle.prototype.stroke_on = "true";
VEShapeStyle.prototype.stroke_joinstyle = "miter";
VEShapeStyle.prototype.stroke_endcap = "round";
VEShapeStyle.prototype.stroke_opacity = "1";
VEShapeStyle.prototype.stroke_color = "#0000FF";
VEShapeStyle.prototype.stroke_weight = "2pt";
VEShapeStyle.prototype.stroke_style = "Single";
VEShapeStyle.prototype.stroke_filltype = "solid";
VEShapeStyle.prototype.stroke_color2 = "red";
VEShapeStyle.prototype.stroke_dashstyle = "Solid";
VEShapeStyle.prototype.stroke_startarrow = "none";
VEShapeStyle.prototype.stroke_startarrowwidth = "medium";
VEShapeStyle.prototype.stroke_startarrowlength = "medium";
VEShapeStyle.prototype.stroke_endarrow = "none";
VEShapeStyle.prototype.stroke_endarrowwidth = "medium";
VEShapeStyle.prototype.stroke_endarrowlength = "medium";
VEShapeStyle.prototype.fill_drawtype = "v:fill";
VEShapeStyle.prototype.fill_color = "#008000";
VEShapeStyle.prototype.fill_colors = "30% yellow";
VEShapeStyle.prototype.fill_color2 = "blue";
VEShapeStyle.prototype.fill_type = "solid";
VEShapeStyle.prototype.fill_opacity = "0.3";
VEShapeStyle.prototype.fill_on = "false";
VEShapeStyle.prototype.textbox_drawtype = "v:textbox";
VEShapeStyle.prototype.textbox_text = "name";
VEShapeStyle.prototype.textbox_color = "#FFFFFF";
VEShapeStyle.prototype.textbox_bold = false;
VEShapeStyle.prototype.textbox_italic = false;
VEShapeStyle.prototype.textbox_underscore = false;
VEShapeStyle.prototype.textbox_font = "Arial";
VEShapeStyle.prototype.textbox_size = 7;
VEShapeStyle.prototype.imagedata_on = false;
VEShapeStyle.prototype.imagedata_src = null;
VEShapeStyle.prototype.isOn = false;
VEShapeStyle.prototype.textbox_OffsetX = 0;
VEShapeStyle.prototype.textbox_OffsetY = 0;
VEShapeStyle.prototype.textbox_backcolor = "#0000FF";
VEShapeStyle.textbox_color_opacity = "1";
VEShapeStyle.textbox_backcolor_opacity = "1";
VEShapeStyle.prototype.img_offsetX = 0;
VEShapeStyle.prototype.img_offsetY = 0;
VEShapeStyle.prototype.img_width = 22;
VEShapeStyle.prototype.img_height = 22;
VEShapeStyle.prototype.Clone = (function ()
{
  var a = new VEShapeStyle();
  a.point_type = this.point_type;
  a.name = this.name;
  a.line_color = this.line_color;
  a.line_width = this.line_width;
  a.line_dasharray = this.line_dasharray;
  a.highlight_stroke_color = this.highlight_stroke_color;
  a.highlight_fill_color = this.highlight_fill_color;
  a.shape_drawtype = this.shape_drawtype;
  a.shape_fill = this.shape_fill;
  a.shape_filled = this.shape_filled;
  a.shape_unselectable = this.shape_unselectable;
  a.style_zIndex = this.style_zIndex;
  a.style_zIndex_polyshape = this.style_zIndex_polyshape;
  a.style_position = this.style_position;
  a.style_filter = this.style_filter;
  a.style_width = this.style_width;
  a.style_height = this.style_height;
  a.style_visibility = this.style_visibility;
  a.style_display = this.style_display;
  a.stroke_drawtype = this.stroke_drawtype;
  a.stroke_on = this.stroke_on;
  a.stroke_joinstyle = this.stroke_joinstyle;
  a.stroke_endcap = this.stroke_endcap;
  a.stroke_opacity = this.stroke_opacity;
  a.stroke_color = this.stroke_color;
  a.stroke_weight = this.stroke_weight;
  a.stroke_style = this.stroke_style;
  a.stroke_filltype = this.stroke_filltype;
  a.stroke_color2 = this.stroke_color2;
  a.stroke_dashstyle = this.stroke_dashstyle;
  a.stroke_startarrow = this.stroke_startarrow;
  a.stroke_startarrowwidth = this.stroke_startarrowwidth;
  a.stroke_startarrowlength = this.stroke_startarrowlength;
  a.stroke_endarrow = this.stroke_endarrow;
  a.stroke_endarrowwidth = this.stroke_endarrowwidth;
  a.stroke_endarrowlength = this.stroke_endarrowlength;
  a.fill_drawtype = this.fill_drawtype;
  a.fill_color = this.fill_color;
  a.fill_colors = this.fill_colors;
  a.fill_color2 = this.fill_color2;
  a.fill_type = this.fill_type;
  a.fill_opacity = this.fill_opacity;
  a.fill_on = this.fill_on;
  a.textbox_drawtype = this.textbox_drawtype;
  a.textbox_text = this.textbox_text;
  a.textbox_color = this.textbox_color;
  a.textbox_bold = this.textbox_bold;
  a.textbox_italic = this.textbox_italic;
  a.textbox_underscore = this.textbox_underscore;
  a.textbox_backcolor = this.textbox_backcolor;
  a.imagedata_on = this.imagedata_on;
  a.imagedata_src = this.imagedata_src;
  a.isOn = this.isOn;
  a.textbox_OffsetX = this.textbox_OffsetX;
  a.textbox_OffsetY = this.textbox_OffsetY;
  a.img_offsetX = this.img_offsetX;
  a.img_offsetY = this.img_offsetY;
  a.img_width = this.img_width;
  a.img_height = this.img_height;
  return a;
}
);
VE_LineClip = new VE_MapLineClip();
var L_GraphicsInitError_Text = "Your Web browser does not support SVG or VML. Some graphics features may not function properly.";
_VERegisterNamespaces("Msn.Drawing");
Msn.Drawing.Graphic = (function ()
{
  }
);
Msn.Drawing.Graphic.CreateGraphic = (function (e,b)
{
  if (document.all)
    return new Msn.Drawing.VMLGraphic(e, b);
  else
    {
      if (navigator.userAgent.indexOf("KHTML") !== - 1)
        return new Msn.Drawing.SVGGraphic(e, b);
      var c = 0, f = 0, g = new RegExp("Firefox/(.*)"), d = g.exec(navigator.userAgent);
      if (d && d.length >= 2)
        {
          var a = d[1].split(".");
          if (a)
            {
              c = a[0];
              f = a[1];
              if (parseInt(c) > 0 && parseInt(f) >= 5 || parseInt(c) >= 2)
                return new Msn.Drawing.SVGGraphic(e, b);
            }
        }
      throw new Msn.Drawing.Exception(L_GraphicsInitError_Text);
    }
}
);
Msn.Drawing.BaseGraphic = (function ()
{
  this._stroke = new Msn.Drawing.Stroke();
}
);
Msn.Drawing.BaseGraphic.prototype.CreatePrimitive = (function ()
{
  }
);
Msn.Drawing.BaseGraphic.prototype.DrawPrimitive = (function (d,c,a)
{
  var b = new VEShapeStyle();
  if (a._stroke)
    {
      b.stroke_weight = a._stroke.width;
      b.stroke_joinstyle = a._stroke.linejoin;
      b.stroke_color = a._stroke.color.ToHexString();
      b.stroke_dashstyle = a._stroke.linecap;
      b.stroke_opacity = a._stroke.color.A.toString();
      b.fill_color = a._stroke.fillcolor.ToHexString();
      b.fill_opacity = a._stroke.fillcolor.A.toString();
    }
  c.symbol = b;
  var e = a.CreatePrimitive(d, c, "");
  return e;
}
);
Msn.Drawing.BaseGraphic.prototype.SetStroke = (function (a)
{
  this._stroke = a;
}
);
Msn.Drawing.VMLGraphic = (function (c,d)
{
  Msn.Drawing.BaseGraphic.call();
  var g = new Msn.Drawing.Color(255, 0, 0, 1), f = new Msn.Drawing.Color(255, 0, 0, 1), e = 1, a = c;
  c.unselectable = "on";
  var b = [];
  this.DrawPrimitive = (function (f,e)
{
  var c = Msn.Drawing.VMLGraphic.prototype.DrawPrimitive(d, f, this);
  if (a && c)
    {
      if (e)
        a.appendChild(wrapVmlElementInDiv(c));
      else
        a.appendChild(c);
      b.push(c);
    }
}
);
  this.resetOffset = (function ()
{
  }
);
  this.SetZIndex = (function (a)
{
  e = a;
}
);
  this.Clear = (function ()
{
  var a = null, c = null;
  while (a = b.pop())
    {
      c = a.parentElement;
      if (c)
        c.removeChild(a);
      a = null;
    }
}
);
  this.Destroy = (function ()
{
  this.Clear();
  a = null;
}
);
}
);
Msn.Drawing.VMLGraphic.prototype = new Msn.Drawing.BaseGraphic();
Msn.Drawing.VMLGraphic.prototype.CreatePrimitive = (function (d,a)
{
  var b = null;
  if (a.type == VEShapeType.Pushpin)
    {
      if (a.symbol.shape_drawtype == "v:oval" || a.symbol.shape_drawtype == "v:rect" || a.symbol.shape_drawtype == "v:roundrect")
        b = document.createElement(a.symbol.shape_drawtype);
      else
        b = document.createElement("v:roundrect");
      var f = LatLongtoRoundedPixel(d, a.points[1], a.points[0]);
      b.style.width = a.symbol.style_width;
      b.style.height = a.symbol.style_height;
      b.style.left = - 5 + f.x + d.GetOffsetX() + "px";
      b.style.top = - 5 + f.y + d.GetOffsetY() + "px";
      b.style.position = a.symbol.style_position;
    }
  else
    {
      b = document.createElement("v:shape");
      var g = null;
      g = GetVmlPath(d, a);
      var h = d.GetMapWidth(), i = d.GetMapHeight();
      b.style.top = "0px";
      b.style.left = "0px";
      b.style.width = h + "px";
      b.style.height = i + "px";
      b.coordsize = h + " " + i;
      b.style.position = a.symbol.style_position;
      b.path = g;
    }
  b.id = a.id != 0 ? a.id : a.iid;
  b.style.zIndex = a.symbol.style_zIndex_polyshape;
  b.unselectable = a.symbol.shape_unselectable;
  var c = document.createElement("v:stroke");
  c.joinstyle = a.symbol.stroke_joinstyle;
  c.endcap = a.symbol.stroke_endcap;
  c.opacity = a.symbol.stroke_opacity;
  c.dashstyle = a.symbol.stroke_dashstyle;
  c.filltype = a.symbol.stroke_filltype;
  c.color2 = a.symbol.stroke_color2;
  c.color = a.symbol.stroke_color;
  c.weight = a.symbol.stroke_weight;
  c.linestyle = a.symbol.stroke_style;
  if (a.type == VEShapeType.Polygon)
    {
      var e = document.createElement("v:fill");
      e.color = a.symbol.fill_color;
      e.colors = a.symbol.fill_colors;
      e.color2 = a.symbol.fill_color2;
      e.type = a.symbol.fill_type;
      e.opacity = a.symbol.fill_opacity;
      b.appendChild(e);
    }
  else
    if (a.type == VEShapeType.Polyline)
      {
        b.fill = false;
        b.filled = false;
      }
    else
      if (a.type == VEShapeType.Pushpin)
        {
          b.style.filter = a.symbol.style_filter;
          b.style.zIndex = a.symbol.style_zIndex;
          b.style.display = a.symbol.style_display;
          b.unselectable = a.symbol.shape_unselectable;
          b.fill = true;
          b.filled = true;
          b.fillcolor = a.symbol.fill_color;
        }
  b.appendChild(c);
  return b;
}
);
Msn.Drawing.VMLGraphic.prototype.UpdatePoints = (function (d,a,b,c)
{
  if (c && (a.type == VEShapeType.Polyline || a.type == VEShapeType.Polygon))
    {
      var e = GetVmlPath(d, a);
      b.path = e;
    }
  return b;
}
);
Msn.Drawing.VMLGraphic.prototype.UpdateStyle = (function (f,a,e)
{
  e.style.zIndex = a.symbol.style_zIndex_polyshape;
  e.unselectable = a.symbol.shape_unselectable;
  var c = e.firstChild, b = null, d = null;
  while (c != null)
    {
      if (c.tagName == "stroke")
        b = c;
      else
        if (c.tagName == "fill")
          d = c;
      c = c.nextSibling;
    }
  if (b)
    {
      b.joinstyle = a.symbol.stroke_joinstyle;
      b.endcap = a.symbol.stroke_endcap;
      b.opacity = a.symbol.stroke_opacity;
      b.dashstyle = a.symbol.stroke_dashstyle;
      b.filltype = a.symbol.stroke_filltype;
      b.color2 = a.symbol.stroke_color2;
      b.color = a.symbol.stroke_color;
      b.weight = a.symbol.stroke_weight;
      b.linestyle = a.symbol.stroke_style;
    }
  if (a.type == VEShapeType.Polygon && d)
    {
      d.color = a.symbol.fill_color;
      d.color2 = a.symbol.fill_color2;
      d.type = a.symbol.fill_type;
      d.opacity = a.symbol.fill_opacity;
    }
  return e;
}
);
Msn.Drawing.SVGGraphic = (function (c,b)
{
  Msn.Drawing.BaseGraphic.call();
  var g = new Msn.Drawing.Color(255, 0, 0, 1), f = new Msn.Drawing.Color(0, 255, 0, 1);
  _curmap = b;
  this._svgLayer = null;
  var d = 60, e = c, a = [];
  this.DrawPrimitive = (function (d)
{
  var c = Msn.Drawing.SVGGraphic.prototype.DrawPrimitive(b, d, this);
  if (c)
    a.push(c);
}
);
  this.resetOffset = (function ()
{
  _curmap.resetSvgLayer();
}
);
  this.SetZIndex = (function (a)
{
  d = a;
  if (this._svgLayer != null)
    this._svgLayer.SetZIndex(a);
}
);
  this.Destroy = (function ()
{
  this.Clear();
}
);
  this.Clear = (function ()
{
  if (this._svgLayer == null)
    return ;
  var b = null, c = null;
  while (b = a.pop())
    {
      c = b.parentNode;
      if (c)
        c.removeChild(b);
      b = null;
    }
}
);
}
);
Msn.Drawing.SVGGraphic.prototype = new Msn.Drawing.BaseGraphic();
Msn.Drawing.SVGGraphic.prototype.CreatePrimitive = (function (a,b,c)
{
  this._svgLayer = a.getSvgLayer();
  return this._svgLayer.addShape(b, c);
}
);
Msn.Drawing.SVGGraphic.prototype.UpdatePoints = (function (a,b,c)
{
  this._svgLayer = a.getSvgLayer();
  return this._svgLayer.UpdatePoints(b, c);
}
);
Msn.Drawing.SVGGraphic.prototype.UpdateStyle = (function (a,b,c)
{
  this._svgLayer = a.getSvgLayer();
  return this._svgLayer.UpdateStyle(b, c);
}
);
Msn.Drawing.SvgLayer = (function (f,g)
{
  function d(b)
  {
    var a = parseFloat(b);
    if (a == NaN)
      a = 0.3;
    else
      if (a > 1)
        a /= 100;
      else
        if (a < 0)
          a = 0;
    return a;
  }
  var c = g, b = null, e = false, h = false;
  if (e == false)
    {
      e = true;
      b = document.createElementNS("http://www.w3.org/2000/svg", "svg");
      b.setAttribute("height", "100%");
      b.setAttribute("width", "100%");
      f.appendChild(b);
      this.lineDashStyles = [];
      var a = this.lineDashStyles;
      a[0] = ["Solid", "none"];
      a[1] = ["ShortDash", "6,2"];
      a[2] = ["ShortDot", "2,2"];
      a[3] = ["ShortDashDot", "6,2,2,2"];
      a[4] = ["ShortDashDotDot", "6,2,2,2,2,2"];
      a[5] = ["Dot", "2,6"];
      a[6] = ["Dash", "10,6"];
      a[7] = ["LongDash", "20,6"];
      a[8] = ["DashDot", "10,6,2,6"];
      a[9] = ["LongDashDot", "20,6,2,6"];
      a[10] = ["LongDashDotDot", "20,6,2,6,2,6"];
    }
  this.addShape = (function (e)
{
  if (b == null)
    return ;
  var a = null;
  if (e.type == VEShapeType.Pushpin)
    {
      a = document.createElementNS("http://www.w3.org/2000/svg", "rect");
      var h = LatLongtoRoundedPixel(c, e.points[1], e.points[0]);
      a.setAttribute("x", h.x - 4);
      a.setAttribute("y", h.y - 4);
      a.setAttribute("width", "8pt");
      a.setAttribute("height", "8pt");
      a.setAttribute("stroke-width", e.symbol.stroke_weight);
      a.setAttribute("stroke", e.symbol.stroke_color);
      a.setAttribute("fill", e.symbol.fill_color);
      b.appendChild(a);
    }
  else
    if (e.type == VEShapeType.Polyline || e.type == VEShapeType.Polygon)
      {
        a = document.createElementNS("http://www.w3.org/2000/svg", "polyline");
        a.setAttribute("points", GetSvgPath(c, e.points));
        a.setAttribute("stroke", e.symbol.stroke_color);
        a.setAttribute("stroke-width", e.symbol.stroke_weight);
        a.setAttribute("stroke-linejoin", e.symbol.stroke_joinstyle);
        a.setAttribute("stroke-opacity", d(e.symbol.stroke_opacity));
        var g = this.lineDashStyles;
        for (var f = 0;f < g.length;f++)
          if (e.symbol.stroke_dashstyle == g[f][0])
            a.setAttribute("stroke-dasharray", g[f][1]);
        if (e.type == VEShapeType.Polyline)
          a.setAttribute("fill", "none");
        else
          {
            a.setAttribute("fill", e.symbol.fill_color);
            a.setAttribute("fill-opacity", d(e.symbol.fill_opacity));
          }
      }
  if (a)
    {
      a.setAttribute("id", e.id != 0 ? e.id : e.iid);
      b.appendChild(a);
    }
  return a;
}
);
  this.SetZIndex = (function (a)
{
  if (! c.bShowSVG)
    return ;
  (c.GetsvgDiv()).style.zIndex = a;
}
);
  this.UpdatePoints = (function (a,b)
{
  if (a.type == VEShapeType.Polyline || a.type == VEShapeType.Polygon)
    b.setAttribute("points", GetSvgPath(c, a.points));
}
);
  this.UpdateStyle = (function (a,c)
{
  if (b == null)
    return ;
  if (a.type != VEShapeType.Pushpin)
    {
      c.setAttribute("stroke", a.symbol.stroke_color);
      c.setAttribute("stroke-width", a.symbol.stroke_weight);
      c.setAttribute("stroke-linejoin", a.symbol.stroke_joinstyle);
      c.setAttribute("stroke-opacity", d(a.symbol.stroke_opacity));
      var f = this.lineDashStyles;
      for (var e = 0;e < f.length;e++)
        if (a.symbol.stroke_dashstyle == f[e][0])
          c.setAttribute("stroke-dasharray", f[e][1]);
      if (a.type == VEShapeType.Polyline)
        c.setAttribute("fill", "none");
      else
        {
          c.setAttribute("fill", a.symbol.fill_color);
          c.setAttribute("fill-opacity", d(a.symbol.fill_opacity));
        }
    }
  return a;
}
);
}
);
VE_LatLongThreshold = {PixelDiff : 12, DistDiff : 0.5, OriginLat : 0, OriginLon : 0, LatDiff : 0, LonDiff : 0, UseThreshold : true, IsNotInit : true};
Msn.Drawing.ComputeBoundingBox = (function (a)
{
  if (typeof a == "undefined" || a == null || a.length == 0)
    return null;
  var c = [], f = Infinity, g = Infinity, d = - Infinity, e = - Infinity;
  for (var b = 0;b < a.length;b = b + 2)
    {
      f = Math.min(f, a[b]);
      g = Math.min(g, a[(b + 1)]);
      d = Math.max(d, a[b]);
      e = Math.max(e, a[(b + 1)]);
    }
  c[0] = f;
  c[1] = g;
  c[2] = d;
  c[3] = e;
  return c;
}
);
_VERegisterNamespaces("Msn.VE");
$MVEM = new (function ()
{
  this.IsEnabled = (function (a)
{
  if (a == undefined)
    throw new VEException("$MVEM.IsEnabled", "err_invalidfeature", "Specified feature is invalid.");
  return a;
}
);
}
)();
VEException.prototype.Name = this.name;
VEException.prototype.Source = this.source;
VEException.prototype.Message = this.message;
_VERegisterNamespaces("Msn.VE.Css");
Msn.VE.CurrentDomain = typeof Msn.VE.API != "undefined" && Msn.VE.API != null ? Msn.VE.API.Globals.vecurrentdomain : ".";
Msn.VE.Css = {Cursors : {Auto : "auto", Default : "default", Crosshair : "crosshair", Pointer : "pointer", Move : "move", Wait : "wait", Text : "text", Help : "help", NResize : "n-resize", NEResize : "ne-resize", NWResize : "nw-resize", SResize : "s-resize", SEResize : "se-resize", SWResize : "sw-resize", EResize : "e-resize", WResize : "w-resize", CustomCursors : null, defineCustomCursors : (function (c)
{
  Msn.VE.Css.Cursors.CustomCursors = c;
  var b, d = c.length;
  for (b = 0;b < d;b++)
    {
      var a = c[b];
      Msn.VE.Css.Cursors[a.name] = "url(\"" + a.domain + a.path + "\"), " + a.fallback;
    }
}
)}, RegEx : {RectClip : /rect\((auto|\d+px|\d*\.*\d+em|\d*\.*\d+pt)\s*,*\s*(auto|\d+px|\d*\.*\d+em|\d*\.*\d+pt)\s*,*\s*(auto|\d+px|\d*\.*\d+em|\d*\.*\d+pt)\s*,*\s*(auto|\d+px|\d*\.*\d+em|\d*\.*\d+pt)\)/}, Functions : {addClass : (function (a)
{
  this.alterClass(a, arguments, true);
}
), removeClass : (function (a)
{
  this.alterClass(a, arguments, false);
}
), alterClass : (function (a,e,g)
{
  var c, h = e.length;
  for (c = 1;c < h;c++)
    {
      var d = e[c], d = e[c].replace(/^\s*/, "").replace(/\s*$/, "");
      if (d.indexOf(" ") != - 1)
        continue ;
      var f = new RegExp("(^| )" + d + "( |$)", "i");
      if (g)
        {
          if (! f.test(a.className))
            if (a.className == "")
              a.className = d;
            else
              a.className += " " + d;
        }
      else
        {
          var b = a.className;
          b = b.replace(f, "$1");
          b = b.replace(/ $/, "");
          a.className = b;
        }
    }
}
), getComputedStyle : (function (b,c)
{
  var a = null;
  if (document.defaultView && document.defaultView.getComputedStyle && typeof document.defaultView.getComputedStyle != "undefined")
    a = document.defaultView.getComputedStyle(b, null);
  else
    a = b.currentStyle;
  return a[c];
}
), setClip : (function (c,d,e)
{
  var b = Msn.VE.Css.Functions.getClip(c, 0), f = Msn.VE.Css.RegEx.RectClip, a = f.exec(b);
  a[d] = e;
  if (d == 0)
    c.style.clip = a[0];
  else
    {
      a[d] = e;
      a.shift();
      b = "rect(" + a.join(" ") + ")";
      c.style.clip = b;
    }
}
), getClip : (function (d,e)
{
  var b = d.style.clip;
  if (b == "")
    {
      var b = window.opera ? "auto" : Msn.VE.Css.Functions.getComputedStyle(d, "clip");
      if (b == "auto")
        b = "rect(auto auto auto auto)";
      else
        if (typeof b == "undefined" || b == null)
          {
            var c = d.currentStyle;
            if (typeof c != "undefined" && c != null)
              b = "rect(" + c.clipTop + " " + c.clipRight + " " + c.clipBottom + " " + c.clipLeft + ")";
          }
    }
  var f = Msn.VE.Css.RegEx.RectClip, a = f.exec(b);
  if (e == 0)
    return a[0];
  a[1] = a[1] == "auto" ? 0 : a[1];
  a[4] = a[4] == "auto" ? 0 : a[4];
  a[2] = a[2] == "auto" ? d.offsetWidth : a[2];
  a[3] = a[3] == "auto" ? d.offsetHeight : a[3];
  if (e == 5)
    return a;
  else
    return a[e];
}
)}};
_VERegisterNamespaces("Msn.VE");
Msn.VE.OSType = {Windows : 1, Windows95 : 2, Windows98 : 3, WindowsMillenium : 4, WindowsNT : 5, WindowsNT4 : 6, Windows2000 : 7, Windows2000SP1 : 8, WindowsXP : 9, WindowsXPSP2 : 10, WindowsServer2003 : 11, WindowsServer2003SP1 : 12, WindowsVista : 13, MacOS : 30, MacOS9 : 31, MacOSX : 32, Linux : 40, Unknown : 100};
Msn.VE.CLRType = {CLR10 : 1, CLR11 : 2, CLR20 : 4, CLR30 : 8};
Msn.VE.BrowserType = {Firefox : 1, MSIE : 2, Opera : 3, Unknown : 10};
Msn.VE.BrowserCaps = {VML : 1, SVG : 2, WindowlessSelectElement : 4, RightMouseButton : 8, AddFavourite : 16, VectorCapable : 3};
Msn.VE.BrowserInfo = (function ()
{
  function b()
  {
    if (a.UserAgent.indexOf("Mac") == - 1 && (a.UserAgent.indexOf("Gecko") != - 1 || a.UserAgent.indexOf("MSIE") != - 1))
      a.BrowserCaps |= Msn.VE.BrowserCaps.RightMouseButton;
  }
  function c()
  {
    if (a.UserAgent.indexOf("MSIE 7") != - 1 || a.UserAgent.indexOf("Gecko") != - 1)
      a.BrowserCaps |= Msn.VE.BrowserCaps.WindowlessSelectElement;
  }
  function j()
  {
    if (a.UserAgent.indexOf("Mac") == - 1 && (a.UserAgent.indexOf("MSIE 5") != - 1 || a.UserAgent.indexOf("MSIE 6") != - 1 || a.UserAgent.indexOf("MSIE 7") != - 1))
      a.BrowserCaps |= Msn.VE.BrowserCaps.VML;
  }
  function i()
  {
    if (a.UserAgent.indexOf("MSIE") == - 1)
      {
        var d = 0, e = 0, f = new RegExp("Firefox/(.*)"), c = f.exec(a.UserAgent);
        if (c && c.length >= 2)
          {
            var b = c[1].split(".");
            if (b)
              {
                d = b[0];
                e = b[1];
                if (parseInt(d) > 0 && parseInt(e) >= 5)
                  a.BrowserCaps |= Msn.VE.BrowserCaps.SVG;
              }
          }
      }
  }
  function h()
  {
    try
      {
        if (a.UserAgent.indexOf("MSIE") != - 1)
          a.BrowserCaps |= Msn.VE.BrowserCaps.AddFavourite;
      }
    catch (b)
      {}
  }
  function e()
  {
    if (a.UserAgent.indexOf("MSIE") != - 1)
      {
        var c = new RegExp("MSIE ([0-9]).([0-9])"), b = c.exec(a.UserAgent);
        if (b != null)
          {
            a.MajorVersion = parseInt(b[1]);
            a.MinorVersion = parseInt(b[2]);
            return ;
          }
      }
    else
      if (a.UserAgent.indexOf("Firefox") != - 1)
        {
          var c = new RegExp("Firefox/([0-9]).([0-9])(.*)"), b = c.exec(a.UserAgent);
          if (b != null)
            {
              a.MajorVersion = parseInt(b[1]);
              a.MinorVersion = parseInt(b[2]);
              return ;
            }
        }
      else
        if (a.UserAgent.indexOf("Opera") != - 1)
          {
            var c = new RegExp("Opera/([0-9]).([0-9])"), b = c.exec(a.UserAgent);
            if (b != null)
              {
                a.MajorVersion = parseInt(b[1]);
                a.MinorVersion = parseInt(b[2]);
                return ;
              }
          }
    a.MajorVersion = null;
    a.MinorVersion = null;
  }
  function g()
  {
    if (a.UserAgent.indexOf("Mac OS X") != - 1)
      a.OSType = Msn.VE.OSType.MacOSX;
    else
      if (a.UserAgent.indexOf("Mac") != - 1)
        a.OSType = Msn.VE.OSType.MacOS;
      else
        if (a.UserAgent.indexOf("Linux") != - 1)
          a.OSType = Msn.VE.OSType.Linux;
        else
          if (a.UserAgent.indexOf("Win95") != - 1 || a.UserAgent.indexOf("Windows 95") != - 1)
            a.OSType = Msn.VE.OSType.Windows95;
          else
            if (a.UserAgent.indexOf("Win98") != - 1 || a.UserAgent.indexOf("Windows 98") != - 1)
              a.OSType = Msn.VE.OSType.Windows98;
            else
              if (a.UserAgent.indexOf("Win 9x 4.90") != - 1)
                a.OSType = Msn.VE.OSType.WindowsMillenium;
              else
                if (a.UserAgent.indexOf("Windows NT 4.0") != - 1)
                  a.OSType = Msn.VE.OSType.WindowsNT4;
                else
                  if (a.UserAgent.indexOf("Windows NT 5.01") != - 1)
                    a.OSType = Msn.VE.OSType.Windows2000SP1;
                  else
                    if (a.UserAgent.indexOf("Windows NT 5.0") != - 1)
                      a.OSType = Msn.VE.OSType.Windows2000;
                    else
                      if (a.UserAgent.indexOf("Windows NT 5.1") != - 1 && a.UserAgent.indexOf("SV1") != - 1)
                        a.OSType = Msn.VE.OSType.WindowsXPSP2;
                      else
                        if (a.UserAgent.indexOf("Windows NT 5.1") != - 1)
                          a.OSType = Msn.VE.OSType.WindowsXP;
                        else
                          if (a.UserAgent.indexOf("Windows NT 5.2") != - 1 && a.UserAgent.indexOf("SV1") != - 1)
                            a.OSType = Msn.VE.OSType.WindowsServer2003SP1;
                          else
                            if (a.UserAgent.indexOf("Windows NT 5.2") != - 1)
                              a.OSType = Msn.VE.OSType.WindowsServer2003;
                            else
                              if (a.UserAgent.indexOf("Windows NT 6.0") != - 1)
                                a.OSType = Msn.VE.OSType.WindowsVista;
                              else
                                if (a.UserAgent.indexOf("Windows NT") != - 1)
                                  a.OSType = Msn.VE.OSType.WindowsNT;
                                else
                                  if (a.UserAgent.indexOf("Win") != - 1)
                                    a.OSType = Msn.VE.OSType.Windows;
                                  else
                                    a.OSType = Msn.VE.OSType.Unknown;
  }
  function d()
  {
    if (a.UserAgent.indexOf(".NET CLR 1.0") != - 1)
      a.CLRType |= Msn.VE.CLRType.CLR10;
    if (a.UserAgent.indexOf(".NET CLR 1.1") != - 1)
      a.CLRType |= Msn.VE.CLRType.CLR11;
    if (a.UserAgent.indexOf(".NET CLR 2.0") != - 1)
      a.CLRType |= Msn.VE.CLRType.CLR20;
    if (a.UserAgent.indexOf(".NET CLR 3.0") != - 1)
      a.CLRType |= Msn.VE.CLRType.CLR30;
  }
  function f()
  {
    if (a.Locale != null)
      return ;
    a.Locale = "en-US";
    if (a.UserAgent.indexOf("MSIE") != - 1)
      {
        if (navigator.browserLanguage)
          a.Locale = navigator.browserLanguage;
        if (navigator.userLanguage)
          a.Locale = navigator.userLanguage;
        if (navigator.systemLanguage)
          a.Locale = navigator.systemLanguage;
      }
    else
      if (a.UserAgent.indexOf("Gecko") != - 1)
        {
          var c = new RegExp("; (.*); rv:"), b = c.exec(a.UserAgent);
          if (b && b.length >= 2)
            a.Locale = b[1].substring(b[1].lastIndexOf(" "), b[1].length + 1);
        }
      else
        if (a.UserAgent.indexOf("Opera") != - 1)
          {
            var c = new RegExp(" (.*))"), b = c.exec(a.UserAgent);
            if (b && b.length >= 2)
              a.Locale = b[1].substring(b[1].lastIndexOf(" "), b[1].length + 1);
          }
  }
  function k()
  {
    if (a.UserAgent.indexOf("Gecko") != - 1)
      a.Type = Msn.VE.BrowserType.Firefox;
    else
      if (a.UserAgent.indexOf("MSIE") != - 1)
        a.Type = Msn.VE.BrowserType.MSIE;
      else
        if (a.UserAgent.indexOf("Opera") != - 1)
          a.Type = Msn.VE.BrowserType.Opera;
        else
          a.Type = Msn.VE.BrowserType.Unknown;
    e();
    g();
    d();
    f();
    h();
    i();
    j();
    c();
    b();
  }
  var a = this;
  this.Type = null;
  this.BrowserCaps = 0;
  this.CLRType = 0;
  this.MajorVersion = null;
  this.MinorVersion = null;
  this.versionString = null;
  this.UserAgent = null;
  this.OSType = null;
  this.Locale = null;
  if (arguments.length == 0)
    {
      this.UserAgent = window.navigator.userAgent;
      this.currentBrowser = true;
    }
  else
    {
      this.UserAgent = arguments[0];
      this.currentBrowser = false;
      if (arguments.length >= 2)
        this.Locale = arguments[1];
    }
  this.IsCompatibleWith = (function (c)
{
  for (var b = 0;b < c.length;b++)
    {
      var a = c[b];
      if (a.Type == this.Type && (this.MajorVersion > a.MajorVersion || a.MajorVersion == this.MajorVersion && a.MinorVersion >= this.MinorVersion))
        return true;
    }
  return false;
}
);
  this.GetVersionString = (function ()
{
  if (this.versionString == null)
    if (a.UserAgent.indexOf("Win") != - 1 && a.UserAgent.indexOf("MSIE") != - 1)
      {
        var b = null, c;
        try
          {
            b = document.createElement("<DIV STYLE='behavior:url(#default#clientCaps); display: none' ID='__clientCaps'>");
            document.body.appendChild(b);
            c = b.getComponentVersion("{89820200-ECBD-11CF-8B85-00AA005B4383}", "componentid");
          }
        catch (d)
          {
            c = a.MajorVersion + "." + a.MinorVersion;
          }
        finally
          {
            if ($ID("__clientCaps") != null)
              ($ID("__clientCaps")).parentNode.removeChild(b);
          }
        this.versionString = c;
      }
    else
      if (a.MajorVersion != null && a.MajorVersion != null)
        this.versionString = a.MajorVersion + "." + a.MinorVersion;
      else
        this.versionString = "";
  return this.versionString;
}
);
  k();
}
);
Msn.VE.Environment = (function ()
{
  }
);
Msn.VE.Environment.Redirect = (function (a)
{
  window.location.href = a;
}
);
Msn.VE.Environment.BrowserInfo = new Msn.VE.BrowserInfo();
Msn.VE.Environment.IsFF20 = (function ()
{
  var a = Msn.VE.Environment.BrowserInfo;
  if (a.Type == Msn.VE.BrowserType.Firefox)
    {
      var b = a.MajorVersion;
      if (b >= 2)
        return true;
    }
  return false;
}
);
Msn.VE.Environment.IsIE50 = (function ()
{
  var a = Msn.VE.Environment.BrowserInfo;
  if (a.Type == Msn.VE.BrowserType.MSIE)
    {
      var b = a.MajorVersion;
      if (b >= 5)
        return true;
    }
  return false;
}
);
_VERegisterNamespaces("Msn.VE");
Msn.VE.PushPinTypes = {Default : 0, SearchResultPrecise : 1, Annotation : 2, Direction : 3, DirectionTemp : 4, TrafficLight : 5, TrafficOthers : 6, YouAreHere : 7, AdStandard : 8, AdWide : 9, AdCategory : 10, AdRoofStandard : 11, AdRoofWide : 12, AdSponsor : 13, DirectionStep : 14, Context : 15, SearchResultNonprecise : 16};
Msn.VE.MapActionMode = {ModeUnknown : 0, Mode2D : 1, Mode3D : 2, ModeOblique : 3};
Msn.VE.BirdsEyeSearchSpinDirection = {ClockwiseSpin : - 1, NoSpin : 0, CounterclockwiseSpin : 1};
Msn.VE.LineJoinMode = {Straight : "miter", Round : "round"};
Msn.VE.Css.Cursors.defineCustomCursors([{name : "Grab", domain : ".", path : "/cursors/grab.cur", fallback : "move"}, {name : "Grabbing", domain : ".", path : "/cursors/grabbing.cur", fallback : "move"}, {name : "Target", domain : ".", path : "/cursors/target.cur", fallback : "crosshair"}]);
Msn.VE.MapControl = (function (p_elSource,p_htParams,p_parentAPIControl)
{
  function SetChildDiv(a)
  {
    map.appendChild(a);
  }
  function EnableGeoCommunity(a)
  {
    hijackMouseMove = a;
  }
  function IsGeoCommunityEnabled()
  {
    return hijackMouseMove;
  }
  function HijackMouseCursor(a)
  {
    hijackMouseCursor = a;
  }
  function IsHijackMouseCursor()
  {
    return hijackMouseCursor;
  }
  function GetOffsetX()
  {
    return offsetX;
  }
  function GetOffsetY()
  {
    return offsetY;
  }
  function GetGraphic(a)
  {
    if (! graphicCanvas)
      try
        {
          graphicCanvas = Msn.Drawing.Graphic.CreateGraphic(map, a);
          graphicCanvas.SetZIndex(17);
        }
      catch (b)
        {}
    return graphicCanvas;
  }
  function OnView3DScaleBarPositionUpdate()
  {
    var a = VE_TrafficManager.turnedOn ? 25 : 0;
    if (spacecontrol != null)
      spacecontrol.RaiseEvent("CB24F613-FE72-442e-857A-BB2FD6BFBAA5", "OnScaleBarPositionChange", a);
  }
  function UpdateFromParent()
  {
    var a = g(p_elSource).getPagePosition();
    x = a.x;
    y = a.y;
    width = p_elSource.offsetWidth;
    height = p_elSource.offsetHeight;
  }
  function CreateDashboard(c,d,b,f,e,a)
  {
    if (currentMode == threeDMode && currentMode != null)
      b = Msn.VE.DashboardSize.Normal;
    dashboard = Msn.VE.NavControlFactory(p_elSource, p_this, b, f, e, a);
    dashboard.Init();
    dashboardContainer = dashboard.GetElement();
    if (a == 5)
      {
        if (isFinite(parseInt(c)))
          dashboardContainer.style.left = c + "px";
        if (isFinite(parseInt(d)))
          dashboardContainer.style.top = d + "px";
      }
  }
  function CreateMinimap(b,c,a,e,f,h,d)
  {
    minimapContainer = document.createElement("div");
    if (typeof a != "undefined" && a != null)
      minimapContainer.id = a;
    else
      minimapContainer.id = "MSVE_minimap";
    p_elSource.appendChild(minimapContainer);
    minimapContainer.attachEvent("onmousedown", IgnoreEvent);
    minimapContainer.attachEvent("onmouseup", IgnoreEvent);
    minimapContainer.attachEvent("onmousemove", DashboardContainerMouseMoveEvent);
    minimapContainer.attachEvent("onmousewheel", IgnoreEvent);
    minimapContainer.attachEvent("ondblclick", IgnoreEvent);
    minimapContainer.attachEvent("oncontextmenu", IgnoreEvent);
    minimapContainer.attachEvent("onkeydown", IgnoreEvent);
    minimapContainer.attachEvent("onkeyup", IgnoreEvent);
    minimapControl = new Msn.VE.Minimap(minimapContainer, p_this, f, h);
    if (d)
      minimapControl.SetClientToken(d);
    var g = e || GetMapStyle() == "o" || $MVEM.IsEnabled(MapControl.Features.Minimap.ShowByDefault);
    if (g)
      minimapControl.Init();
    if (typeof b != "undefined" && b != null && typeof c != "undefined" && c != null)
      minimapControl.SetPosition(b, c);
    return minimapControl;
  }
  function OnChangeView()
  {
    if (currentView.mapStyle == obliqueStyle)
      {
        var b = GetObliqueScene();
        if (b != null && targetTool)
          {
            var a = Msn.VE.Geometry, e = g(p_elSource).getPagePosition(), c = new a.Point(e.x + map.offsetLeft - originX, e.y + map.offsetTop - originY), d = 2 / currentView.zoomLevel, h = new a.Point(c.x + b.GetWidth() / d, c.y + b.GetHeight() / d), f = new a.Rectangle(c, h);
            f.scale(- 256);
            targetTool.setBoundingArea(f);
            a = null;
          }
        b = null;
      }
    if (obliqueMode)
      obliqueMode.UpdateAvailability();
  }
  function SetDefaultView()
  {
    var a = new Msn.VE.MapView(p_this);
    a.SetCenterLatLong(new Msn.VE.LatLong(0, 0));
    a.SetZoomLevel(1);
    a.SetMapStyle(roadStyle);
    SetBaseTileSource(a);
    SetView(a);
    Initialized2D = true;
  }
  function SetAltitude(b)
  {
    Sync3dView();
    var a = currentView.MakeCopy();
    a.SetAltitude(b);
    SetView(a);
  }
  function SetTilt(b)
  {
    Sync3dView();
    var a = currentView.MakeCopy();
    a.SetTilt(b);
    SetView(a);
  }
  function SetDirection(b)
  {
    Sync3dView();
    var a = currentView.MakeCopy();
    a.SetDirection(b);
    SetView(a);
  }
  function GetCurrentMode()
  {
    return currentMode;
  }
  function GetMapWidth()
  {
    return width;
  }
  function GetMapHeight()
  {
    return height;
  }
  function SetMapHeight(a)
  {
    height = a;
    p_this.h = a;
    p_elSource.style.height = a;
  }
  function GetCurrentMapView()
  {
    return preferredView.MakeCopy();
  }
  function SetCenter(c,b)
  {
    Sync3dView();
    var a = preferredView.MakeCopy();
    a.SetCenterLatLong(new Msn.VE.LatLong(c, b));
    SetView(a);
  }
  function SetCenterAccurate(c,b)
  {
    Sync3dView();
    var a = preferredView.MakeCopy();
    a.SetCenterLatLongAccurate(new Msn.VE.LatLong(c, b));
    SetView(a);
  }
  function SetMapStyle(b,e,c,d)
  {
    Sync3dView();
    var a = currentView.MakeCopy();
    a.SetMapStyle(ValidateMapStyle(b), e, c, d);
    if (currentView.mapStyle != b)
      if (b == obliqueStyle)
        {
          Fire("onstartmapstyleoblique");
          a.SetZoomLevel(1);
          lastOrthoZoomLevel = currentView.zoomLevel;
          lastOrthoMapStyle = currentView.mapStyle;
        }
      else
        if (currentView.mapStyle == obliqueStyle)
          {
            Fire("onendmapstyleoblique");
            a.SetZoomLevel(lastOrthoZoomLevel);
          }
    a.latlong.latitude = GetCenterLatitude();
    a.latlong.longitude = GetCenterLongitude();
    SetView(a);
  }
  function SetScaleBarDistanceUnit(a)
  {
    currentScaleBarUnit = a;
    if (scaleBar != null)
      {
        scaleBar.SetDistanceUnit(a);
        scaleBar.Update();
      }
    if (currentMode == threeDMode && spacecontrol != null)
      {
        if (a == null)
          bUseKilometers = $MVEM.IsEnabled(MapControl.Features.ScaleBarKilometers);
        else
          bUseKilometers = a == Msn.VE.DistanceUnit.Kilometers;
        spacecontrol.DisplayMetricUnits = bUseKilometers;
      }
  }
  function ValidateMapStyle(a)
  {
    if (a == aerialStyle || a == hybridStyle || a == obliqueStyle || a == shadedStyle)
      return a;
    else
      return roadStyle;
  }
  function GetCenterLatitude()
  {
    if (currentMode == threeDMode)
      {
        if (view3DCreated)
          {
            var a = spacecontrol.GetCenterLatitude();
            return isNaN(a) ? null : a;
          }
        return null;
      }
    else
      if (currentView != null && currentView != "undefined" && currentView.latlong != null && currentView.latlong != "undefined" && currentView.latlong.latitude != null && currentView.latlong.latitude != "undefined")
        return (currentView.GetCenterLatLong()).latitude;
    return null;
  }
  function GetCenterLongitude()
  {
    if (currentMode == threeDMode)
      {
        if (view3DCreated)
          {
            var a = spacecontrol.GetCenterLongitude();
            return isNaN(a) ? null : a;
          }
        return null;
      }
    else
      if (currentView != null && currentView != "undefined" && currentView.latlong != null && currentView.latlong != "undefined" && currentView.latlong.longitude != null && currentView.latlong.longitude != "undefined")
        return (currentView.GetCenterLatLong()).longitude;
    return null;
  }
  function ComputeCenterPoint(a)
  {
    currentView.latlong = currentMode.PixelToLatLong(currentView.center, currentView.zoomLevel);
    if (a)
      preferredView.Copy(currentView);
  }
  function GetLatitude(c)
  {
    var b = new VEPixel(originX + offsetX + width / 2, originY + offsetY + c), a = currentMode.PixelToLatLong(b, currentView.zoomLevel);
    if (! a)
      return null;
    return a.latitude;
  }
  function GetLongitude(c)
  {
    var b = new VEPixel(originX + offsetX + c, originY + offsetY + height / 2), a = currentMode.PixelToLatLong(b, currentView.zoomLevel);
    if (! a)
      return null;
    return a.longitude;
  }
  function GetY(b)
  {
    var c = new Msn.VE.LatLong(b, currentView.center.longitude), a = LatLongToPixel(c);
    if (! a)
      return null;
    return MathRound(a.y);
  }
  function GetX(b)
  {
    var c = new Msn.VE.LatLong(currentView.center.latitude, b), a = LatLongToPixel(c);
    if (! a)
      return null;
    return MathRound(a.x);
  }
  function LatLongToPixel(c,a)
  {
    if (a == null || typeof a == "undefined")
      a = currentView.zoomLevel;
    var b = currentMode.LatLongToPixel(c, a);
    if (b != null)
      if (currentMode != threeDMode)
        {
          b.x -= originX + offsetX;
          b.y -= originY + offsetY;
        }
    return b;
  }
  function LatLongToPixelAsync(c,a,d)
  {
    if (a == null || typeof a == "undefined")
      a = currentView.zoomLevel;
    var b = (function (a)
{
  if (a != null && typeof a != "undefined" && currentMode != threeDMode)
    for (var b = 0;b < a.length;++b)
      if (a[b] != null)
        {
          a[b].x -= originX + offsetX;
          a[b].y -= originY + offsetY;
        }
  d(a);
}
);
    currentMode.LatLongToPixelAsync(c, a, b);
  }
  function PixelToLatLong(b,a)
  {
    if (a == null || typeof a == "undefined")
      a = currentView.zoomLevel;
    var c = new VEPixel(b.x + originX + offsetX, b.y + originY + offsetY);
    return currentMode.PixelToLatLong(c, a);
  }
  function PixelToLatLongAsync(c,b,e)
  {
    if (b == null || typeof b == "undefined")
      b = currentView.zoomLevel;
    var d = [];
    for (var a = 0;a < c.length;++a)
      d[a] = new VEPixel(c[a].x + originX + offsetX, c[a].y + originY + offsetY);
    currentMode.PixelToLatLongAsync(d, b, e);
  }
  function GetZoomLevel()
  {
    return currentView.zoomLevel;
  }
  function GetMapStyle()
  {
    return currentView.mapStyle;
  }
  function GetMapMode()
  {
    var a = Msn.VE.MapActionMode.ModeUnknown;
    if (currentMode != null)
      if (currentMode == threeDMode)
        a = Msn.VE.MapActionMode.Mode3D;
      else
        if (currentMode == orthoMode)
          a = Msn.VE.MapActionMode.Mode2D;
        else
          if (currentMode == obliqueMode)
            a = Msn.VE.MapActionMode.ModeOblique;
    return a;
  }
  function GetMode()
  {
    var a = Msn.VE.MapActionMode.ModeUnknown;
    if (currentMode != null)
      if (currentMode == threeDMode)
        a = Msn.VE.MapActionMode.Mode3D;
      else
        if (currentMode == orthoMode)
          a = Msn.VE.MapActionMode.Mode2D;
        else
          if (currentMode == obliqueMode)
            if (this.GetDashboard().GetMode() == 1)
              a = Msn.VE.MapActionMode.Mode2D;
            else
              a = Msn.VE.MapActionMode.Mode3D;
    return a;
  }
  function GetAltitude()
  {
    return currentView.GetAltitude();
  }
  function GetTilt()
  {
    return currentView.GetTilt();
  }
  function GetDirection()
  {
    return currentView.GetDirection();
  }
  function EnableMode(b,a)
  {
    switch (b)
    {
      case Msn.VE.MapActionMode.Mode3D:
        this._Enable3DMode(a);
        break ;
      case Msn.VE.MapActionMode.Mode2D:
      default:
        this._Disable3DMode(a);
        UnHidePins();
    }
  }
  function _Enable3DMode(a)
  {
    if (currentMode != threeDMode && currentMode != null)
      {
        VE_3DPhotoPluginObj = 0;
        VE_3DGeoCommunityPluginObj = 0;
        PluginEventRegistered = 0;
        PhotoPluginEventRegistered = 0;
        GeoCommunityPluginEventRegistered = 0;
        previousMode = currentMode;
        currentMode = threeDMode;
        this.Destroy2DOnly();
        if (typeof a != "undefined")
          init3dparam = a;
        this.Init3DOnly();
      }
  }
  function _Disable3DMode(a)
  {
    if (currentMode == threeDMode && currentMode != null)
      {
        previousMode = currentMode;
        currentMode = orthoMode;
        this.Destroy3DOnly();
        this.Init2DOnly(a);
      }
  }
  function ControlReady()
  {
    return IsModeEnabled(Msn.VE.MapActionMode.Mode2D) || IsModeEnabled(Msn.VE.MapActionMode.Mode3D) && Get3DControl() != null;
  }
  function Get3DControl()
  {
    if (view3DCreated)
      return spacecontrol;
    return null;
  }
  function IsModeEnabled(b)
  {
    var a = currentMode != null && currentMode == threeDMode;
    switch (b)
    {
      case Msn.VE.MapActionMode.Mode2D:
        return ! a;
        break ;
      case Msn.VE.MapActionMode.Mode3D:
        return a;
    }
    return false;
  }
  function Get3DVisibleArea(acceptRegionAroundCenter)
  {
    if (! view3DCreated)
      return null;
    var lat1, lon1, lat2, lon2, lat3, lon3, lat4, lon4, aroundcenter, ret = spacecontrol.QueryRegion();
    eval(ret);
    if ((acceptRegionAroundCenter == "undefined" || acceptRegionAroundCenter == false) && aroundcenter == 1)
      return null;
    var points = [];
    points.push(new Msn.VE.LatLong(lat1, lon1));
    points.push(new Msn.VE.LatLong(lat2, lon2));
    points.push(new Msn.VE.LatLong(lat3, lon3));
    points.push(new Msn.VE.LatLong(lat4, lon4));
    return points;
  }
  function Show3DTraffic(a)
  {
    if (view3DCreated)
      if (! traffic3dAdded || a)
        {
          spacecontrol.AddImageSource("Terrain", "Traffic", GetManifestUrl("http://go.microsoft.com/fwlink/?LinkID=98777"), 1, 0.6);
          traffic3dAdded = true;
        }
  }
  function Remove3DTraffic()
  {
    if (view3DCreated && traffic3dAdded)
      {
        spacecontrol.RemoveImageSource("Terrain", "Traffic");
        traffic3dAdded = false;
      }
  }
  function Sync3dView()
  {
    if (spacecontrol && spaceCameraIsFlying)
      spacecontrol.RaiseCameraChangedEvent();
  }
  function OnBeginCameraUpdate()
  {
    cameraUpdateCount++;
    spaceCameraIsFlying = true;
  }
  function OnEndCameraUpdate()
  {
    spaceCameraIsFlying = false;
  }
  function IsCameraFlying()
  {
    return spaceCameraIsFlying;
  }
  function GetMetersPerPixel(b,a)
  {
    if (! b)
      b = currentView.latlong.latitude;
    if (! a)
      a = currentView.zoomLevel;
    return Math.cos(DegToRad(b)) * currentMode.MetersPerPixel(a);
  }
  function Fill()
  {
    var b = g(p_elSource).getStyle("width"), a = g(p_elSource).getStyle("height"), f = parseInt(b) - width, h = parseInt(a) - height;
    if (! /px$/.test(b))
      width = p_elSource.clientWidth || p_elSource.offsetWidth;
    else
      width = parseInt(b);
    if (! /px$/.test(a))
      height = p_elSource.clientHeight || p_elSource.offsetHeight;
    else
      height = parseInt(a);
    if (! panning)
      if (currentMode != threeDMode)
        {
          panning = true;
          var e = g(map).getComputedPosition(), c = {x : e.x + f / 2, y : e.y + h / 2};
          offsetX = - c.x;
          offsetY = - c.y;
          var d = new VEPixel(width / 2 + originX + offsetX, height / 2 + originY + offsetY);
          currentView.SetCenter(d);
          preferredView.SetCenter(new VEPixel(d.x, d.y));
          window.setTimeout(tileLayerManager.PanView, 1);
          g(map).slideToPoint(c, "quickly", "MAP_SLIDE", (function ()
{
  panning = false;
}
), Gimme.Animation.AccelerationLines.quickStartDecelerate);
        }
      else
        PanToView(currentView);
  }
  function Resize(b,a)
  {
    if (resizeTimer != null && typeof resizeTimer == "number")
      window.clearTimeout(resizeTimer);
    p_this.w = b;
    p_this.h = a;
    resizeTimer = window.setTimeout(p_this.FireResize, 250);
  }
  function IsObliqueAvailable()
  {
    return obliqueMode ? obliqueMode.IsAvailable() : false;
  }
  function GetObliqueScene()
  {
    return obliqueMode ? obliqueMode.GetScene() : null;
  }
  function SetAnimationEnabled(a)
  {
    animatedMovementEnabled = a;
  }
  function IsAnimationEnabled()
  {
    return animatedMovementEnabled && currentMode != threeDMode;
  }
  function SetObliqueScene(a)
  {
    if (obliqueMode)
      SetMapStyle(obliqueStyle, a, null);
  }
  function SetObliqueLocation(e,b,c,d)
  {
    if (obliqueMode)
      {
        Sync3dView();
        var a = currentView.MakeCopy();
        a.SetMapStyle(obliqueStyle, null, b);
        a.SetZoomLevel(c);
        if (currentView.mapStyle != obliqueStyle)
          {
            Fire("onstartmapstyleoblique");
            lastOrthoZoomLevel = currentView.zoomLevel;
            lastOrthoMapStyle = currentView.mapStyle;
          }
        a.SetCenterLatLong(e);
        a.callback = d;
        SetView(a);
      }
  }
  function SetObliqueOrientation(b,a)
  {
    if (obliqueMode)
      SetMapStyle(obliqueStyle, null, b, a);
  }
  function Debug(a)
  {
    debug = a;
  }
  function GetMapLegend()
  {
    return mapLegend;
  }
  function SetFocus()
  {
    if (currentMode == threeDMode)
      spacecontrol.Focus();
    else
      keyboard.focus();
  }
  function StopKeyboardPan()
  {
    if (panning && keyboardPan)
      StopContinuousPan();
  }
  function UpdatePreferredView()
  {
    preferredView.Copy(currentView);
  }
  function GetCenterOffset()
  {
    if (currentMode != null && currentMode == threeDMode)
      return new VEPixel(0, 0);
    return mapCenterOffset;
  }
  function SetCenterOffset(a)
  {
    if (typeof a != "undefined" && a != null)
      mapCenterOffset = a;
  }
  function GetLastViewChangeType()
  {
    var a = lastViewChangeType;
    lastViewChangeType = null;
    return a;
  }
  function ShowNonIENotSupportedDialog()
  {
    Fire("onerror", CreateEvent(currentView.latlong, currentView.zoomLevel, L_BrowserNotSupported_Text.replace(/%1/g, "<a href=\"" + L_SupportedBrowserDownloadUrl_Text + "\" target=\"_blank\">").replace(/%3/g, L_SupportedBrowserDownloadUrl_Text).replace(/%2/g, "</a>")));
  }
  function DelayedHWDialog()
  {
    ShowMessage(L_NoHardwareAcceleration_Text);
  }
  function SetShowMapModeSwitch(a)
  {
    if (dashboard && dashboard.constructor == Msn.VE.NavAction)
      dashboard.SetShowMapModeSwitch(a);
  }
  function SetTilePixelBuffer(a)
  {
    buffer = a < maxTilePixelBuffer ? a : maxTilePixelBuffer;
  }
  function SetClientToken(a)
  {
    m_clientToken = a;
    if (tileLayerManager)
      {
        tileLayerManager.SetClientToken(mapTiles, m_clientToken);
        tileLayerManager.SetClientToken(trafficTiles, m_clientToken);
      }
    if (minimapControl)
      minimapControl.SetClientToken(m_clientToken);
    if (obliqueMode)
      obliqueMode.SetClientToken(m_clientToken);
  }
  function GetTopPx()
  {
    if (typeof p_elSource != "undefined" && p_elSource != null)
      return (g(p_elSource).getPagePosition()).y;
    else
      return 0;
  }
  function GetLeftPx()
  {
    if (typeof p_elSource != "undefined" && p_elSource != null)
      return (g(p_elSource).getPagePosition()).x;
    else
      return 0;
  }
  function GetObliqueAvailability(b,a)
  {
    if (obliqueMode)
      obliqueMode.GetObliqueAvailability(b, a);
    else
      if (typeof a == "function")
        a(false);
  }
  function GetMapSurface()
  {
    return map;
  }
  function ClipView(b,c)
  {
    var a = ShiftView(b, c, 0, 0);
    if (typeof a != "undefined" && a != null)
      b.SetCenter(new VEPixel(b.center.x + a.x, b.center.y + a.y));
  }
  function ShiftView(b,a,c,d)
  {
    if (b != null && b.center != null && a != null && a != "undefined")
      {
        c = ClipDelta(c, width, b.center.x - width / 2, b.zoomLevel, a.z1, a.x1, a.x2, b.mapStyle);
        d = ClipDelta(d, height, b.center.y - height / 2, b.zoomLevel, a.z1, a.y1, a.y2, b.mapStyle);
        return new VEPixel(c, d);
      }
  }
  function ClipDelta(a,b,d,g,f,i,h,j)
  {
    var c = tileSize * i * Math.pow(2, g - f), e = tileSize * h * Math.pow(2, g - f);
    if (j == obliqueStyle)
      {
        c -= Math.ceil(b / 2);
        e += Math.ceil(b / 2);
      }
    if (b > e - c)
      a = (e - c - b) / 2 - d + c;
    else
      if (d + a < c)
        a = c - d;
      else
        if (d + b + a > e)
          a = e - d - b;
    return a;
  }
  function VECopyrightTableEntry(b,a,e,f,c,d)
  {
    this.MinZoomLevel = b;
    this.MaxZoomLevel = a;
    this.MinLatitude = e;
    this.MinLongitude = f;
    this.MaxLatitude = c;
    this.MaxLongitude = d;
  }
  function VECopyrightTable()
  {
    var b = [];
    b[Msn.VE.MapStyle.Oblique] = [L_MapControlImageCourtesyOfPictometry_Text, L_MapControlImageCourtesyOfBlom_Text];
    b[Msn.VE.MapStyle.Road] = [L_MapControlNavteq_Text, L_MapControlImageCourtesyOfAND_Text, L_MapControlImageCourtesyOfMapDataSciences_Text, L_MapControlImageCourtesyOfZenrin_Text, L_MapControlImageCourtesyOfIntermap_Text];
    b[Msn.VE.MapStyle.Aerial] = [L_MapControlImageCourtesyOfNASA_Text, L_MapControlHarrisCorp_Text, L_MapControlImageCourtesyOfUSGS_Text, L_MapControlImageCourtesyOfEarthData_Text, L_MapControlImageCourtesyOfGetmapping_Text, L_MapControlImageCourtesyOfGeoEye_Text, L_MapControlImageCourtesyOfPasco_Text, L_MapControlImageCourtesyOfIntergraph_Text, L_MapControlImageCourtesyOfTerraItaly_Text, L_MapControlImageCourtesyOfIntermap_Text, L_MapControlImageCourtesyOfIndianaMap_Text, L_MapControlImageCourtesyOfStateOfNevada_Text];
    var a = [];
    a[Msn.VE.MapStyle.Oblique] = [];
    a[Msn.VE.MapStyle.Oblique][L_MapControlImageCourtesyOfPictometry_Text] = [];
    a[Msn.VE.MapStyle.Oblique][L_MapControlImageCourtesyOfBlom_Text] = [];
    a[Msn.VE.MapStyle.Road] = [];
    a[Msn.VE.MapStyle.Road][L_MapControlNavteq_Text] = [];
    a[Msn.VE.MapStyle.Road][L_MapControlImageCourtesyOfAND_Text] = [];
    a[Msn.VE.MapStyle.Road][L_MapControlImageCourtesyOfMapDataSciences_Text] = [];
    a[Msn.VE.MapStyle.Road][L_MapControlImageCourtesyOfZenrin_Text] = [];
    a[Msn.VE.MapStyle.Road][L_MapControlImageCourtesyOfIntermap_Text] = [];
    a[Msn.VE.MapStyle.Aerial] = [];
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfNASA_Text] = [];
    a[Msn.VE.MapStyle.Aerial][L_MapControlHarrisCorp_Text] = [];
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfUSGS_Text] = [];
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfEarthData_Text] = [];
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfGetmapping_Text] = [];
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfGeoEye_Text] = [];
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfPasco_Text] = [];
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfIntergraph_Text] = [];
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfTerraItaly_Text] = [];
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfIntermap_Text] = [];
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfIndianaMap_Text] = [];
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfStateOfNevada_Text] = [];
    a[Msn.VE.MapStyle.Oblique][L_MapControlImageCourtesyOfPictometry_Text].push(new VECopyrightTableEntry(1, 20, 24, - 125, 49, - 66));
    a[Msn.VE.MapStyle.Oblique][L_MapControlImageCourtesyOfBlom_Text].push(new VECopyrightTableEntry(1, 20, 34, - 13, 72, 35));
    a[Msn.VE.MapStyle.Road][L_MapControlNavteq_Text].push(new VECopyrightTableEntry(1, 9, - 90, - 180, 90, 180));
    a[Msn.VE.MapStyle.Road][L_MapControlNavteq_Text].push(new VECopyrightTableEntry(10, 19, 16, - 180, 90, - 50));
    a[Msn.VE.MapStyle.Road][L_MapControlNavteq_Text].push(new VECopyrightTableEntry(10, 19, 27, - 32, 40, - 13));
    a[Msn.VE.MapStyle.Road][L_MapControlNavteq_Text].push(new VECopyrightTableEntry(10, 19, 35, - 11, 72, 20));
    a[Msn.VE.MapStyle.Road][L_MapControlNavteq_Text].push(new VECopyrightTableEntry(10, 19, 21, 20, 72, 32));
    a[Msn.VE.MapStyle.Road][L_MapControlNavteq_Text].push(new VECopyrightTableEntry(10, 17, 21.92, 113.14, 22.79, 114.52));
    a[Msn.VE.MapStyle.Road][L_MapControlNavteq_Text].push(new VECopyrightTableEntry(10, 17, 21.73, 119.7, 25.65, 122.39));
    a[Msn.VE.MapStyle.Road][L_MapControlNavteq_Text].push(new VECopyrightTableEntry(10, 17, 0, 98.7, 8, 120.17));
    a[Msn.VE.MapStyle.Road][L_MapControlNavteq_Text].push(new VECopyrightTableEntry(10, 17, 0.86, 103.2, 1.92, 104.45));
    a[Msn.VE.MapStyle.Road][L_MapControlImageCourtesyOfAND_Text].push(new VECopyrightTableEntry(10, 19, - 90, - 180, 90, 180));
    a[Msn.VE.MapStyle.Road][L_MapControlImageCourtesyOfMapDataSciences_Text].push(new VECopyrightTableEntry(5, 17, - 45, 111, - 9, 156));
    a[Msn.VE.MapStyle.Road][L_MapControlImageCourtesyOfMapDataSciences_Text].push(new VECopyrightTableEntry(5, 17, - 49.7, 164.42, - 30.82, 180));
    a[Msn.VE.MapStyle.Road][L_MapControlImageCourtesyOfZenrin_Text].push(new VECopyrightTableEntry(4, 18, 23.5, 122.5, 46.65, 151.66));
    a[Msn.VE.MapStyle.Road][L_MapControlImageCourtesyOfIntermap_Text].push(new VECopyrightTableEntry(1, 21, 49, - 11, 60, 2));
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfNASA_Text].push(new VECopyrightTableEntry(1, 8, - 90, - 180, 90, 180));
    a[Msn.VE.MapStyle.Aerial][L_MapControlHarrisCorp_Text].push(new VECopyrightTableEntry(9, 13, - 90, - 180, 90, 180));
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfUSGS_Text].push(new VECopyrightTableEntry(14, 19, 17.99, - 150.11, 61.39, - 65.57));
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfEarthData_Text].push(new VECopyrightTableEntry(14, 19, 21.25, - 158.3, 21.72, - 157.64));
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfEarthData_Text].push(new VECopyrightTableEntry(14, 19, 39.99, - 80.53, 40.87, - 79.43));
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfEarthData_Text].push(new VECopyrightTableEntry(14, 19, 34.86, - 90.27, 35.39, - 89.6));
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfGetmapping_Text].push(new VECopyrightTableEntry(14, 19, 49.94, - 6.35, 58.71, 1.78));
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfGeoEye_Text].push(new VECopyrightTableEntry(14, 17, 44.43, - 63.75, 45.06, - 63.45));
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfGeoEye_Text].push(new VECopyrightTableEntry(14, 17, 45.39, - 73.78, 45.66, - 73.4));
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfGeoEye_Text].push(new VECopyrightTableEntry(14, 17, 45.2, - 75.92, 45.59, - 75.55));
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfGeoEye_Text].push(new VECopyrightTableEntry(14, 17, 42.95, - 79.81, 44.06, - 79.42));
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfGeoEye_Text].push(new VECopyrightTableEntry(14, 17, 50.35, - 114.26, 51.25, - 113.82));
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfGeoEye_Text].push(new VECopyrightTableEntry(14, 17, 48.96, - 123.33, 49.54, - 122.97));
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfGeoEye_Text].push(new VECopyrightTableEntry(14, 17, - 35.42, 138.32, - 34.47, 139.07));
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfGeoEye_Text].push(new VECopyrightTableEntry(14, 17, - 32.64, 115.58, - 32.38, 115.85));
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfGeoEye_Text].push(new VECopyrightTableEntry(14, 17, - 34.44, 150.17, - 33.27, 151.49));
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfGeoEye_Text].push(new VECopyrightTableEntry(14, 17, - 28.3, 152.62, - 26.94, 153.64));
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfPasco_Text].push(new VECopyrightTableEntry(14, 17, 23.5, 122.5, 46.65, 151.66));
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfIntergraph_Text].push(new VECopyrightTableEntry(14, 19, 47, 5, 55.5, 16));
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfTerraItaly_Text].push(new VECopyrightTableEntry(14, 21, 43.15, 6.5, 47.15, 14));
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfTerraItaly_Text].push(new VECopyrightTableEntry(14, 21, 41.3, 9.9, 43.15, 16.4));
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfTerraItaly_Text].push(new VECopyrightTableEntry(14, 21, 36.5, 7.9, 41.3, 18.7));
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfIntermap_Text].push(new VECopyrightTableEntry(1, 21, 49, - 11, 60, 2));
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfIndianaMap_Text].push(new VECopyrightTableEntry(14, 19, 37.7, - 88.2, 41.9, - 84.7));
    a[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfStateOfNevada_Text].push(new VECopyrightTableEntry(14, 17, 34.85, - 120.2, 42.12, - 113.91));
    this.CreditsFor = (function (c,k,l,j)
{
  var g = [];
  if (c != "undefined" && c != null && typeof b[c] != "undefined" && b[c] != null)
    {
      var m = b[c].length;
      for (var e = 0;e < m;++e)
        {
          var h = b[c][e], f = a[c][h], i = f.length;
          for (var d = 0;d < i;++d)
            if (f[d].IsMatch(k, l, j))
              {
                g.push(h);
                break ;
              }
        }
    }
  return g;
}
);
    this.CreditsForView = (function (a)
{
  var b = [];
  b.push(L_MapCopyrightMicrosoft);
  if (a.mapStyle == Msn.VE.MapStyle.Hybrid)
    {
      b = b.concat(this.CreditsFor(Msn.VE.MapStyle.Road, a.zoomLevel, a.latlong.latitude, a.latlong.longitude));
      b = b.concat(this.CreditsFor(Msn.VE.MapStyle.Aerial, a.zoomLevel, a.latlong.latitude, a.latlong.longitude));
    }
  else
    b = b.concat(this.CreditsFor(a.mapStyle, a.zoomLevel, a.latlong.latitude, a.latlong.longitude));
  if (view3DCreated && a.mapStyle != Msn.VE.MapStyle.Oblique && photoplugin3dActive)
    b = b.concat(this.CreditsFor(Msn.VE.MapStyle.Oblique, a.zoomLevel, a.latlong.latitude, a.latlong.longitude));
  if (VE_TrafficManager.turnedOn)
    {
      var d = false;
      for (var c = 0;c < b.length;c++)
        if (b[c] == L_MapControlNavteq_Text)
          {
            d = true;
            b.splice(c + 1, 0, L_MapCopyrightTraffic);
            break ;
          }
      if (! d)
        b.push(L_MapCopyrightTraffic);
    }
  return b;
}
);
  }
  function Copyright(f)
  {
    function e()
    {
      var e = 0;
      if (c && c.style.display !== "none")
        {
          var h = parseInt(g(c).getStyle("height")), f = parseInt(c.style.bottom);
          e += (isNaN(h) ? 0 : h) + (isNaN(f) ? 0 : f);
        }
      d.style.bottom = e + "px";
      a.style.bottom = e + 1 + "px";
      if (b)
        window.setTimeout(b.Reposition, 1);
    }
    function j()
    {
      var g = g_sVECopyrightTable.CreditsForView(currentView), c = "", f = "";
      for (var b = 0;b < g.length;++b)
        {
          if (b > 0)
            if (b == 2)
              c += "\n";
            else
              c += "  ";
          f += "<span>" + g[b] + "</span> ";
          c += g[b];
        }
      if (view3DCreated)
        spacecontrol.SetCopyrightString(c);
      d.innerHTML = f;
      a.innerHTML = f;
      e();
    }
    function i()
    {
      e();
    }
    function k(c)
    {
      b = c;
      if (b)
        b.SetPinElement(a);
    }
    function h(a)
    {
      c = a;
      e();
    }
    var d = document.createElement("div"), a = document.createElement("div"), c = null, b = null;
    this.Show = (function ()
{
  f.appendChild(d);
  f.appendChild(a);
}
);
    this.Hide = (function ()
{
  try
    {
      f.removeChild(d);
      f.removeChild(a);
    }
  catch (b)
    {}
}
);
    this.Init = (function ()
{
  d.className = "MSVE_Copyright MSVE_CopyrightBackground";
  a.className = "MSVE_Copyright MSVE_CopyrightForeground";
  e();
  this.Show();
}
);
    this.Destroy = (function ()
{
  this.Hide();
  c = null;
  b = null;
  d = a = null;
}
);
    this.Reposition = e;
    this.Update = j;
    this.SetOffset = i;
    this.PinTo = k;
    this.SetPinElement = h;
  }
  function MapEvent(f,d,e,a,c,b,g)
  {
    this.view = f;
    this.oblique = d;
    this.error = e;
    this.requestedView = a;
    this.elementID = c;
    this.mouseButton = b;
    this.e = g;
  }
  function CreateEvent(b,f,c,d,e,n,g,h)
  {
    var a = currentView.MakeCopy();
    if (b != null && b  instanceof  Msn.VE.LatLong)
      {
        if (Msn.VE.API != null)
          {
            var m = new VELatLongFactory(new VELatLongFactorySpecFromMapView(a));
            a.LatLong = m.CreateVELatLong(b.latitude, b.longitude);
            a.latlong = b;
          }
        else
          a.latlong = b;
        if (typeof g != "undefined" && g != null)
          a.altitude = parseFloat(g);
      }
    if (f != null && typeof f == "number")
      a.zoomLevel = f;
    if (c == null || typeof c == "undefined")
      c = "";
    var j = null;
    if (obliqueMode)
      j = obliqueMode.GetEventInfo();
    var i = null;
    if (d != null && d  instanceof  Msn.VE.MapView)
      i = d.MakeCopy();
    var k = null;
    if (typeof e != "undefined" && e != null)
      k = e;
    var l = null;
    if (typeof h != "undefined" && h != null)
      l = h;
    return new MapEvent(a, j, c, i, k, n, l);
  }
  function CreateCustomEvent(h,b,d)
  {
    var a = new MapEvent();
    if (d)
      a.error = d.error;
    a.eventName = h;
    a.zoomLevel = currentView.zoomLevel;
    a.mapStyle = currentView.mapStyle;
    if (currentMode != threeDMode)
      {
        a.birdseyeSceneID = currentView.sceneId;
        a.birdseyeSceneOrientation = currentView.sceneOrientation;
        if (b)
          {
            a.leftMouseButton = IsLeftMouseButton(b);
            a.rightMouseButton = IsRightMouseButton(b);
            a.middleMouseButton = IsMiddleMouseButton(b);
            a.mouseWheelChange = GetMouseScrollDelta(b);
            a.screenX = b.screenX;
            a.screenY = b.screenY;
            var e = Gimme.Screen.getMousePosition(b);
            a.clientX = e.x;
            a.clientY = e.y;
            var f = g(p_elSource).getPagePosition();
            a.mapX = a.clientX - f.x;
            a.mapY = a.clientY - f.y;
            a.keyCode = b.keyCode;
            a.altKey = b.altKey;
            a.ctrlKey = b.ctrlKey;
            a.shiftKey = b.shiftKey;
            a.elementID = null;
            var c = GetTarget(b);
            while (typeof c != "undefined" && c != null)
              if (typeof c.id != "undefined" && c.id != null && c.id.indexOf(MC_IID_NAMESPACE) == 0)
                {
                  a.elementID = c.id;
                  break ;
                }
              else
                if (typeof c.className != "undefined" && c.className != null && c.className == "MSVE_MapContainer")
                  break ;
                else
                  c = c.parentElement;
          }
      }
    else
      if (d)
        {
          if (d.view)
            a.latLong = d.view.LatLong;
          else
            a.latLong = null;
          a.elementID = d.elementID;
          a.leftMouseButton = d.mouseButton == "Left";
          a.rightMouseButton = d.mouseButton == "Right";
          a.middleMouseButton = d.mouseButton == "Middle";
          a.mouseWheelChange = 0;
          a.keyCode = 0;
          a.altKey = false;
          a.ctrlKey = false;
          a.shiftKey = false;
        }
    return a;
  }
  function AttachEvent(d,c)
  {
    var a = defaultEventTable[d];
    if (! a)
      {
        a = [];
        defaultEventTable[d] = a;
      }
    for (var b = 0;b < a.length;b++)
      if (a[b] == c)
        return true;
    a.push(c);
  }
  function DetachEvent(d,c)
  {
    var a = defaultEventTable[d];
    if (! a)
      return ;
    for (var b = 0;b < a.length;b++)
      if (a[b] == c)
        a.splice(b, 1);
  }
  function AttachCustomEvent(d,c)
  {
    var a = customEventTable[d];
    if (! a)
      {
        a = [];
        customEventTable[d] = a;
      }
    for (var b = 0;b < a.length;b++)
      if (a[b] == c)
        return true;
    a.push(c);
  }
  function DetachCustomEvent(d,c)
  {
    var a = customEventTable[d];
    if (a)
      for (var b = 0;b < a.length;b++)
        if (a[b] == c)
          a.splice(b, 1);
  }
  function IsEventAttached(a)
  {
    var b = customEventTable[a], c = defaultEventTable[a];
    return c != null || b != null;
  }
  function Fire(b,a)
  {
    FireCustomEvent(b, a);
    FireDefaultEvent(b, a);
  }
  function FireDefaultEvent(d,b)
  {
    var a = defaultEventTable[d];
    if (! b)
      b = CreateEvent();
    if (a)
      for (var c = 0;c < a.length;c++)
        a[c](b);
  }
  function FireCustomEvent(d,a)
  {
    var b = false, c = customEventTable[d];
    if (c)
      {
        var f = window.event;
        if (a && MapEvent.prototype.isPrototypeOf(a))
          a = CreateCustomEvent(d, f, a);
        else
          a = CreateCustomEvent(d, f, null);
        for (var e = 0;e < c.length;e++)
          b = b | c[e](a);
      }
    return b;
  }
  function DisposeAllCustomEvent()
  {
    while (customEventTable.length)
      {
        var a = customEventTable.pop();
        while (a.length)
          a.pop();
        a = null;
      }
  }
  function DestroyEventTable()
  {
    while (defaultEventTable.length)
      {
        var a = defaultEventTable.pop();
        while (a.length)
          a.pop();
        a = null;
      }
    defaultEventTable = null;
    DisposeAllCustomEvent();
    customEventTable = null;
  }
  function KeyDown(c)
  {
    if (isMinimap)
      return false;
    c = GetEvent(c);
    if (FireCustomEvent("onkeydown", c))
      return false;
    var e = c.ctrlKey ? 5 : 1, d = keyboardPanSpeed * e, a = panningX, b = panningY;
    switch (c.keyCode)
    {
      case 9:
      case 17:
      case 18:
        if (panning && keyboardPan)
          StopContinuousPan();
        return true;
      case 37:
        a = - d;
        break ;
      case 38:
        b = - d;
        break ;
      case 39:
        a = d;
        break ;
      case 40:
        b = d;
        break ;
      case 107:
      case 187:
      case 61:
      case 43:
        a = 0;
        b = 0;
        $VE_A.Log($VE_A.PgName.Map, "Zoom", "Keyboard");
        ZoomIn();
        break ;
      case 109:
      case 189:
        a = 0;
        b = 0;
        $VE_A.Log($VE_A.PgName.Map, "Zoom", "Keyboard");
        ZoomOut();
        break ;
      case 65:
        if ($MVEM.IsEnabled(MapControl.Features.MapStyle.Aerial))
          {
            a = 0;
            b = 0;
            $VE_A.Log($VE_A.PgName.Map, "MapStyleAerial", "Keyboard");
            SetMapStyle(aerialStyle);
          }
        break ;
      case 72:
        if ($MVEM.IsEnabled(MapControl.Features.MapStyle.Hybrid))
          {
            a = 0;
            b = 0;
            $VE_A.Log($VE_A.PgName.Map, "MapStyleHybrid", "Keyboard");
            SetMapStyle(hybridStyle);
          }
        break ;
      case 82:
        if ($MVEM.IsEnabled(MapControl.Features.MapStyle.Road))
          {
            a = 0;
            b = 0;
            $VE_A.Log($VE_A.PgName.Map, "MapStyleRoad", "Keyboard");
            SetMapStyle(roadStyle);
          }
        break ;
      case 66:
      case 79:
        if ($MVEM.IsEnabled(MapControl.Features.MapStyle.BirdsEye))
          if (obliqueMode && obliqueMode.IsAvailable())
            {
              a = 0;
              b = 0;
              $VE_A.Log($VE_A.PgName.Map, "MapStyleOblique", "Keyboard");
              SetMapStyle(obliqueStyle);
            }
        break ;
      case 51:
      case 99:
        if ($MVEM.IsEnabled(MapControl.Features.MapStyle.View3D))
          {
            $VE_A.Log($VE_A.PgName.Map, "Mode3D", "Keyboard");
            p_this.EnableMode(Msn.VE.MapActionMode.Mode3D);
          }
    }
    if (a || b)
      ContinuousPan(a, b, null, true);
    FireDefaultEvent("onkeydown");
    return false;
  }
  function KeyUp(a)
  {
    a = GetEvent(a);
    if (FireCustomEvent("onkeyup", a))
      return false;
    var b = panningX, c = panningY, d = true;
    switch (a.keyCode)
    {
      case 37:
        b = 0;
        break ;
      case 38:
        c = 0;
        break ;
      case 39:
        b = 0;
        break ;
      case 40:
        c = 0;
        break ;
      default:
        d = false;
    }
    if (d)
      {
        ContinuousPan(b, c, null, true);
        $VE_A.Log($VE_A.PgName.Map, "PAN", "Keyboard");
      }
    if (FireCustomEvent("onkeypress", a))
      return false;
  }
  function AddLine(h,f,g,l,n,m,a,d,i,k,j)
  {
    if (h == null || f == null || g == null || a == null || d == null)
      return null;
    var e = [];
    for (var b = 0;b < a.length;b++)
      e.push(BuildRegionHeap(a[b], 0, a[b].length - 1));
    var c = new Line();
    c.Init(h, f, g, l, n, m, e, d, i, k, j);
    lines.push(c);
    return c;
  }
  function RemoveLine(c)
  {
    for (var a = 0;a < lines.length;a++)
      {
        var b = lines[a];
        if (b.id == c)
          {
            lines.splice(a, 1);
            b.Destroy();
            return ;
          }
      }
  }
  function ClearLines()
  {
    while (lines.length > 0)
      lines.pop().Destroy();
  }
  function ShowLines()
  {
    graphicCanvas.Clear();
    for (var a = 0;a < lines.length;a++)
      {
        lines[a].StartLine();
        lines[a].Show();
      }
  }
  function HideLines()
  {
    for (var a = 0;a < lines.length;a++)
      {
        lines[a].Hide();
        lines[a].RemoveFromMap();
      }
  }
  function UpdateLines()
  {
    if (typeof graphicCanvas === "object" && graphicCanvas !== null)
      graphicCanvas.Clear();
    if (! document.all)
      currentView.GetMap().resetSvgLayer();
    for (var a = 0;a < lines.length;a++)
      lines[a].UpdateLine();
  }
  function BuildRegionHeap(f,e,g)
  {
    var h = g - e + 1;
    if (h < 1)
      return null;
    else
      if (h == 1)
        return f[e];
    var d = null, c = null;
    if (h == 2)
      {
        d = f[e];
        c = f[g];
      }
    else
      {
        var i = Math.round((e + g) / 2);
        d = BuildRegionHeap(f, e, i);
        c = BuildRegionHeap(f, i + 1, g);
      }
    if (d != null && c != null)
      {
        var b = d.boundingRectangle, a = c.boundingRectangle, l = b[0].latitude > a[0].latitude ? b[0].latitude : a[0].latitude, k = b[0].longitude > a[0].longitude ? b[0].longitude : a[0].longitude, m = b[1].latitude < a[1].latitude ? b[1].latitude : a[1].latitude, n = b[1].longitude < a[1].longitude ? b[1].longitude : a[1].longitude, j = [new Msn.VE.LatLong(l, k), new Msn.VE.LatLong(m, n)];
        return new Msn.VE.LineRegion(j, null, [d, c]);
      }
    else
      if (d != null)
        return d;
      else
        if (c != null)
          return c;
    return null;
  }
  function Line()
  {
    function F(m,u,C,c,j,k,p,s,l,f,o)
    {
      if (! c)
        c = t;
      if (! j)
        j = v;
      if (! k)
        k = defaultZIndex;
      if (! f)
        f = w;
      n = o;
      this.id = m;
      e = m;
      if (l)
        d.linejoin = l;
      A = c + "pt";
      i = j;
      r = k;
      a = u;
      b = C;
      g = s;
      h = p;
      y = a[0];
      x = b[0];
      B = a[(a.length - 1)];
      z = b[(b.length - 1)];
      d.color = i;
      d.width = c;
      d.linecap = f;
      q();
      if (! IsDrivingEventAttached)
        {
          AttachEvent("onstartzoom", HideLines);
          AttachEvent("onchangeview", UpdateLines);
          IsDrivingEventAttached = true;
        }
      this._Draw3D();
      AttachEvent("oninitmode", this._Draw3D);
    }
    function E()
    {
      if (view3DCreated)
        spacecontrol.DeleteGeometry(0, e);
      DetachEvent("oninitmode", this._Draw3D);
      m();
      a = b = h = c = null;
    }
    function m()
    {
      if (graphicCanvas)
        graphicCanvas.Clear();
    }
    function G()
    {
      if (! f)
        {
          j();
          return ;
        }
      if (c)
        c.style.display = "block";
    }
    function j()
    {
      if (c)
        c.style.display = "none";
    }
    function u(a)
    {
      f = a;
      if (! f)
        j();
    }
    function q()
    {
      l();
      o();
    }
    function D()
    {
      l();
      o();
    }
    function l()
    {
      var a = height < 900 ? 900 : height, b = width < 900 ? 900 : width;
      northLatitude = GetLatitude(- 0.5 * a);
      southLatitude = GetLatitude(1.5 * a);
      westLongitude = GetLongitude(- 0.5 * b);
      eastLongitude = GetLongitude(1.5 * b);
    }
    function o()
    {
      if (currentView.mapStyle == obliqueStyle)
        {
          graphicCanvas.Clear();
          return ;
        }
      if (view3DCreated)
        return ;
      var b = [], a = g.length - 1;
      while (g[a] < currentView.zoomLevel && a >= 0)
        a--;
      k(h[a], b);
      C(b);
    }
    function k(f,c)
    {
      if (s(f.boundingRectangle[0], f.boundingRectangle[1]))
        return ;
      if (f.childRegions != null)
        for (var j = 0;j < f.childRegions.length;j++)
          k(f.childRegions[j], c);
      else
        {
          var h = f.indices, e = new Msn.VE.LatLong(a[h[0]], b[h[0]]), d, g = false;
          if (p(e.latitude, e.longitude))
            {
              c.push(e.longitude);
              c.push(e.latitude);
              g = true;
            }
          for (var i = 1;i < h.length;i++)
            {
              d = new Msn.VE.LatLong(a[h[i]], b[h[i]]);
              if (p(d.latitude, d.longitude))
                {
                  if (! g)
                    {
                      c.push(e.longitude);
                      c.push(e.latitude);
                    }
                  g = true;
                  c.push(d.longitude);
                  c.push(d.latitude);
                }
              else
                if (g)
                  {
                    g = false;
                    c.push(d.longitude);
                    c.push(d.latitude);
                  }
              e = d;
            }
        }
    }
    function C(g)
    {
      if (! graphicCanvas)
        return ;
      var a = new Msn.Drawing.PolyLine(g);
      a.id = e;
      var b = VE_LatLongThreshold.UseThreshold;
      VE_LatLongThreshold.UseThreshold = false;
      graphicCanvas.SetZIndex(r);
      graphicCanvas.SetStroke(d);
      graphicCanvas.DrawPrimitive(a, n);
      VE_LatLongThreshold.UseThreshold = b;
      c = $ID(e);
      if (f)
        c.style.display = "block";
      else
        c.style.display = "none";
    }
    function p(a,b)
    {
      return a >= southLatitude && a <= northLatitude && b >= westLongitude && b <= eastLongitude;
    }
    function s(a,b)
    {
      return a.latitude > northLatitude && b.latitude > northLatitude || a.latitude < southLatitude && b.latitude < southLatitude || a.longitude > eastLongitude && b.longitude > eastLongitude || a.longitude < westLongitude && b.longitude < westLongitude;
    }
    var t = 5, v = new Msn.Drawing.Color(0, 169, 235, 0.7), w = "Solid", d = new Msn.Drawing.Stroke(), H = 4, c = null, e = "", f = true, A = "", i = "", r = 0, y = 0, x = 0, B = 0, z = 0, a = null, b = null, h = null, g = null, I = 0, J = 0, n = false;
    this._Draw3D = (function ()
{
  if (view3DCreated)
    {
      var c = [];
      for (var f = 0;f < a.length;f++)
        {
          c.push(b[f]);
          c.push(",");
          c.push(a[f]);
          if (f != a.length - 1)
            c.push(" ");
        }
      var g = c.join("");
      spacecontrol.AddPolyline("0", e, g, i.ToHexString(), 0.75, d.width);
    }
}
);
    this.Init = F;
    this.Destroy = E;
    this.RemoveFromMap = m;
    this.Show = G;
    this.Hide = j;
    this.ChangeVisibility = u;
    this.StartLine = q;
    this.UpdateLine = D;
  }
  function Logo(b)
  {
    var a = null;
    this.Init = (function ()
{
  if (navigator.userAgent.toLowerCase().indexOf("msie") != - 1)
    {
      a = document.createElement("div");
      a.className = "MSVE_PoweredByLogo MSVE_PoweredByLogo_ie";
      if (Msn.VE.API != null)
        a.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + Msn.VE.API.Globals.vecurrentdomain + "/i/bin/" + Msn.VE.API.Globals.vecurrentversion + "/" + MapControl.Features.Image.PoweredLogo + "', sizingMethod='scale')";
    }
  else
    {
      a = document.createElement("img");
      var d = "http://" + location.host, c = "";
      if (Msn.VE.API != null)
        {
          d = Msn.VE.API.Globals.vecurrentdomain;
          c = Msn.VE.API.Globals.vecurrentversion;
        }
      else
        c = window.buildVersion;
      a.src = d + "/i/bin/" + c + "/" + MapControl.Features.Image.PoweredLogo;
      a.className = "MSVE_PoweredByLogo";
    }
  b.appendChild(a);
}
);
    this.Destroy = (function ()
{
  b.removeChild(a);
  a = null;
}
);
  }
  function MouseDown(a)
  {
    a = GetEvent(a);
    CancelEvent(a);
    if (currentMode != threeDMode && FireCustomEvent("onmousedown", a))
      return false;
    if (zooming)
      return false;
    if (panning)
      StopContinuousPan();
    if (obliqueMode)
      obliqueMode.CancelRequest();
    if (! mouseZoomDisabled)
      if (a.which && a.which == 2)
        currentTool = boxTool;
      else
        if (! a.which && a.button && a.button == 4)
          currentTool = boxTool;
        else
          if (a.ctrlKey | a.altKey)
            currentTool = boxTool;
    if (! document.all && ! isEnablingDefaultDblClick)
      isEnablingDefaultDblClick = true;
    dragging = true;
    var b = typeof a.which != "undefined" ? a.which : a.button;
    if (! hijackMouseMove && ! hijackMouseCursor && b == 1)
      p_this.SetCursor(cssCursors.Grabbing);
    if (currentTool)
      currentTool.OnMouseDown(a);
    return false;
  }
  function MouseMove(a)
  {
    a = GetEvent(a);
    var b = Gimme.Screen.getMousePosition(a);
    lastmouseX = b.x;
    lastmouseY = b.y;
    if (currentMode != threeDMode && FireCustomEvent("onmousemove", a))
      return false;
    if (hijackMouseMove)
      {
        a = GetEvent(a);
        CancelEvent(a);
        var c = g(p_elSource).getPagePosition();
        x = c.x;
        y = c.y;
        var e = originX + offsetX + lastmouseX - x, f = originY + offsetY + lastmouseY - y, d = CreateEvent(currentMode.PixelToLatLong(new VEPixel(e, f), currentView.zoomLevel));
        FireDefaultEvent("onmousemove", d);
        return ;
      }
    if (currentTool && dragging)
      currentTool.OnMouseMove(a);
    return false;
  }
  function MouseUp(a)
  {
    a = GetEvent(a);
    CancelEvent(a);
    if (a)
      isLastButtonMiddle = IsMiddleMouseButton(a);
    if (currentMode != threeDMode && FireCustomEvent("onmouseup", a))
      return false;
    dragging = false;
    if (! hijackMouseMove && ! hijackMouseCursor)
      p_this.SetCursor(cssCursors.Grab);
    var b;
    if (currentTool)
      b = currentTool.OnMouseUp(a);
    if (targetTool && targetTool.isOutOfBounds())
      targetTool.OnMouseUp(a);
    var c = true;
    if (typeof b != "undefined" && b.view != null)
      {
        isEnablingDefaultDblClick = b.view.disableDbClick != true;
        c = b.view.disableMapFocus != true;
      }
    else
      isEnablingDefaultDblClick = true;
    currentTool = panTool;
    try
      {
        if (c)
          keyboard.focus();
      }
    catch (d)
      {}
    return false;
  }
  function IsOnscreen(c,d)
  {
    var b = tileSize * Math.pow(2, currentView.zoomLevel), a = originX + offsetX + c - x;
    if (a < 0 || a > b)
      return false;
    a = originY + offsetY + d - y;
    if (a < 0 || a > b)
      return false;
    return true;
  }
  function MouseDoubleClick(a)
  {
    a = GetEvent(a);
    CancelEvent(a);
    var b = Gimme.Screen.getMousePosition(a);
    if (currentMode != threeDMode && FireCustomEvent("ondoubleclick", a))
      return false;
    if (hijackMouseMove)
      return false;
    if (isEnablingDefaultDblClick)
      {
        UpdateFromParent();
        if (panning || zooming || mouseZoomDisabled)
          return false;
        if (GetMapStyle() != Msn.VE.MapStyle.Oblique && ! IsOnscreen(b.x, b.y))
          return false;
        var c = preferredView.MakeCopy();
        c.SetCenter(new VEPixel(originX + offsetX + b.x - x - mapCenterOffset.x, originY + offsetY + b.y - y - mapCenterOffset.y));
        $VE_A.Log($VE_A.PgName.Map, "Zoom");
        if (a.ctrlKey | a.altKey)
          c.SetZoomLevel(currentView.zoomLevel - 1);
        else
          c.SetZoomLevel(currentView.zoomLevel + 1);
        SetView(c);
        return false;
      }
    else
      isEnablingDefausltDblClick = true;
  }
  function MouseWheel(a)
  {
    a = GetEvent(a);
    CancelEvent(a);
    if (currentMode != threeDMode && FireCustomEvent("onmousewheel", a))
      return false;
    if (currentMode != null && currentMode == threeDMode)
      return false;
    if (panning || zooming || mouseZoomDisabled)
      return false;
    var f = GetMouseScrollDelta(a) > 0;
    if (mousewheelZoomToCenter || GetMapStyle() == Msn.VE.MapStyle.Oblique || ! IsOnscreen(lastmouseX, lastmouseY))
      if (f)
        ZoomIn();
      else
        ZoomOut();
    else
      {
        var b = f ? currentView.zoomLevel + 1 : currentView.zoomLevel - 1;
        if (b <= GetCurrentViewMaxZoomLevel(currentView))
          {
            UpdateFromParent();
            var g = lastmouseX - x, h = lastmouseY - y, d = originX + offsetX + g, e = originY + offsetY + h, c = preferredView.MakeCopy();
            d = currentView.ScaleCoord(d, b);
            e = currentView.ScaleCoord(e, b);
            $VE_A.Log($VE_A.PgName.Map, "Zoom");
            c.SetZoomLevel(b);
            c.SetCenter(new VEPixel(d - g + width / 2, e - h + height / 2));
            SetView(c);
          }
      }
    return false;
  }
  function ContextMenu(a)
  {
    if (mouseZoomDisabled)
      return false;
    a = GetEvent(a);
    CancelEvent(a);
    if (currentMode != threeDMode && FireCustomEvent("onclick", a))
      return false;
    var e = g(p_elSource).getPagePosition();
    x = e.x;
    y = e.y;
    var c, d, b = Gimme.Screen.getMousePosition(a);
    if (currentMode == threeDMode)
      {
        c = b.x - x;
        d = b.y - y;
      }
    else
      {
        c = originX + offsetX + b.x - x;
        d = originY + offsetY + b.y - y;
      }
    var f = currentMode.PixelToLatLong(new VEPixel(c, d), currentView.zoomLevel);
    if (f != null)
      {
        if (currentMode == threeDMode && Get3DControl().UIHasFocus())
          return false;
        var h = CreateEvent(f);
        FireDefaultEvent("oncontextmenu", h);
      }
    return false;
  }
  function MouseClick(a)
  {
    a = GetEvent(a);
    CancelEvent(a);
    if (! isLastButtonMiddle)
      if (currentMode != threeDMode && FireCustomEvent("onclick", a))
        return false;
  }
  function MouseOut(a)
  {
    a = GetEvent(a);
    var b = a && a.srcElement && a.srcElement.tagName;
    if (currentMode != threeDMode && (b == "shape" || b == "polyline") && FireCustomEvent("onmouseout", a))
      {
        CancelEvent(a);
        return false;
      }
  }
  function MouseOver(a)
  {
    a = GetEvent(a);
    var b = a && a.srcElement && a.srcElement.tagName;
    if (currentMode != threeDMode && (b == "shape" || b == "polyline") && FireCustomEvent("onmouseover", a))
      {
        CancelEvent(a);
        return false;
      }
  }
  function MouseEnter(a)
  {
    a = GetEvent(a);
    var b = a.relatedTarget || a.fromElement;
    if (currentMode != threeDMode && b != null && FireCustomEvent("onmouseover", a))
      {
        CancelEvent(a);
        return false;
      }
    if (! hijackMouseMove && ! hijackMouseCursor)
      p_this.SetCursor(cssCursors.Grab);
  }
  function MouseLeave(a)
  {
    a = GetEvent(a);
    if (currentMode != threeDMode && FireCustomEvent("onmouseout", a))
      {
        CancelEvent(a);
        return false;
      }
  }
  function PanMap(c,d)
  {
    if (c == 0 && d == 0 || isNaN(c) || isNaN(d))
      return false;
    if (currentMode != threeDMode)
      {
        var a = ShiftView(currentView, currentBounds, c, d);
        if (typeof a != "undefined" && a != null)
          {
            var f = g(map).getComputedPosition(), e = f.x - a.x, h = f.y - a.y;
            map.style.left = e + "px";
            map.style.top = h + "px";
            offsetX = - e;
            offsetY = - h;
            var b = new VEPixel(width / 2 + originX + offsetX, height / 2 + originY + offsetY);
            if (keyboardPan && (c != 0 && a.x == 0 || d != 0 && a.y == 0))
              {
                if (typeof currentMode.RequestPending != "undefined" && ! currentMode.RequestPending())
                  {
                    b.x += c;
                    b.y += d;
                    var i = PixelToLatLong(b);
                    targetTool.centeringTrigger = true;
                    SetCenter(i.latitude, i.longitude);
                  }
              }
            else
              {
                currentView.SetCenter(b);
                preferredView.SetCenter(new VEPixel(b.x, b.y));
                window.setTimeout(tileLayerManager.PanView, 1);
              }
            Fire("onpan");
          }
      }
    else
      return false;
    if (copyright)
      copyright.Update();
    return true;
  }
  function ContinuousPan(a,b,c,d)
  {
    if (zooming)
      return ;
    if (! c)
      c = - 1;
    panningX = a;
    panningY = b;
    panCounter = c;
    if (! a && ! b)
      {
        StopContinuousPan();
        return ;
      }
    keyboardPan = d;
    if (view3DCreated)
      {
        spacecontrol.ContinuousPan(a, b);
        Fire("onstartpan");
      }
    else
      if (! panning)
        {
          panning = true;
          StepPan();
          Fire("onstartpan");
        }
  }
  function StepPan()
  {
    if (panning)
      {
        PanMap(panningX, panningY);
        if (panCounter > 0)
          panCounter--;
        if (panCounter != 0)
          window.setTimeout(StepPan, 10);
        else
          StopContinuousPan();
      }
  }
  function StopContinuousPan()
  {
    panningX = 0;
    panningY = 0;
    panning = false;
    keyboardPan = false;
    if (currentMode != threeDMode)
      if (panLatitude != null && panLongitude != null)
        {
          var b = new Msn.VE.LatLong(panLatitude, panLongitude), a = LatLongToPixel(b), c = a.x - width / 2, d = a.y - height / 2;
          PanMap(c, d);
          currentView.latlong.latitude = panLatitude;
          currentView.latlong.longitude = panLongitude;
          preferredView.Copy(currentView);
          panLatitude = null;
          panLongitude = null;
          if (obliqueMode)
            obliqueMode.UpdateAvailability();
        }
      else
        ComputeCenterPoint(true);
    else
      if (view3DCreated)
        spacecontrol.ContinuousPan(0, 0);
    Fire("onendpan");
    Fire("onchangeview");
    if (resizeInProgress)
      resizeInProgress = false;
  }
  function PanToLatLong(b,a,c)
  {
    if (currentMode == threeDMode)
      SetCenter(b, a);
    else
      {
        panLatitude = b;
        panLongitude = a;
        if (currentView.mapStyle == obliqueStyle && PanInOblique(new Msn.VE.LatLong(b, a), null, c))
          {}
        else
          PanToPixel(LatLongToPixel(new Msn.VE.LatLong(b, a)), c);
      }
  }
  function PanByPixel(a,b)
  {
    a.x = width / 2 + a.x;
    a.y = height / 2 + a.y;
    PanToPixel(a, b);
  }
  function PanToView(a)
  {
    var b = a.center.x - originX + offsetX, c = a.center.y - originY + offsetY;
    PanToPixel(new VEPixel(b, c));
  }
  function PanToPixel(c,e)
  {
    if (currentView.mapStyle == obliqueStyle && PanInOblique(null, c, e))
      return ;
    var a = c.x - width / 2, b = c.y - height / 2, d = Math.sqrt(a * a + b * b);
    if (! e && (! IsAnimationEnabled() || MathAbs(a) > 2 * width || MathAbs(b) > 2 * height || d > 1.5 * Math.sqrt(width * width + height * height)))
      {
        var i = preferredView.MakeCopy(), j = c.x + originX + offsetX, k = c.y + originY + offsetY;
        i.SetCenter(new VEPixel(j, k));
        SetView(i);
        if (resizeInProgress)
          resizeInProgress = false;
        return ;
      }
    var f = Math.atan2(b, a), g = MathCeil(d / panToLatLongSpeed), h = MathRound(d / g);
    a = MathRound(Math.cos(f) * h);
    b = MathRound(Math.sin(f) * h);
    ContinuousPan(a, b, g);
  }
  function PanInOblique(a,d)
  {
    obliqueLoop++;
    if (obliqueLoop > 30)
      {
        obliqueLoop = 0;
        return false;
      }
    var c = obliqueMode.GetScene();
    if (! a)
      a = PixelToLatLong(d);
    if (! c || ! c.ContainsLatLong(a, currentView.zoomLevel))
      {
        var b = preferredView.MakeCopy();
        b.sceneId = null;
        b.SetCenterLatLong(a);
        SetView(b);
        if (resizeInProgress)
          resizeInProgress = false;
        return true;
      }
    else
      return false;
  }
  function PushPinOffset(a,b)
  {
    this.x = a;
    this.y = b;
  }
  function getPushPinOffset(c)
  {
    var a = Msn.VE.PushPinTypes, b;
    switch (c)
    {
      case a.Annotation:
        b = new PushPinOffset(- 2, - 29 / 2 - 5);
        break ;
      case a.SearchResultPrecise:
      case a.SearchResultNonprecise:
      case a.AdSponsor:
        b = new PushPinOffset(0, - 29 / 2 + 3);
        break ;
      case a.Direction:
        b = new PushPinOffset(- 3, - 26 / 2 - 3);
        break ;
      case a.DirectionTemp:
        b = new PushPinOffset(2, - 26 / 2 + 3);
        break ;
      case a.TrafficLight:
        b = new PushPinOffset(0, - 26 / 2);
        break ;
      case a.TrafficOthers:
        b = new PushPinOffset(0, - 29 / 2);
        break ;
      case a.YouAreHere:
        b = new PushPinOffset(0, - 26 / 2);
        break ;
      case a.AdStandard:
        b = new PushPinOffset(0, - 42 / 2 + 2);
        break ;
      case a.AdWide:
        b = new PushPinOffset(0, - 27 / 2);
        break ;
      case a.AdCategory:
        b = new PushPinOffset(0, - 16 / 2);
        break ;
      case a.Default:
      default:
        b = new PushPinOffset(0, 0);
    }
    return b;
  }
  function GetPushpins()
  {
    return pushpins;
  }
  function AddPushpin(m,k,l,j,h,e,f,i,g,b,c,d)
  {
    var a = new Pushpin();
    a.Init(m, k, l, j, h, e, f, i, g, d);
    if (typeof b == "undefined" || b == false || b == null)
      {
        if (IsModeEnabled(Msn.VE.MapActionMode.Mode3D))
          {
            if (! (typeof c != "undefined" && c == false))
              View3DAddPushpin(a);
            map.appendChild(a.pin);
            a.Hide();
          }
        else
          map.appendChild(a.pin);
        pushpins.push(a);
      }
    return a.pin;
  }
  function GetPushpinIndex(b)
  {
    for (var a = 0;a < pushpins.length;a++)
      if (pushpins[a].id == b)
        return a;
    return - 1;
  }
  function RemovePushpin(b)
  {
    var a = GetPushpinIndex(b);
    if (a >= 0)
      {
        var c = pushpins[a];
        pushpins.splice(a, 1);
        if (IsModeEnabled(Msn.VE.MapActionMode.Mode3D))
          View3DRemovePushpin(b);
        c.Destroy();
      }
  }
  function ClearPushpins()
  {
    while (pushpins.length > 0)
      {
        var a = pushpins.pop();
        if (IsModeEnabled(Msn.VE.MapActionMode.Mode3D))
          View3DRemovePushpin(a.id);
        a.Destroy();
      }
  }
  function Relay3DPushpins()
  {
    for (var b = 0;b < pushpins.length;b++)
      {
        var a = pushpins[b];
        if (a.id && a.id.constructor == String && a.id.indexOf("Layer") == - 1)
          View3DAddPushpin(a);
      }
  }
  function NeedToPlaceAccurately(a)
  {
    switch (a.pinType)
    {
      case Msn.VE.PushPinTypes.SearchResultPrecise:
      case Msn.VE.PushPinTypes.AdStandard:
      case Msn.VE.PushPinTypes.AdCategory:
      case Msn.VE.PushPinTypes.AdWide:
      case Msn.VE.PushPinTypes.AdSponsor:
        return true;
      default:
        return false;
    }
  }
  function _RepositionPushpins()
  {
    for (var a = 0;a < pushpins.length;a++)
      {
        pushpins[a].pin.style.display = "";
        pushpins[a].Reposition();
      }
  }
  function RepositionPushpins()
  {
    var d = [], h, i = (function (b)
{
  if (currentMode != obliqueMode || null == currentMode.GetScene() || h != currentMode.GetScene().GetID())
    return ;
  if (b)
    for (var a = 0;a < d.length;a++)
      {
        var c = GetPushpinIndex(d[a]);
        if (c >= 0)
          if (b[a])
            pushpins[c].SetAccuratePixel(b[a]);
      }
  _RepositionPushpins();
}
);
    if (pushpins && pushpins.length > 0)
      {
        if (null == Msn.VE.API && currentMode == obliqueMode)
          {
            var c = currentMode.GetScene(), f = [], a = 0;
            if (c)
              {
                h = c.GetID();
                for (var e = 0;e < pushpins.length;e++)
                  {
                    var b = pushpins[e], g = new Msn.VE.LatLong(b.GetLatitude(), b.GetLongitude());
                    if (NeedToPlaceAccurately(b) && c.ContainsLatLong(g))
                      {
                        f[a] = g;
                        d[a] = b.id;
                        a++;
                      }
                  }
                if (a > 0)
                  {
                    currentMode.LatLongToPixelAsync(f, currentView.GetZoomLevel(), i);
                    return ;
                  }
              }
          }
        _RepositionPushpins();
      }
  }
  function HidePins()
  {
    for (var a = 0;a < pushpins.length;a++)
      pushpins[a].Hide();
  }
  function UnHidePins()
  {
    for (var a = 0;a < pushpins.length;a++)
      pushpins[a].UnHide();
  }
  function GetPushpinPixel(b,c,d,e)
  {
    var a = currentMode.LatLongToPixel(b, c);
    if (a)
      {
        a.x = MathRound(a.x - d);
        a.y = MathRound(a.y - e);
      }
    return a;
  }
  function GetPushpinMapPixel(a,b)
  {
    return GetPushpinPixel(a, b, originX, originY);
  }
  function Pushpin()
  {
    var a = this;
    this.visible = true;
    this.pin = document.createElement("a");
    this.img = document.createElement("img");
    this.img.className = "VE_PushpinImage";
    this.pin.href = "javascript://pushin hover";
    this.pin.onclick = (function ()
{
  return ParseShiftKeyForLinks(event);
}
);
    this.pin.vePushpin = this;
    this.x1 = 0;
    this.y1 = 0;
    this.x2 = 0;
    this.y2 = 0;
    this.center = null;
    this.w = 0;
    this.h = 0;
    this.n = zoomTotalSteps + 1;
    this.xs = new Array(this.n);
    this.ys = new Array(this.n);
    this.Offset = 0;
    this.beLatLongOffset = null;
    this.Destroy = (function ()
{
  a.RemoveFromMap();
  a.pin.onclick = null;
  a.pin.vePushpin = null;
  a.pin = null;
  while (a.xs.length > 0)
    a.xs.pop();
  while (a.ys.length > 0)
    a.ys.pop();
  a = null;
}
);
  }
  function ScaleBar(c)
  {
    function k()
    {
      var c = 0;
      if (e && e.style.display !== "none")
        {
          var i = parseInt(g(e).getStyle("height")), h = parseInt(e.style.bottom);
          c += (isNaN(i) ? 0 : i) + (isNaN(h) ? 0 : h);
        }
      a.setStyle("bottom", c + "px");
      b.setStyle("bottom", 1 + c + "px");
      d.style.bottom = c + "px";
      f.style.bottom = 1 + c + "px";
    }
    function o(a)
    {
      return a * 0.001;
    }
    function q(a)
    {
      return a * 0.000621371192;
    }
    function r(a)
    {
      return a * 1.0936133;
    }
    function t(a)
    {
      i = a;
    }
    function p(a)
    {
      j = a;
    }
    function n()
    {
      try
        {
          var f = GetMetersPerPixel(), c = f * i, e;
          if (j == null)
            e = $MVEM.IsEnabled(MapControl.Features.ScaleBarKilometers);
          else
            e = j == Msn.VE.DistanceUnit.Kilometers;
          if (e)
            {
              var d = L_ScaleBarKilometers_Text, b = o(c), a = h(b);
              if (a < 0.5)
                {
                  d = L_ScaleBarMeters_Text;
                  b = c;
                  a = h(b);
                }
              l("metric", d, a, Math.round(a / b * i));
            }
          else
            {
              var d = L_ScaleBarMiles_Text, b = q(c), a = h(b);
              if (a < 0.5)
                {
                  d = L_ScaleBarYards_Text;
                  b = r(c);
                  a = h(b);
                }
              l("us", d, a, Math.round(a / b * i));
            }
        }
      catch (g)
        {}
    }
    function h(d)
    {
      var g = Math.log(d) / Math.log(10), e = Math.floor(g), a = Math.pow(10, e), c = d / a, b = Math.floor(c);
      if (b >= 3)
        return b * a;
      var f = Math.floor(c * 2) * 0.5;
      return f * a;
    }
    function l(j,i,c,g)
    {
      if (c < 1)
        c = c.toFixed(1);
      var e = GetMapStyle() != roadStyle;
      if (e != m)
        {
          if (e)
            {
              a.swapClass("MSVE_ScaleBarLabelBg", "MSVE_ScaleBarLabelBgInv");
              b.swapClass("MSVE_ScaleBarLabelFg", "MSVE_ScaleBarLabelFgInv");
            }
          else
            {
              a.swapClass("MSVE_ScaleBarLabelBgInv", "MSVE_ScaleBarLabelBg");
              b.swapClass("MSVE_ScaleBarLabelFgInv", "MSVE_ScaleBarLabelFg");
            }
          m = e;
        }
      var h = c + " " + i;
      a.setHTML(h);
      b.setHTML(h);
      d.style.width = 4 + g + "px";
      f.style.width = g + "px";
    }
    function s(a)
    {
      e = a;
      k();
    }
    var e = null, j = null, a = g(document.createElement("div")), b = g(document.createElement("div")), m = false, d = document.createElement("div"), f = document.createElement("div"), i = 150;
    this.Init = (function ()
{
  a.addClass("MSVE_ScaleBarLabel MSVE_ScaleBarLabelBg");
  b.addClass("MSVE_ScaleBarLabel MSVE_ScaleBarLabelFg");
  d.className = "MSVE_ScaleBar MSVE_ScaleBarBg";
  f.className = "MSVE_ScaleBar MSVE_ScaleBarFg";
  n();
  k();
  c.appendChild(a.element());
  c.appendChild(b.element());
  c.appendChild(d);
  c.appendChild(f);
}
);
    this.Destroy = (function ()
{
  c.removeChild(a.element());
  c.removeChild(b.element());
  c.removeChild(d);
  c.removeChild(f);
  e = null;
  a = b = d = BarFg = null;
}
);
    this.SetBarWidth = t;
    this.SetDistanceUnit = p;
    this.Update = n;
    this.Reposition = k;
    this.SetPinElement = s;
  }
  function MapLegend(h)
  {
    function k(d)
    {
      if (d && ! b)
        i();
      a.style.display = d ? "" : "none";
      if (c)
        window.setTimeout(c.Reposition, 1);
      g();
    }
    function i()
    {
      if (e && ! b)
        {
          b = document.createElement("div");
          b.className = "MSVE_LegendGroup";
          b.id = "MSVE_TrafficLegend";
          e.appendChild(b);
          var a = document.createElement("span");
          a.id = "MSVE_TL_Slow";
          a.appendChild(document.createTextNode(L_MapLegendTrafficSlow_Text));
          b.appendChild(a);
          a = document.createElement("span");
          a.id = "MSVE_TL_Fast";
          a.appendChild(document.createTextNode(L_MapLegendTrafficFast_Text));
          b.appendChild(a);
          a = document.createElement("img");
          a.id = "MSVE_TL_Key";
          var c = GetUrlPrefix(), f = window.buildVersion;
          if (Msn.VE.API != null)
            {
              c = Msn.VE.API.Globals.vecurrentdomain + "/";
              f = Msn.VE.API.Globals.vecurrentversion;
            }
          a.src = c + "i/bin/" + f + "/traffic/tf_legend.gif";
          a.alt = "";
          b.appendChild(a);
          d = document.createElement("div");
          d.className = "MSVE_LegendGroup";
          d.id = "MSVE_TrafficMsg";
          e.appendChild(d);
        }
    }
    function l(a)
    {
      while (a.hasChildNodes())
        a.removeChild(a.childNodes[0]);
    }
    function j(a)
    {
      if (d)
        {
          l(d);
          d.appendChild(document.createTextNode(a));
          g();
        }
    }
    function o(b)
    {
      c = b;
      if (c)
        c.SetPinElement(a);
    }
    function p()
    {
      if (c)
        {
          c.SetPinElement(null);
          c = null;
        }
    }
    function n(b,c)
    {
      if (a)
        {
          a.style.left = b + "px";
          a.style.top = c + "px";
          a.style.bottom = "auto";
          a.style.right = "auto";
        }
    }
    function g()
    {
      if (a)
        mvcViewFacade.UpdateShimIfSupported(a);
    }
    function m()
    {
      if (a)
        destroyIFrameShim(a.id);
    }
    var q = this, f = h, a = null, e = null, b = null, d = null, c = null;
    h = null;
    this.Init = (function ()
{
  a = document.createElement("div");
  a.id = "MSVE_MapLegend";
  a.style.display = "none";
  f.appendChild(a);
  e = document.createElement("div");
  e.className = "MSVE_LegendGroup";
  a.appendChild(e);
  a.attachEvent("onmousedown", IgnoreEvent);
  a.attachEvent("onmouseup", IgnoreEvent);
  a.attachEvent("onmousemove", IgnoreEvent);
  a.attachEvent("onmousewheel", IgnoreEvent);
  a.attachEvent("ondblclick", IgnoreEvent);
  a.attachEvent("oncontextmenu", IgnoreEvent);
  a.attachEvent("onkeydown", IgnoreEvent);
  a.attachEvent("onkeyup", IgnoreEvent);
}
);
    this.Destroy = (function ()
{
  if (a)
    {
      a.detachEvent("onmousedown", IgnoreEvent);
      a.detachEvent("onmouseup", IgnoreEvent);
      a.detachEvent("onmousemove", IgnoreEvent);
      a.detachEvent("onmousewheel", IgnoreEvent);
      a.detachEvent("ondblclick", IgnoreEvent);
      a.detachEvent("oncontextmenu", IgnoreEvent);
      a.detachEvent("onkeydown", IgnoreEvent);
      a.detachEvent("onkeyup", IgnoreEvent);
      f.removeChild(a);
      a = null;
    }
  f = null;
  e = null;
  d = null;
  c = null;
}
);
    this.ShowTrafficLegend = k;
    this.SetTrafficLegendMsg = j;
    this.UnPin = p;
    this.PinTo = o;
    this.MoveTo = n;
    this.UpdateShim = g;
    this.RemoveShim = m;
  }
  function RequestTile(b,c,i,h,d,g,e,f)
  {
    var a = new Tile();
    a.Init(b, c, i, h, b * tileSize - originX, c * tileSize - originY, d, g, e, f);
    return a;
  }
  function ClearTiles(a)
  {
    while (a.length > 0)
      {
        var b = a.pop();
        b.Destroy();
        b = null;
      }
  }
  function GetResponseRangeCounts()
  {
    var b = 0;
    for (var a = 0;a < responseRangeCounts.length;a++)
      b += responseRangeCounts[a];
    if (b == 0)
      return responseRangeCounts;
    var c = new Array(responseRangeCounts.length);
    for (var a = 0;a < responseRangeCounts.length;a++)
      c[a] = responseRangeCounts[a] / b;
    return c;
  }
  function ResetResponseRangeCounts()
  {
    for (var a = 0;a < responseRangeCounts.length;a++)
      responseRangeCounts[a] = 0;
  }
  function GetFailureRate()
  {
    return totalFailureCount / totalRequestCount;
  }
  function Tile()
  {
    function x(c,d,b,a)
    {
      e = c;
      f = d;
      i = b;
      h = a;
    }
    function F(c,d,b,a)
    {
      j = c;
      l = d;
      p = b;
      n = a;
    }
    function L()
    {
      for (var a = 0;a <= zoomTotalSteps;a++)
        {
          k[a] = e + "px";
          m[a] = f + "px";
          q[a] = i + "px";
          o[a] = h + "px";
        }
    }
    function v()
    {
      for (var a = 0;a <= zoomTotalSteps;a++)
        {
          var b = a / zoomTotalSteps, c = 1 - b;
          k[a] = MathFloor(c * e + b * j) + "px";
          m[a] = MathFloor(c * f + b * l) + "px";
          q[a] = MathCeil(c * i + b * p) + "px";
          o[a] = MathCeil(c * h + b * n) + "px";
        }
    }
    function H(e)
    {
      if (a == null || zooming && ! z)
        return ;
      var b = a.style;
      b.left = k[e];
      b.top = m[e];
      b.width = q[e];
      b.height = o[e];
      if (debug && e == 0)
        {
          if (! c)
            D();
          var f = c.style;
          b.border = "1px dashed red";
          f.left = k[e];
          f.top = m[e];
        }
      if (a.parentNode != map)
        {
          b.position = "absolute";
          b.zIndex = g;
          if (B > 0)
            if (b && typeof b.filter != "undefined")
              if (Msn.VE.Environment.BrowserInfo.MajorVersion <= 6)
                {
                  r = document.createElement("div");
                  var b = r.style;
                  b.left = k[e];
                  b.top = m[e];
                  b.width = q[e];
                  b.height = o[e];
                  b.position = "absolute";
                  b.zIndex = g;
                  if (d != 1)
                    b.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + a.src + "',sizingMethod='scale'), alpha(opacity=" + d * 100 + ")";
                  else
                    b.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + a.src + "',sizingMethod='scale')";
                  map.appendChild(r);
                }
              else
                {
                  b.zIndex = g;
                  if (d < 1)
                    b.filter = "alpha(opacity=" + d * 100 + ");opacity:" + d + ";";
                  map.appendChild(a);
                }
            else
              {
                b.zIndex = g;
                b.opacity = d;
                map.appendChild(a);
              }
          else
            {
              if (b && typeof b.filter != "undefined")
                {
                  if (d < 1)
                    b.filter = "alpha(opacity=" + d * 100 + ");opacity:" + d;
                }
              else
                b.opacity = d;
              map.appendChild(a);
            }
          if (debug && c && c.parentNode != map)
            {
              var h = a.src;
              c.innerHTML = h.substring(h.lastIndexOf("/") + 1, h.lastIndexOf("."));
              f.position = "absolute";
              f.zIndex = g + 1;
              map.appendChild(c);
            }
        }
    }
    function G()
    {
      var a = 0;
      a = e;
      e = j;
      j = a;
      a = f;
      f = l;
      l = a;
      a = i;
      i = p;
      p = a;
      a = h;
      h = n;
      n = a;
    }
    function E()
    {
      if (b)
        {
          b.onload = null;
          b.onerror = null;
          b = null;
        }
      if (a)
        {
          if (a.parentNode == map)
            map.removeChild(a);
          a = null;
        }
      if (c)
        {
          if (c.parentNode == map)
            map.removeChild(c);
          c = null;
        }
      if (r)
        if (r.parentNode == map)
          map.removeChild(r);
    }
    function O()
    {
      if (currentView && s != currentView.zoomLevel || b == null)
        return ;
      var d = new Date(), c = d.getTime() - y.getTime();
      C(c);
      totalRequestTime += c;
      totalRequestCount++;
      if (debug)
        window.status = "last=" + c + ", average=" + totalRequestTime / totalRequestCount;
      b.onload = null;
      b.onerror = null;
      a = b;
      a.onmousedown = (function ()
{
  return false;
}
);
      b = null;
      if (! zooming)
        H(zoomCounter);
    }
    function N()
    {
      if (s != currentView.zoomLevel || b == null)
        return ;
      var c = new Date(), a = c.getTime() - y.getTime();
      C(a);
      totalRequestTime += a;
      totalRequestCount++;
      totalFailureCount++;
      b.onload = null;
      b.onerror = null;
      b = null;
    }
    function C(b)
    {
      for (var a = 0;a < responseRangeCeilings[A].length;a++)
        if (b < responseRangeCeilings[A][a])
          {
            responseRangeCounts[a]++;
            return ;
          }
      responseRangeCounts[(responseRangeCounts.length - 1)]++;
    }
    function I(k,m,r,c,d,q)
    {
      x(e - offsetX, f - offsetY, i, h);
      var o = q - r, b = Math.pow(2, o);
      j = MathFloor((k + e) * b - c);
      l = MathFloor((m + f) * b - d);
      p = MathCeil((k + e + i) * b - c) - j;
      n = MathCeil((m + f + h) * b - d) - l;
      z = true;
      v();
      g = baseZIndex;
      if (a != null)
        a.style.zIndex = g;
    }
    function J(m,o,r,d,k,q)
    {
      var s = r - q, a = Math.pow(2, s);
      j = MathFloor((d + e) * a - m);
      l = MathFloor((k + f) * a - o);
      p = MathCeil((d + e + i) * a - m) - j;
      n = MathCeil((k + f + h) * a - o) - l;
      var c = MathCeil(tileViewportWidth * 0.25), b = MathCeil(tileViewportHeight * 0.25);
      z = q < r && (t < tileViewportX1 + c || t > tileViewportX2 - c || u < tileViewportY1 + b || u > tileViewportY2 - b);
      G();
      v();
      g = swapZIndex;
    }
    function M(b)
    {
      if (! c)
        D();
      if (a != null)
        a.style.border = b ? "1px dashed red" : "0px";
      c.style.display = b ? "block" : "none";
    }
    function K()
    {
      p = i;
      n = h;
    }
    function D()
    {
      c = document.createElement("div");
      c.style.font = "7pt Verdana, sans-serif";
      c.style.color = "Red";
      c.style.backgroundColor = "White";
    }
    var a = null, b = null, c = null, r = null, t = 0, u = 0, s = 0, A = 0, g = 0, d = 1, w = zoomTotalSteps + 1, k = new Array(w), m = new Array(w), q = new Array(w), o = new Array(w), z = false, e = 0, f = 0, i = 0, h = 0, j = 0, l = 0, p = 0, n = 0, y = null, B = 0;
    this.Init = (function (k,l,m,j,c,e,f,a,h,i)
{
  t = k;
  u = l;
  s = m;
  A = j;
  g = i;
  d = h;
  if (! currentMode.IsValidTile(t, u, s))
    return ;
  x(c, e, tileSize, tileSize);
  F(c, e, tileSize, tileSize);
  v();
  if (a == mapTiles || a == trafficTiles)
    B = 0;
  else
    B = 1;
  b = document.createElement("img");
  b.onload = O;
  b.onerror = N;
  y = new Date();
  b.src = currentMode.GetFilename(t, u, s, f, a);
}
);
    this.Destroy = (function ()
{
  if (a)
    a.onmousedown = null;
  E();
  while (k.length > 0)
    k.pop();
  while (m.length > 0)
    m.pop();
  while (q.length > 0)
    q.pop();
  while (o.length > 0)
    o.pop();
  k = m = q = o = null;
}
);
    this.SetCurrentState = x;
    this.SetNextState = F;
    this.ClearSteps = L;
    this.PrecomputeSteps = v;
    this.SetFactor = H;
    this.SwapStates = G;
    this.RemoveFromMap = E;
    this.PrepareBaseTile = I;
    this.PrepareSwapTile = J;
    this.Debug = M;
    this.ClearStates = K;
  }
  function SetBaseTileSource(a)
  {
    if (! a)
      a = currentView;
    var c = a && shadedTileSpec && shadedTileSpec.SourceName && a.mapStyle == Msn.VE.MapStyle.Road && $MVEM.IsEnabled(MapControl.Features.MapStyle.Shaded) && currentView.doRoadShading || a.mapStyle == Msn.VE.MapStyle.Shaded, b = c ? shadedTileSpec : orthoTileSpec;
    tileLayerManager.AddTileSource(b);
  }
  function SetView(a)
  {
    if (currentMode != null && currentMode == threeDMode)
      return SetView3DSpecialized(a);
    if (a == null)
      return CreateNewView();
    if (zooming || dragging)
      return true;
    if (panning)
      StopContinuousPan();
    var b = a.latlong;
    if (a.GetViewType() == Msn.VE.MapViewType.LatLongRect)
      b = a.latlongRect.Center();
    if (a.mapStyle == obliqueStyle)
      return SetViewOblique(a, b);
    else
      return SetViewOrtho(a, b);
  }
  function SetView3DSpecialized(a)
  {
    var b = false;
    if (a == null)
      {
        a = new Msn.VE.MapView();
        a.Copy(currentView);
        b = true;
      }
    if (! view3DCreated)
      b = true;
    return SetView3D(a, b);
  }
  function SetViewOblique(a,c)
  {
    function b()
    {
      var b = HandleSetViewObliqueResolve(a, c, preferredView);
      if (! b && typeof a.callback == "function")
        a.callback(obliqueMode.GetScene());
    }
    if (obliqueMode == null)
      return true;
    preferredView.Copy(a);
    currentMode = obliqueMode;
    if (Msn.VE.API)
      p_elSource.style.background = "#000 url(\"" + Msn.VE.API.Globals.vecurrentdomain + "/i/bin/" + Msn.VE.API.Globals.vecurrentversion + "/oblique/oblique_bg.gif\") repeat";
    else
      p_elSource.style.background = "#000 url(\"./i/bin/" + window.buildVersion + "/oblique/oblique_bg.gif\") repeat";
    a.Resolve(currentMode, width, height, b);
  }
  function HandleSetViewObliqueResolve(a,c,i)
  {
    if (targetTool.centeringTrigger)
      {
        targetTool.centeringTrigger = false;
        obliqueMode.RequestSceneAtLatLong(c, a.sceneOrientation, true);
        return true;
      }
    var b = obliqueMode.GetScene(), e = b && b.ContainsLatLong(c, a.zoomLevel);
    if (a.bySceneId)
      {
        if (! b || b.GetID() != a.sceneId)
          {
            obliqueMode.RequestScene(a.sceneId);
            return true;
          }
        else
          if (! e)
            {
              var l = b.GetBounds();
              a.SetCenterLatLong(b.PixelToLatLong(new VEPixel(b.GetWidth() / 4, b.GetHeight() / 4), 1));
              a.Resolve(currentMode, width, height);
              e = true;
            }
      }
    else
      if (! b || ! e || b.GetOrientation() != a.sceneOrientation)
        {
          obliqueMode.RequestSceneAtLatLong(c, a.sceneOrientation, true, null, a.callback, a.spinDirection);
          return true;
        }
    c = a.latlong;
    i.Copy(a);
    SetBaseTileSource(a);
    currentMode.ValidateZoomLevel(a);
    currentBounds = currentMode.GetBounds(a);
    ClipView(a, currentBounds);
    if (a.Equals(currentView) && ! resizeInProgress)
      return false;
    var g = a.GetX(currentView.zoomLevel) - currentView.center.x, h = a.GetY(currentView.zoomLevel) - currentView.center.y, d = Math.sqrt(g * g + h * h);
    previousCenter = currentView.latlong;
    var f = 0;
    if (! previousCenter.Equals(a.latlong))
      f += Msn.VE.ViewChangeType.Pan;
    if (currentView.zoomLevel != a.zoomLevel)
      f += Msn.VE.ViewChangeType.Zoom;
    SetLastViewChangeType(f);
    var k = d < width && d < height && a.zoomLevel == currentView.zoomLevel && IsAnimationEnabled() && a.mapStyle == currentView.mapStyle && (a.sceneId == null || a.sceneId == currentView.sceneId);
    if (k)
      {
        PanToPixel(new VEPixel(a.center.x - originX - offsetX, a.center.y - originY - offsetY), true);
        return false;
      }
    previousZoomLevel = currentView.zoomLevel;
    if (currentView.zoomLevel != a.zoomLevel)
      {
        Fire("onstartzoom", CreateEvent(null, null, null, a));
        zooming = true;
      }
    var j = d < width && d < height && (a.zoomLevel == currentView.zoomLevel - 1 || a.zoomLevel == currentView.zoomLevel + 1) && IsAnimationEnabled() && a.mapStyle == currentView.mapStyle && (a.sceneId == null || a.sceneId == currentView.sceneId);
    if (j)
      {
        tileLayerManager.zoomView(a);
        return false;
      }
    UpdateTiles(a);
    return false;
  }
  function SetViewOrtho(a,f)
  {
    currentMode = orthoMode;
    if (a.mapStyle == Msn.VE.MapStyle.Road || a.mapStyle == Msn.VE.MapStyle.Shaded)
      {
        p_elSource.style.backgroundColor = "#e9e7d4";
        p_elSource.style.backgroundImage = "none";
      }
    else
      p_elSource.style.backgroundColor = "black";
    a.Resolve(currentMode, width, height);
    f = a.latlong;
    preferredView.Copy(a);
    SetBaseTileSource(a);
    currentMode.ValidateZoomLevel(a);
    currentBounds = currentMode.GetBounds(a);
    ClipView(a, currentBounds);
    a.Resolve(currentMode, width, height);
    if (a.Equals(currentView) && ! resizeInProgress)
      return false;
    if (! currentView.center)
      currentView.center = a.center;
    var d = a.GetX(currentView.zoomLevel) - currentView.center.x, e = a.GetY(currentView.zoomLevel) - currentView.center.y, b = Math.sqrt(d * d + e * e);
    previousCenter = currentView.GetCenterLatLong();
    var c = 0;
    if (! previousCenter.Equals(a.GetCenterLatLong()))
      c += Msn.VE.ViewChangeType.Pan;
    if (currentView.zoomLevel != a.zoomLevel)
      c += Msn.VE.ViewChangeType.Zoom;
    SetLastViewChangeType(c);
    var h = b < width && b < height && a.zoomLevel == currentView.zoomLevel && IsAnimationEnabled() && a.mapStyle == currentView.mapStyle && (a.sceneId == null || a.sceneId == currentView.sceneId);
    if (h)
      {
        PanToLatLong(a.latlong.latitude, a.latlong.longitude, true);
        return true;
      }
    previousZoomLevel = currentView.zoomLevel;
    if (currentView.zoomLevel != a.zoomLevel)
      {
        Fire("onstartzoom", CreateEvent(null, null, null, a));
        zooming = true;
      }
    var g = b < width && b < height && (a.zoomLevel == currentView.zoomLevel - 1 || a.zoomLevel == currentView.zoomLevel + 1) && IsAnimationEnabled() && a.mapStyle == currentView.mapStyle && (a.sceneId == null || a.sceneId == currentView.sceneId);
    if (g)
      {
        tileLayerManager.zoomView(a);
        return true;
      }
    UpdateTiles(a);
    return true;
  }
  function CreateNewView()
  {
    var a = new Msn.VE.MapView();
    a.Copy(currentView);
    a.SetAltitude(- 1000);
    a.SetTilt(- 90);
    a.SetDirection(0);
    var b = a.latlong, c = ClipLatitude(b.latitude);
    if (b.latitude != c)
      {
        a.SetCenterLatLong(new Msn.VE.LatLong(c, b.longitude));
        a.Resolve(currentMode, width, height);
      }
    if (a.mapStyle == obliqueStyle)
      currentMode = obliqueMode;
    else
      currentMode = orthoMode;
    SetBaseTileSource(a);
    currentMode.ValidateZoomLevel(a);
    UpdateTiles(a);
    return true;
  }
  function UpdateTiles(a)
  {
    currentView.Destroy();
    currentView = a;
    tileLayerManager.SetViewPort();
    tileLayerManager.LoadBaseLayer("Road", mapTiles, 1, 1);
    tileLayerManager.RefreshTileLayers();
    tileLayerManager.FinalizeView();
    RepositionPushpins();
  }
  function SetLastViewChangeType(a)
  {
    if (Msn.VE.ViewChangeType.IsValid(a))
      lastViewChangeType = a;
  }
  function View3DAddPushpin(a)
  {
    if (g(a.pin).hasClass("inactiveAbbreviationPin"))
      return ;
    var d = parseInt(a.pinType), h = TranslatePushpinURL(a.className, a.innerHtml, d), b = Msn.VE.PushPinTypes, e = parseFloat(a.lat), f = parseFloat(a.lon), c = "zindex=\"" + a.zIndex + "\"";
    switch (d)
    {
      case b.DirectionStep:
      case b.SearchResultNonprecise:
        c += " textoffset=\"50%, 50%\"";
      case b.SearchResultPrecise:
      case b.AdSponsor:
        c += " text=\"" + extractText(a.innerHtml) + "\"";
    }
    spacecontrol.AddPointWithProperties(0, a.id, e, f, h, c);
  }
  function extractText(b)
  {
    var a = document.createElement("div");
    a.innerHTML = b;
    var c = a.textContent || a.innerText;
    a = null;
    return c;
  }
  function View3DRemovePushpin(a)
  {
    spacecontrol.DeleteGeometry(0, a);
  }
  function AddView3DParameter(d,c,b)
  {
    var a = document.createElement("param");
    a.name = c;
    a.value = b;
    d.appendChild(a);
  }
  function CreateView3DControl(a)
  {
    initial3dView = new Msn.VE.MapView();
    initial3dView.Copy(a);
    if (sentinel3D == null)
      sentinel3D = GetSentinel();
    if (null == sentinel3D)
      {
        View3DUnavailable();
        return false;
      }
    if (sentinel3D != null && sentinel3D.CurrentVersion < 2.00071113001)
      {
        var e = sentinel3D.CurrentVersion;
        sentinel3D = null;
        if (e > 0)
          View3DUpgrade();
        return false;
      }
    try
      {
        sentinel3D.InitializeRuntime();
      }
    catch (f)
      {}
    spacediv = document.createElement("div");
    spacediv.id = "MSVE_spacediv";
    spacediv.className = "MSVE_SLMap";
    spacediv.style.position = "relative";
    spacediv.style.height = "100%";
    spacediv.style.overflow = "hidden";
    spacecontrol = document.createElement("object");
    var b = a.cameraLatlong == null ? a.latlong : a.cameraLatlong;
    AddView3DParameter(spacecontrol, "StartLongitude", b.longitude);
    AddView3DParameter(spacecontrol, "StartLatitude", b.latitude);
    AddView3DParameter(spacecontrol, "StartPitch", a.GetTilt());
    AddView3DParameter(spacecontrol, "StartHeading", - a.GetDirection());
    var c = a.GetAltitude();
    if (c > - 1000)
      AddView3DParameter(spacecontrol, "StartAltitude", c);
    else
      AddView3DParameter(spacecontrol, "StartZoomLevel", a.zoomLevel);
    spacediv.appendChild(spacecontrol);
    try
      {
        if (window.navigator.userAgent.indexOf("MSIE") != - 1)
          spacecontrol.classid = "clsid:68BFC611-B963-4e8c-B0FE-0DD4FB832796";
        else
          spacecontrol.type = "application/x-virtual-earth-3d";
      }
    catch (f)
      {
        View3DUnavailable();
        spacecontrol = false;
        return false;
      }
    spacecontrol.ControlId = init3dparam;
    AttachEvent("onresize", ResizeControl);
    p_elSource.appendChild(spacediv);
    ResizeControl();
    setStyle = false;
    var d = ValidateControl();
    if (d)
      IterativeCameraRefinement();
    if (typeof state != "undefined" && state != null)
      state.Set3DViewInstallInProgress("");
    return d;
  }
  function View3DUnavailable()
  {
    if (IsEventAttached("onmodenotavailable"))
      Fire("onmodenotavailable", Msn.VE.MapActionMode.Mode3D);
    else
      if (typeof Msn.VE.API != "undefined" && Msn.VE.API != null)
        if (sentinel3D != null)
          window.open(Get3dInstallUrl("View3DUnavailable.htm"), "_blank", "width=600,height=550,menubar=0,resizeable=0,status=0,titlebar=0,toolbar=0,scrollbars=0");
        else
          if (window.navigator.userAgent.indexOf("MSIE") != - 1)
            window.open(Get3dInstallUrl("View3DIEInstall.htm"), "_blank", "width=650,height=520,menubar=0,resizeable=0,status=0,titlebar=0,toolbar=0,scrollbars=0");
          else
            if (window.navigator.userAgent.indexOf("Windows") != - 1)
              window.open(Get3dInstallUrl("View3DFInstall.htm"), "_blank", "width=760,height=580,menubar=0,resizeable=0,status=0,titlebar=0,toolbar=0,scrollbars=0");
  }
  function CallIterativeCameraRefinement()
  {
    var a = GetMapControlInstance(null);
    if (a)
      a.IterativeCameraRefinement();
  }
  function IterativeCameraRefinement()
  {
    if (cameraUpdateCount > 0)
      return ;
    if (IsModeEnabled(Msn.VE.MapActionMode.Mode3D) && spacecontrol)
      if (! spacecontrol.AllTilesLoaded)
        setTimeout(CallIterativeCameraRefinement, 1000);
      else
        {
          var a = false, c = currentView.GetAltitude(), d = initial3dView.GetAltitude();
          if (d > - 1000 && c > - 1000)
            a = Math.abs(c - d) > 1;
          else
            a = currentView.GetZoomLevel() != initial3dView.GetZoomLevel();
          if (a)
            {
              var b = initial3dView.MakeCopy();
              b.SetMapStyle(currentView.mapStyle);
              SetView3D(b, true);
            }
        }
  }
  function ValidateControl()
  {
    if (typeof Msn.VE.API == "undefined" || Msn.VE.API == null)
      if (0 == spacecontrol.HardwareClassificationLevel)
        setStyle = true;
    var a = false, b = 300;
    if (spacecontrol.Created)
      {
        while (! spacecontrol.FirstFrameRendered && ! spacecontrol.LoadFailed && ! spacecontrol.AlreadyLoaded && b > 0)
          {
            b--;
            spacecontrol.ProcessEvents();
          }
        a = spacecontrol.FirstFrameRendered;
      }
    if (spacecontrol.Created && ! spacecontrol.HardwareAccelerationEnabled && spacecontrol.LoadFailed)
      {
        if (typeof Msn.VE.API == "undefined" || Msn.VE.API == null)
          {
            window.setTimeout(DelayedHWDialog, 2759);
            window.setTimeout(OnHardwareAccelHelpFired, 4000);
          }
        else
          if (IsEventAttached("onmodenotavailable"))
            Fire("onmodenotavailable", Msn.VE.MapActionMode.Mode3D);
        if (mode == Msn.VE.MapActionMode.Mode3D)
          EnableMode(Msn.VE.MapActionMode.Mode2D);
        return false;
      }
    else
      if (! spacecontrol.Created || ! spacecontrol.Enabled || ! spacecontrol.IsHandleCreated || ! a && ! spacecontrol.AlreadyLoaded)
        {
          View3DUnavailable();
          spacecontrol = false;
          return false;
        }
      else
        {
          spacecontrol.focus();
          view3DCreated = true;
          return true;
        }
  }
  function ResizeControl()
  {
    if (spacecontrol)
      {
        spacecontrol.style.height = spacediv.offsetHeight + "px";
        spacecontrol.style.width = spacediv.offsetWidth + "px";
      }
    RepositionShims();
  }
  function SetView3D(a,g)
  {
    currentMode.ValidateZoomLevel(a);
    a.Resolve(orthoMode, width, height);
    preferredView.Copy(a);
    if (! view3DCreated && ! spacecontrol)
      {
        var l = CreateView3DControl(a);
        if (setStyle)
          {
            a.mapStyle = "h";
            previousMapStyle = "h";
          }
        if (! l)
          return false;
        if (a.GetTilt() != - 90 && a.cameraLatlong == null)
          {
            a.Resolve(orthoMode, width, height);
            cameraUpdateCount = - 1;
          }
        else
          {
            cameraUpdateCount = 0;
            a._supressFlyToCall = true;
          }
        p_elSource.style.backgroundColor = "#e9e7d4";
        originX = 0;
        originY = 0;
        offsetX = 0;
        offsetY = 0;
        UpdateFromParent();
      }
    if (! g && a.Equals(currentView))
      {
        if (! spaceCameraIsFlying)
          ProcessQueuedRequest(null, null);
        return false;
      }
    var c = false;
    if (a.GetAltitude() > - 1000)
      c = Math.abs(a.GetAltitude() - currentView.GetAltitude()) > 0.0001;
    else
      c = currentView.zoomLevel != a.zoomLevel;
    currentView.Destroy();
    currentView = a;
    if (view3DCreated)
      {
        if (previousMapStyle)
          {
            if (currentView.mapStyle != null && previousMapStyle != currentView.mapStyle)
              {
                var b = "http://go.microsoft.com/fwlink/?LinkID=98770";
                if (currentView.mapStyle == "a")
                  {
                    b = "http://go.microsoft.com/fwlink/?LinkID=98771";
                    spacecontrol.ShowAtmosphere = true;
                  }
                if (currentView.mapStyle == "h")
                  {
                    b = "http://go.microsoft.com/fwlink/?LinkID=98772";
                    spacecontrol.ShowAtmosphere = true;
                  }
                if (currentView.mapStyle == "r")
                  {
                    spacecontrol.TexturesVisible = false;
                    if (spacecontrol.HardwareClassificationLevel < 3)
                      b = "http://go.microsoft.com/fwlink/?LinkID=98769";
                    spacecontrol.ShowAtmosphere = false;
                  }
                else
                  spacecontrol.TexturesVisible = true;
                spacecontrol.AddImageSource("Terrain", "Texture", GetManifestUrl(b), 0, 1);
                Fire("onchangemapstyle");
                previousMapStyle = currentView.mapStyle;
              }
          }
        else
          previousMapStyle = currentView.mapStyle;
        var d = a.cameraLatlong, i = a.zoomLevel, j = a.GetAltitude(), k = a.GetTilt(), h = a.GetDirection(), e = a._needsPivotOperation;
        if (c)
          Fire("onstartzoom");
        if (a._supressFlyToCall)
          a._supressFlyToCall = false;
        else
          {
            var f = spacecontrol.FlyTo(d.latitude, d.longitude, i, j, k, h, e ? 1 : 0);
            if (! f && ! spaceCameraIsFlying)
              ProcessQueuedRequest(null, null);
          }
        if (a.sceneId && a.sceneId != - 1)
          {
            ProcessPhotoPluginActionIn3D("PhotosEnabled", "1", spacecontrol);
            ProcessPhotoPluginActionIn3D("SelectSceneId", "SceneId=" + a.sceneId, spacecontrol, null);
          }
        if (c)
          Fire("onendzoom");
        if (copyright)
          copyright.Update();
        return true;
      }
    return false;
  }
  function SetOn3DAnimationInterruptedCallback(a)
  {
    on3DAnimationInterruptedCallback = a;
  }
  function GetOn3DAnimationInterruptedCallback()
  {
    return on3DAnimationInterruptedCallback;
  }
  function SetViewport(b,d,c,e)
  {
    Sync3dView();
    var a = preferredView.MakeCopy();
    a.sceneId = null;
    a.SetLatLongRectangle(new Msn.VE.LatLongRectangle(new Msn.VE.LatLong(ClipLatitude(b), ClipLongitude(d)), new Msn.VE.LatLong(ClipLatitude(c), ClipLongitude(e))));
    a.SetTilt(- 90);
    a.SetDirection(0);
    return SetView(a);
  }
  function SetBestMapView(b)
  {
    var a = GetBestMapViewBounds(b);
    if (! a || a.constructor != Array)
      return false;
    if (a.length == 4)
      return SetViewport(a[0], a[1], a[2], a[3]);
  }
  function GetBestMapViewBounds(a)
  {
    var b = [];
    if (! a || a.constructor != Array)
      return null;
    var c = a[0].latitude, d = a[0].longitude, f = c, g = d;
    for (var e = 1;e < a.length;e++)
      {
        c = MathMin(c, a[e].latitude);
        d = MathMin(d, a[e].longitude);
        f = MathMax(f, a[e].latitude);
        g = MathMax(g, a[e].longitude);
      }
    var h = (f - c) * 0.1, i = (g - d) * 0.1;
    c -= h;
    d -= i;
    f += h;
    g += i;
    if (! b || b.constructor != Array)
      return null;
    else
      {
        b.push(ClipLatitude(c));
        b.push(ClipLongitude(d));
        b.push(ClipLatitude(f));
        b.push(ClipLongitude(g));
        return b;
      }
  }
  function IncludePointInViewport(d,c)
  {
    var a = new Msn.VE.LatLong(d, c);
    if (currentView.mapStyle == obliqueStyle)
      {
        var b = obliqueMode.GetScene();
        if (! b || ! b.ContainsLatLong(a))
          SetMapStyle(lastOrthoMapStyle);
      }
    SetBestMapView([currentView.latlong, a]);
  }
  function ClipLatitude(a)
  {
    return Clip(a, minLatitude, maxLatitude);
  }
  function ClipLongitude(a)
  {
    return Clip(a, minLongitude, maxLongitude);
  }
  function Clip(a,c,b)
  {
    if (a < c)
      return c;
    if (a > b)
      return b;
    return a;
  }
  function SetZoom(b)
  {
    Sync3dView();
    var a = preferredView.MakeCopy();
    a.SetZoomLevel(b);
    SetView(a);
  }
  function ZoomIn()
  {
    Sync3dView();
    var a = preferredView.MakeCopy();
    a.SetZoomLevel(currentView.zoomLevel + 1);
    $VE_A.Log($VE_A.PgName.Map, "Zoom");
    SetView(a);
  }
  function ZoomOut()
  {
    Sync3dView();
    var a = preferredView.MakeCopy();
    a.SetZoomLevel(currentView.zoomLevel - 1);
    $VE_A.Log($VE_A.PgName.Map, "Zoom");
    SetView(a);
  }
  function SetCenterAndZoom(d,b,c)
  {
    Sync3dView();
    var a = preferredView.MakeCopy();
    a.sceneId = null;
    a.SetCenterLatLong(new Msn.VE.LatLong(d, b));
    a.SetZoomLevel(c);
    SetView(a);
  }
  function GetCurrentViewMaxZoomLevel(b)
  {
    var a = b;
    if (typeof a == "undefined" || a == null)
      a = preferredView;
    if (! currentMode)
      return tileLayerManager.GetMaxTileZoom();
    return currentMode.GetCurrentMaxZoomLevel(a);
  }
  function ObliqueMode()
  {
    function L(c,d,b)
    {
      return a.IsValidTile(c, d, b);
    }
    function J(b,c,d)
    {
      return a.GetTileFilename(b, c, d);
    }
    function E(e)
    {
      if (! a)
        return 0;
      var b = new VEPixel(MathRound(originX + offsetX + width / 2), MathRound(originY + offsetY + height / 2)), f = a.PixelToLatLong(b, e);
      b.x++;
      var g = a.PixelToLatLong(b, e), h = Math.sin(DegToRad(f.latitude)), i = Math.sin(DegToRad(g.latitude)), c = earthRadius / 2 * MathAbs(Math.log((1 + h) / (1 - h)) - Math.log((1 + i) / (1 - i))), d = earthRadius * MathAbs(DegToRad(f.longitude) - DegToRad(g.longitude));
      return Math.sqrt(d * d + c * c);
    }
    function F(c,b)
    {
      return a ? a.PixelToLatLong(c, b) : null;
    }
    function z(c,d,b)
    {
      if (a)
        a.PixelToLatLongAsync(c, d, b);
      else
        b(null);
    }
    function D(c,b)
    {
      return a ? a.LatLongToPixel(c, b) : null;
    }
    function y(c,d,b)
    {
      if (a)
        a.LatLongToPixelAsync(c, d, b);
      else
        b(null);
    }
    function w()
    {
      return 2;
    }
    function B(a)
    {
      if (a.zoomLevel >= 2)
        tileLayerManager.SetMarketMaxZoom(2);
      if (a.zoomLevel < 1)
        a.SetZoomLevel(1);
      else
        if (a.zoomLevel > 2)
          a.SetZoomLevel(2);
    }
    function N()
    {
      return a;
    }
    function M()
    {
      return a.GetBounds();
    }
    function K()
    {
      return b;
    }
    function G()
    {
      if (! b)
        return null;
      var a = {};
      return a;
    }
    function A()
    {
      if (currentView != null && currentView.mapStyle != obliqueStyle && currentView.zoomLevel > 0)
        if (currentView.zoomLevel < MapControl.Features.BirdsEyeAtZoomLevel)
          {
            a = null;
            h = b;
            b = false;
            o();
          }
        else
          r(currentView.latlong, "North", false, 500);
    }
    function r(e,i,p,n,m,f)
    {
      j();
      l = p;
      if (! O(e))
        {
          a = null;
          h = b;
          b = false;
          o(m);
          return ;
        }
      k = t;
      c = [];
      c.push(new VEParameter("latitude", e.latitude));
      c.push(new VEParameter("longitude", e.longitude));
      c.push(new VEParameter("level", 20));
      var d = "NoSpin";
      if (f == Msn.VE.BirdsEyeSearchSpinDirection.ClockwiseSpin)
        d = "CounterclockwiseSpin";
      else
        if (f == Msn.VE.BirdsEyeSearchSpinDirection.CounterclockwiseSpin)
          d = "ClockwiseSpin";
      c.push(new VEParameter("spinDirection", "\"" + d + "\""));
      if (i)
        c.push(new VEParameter("orientation", "\"" + i + "\""));
      else
        c.push(new VEParameter("orientation", "\"" + Msn.VE.Orientation.North + "\""));
      if (n)
        g = window.setTimeout(q, n);
      else
        {
          q(m);
          g = - 1;
        }
    }
    function H(b)
    {
      if (a && a.GetID() == b)
        return ;
      j();
      l = true;
      k = u;
      c = [];
      c.push(new VEParameter("sceneId", b));
      q();
    }
    function j()
    {
      try
        {
          if (g != - 1)
            window.clearTimeout(g);
        }
      catch (a)
        {}
      g = - 1;
    }
    function q(b)
    {
      function a(a)
      {
        if (typeof s == "function")
          s(a, b);
      }
      j();
      if (! k)
        return ;
      i = true;
      if (e)
        c.push(new VEParameter(Msn.VE.API.Constants.clienttoken, e));
      JSONRequestInvoke(k, c, a);
    }
    function s(c,d)
    {
      if (p)
        p.__HandleAuthentication(c);
      h = b;
      a = null;
      b = false;
      if (c != null)
        if (c.Scene)
          {
            a = I(c.Scene);
            if (Msn.VE.API && e)
              a.SetClientToken(e);
            a.SetGUID(m);
            b = true;
          }
      o(d);
    }
    function I(a)
    {
      switch (a.O)
      {
        case 0:
          a.O = Msn.VE.Orientation.North;
          break ;
        case 2:
          a.O = Msn.VE.Orientation.East;
          break ;
        case 4:
          a.O = Msn.VE.Orientation.South;
          break ;
        case 6:
          a.O = Msn.VE.Orientation.West;
      }
      return new Msn.VE.ObliqueScene(a.S, a.Q, a.RI, a.O, a.L, null, a.Fcx, a.Fcy, [[a.QA, a.QB, a.QC], [a.QD, a.QE, a.QF], [a.QG, a.QH, a.QI]], [[a.XA, a.XB, a.XC], [a.XD, a.XE, a.XF], [a.XG, a.XH, a.XI]]);
    }
    function o(e)
    {
      i = false;
      if (typeof e == "function")
        if (b)
          e(a);
        else
          e(null);
      if (l)
        {
          l = false;
          if (b)
            {
              var c = preferredView.MakeCopy();
              if (c.mapStyle != obliqueStyle)
                {
                  c.SetZoomLevel(1);
                  c.SetCenterLatLong(new Msn.VE.LatLong().Copy(preferredView.latlong));
                }
              c.SetMapStyle(obliqueStyle, a.GetID(), a.GetOrientation());
              SetView(c);
              Fire("onobliquechange");
            }
          else
            {
              var c = preferredView.MakeCopy();
              c.SetMapStyle(lastOrthoMapStyle);
              if (c.GetViewType() != "latlongRect")
                c.SetZoomLevel(lastOrthoZoomLevel);
              SetView(c);
              Fire("onendmapstyleoblique");
              Fire("onerror", CreateEvent(currentView.latlong, currentView.zoomLevel, L_ObliqueModeImageNotAvailable_Text));
            }
        }
      if (h != b)
        if (b)
          Fire("onobliqueenter");
        else
          Fire("onobliqueleave");
      if (d.length > 0)
        v(b);
    }
    function O(a)
    {
      if (! a || ! f || f.length == 0)
        return false;
      var b = C(a, f[0].length);
      return n(b, 0, f.length - 1);
    }
    function C(g,c)
    {
      var e = orthoMode.LatLongToPixel(g, c), h = MathFloor(e.x / tileSize), i = MathFloor(e.y / tileSize), d = "";
      for (var b = c;b > 0;b--)
        {
          var a = 0, f = 1 << b - 1;
          if ((h & f) != 0)
            a++;
          if ((i & f) != 0)
            a += 2;
          d += a + "";
        }
      return d;
    }
    function n(a,d,c)
    {
      if (c < d)
        return false;
      var b = MathFloor((d + c) / 2);
      if (f[b] == a)
        return true;
      if (a < f[b])
        return n(a, d, b - 1);
      return n(a, b + 1, c);
    }
    function x(a,c)
    {
      if (i)
        {
          if (d[a] != true)
            {
              var e = d.push({callbackName : a, callback : c});
              d[a] = true;
            }
        }
      else
        if (typeof c == "function")
          c(b);
    }
    function v(c)
    {
      var e = d.length;
      for (var b = 0;b < e;b++)
        {
          var a = d.shift();
          delete d[a.callbackName];
          if (typeof a.callback == "function")
            a.callback(c);
        }
    }
    var a = null, b = false, h = false, t = null, u = null, l = false, k = null, c = null, g = - 1, e = null, m = null, p = null, f = ["02121222233", "02121222322", "02121222323", "02121222332", "02121222333", "02121223222", "02121223223", "02121223232", "02123000101", "02123000103", "02123000110", "02123000111", "02123000112", "02123000113", "02123000123", "02123000130", "02123000131", "02123000132", "02123000133", "02123000301", "02123000303", "02123000310", "02123000311", "02123000312", "02123000313", "02123000321", "02123000330", "02123000331", "02123000332", "02123000333", "02123001000", "02123001001", "02123001002", "02123001003", "02123001010", "02123001012", "02123001013", "02123001020", "02123001021", "02123001022", "02123001023", "02123001030", "02123001031", "02123001032", "02123001033", "02123001103", "02123001112", "02123001120", "02123001121", "02123001122", "02123001123", "02123001130", "02123001132", "02123001200", "02123001201", "02123001202", "02123001203", "02123001210", "02123001211", "02123001212", "02123001220", "02123001221", "02123001222", "02123001223", "02123001232", "02123001300", "02123001301", "02123001302", "02123002103", "02123002110", "02123002111", "02123002112", "02123002113", "02123002121", "02123002123", "02123002130", "02123002131", "02123002132", "02123002133", "02123002233", "02123002301", "02123002303", "02123002310", "02123002311", "02123002312", "02123002313", "02123002320", "02123002321", "02123002322", "02123002323", "02123002330", "02123002331", "02123002332", "02123002333", "02123003000", "02123003001", "02123003002", "02123003003", "02123003010", "02123003011", "02123003012", "02123003020", "02123003021", "02123003022", "02123003023", "02123003030", "02123003032", "02123003200", "02123003201", "02123003202", "02123003203", "02123003210", "02123003220", "02123003221", "02123003222", "02123003223", "02123003232", "02123020011", "02123020013", "02123020031", "02123020100", "02123020101", "02123020102", "02123020103", "02123020110", "02123020111", "02123020112", "02123020113", "02123020120", "02123021000", "02123021001", "02123021002", "02123022103", "02123022112", "02123022113", "02123022121", "02123022122", "02123022123", "02123022130", "02123022131", "02123022132", "02123022133", "02123022211", "02123022233", "02123022300", "02123022301", "02123022302", "02123022303", "02123022310", "02123022311", "02123022312", "02123022313", "02123022320", "02123022321", "02123022322", "02123022323", "02123022330", "02123022331", "02123023200", "02123023202", "02123023220", "02123100233", "02123100322", "02123102011", "02123102012", "02123102013", "02123102030", "02123102031", "02123102032", "02123102033", "02123102100", "02123102102", "02123102103", "02123102111", "02123102112", "02123102113", "02123102120", "02123102121", "02123102122", "02123102123", "02123102130", "02123102131", "02123102132", "02123102133", "02123102210", "02123102211", "02123103002", "02123103020", "02123103022", "02123200011", "02123200013", "02123200031", "02123200033", "02123200100", "02123200101", "02123200102", "02123200103", "02123200120", "02123200121", "02123200122", "02123223233", "02123223322", "02123302112", "02123302113", "02123302130", "02123302131", "02123302132", "02123302133", "02123302310", "02123302311", "02123302313", "02123303002", "02123303003", "02123303020", "02123303021", "02123303022", "02123303023", "02123303030", "02123303032", "02123303033", "02123303200", "02123303201", "02123303202", "02123303203", "02123303210", "02123303211", "02123303220", "02123303221", "02132222202", "02132222203", "02132222210", "02132222211", "02132222212", "02132222213", "02132222220", "02132222221", "02132222222", "02132222223", "02132222230", "02132222231", "02132222232", "02132222233", "02132222300", "02132222301", "02132222302", "02132222303", "02132222310", "02132222312", "02132222320", "02132222321", "02132222330", "02133031332", "02133031333", "02133033110", "02133033111", "02133033112", "02133033113", "02133033130", "02133033131", "02133033133", "02133103133", "02133103311", "02133103313", "02133112022", "02133112023", "02133112032", "02133112033", "02133112200", "02133112201", "02133112210", "02133112211", "02133120222", "02133120223", "02133120232", "02133120233", "02133122000", "02133122001", "02133122002", "02133122003", "02133122010", "02133122011", "02133122012", "02133122013", "02133122020", "02133122021", "02133122022", "02133122023", "02133122030", "02133122031", "02133122032", "02133122113", "02133122131", "02133122133", "02133122212", "02133122213", "02133122230", "02133122231", "02133122232", "02133122233", "02133122302", "02133122303", "02133122311", "02133122312", "02133122313", "02133122320", "02133122321", "02133122322", "02133122323", "02133122330", "02133122331", "02133122332", "02133122333", "02133123002", "02133123003", "02133123012", "02133123020", "02133123021", "02133123022", "02133123023", "02133123030", "02133123032", "02133123200", "02133123201", "02133123202", "02133123210", "02133123213", "02133123231", "02133123232", "02133123233", "02133123301", "02133123302", "02133123303", "02133123310", "02133123312", "02133123313", "02133123320", "02133123321", "02133123322", "02133123323", "02133123330", "02133123331", "02133123332", "02133123333", "02133130013", "02133130021", "02133130023", "02133130030", "02133130031", "02133130032", "02133130033", "02133130102", "02133130120", "02133130122", "02133211123", "02133211132", "02133211133", "02133211231", "02133211233", "02133211301", "02133211303", "02133211310", "02133211311", "02133211312", "02133211313", "02133211320", "02133211321", "02133211322", "02133211323", "02133211330", "02133211331", "02133211332", "02133211333", "02133213010", "02133213011", "02133213012", "02133213013", "02133213031", "02133213100", "02133213101", "02133213102", "02133213103", "02133233123", "02133233132", "02133233133", "02133233211", "02133233213", "02133233222", "02133233223", "02133233231", "02133233232", "02133233233", "02133233300", "02133233301", "02133233302", "02133233303", "02133233310", "02133233311", "02133233312", "02133233313", "02133233320", "02133233321", "02133233322", "02133233323", "02133233330", "02133233331", "02133233332", "02133300010", "02133300011", "02133300012", "02133300013", "02133300022", "02133300100", "02133300101", "02133300102", "02133300103", "02133300110", "02133300111", "02133300112", "02133300113", "02133300200", "02133300202", "02133300220", "02133300221", "02133300222", "02133300223", "02133300230", "02133300231", "02133300232", "02133300233", "02133300322", "02133301010", "02133301011", "02133301012", "02133301013", "02133301023", "02133301030", "02133301031", "02133301032", "02133301033", "02133301100", "02133301101", "02133301102", "02133301103", "02133301110", "02133301111", "02133301112", "02133301113", "02133301120", "02133301121", "02133301122", "02133301123", "02133301130", "02133301131", "02133301132", "02133301133", "02133301201", "02133301210", "02133301211", "02133301213", "02133301231", "02133301233", "02133301300", "02133301301", "02133301302", "02133301303", "02133301310", "02133301311", "02133301312", "02133301320", "02133301321", "02133301322", "02133301323", "02133301330", "02133301332", "02133302000", "02133302001", "02133302002", "02133302003", "02133302010", "02133302011", "02133302012", "02133302013", "02133302020", "02133302021", "02133302030", "02133302031", "02133302100", "02133302102", "02133302120", "02133310020", "02133310022", "02133310200", "02133310222", "02133310223", "02133310232", "02133310233", "02133310322", "02133312000", "02133312001", "02133312002", "02133312003", "02133312010", "02133312011", "02133312012", "02133312013", "02133312021", "02133312030", "02133312031", "02133312100", "02133312102", "02133320011", "02133320013", "02133320031", "02133320033", "02133320100", "02133320101", "02133320102", "02133320103", "02133320110", "02133320112", "02133320120", "02133320121", "02133320122", "02133320123", "02133320130", "02133320132", "02133320211", "02133320300", "02133320301", "02133320310", "02133322022", "02133322023", "02133322032", "02133322200", "02133322201", "02133322202", "02133322203", "02133322210", "02133322212", "02133322220", "02133322221", "02133322223", "02133322230", "02133322232", "02133333033", "02133333112", "02133333121", "02133333122", "02133333123", "02133333130", "02133333131", "02133333132", "02133333133", "02133333201", "02133333203", "02133333210", "02133333211", "02133333212", "02133333213", "02133333300", "02133333301", "02133333302", "02133333303", "02133333310", "02301000113", "02301000131", "02301000133", "02301000311", "02301001002", "02301001011", "02301001013", "02301001020", "02301001022", "02301001100", "02301001200", "02301002223", "02301002232", "02301002233", "02301002322", "02301002323", "02301003323", "02301003332", "02301003333", "02301012103", "02301012112", "02301012113", "02301012121", "02301012123", "02301012130", "02301012131", "02301012132", "02301012133", "02301012310", "02301012311", "02301012312", "02301012313", "02301012330", "02301012331", "02301020001", "02301020003", "02301020010", "02301020011", "02301020012", "02301020013", "02301020030", "02301020031", "02301020033", "02301020100", "02301020101", "02301020102", "02301020103", "02301020110", "02301020112", "02301020120", "02301020121", "02301020122", "02301020123", "02301020130", "02301020131", "02301020132", "02301020133", "02301020211", "02301020300", "02301020301", "02301020310", "02301020311", "02301020312", "02301020313", "02301020331", "02301020332", "02301020333", "02301021011", "02301021013", "02301021021", "02301021022", "02301021023", "02301021030", "02301021031", "02301021032", "02301021033", "02301021100", "02301021101", "02301021102", "02301021103", "02301021110", "02301021111", "02301021112", "02301021113", "02301021120", "02301021121", "02301021122", "02301021123", "02301021130", "02301021131", "02301021132", "02301021133", "02301021200", "02301021201", "02301021202", "02301021203", "02301021210", "02301021211", "02301021212", "02301021213", "02301021220", "02301021221", "02301021222", "02301021223", "02301021230", "02301021231", "02301021232", "02301021233", "02301021300", "02301021301", "02301021302", "02301021303", "02301021310", "02301021311", "02301021312", "02301021313", "02301021320", "02301021321", "02301021322", "02301021323", "02301021330", "02301021331", "02301021332", "02301021333", "02301022110", "02301022111", "02301022112", "02301022113", "02301022131", "02301023000", "02301023001", "02301023002", "02301023003", "02301023010", "02301023011", "02301023012", "02301023013", "02301023020", "02301023021", "02301023022", "02301023023", "02301023030", "02301023031", "02301023032", "02301023033", "02301023100", "02301023101", "02301023102", "02301023103", "02301023110", "02301023111", "02301023112", "02301023113", "02301023120", "02301023122", "02301023130", "02301023131", "02301023133", "02301023201", "02301023210", "02301023211", "02301023212", "02301023213", "02301023223", "02301023230", "02301023231", "02301023232", "02301023233", "02301023300", "02301023302", "02301023320", "02301023322", "02301030222", "02301030223", "02301031102", "02301031103", "02301031120", "02301031121", "02301031131", "02301031133", "02301032000", "02301032001", "02301032002", "02301032003", "02301032212", "02301032230", "02301032231", "02301032232", "02301032233", "02301032303", "02301032312", "02301032313", "02301032320", "02301032321", "02301032322", "02301032323", "02301032330", "02301032331", "02301032332", "02301032333", "02301033220", "02301033222", "02301033223", "02301120020", "02301120022", "02301132111", "02301132113", "02301132131", "02301132133", "02301132311", "02301132313", "02301133000", "02301133001", "02301133002", "02301133003", "02301133010", "02301133012", "02301133013", "02301133020", "02301133021", "02301133022", "02301133023", "02301133030", "02301133031", "02301133032", "02301133033", "02301133102", "02301133103", "02301133120", "02301133121", "02301133122", "02301133123", "02301133200", "02301133201", "02301133202", "02301133203", "02301133210", "02301133211", "02301133212", "02301133213", "02301133300", "02301133301", "02301133302", "02301133303", "02301201001", "02301201010", "02301201011", "02301201013", "02301201100", "02301201101", "02301201103", "02301201110", "02301201112", "02301201121", "02301201130", "02301201131", "02301201132", "02301201133", "02301210011", "02301210030", "02301210031", "02301210032", "02301210033", "02301210100", "02301210101", "02301210103", "02301210110", "02301210111", "02301210112", "02301210113", "02301210120", "02301210121", "02301210122", "02301210123", "02301211000", "02301211001", "02301211202", "02301211203", "02301211212", "02301211220", "02301211221", "02301211222", "02301211223", "02301211230", "02301211232", "02301211233", "02301212003", "02301212012", "02301212021", "02301212023", "02301212030", "02301212032", "02301212033", "02301212210", "02301212211", "02301212213", "02301212302", "02301212303", "02301212320", "02301212321", "02301212323", "02301212330", "02301212331", "02301212332", "02301212333", "02301213000", "02301213001", "02301213002", "02301213010", "02301213011", "02301213012", "02301213013", "02301213020", "02301213021", "02301213022", "02301213031", "02301213100", "02301213102", "02301213120", "02301213211", "02301213213", "02301213221", "02301213222", "02301213223", "02301213232", "02301213233", "02301213300", "02301213301", "02301213302", "02301213303", "02301213310", "02301213311", "02301213312", "02301213313", "02301213320", "02301213321", "02301213322", "02301213323", "02301213330", "02301213331", "02301213332", "02301213333", "02301231001", "02301231003", "02301231010", "02301231011", "02301231012", "02301231013", "02301231031", "02301231100", "02301231101", "02301231102", "02301231103", "02301231110", "02301231111", "02301231112", "02301231113", "02301231120", "02301231121", "02301231130", "02301231131", "02301231132", "02301231133", "02301231303", "02301231310", "02301231311", "02301231312", "02301231321", "02301231330", "02301231331", "02301300230", "02301300231", "02301300232", "02301300233", "02301300302", "02301300320", "02301301113", "02301301131", "02301301133", "02301301311", "02301301332", "02301301333", "02301302123", "02301302132", "02301302133", "02301302200", "02301302201", "02301302202", "02301302203", "02301302210", "02301302211", "02301302212", "02301302213", "02301302220", "02301302221", "02301302222", "02301302223", "02301302230", "02301302231", "02301302232", "02301302233", "02301302300", "02301302301", "02301302302", "02301302303", "02301302310", "02301302311", "02301302312", "02301302313", "02301302320", "02301302321", "02301302322", "02301302323", "02301302330", "02301302331", "02301302332", "02301302333", "02301303021", "02301303022", "02301303110", "02301303111", "02301303200", "02301303201", "02301310002", "02301310020", "02301310021", "02301310022", "02301310023", "02301310030", "02301310032", "02301310033", "02301310200", "02301310201", "02301310210", "02301310211", "02301310212", "02301310213", "02301312033", "02301312211", "02301312300", "02301312302", "02301312320", "02301312321", "02301312332", "02301320000", "02301320001", "02301320002", "02301320003", "02301320010", "02301320011", "02301320012", "02301320013", "02301320020", "02301320021", "02301320022", "02301320023", "02301320030", "02301320031", "02301320032", "02301320033", "02301320100", "02301320101", "02301320102", "02301320103", "02301320110", "02301320111", "02301320112", "02301320113", "02301320120", "02301320121", "02301320122", "02301320123", "02301320130", "02301320131", "02301320132", "02301320133", "02301320200", "02301320201", "02301320203", "02301320210", "02301320211", "02301320212", "02301320213", "02301320230", "02301320231", "02301320300", "02301320301", "02301320302", "02301320303", "02301320310", "02301320311", "02301320312", "02301320320", "02301320321", "02301320322", "02301320323", "02301320330", "02301320332", "02301321001", "02301321002", "02301321003", "02301321010", "02301321011", "02301321012", "02301321013", "02301321020", "02301321021", "02301321022", "02301321023", "02301321030", "02301321032", "02301321033", "02301321100", "02301321101", "02301321102", "02301321103", "02301321201", "02301321210", "02301321211", "02301321212", "02301321213", "02301322100", "02301322101", "02301322102", "02301322103", "02301322110", "02301322111", "02301322112", "02301322113", "02301322120", "02301322121", "02301322122", "02301322123", "02301322130", "02301322131", "02301322132", "02301322133", "02301322301", "02301322310", "02301323000", "02301323002", "02301323020", "02301330011", "02301330100", "02301330101", "02301330102", "02301330103", "02301330110", "02301331312", "02301331313", "02301331330", "02301331331", "02301332031", "02301332033", "02301332120", "02301332121", "02301332122", "02301332123", "02301332210", "02301332211", "02310000010", "02310000011", "02310000012", "02310000013", "02310000030", "02310000031", "02310000032", "02310000033", "02310000102", "02310000120", "02310000122", "02310000211", "02310012303", "02310012312", "02310012313", "02310012321", "02310012330", "02310012331", "02310032321", "02310032330", "02310032331", "02310032332", "02310032333", "02310033202", "02310033203", "02310033212", "02310033220", "02310033221", "02310033222", "02310033223", "02310033230", "02310033231", "02310033232", "02310033233", "02310101012", "02310101021", "02310101023", "02310101030", "02310101032", "02310101033", "02310101122", "02310101201", "02310101203", "02310101210", "02310101211", "02310101212", "02310101220", "02310101221", "02310101222", "02310101223", "02310101230", "02310101231", "02310101232", "02310101233", "02310101300", "02310101301", "02310101322", "02310101323", "02310101332", "02310101333", "02310103000", "02310103001", "02310103003", "02310103010", "02310103011", "02310103012", "02310103013", "02310103021", "02310103023", "02310103030", "02310103031", "02310103032", "02310103033", "02310103100", "02310103101", "02310103102", "02310103103", "02310103110", "02310103111", "02310103112", "02310103113", "02310103120", "02310103121", "02310103122", "02310103130", "02310103131", "02310103203", "02310103210", "02310103211", "02310103212", "02310103213", "02310103231", "02310103233", "02310103300", "02310103302", "02310103320", "02310103322", "02310110222", "02310110223", "02310110232", "02310112000", "02310112001", "02310112002", "02310112003", "02310112010", "02310112012", "02310112020", "02310112021", "02310112030", "02310121011", "02310121100", "02310121102", "02310210322", "02310210323", "02310210332", "02310210333", "02310211203", "02310211212", "02310211213", "02310211221", "02310211222", "02310211223", "02310211230", "02310211231", "02310211232", "02310211233", "02310211302", "02310211303", "02310211320", "02310211321", "02310211322", "02310212011", "02310212100", "02310212101", "02310212110", "02310212111", "02310212112", "02310212130", "02310212132", "02310213000", "02310213001", "02310213002", "02310213003", "02310213010", "02310213011", "02310213012", "02310213100", "02310213112", "02310213113", "02310213130", "02310213131", "02310213132", "02310213133", "02310213310", "02310213311", "02310220021", "02310220023", "02310220030", "02310220031", "02310220032", "02310220033", "02310220122", "02310220200", "02310220201", "02310220202", "02310220203", "02310220210", "02310220211", "02310220212", "02310220213", "02310220220", "02310220221", "02310220223", "02310220230", "02310220231", "02310220232", "02310220233", "02310220300", "02310220302", "02310220303", "02310220320", "02310220321", "02310220322", "02310220323", "02310220330", "02310222310", "02310222311", "02310222312", "02310222313", "02310222331", "02310222333", "02310223200", "02310223201", "02310223202", "02310223203", "02310223212", "02310223220", "02310223221", "02310223222", "02310223223", "02310223230", "02310223232", "02310300110", "02310300111", "02310300112", "02310300113", "02310300122", "02310300123", "02310300130", "02310300131", "02310300300", "02310300301", "02310300302", "02310300303", "02310300320", "02310300321", "02310300322", "02310300323", "02310302002", "02310302003", "02310302012", "02310302013", "02310302020", "02310302021", "02310302022", "02310302023", "02310302030", "02310302031", "02310302032", "02310302033", "02310302101", "02310302120", "02310302121", "02310302122", "02310302123", "02310302200", "02310302201", "02310302210", "02310302211", "02310302212", "02310302213", "02310302230", "02310302231", "02310302232", "02310302233", "02310302300", "02310302301", "02310302302", "02310302320", "02310311230", "02310311231", "02310311232", "02310311233", "02310311320", "02310311321", "02310311322", "02310311323", "02310311330", "02310311332", "02310313010", "02310313011", "02310313012", "02310313013", "02310313030", "02310313031", "02310313032", "02310313033", "02310313100", "02310313101", "02310313102", "02310313103", "02310313110", "02310313112", "02310313120", "02310313121", "02310313122", "02310313123", "02310313130", "02310313132", "02310313210", "02310313211", "02310313212", "02310313213", "02310313300", "02310313301", "02310313302", "02310313303", "02310313310", "02310313312", "02310322223", "02310322232", "02310322233", "02310331033", "02310331211", "02310331213", "02310331231", "02310331300", "02310331301", "02310331302", "02310331303", "02310331320", "02310331321", "02311011000", "02311011001", "02311011002", "02311011003", "02311011010", "02311011011", "02311011012", "02311011013", "02311011020", "02311011021", "02311011022", "02311011023", "02311011030", "02311011031", "02311011032", "02311011033", "02311011100", "02311011101", "02311013303", "02311013312", "02311013313", "02311013321", "02311013323", "02311013330", "02311013331", "02311013332", "02311013333", "02311030103", "02311030112", "02311030113", "02311030121", "02311030123", "02311030130", "02311030131", "02311030132", "02311030133", "02311030231", "02311030233", "02311030310", "02311030311", "02311030313", "02311030320", "02311030321", "02311030322", "02311030323", "02311030330", "02311030331", "02311030332", "02311030333", "02311031002", "02311031003", "02311031020", "02311031021", "02311031022", "02311031023", "02311031200", "02311031201", "02311031202", "02311031203", "02311032011", "02311032013", "02311032031", "02311032100", "02311032101", "02311032102", "02311032103", "02311032110", "02311032111", "02311032112", "02311032113", "02311032120", "02311032121", "02311032130", "02311032131", "02311033303", "02311033312", "02311033313", "02311033321", "02311033323", "02311033330", "02311033331", "02311033332", "02311033333", "02311102011", "02311102013", "02311102030", "02311102031", "02311102032", "02311102033", "02311102100", "02311102101", "02311102102", "02311102103", "02311102120", "02311102121", "02311102122", "02311102123", "02311102130", "02311102131", "02311102132", "02311102133", "02311102202", "02311102210", "02311102211", "02311102212", "02311102213", "02311102220", "02311102222", "02311102230", "02311102231", "02311102232", "02311102233", "02311102300", "02311102301", "02311102302", "02311102303", "02311102310", "02311102311", "02311102312", "02311102313", "02311102320", "02311102321", "02311102322", "02311102323", "02311102330", "02311102331", "02311102332", "02311102333", "02311103020", "02311103022", "02311103200", "02311103202", "02311103220", "02311103222", "02311103233", "02311103320", "02311103321", "02311103322", "02311103323", "02311103330", "02311103332", "02311113322", "02311113323", "02311113330", "02311113331", "02311113332", "02311113333", "02311120011", "02311120100", "02311120101", "02311120103", "02311120110", "02311120111", "02311120112", "02311120113", "02311120121", "02311120130", "02311120131", "02311121000", "02311121002", "02311121011", "02311121013", "02311121020", "02311121031", "02311121100", "02311121101", "02311121102", "02311121103", "02311121110", "02311121112", "02311121120", "02311121121", "02311121130", "02311123013", "02311123031", "02311123033", "02311123102", "02311123103", "02311123112", "02311123120", "02311123121", "02311123122", "02311123123", "02311123130", "02311123132", "02311123211", "02311123300", "02311123301", "02311123310", "02311131011", "02311131013", "02311131031", "02311131100", "02311131101", "02311131102", "02311131103", "02311131110", "02311131111", "02311131112", "02311131113", "02311131120", "02311131121", "02311131123", "02311131130", "02311131131", "02311131132", "02311210121", "02311210123", "02311210130", "02311210131", "02311210132", "02311210133", "02311210231", "02311210232", "02311210233", "02311210301", "02311210302", "02311210303", "02311210310", "02311210311", "02311210312", "02311210313", "02311210320", "02311210321", "02311210322", "02311210323", "02311210330", "02311210331", "02311210332", "02311210333", "02311211020", "02311211021", "02311211022", "02311211023", "02311211030", "02311211031", "02311211032", "02311211033", "02311211101", "02311211103", "02311211110", "02311211111", "02311211112", "02311211113", "02311211120", "02311211121", "02311211122", "02311211123", "02311211130", "02311211131", "02311211132", "02311211133", "02311211200", "02311211201", "02311211202", "02311211203", "02311211210", "02311211212", "02311211300", "02311211301", "02311211303", "02311211310", "02311211311", "02311211312", "02311211313", "02311212011", "02311212013", "02311212100", "02311212101", "02311212102", "02311212103", "02311212110", "02311212111", "02311212112", "02311212113", "02311212120", "02311212121", "02311212122", "02311212123", "02311212130", "02311212131", "02311212132", "02311212133", "02311212301", "02311212310", "02311212311", "02311221100", "02311221101", "02311221102", "02311221103", "02311221110", "02311221111", "02311221112", "02311221113", "02311221120", "02311221121", "02311221122", "02311221123", "02311221130", "02311221131", "02311221132", "02311221133", "02311222102", "02311222120", "02311222121", "02311222122", "02311222123", "02311222300", "02311222301", "02311230002", "02311230020", "02311230022", "02311230121", "02311230123", "02311230130", "02311230131", "02311230132", "02311230133", "02311230212", "02311230213", "02311230230", "02311230231", "02311230232", "02311230233", "02311230301", "02311230302", "02311230303", "02311230310", "02311230311", "02311230312", "02311230313", "02311230320", "02311230321", "02311230322", "02311230323", "02311230330", "02311230331", "02311230332", "02311230333", "02311231020", "02311231021", "02311231022", "02311231023", "02311231030", "02311231032", "02311231033", "02311231200", "02311231201", "02311231202", "02311231203", "02311231210", "02311231211", "02311231212", "02311231213", "02311231220", "02311231221", "02311231222", "02311231223", "02311231230", "02311231231", "02311231232", "02311231233", "02311231300", "02311231302", "02311231320", "02311231322", "02311232010", "02311232011", "02311232012", "02311232013", "02311232023", "02311232030", "02311232031", "02311232032", "02311232033", "02311232100", "02311232101", "02311232102", "02311232103", "02311232110", "02311232111", "02311232112", "02311232113", "02311232120", "02311232121", "02311232122", "02311232123", "02311232130", "02311232131", "02311232132", "02311232133", "02311232201", "02311232210", "02311232211", "02311232212", "02311232213", "02311232230", "02311232231", "02311232233", "02311232300", "02311232301", "02311232302", "02311232303", "02311232310", "02311232311", "02311232312", "02311232313", "02311232320", "02311232321", "02311232330", "02311232331", "02311232333", "02311233000", "02311233001", "02311233002", "02311233003", "02311233010", "02311233011", "02311233012", "02311233013", "02311233020", "02311233021", "02311233022", "02311233023", "02311233030", "02311233031", "02311233032", "02311233033", "02311233100", "02311233101", "02311233102", "02311233103", "02311233110", "02311233111", "02311233112", "02311233113", "02311233120", "02311233130", "02311233131", "02311233133", "02311233200", "02311233201", "02311233202", "02311233203", "02311233210", "02311233211", "02311233212", "02311233213", "02311233220", "02311233221", "02311233222", "02311233223", "02311233230", "02311233231", "02311233302", "02311300101", "02311300103", "02311300110", "02311300111", "02311300112", "02311300113", "02311300121", "02311300123", "02311300130", "02311300131", "02311300132", "02311300133", "02311300310", "02311300311", "02311300312", "02311300313", "02311300330", "02311300331", "02311301000", "02311301001", "02311301002", "02311301003", "02311301010", "02311301012", "02311301020", "02311301021", "02311301022", "02311301023", "02311301030", "02311301200", "02311301201", "02311301202", "02311301203", "02311301220", "02311301221", "02311303133", "02311303311", "02311312022", "02311312023", "02311312030", "02311312031", "02311312032", "02311312033", "02311312120", "02311312122", "02311312200", "02311312201", "02311312202", "02311312203", "02311312210", "02311312211", "02311312212", "02311312213", "02311312230", "02311312231", "02311312233", "02311312300", "02311312302", "02311312320", "02311312322", "02311313110", "02311313111", "02311313112", "02311313113", "02311313130", "02311313131", "02311313132", "02311313133", "02311313233", "02311313301", "02311313303", "02311313310", "02311313311", "02311313312", "02311313313", "02311313320", "02311313321", "02311313322", "02311313323", "02311313330", "02311313331", "02311313332", "02311313333", "02311320230", "02311320231", "02311320232", "02311320233", "02311320320", "02311320322", "02311322000", "02311322002", "02311322010", "02311322011", "02311322020", "02311322022", "02311322100", "02311322102", "02311323131", "02311323133", "02311323311", "02311331011", "02311331013", "02311331100", "02311331101", "02311331102", "02311331103", "02311331110", "02311331111", "02311331112", "02311331113", "02311331123", "02311331130", "02311331131", "02311331132", "02311331133", "02311331311", "02311332020", "02311332021", "02311332022", "02311332023", "02311332032", "02311332200", "02311332201", "02311332210", "02311333210", "02311333211", "02311333212", "02311333213", "02311333311", "02311333312", "02311333313", "02311333330", "02311333331", "02311333332", "02311333333", "02312001000", "02312001001", "02312001002", "02312100001", "02312100003", "02312100010", "02312100011", "02312100012", "02312100013", "02312100031", "02312100033", "02312100100", "02312100102", "02312100120", "02312100122", "02313003321", "02313003323", "02313003330", "02313003331", "02313003332", "02313003333", "02313010111", "02313010112", "02313010113", "02313010121", "02313010123", "02313010130", "02313010131", "02313010132", "02313010133", "02313010213", "02313010231", "02313010233", "02313010302", "02313010303", "02313010310", "02313010311", "02313010312", "02313010320", "02313010321", "02313010322", "02313010323", "02313010330", "02313010332", "02313011002", "02313011020", "02313012001", "02313012003", "02313012010", "02313012011", "02313012012", "02313012013", "02313012021", "02313012023", "02313012030", "02313012031", "02313012032", "02313012033", "02313012100", "02313012101", "02313012102", "02313012103", "02313012110", "02313012112", "02313012120", "02313012121", "02313012122", "02313012123", "02313012130", "02313012210", "02313012211", "02313012220", "02313012222", "02313012223", "02313012300", "02313012301", "02313013110", "02313013111", "02313013112", "02313013113", "02313013123", "02313013130", "02313013131", "02313013132", "02313013133", "02313013301", "02313013310", "02313013311", "02313013312", "02313013313", "02313013330", "02313013331", "02313013333", "02313021101", "02313021103", "02313021110", "02313021111", "02313021112", "02313021113", "02313021121", "02313021130", "02313021131", "02313023021", "02313023022", "02313023023", "02313023030", "02313023032", "02313023033", "02313023122", "02313023200", "02313023201", "02313023203", "02313023210", "02313023211", "02313023212", "02313023213", "02313023221", "02313023230", "02313023300", "02313023302", "02313023303", "02313023312", "02313030000", "02313030001", "02313030002", "02313030003", "02313030010", "02313030020", "02313030333", "02313031131", "02313031133", "02313031222", "02313031223", "02313032013", "02313032030", "02313032031", "02313032032", "02313032033", "02313032111", "02313032112", "02313032113", "02313032120", "02313032121", "02313032122", "02313032123", "02313032130", "02313032131", "02313032132", "02313032133", "02313032210", "02313032211", "02313032213", "02313032300", "02313032301", "02313032302", "02313032303", "02313032310", "02313032311", "02313032312", "02313032313", "02313033000", "02313033001", "02313033002", "02313033003", "02313033020", "02313033021", "02313033022", "02313100312", "02313100313", "02313100330", "02313100331", "02313100333", "02313101201", "02313101202", "02313101203", "02313101212", "02313101220", "02313101221", "02313101222", "02313101223", "02313101230", "02313101232", "02313102002", "02313102003", "02313102020", "02313102021", "02313102022", "02313102023", "02313102030", "02313102032", "02313102033", "02313102133", "02313102200", "02313102201", "02313102202", "02313102203", "02313102210", "02313102211", "02313102212", "02313102213", "02313102220", "02313102221", "02313102222", "02313102223", "02313102230", "02313102231", "02313102232", "02313102233", "02313102302", "02313102311", "02313102320", "02313102322", "02313102332", "02313102333", "02313103000", "02313103001", "02313103002", "02313103003", "02313103010", "02313103012", "02313103020", "02313103021", "02313103022", "02313103023", "02313103032", "02313103033", "02313103200", "02313103201", "02313103202", "02313103203", "02313103210", "02313103211", "02313103212", "02313103221", "02313111201", "02313111203", "02313111210", "02313111211", "02313111212", "02313111213", "02313111223", "02313111232", "02313111233", "02313111300", "02313111302", "02313112031", "02313112032", "02313112033", "02313112120", "02313112121", "02313112122", "02313112123", "02313112210", "02313112211", "02313112300", "02313112301", "02313113000", "02313113001", "02313113002", "02313113003", "02313113010", "02313113011", "02313113012", "02313113020", "02313113021", "02313113023", "02313113030", "02313113031", "02313113032", "02313113033", "02313113121", "02313113122", "02313113123", "02313113130", "02313113132", "02313113133", "02313113210", "02313113211", "02313113212", "02313113213", "02313113230", "02313113231", "02313113232", "02313113233", "02313113300", "02313113301", "02313113302", "02313113303", "02313113310", "02313113311", "02313113312", "02313113313", "02313113320", "02313113321", "02313113322", "02313113323", "02313113330", "02313113331", "02313113332", "02313113333", "02313120000", "02313120001", "02313120002", "02313120003", "02313120010", "02313120011", "02313120012", "02313120013", "02313120020", "02313120021", "02313120022", "02313120023", "02313120030", "02313120031", "02313120032", "02313120100", "02313120101", "02313120102", "02313120103", "02313120110", "02313120111", "02313120120", "02313120201", "02313131100", "02313131101", "02313131103", "02313131110", "02313131111", "02313131112", "02313131113", "02313131121", "02313131130", "02313131131", "02313131132", "02313131133", "02313210123", "02313210132", "02313210211", "02313210213", "02313210231", "02313210300", "02313210301", "02313210302", "02313210303", "02313210310", "02313210311", "02313210312", "02313210313", "02313210320", "02313210321", "02313210322", "02313210323", "02313210330", "02313210331", "02313210332", "02313210333", "02313212101", "02313212110", "03022023330", "03022023331", "03022023332", "03022023333", "03022032201", "03022032202", "03022032203", "03022032210", "03022032212", "03022032220", "03022032221", "03022032222", "03022032223", "03022032230", "03022200132", "03022200133", "03022200310", "03022200311", "03022200312", "03022200313", "03022200330", "03022200331", "03022200332", "03022200333", "03022201022", "03022201023", "03022201032", "03022201033", "03022201103", "03022201110", "03022201111", "03022201112", "03022201113", "03022201120", "03022201121", "03022201122", "03022201123", "03022201130", "03022201131", "03022201132", "03022201133", "03022201200", "03022201201", "03022201202", "03022201203", "03022201210", "03022201211", "03022201212", "03022201213", "03022201220", "03022201221", "03022201222", "03022201223", "03022201230", "03022201231", "03022201232", "03022201233", "03022201300", "03022201301", "03022201302", "03022201303", "03022201320", "03022201321", "03022201322", "03022202203", "03022202212", "03022202213", "03022202220", "03022202221", "03022202222", "03022202223", "03022202230", "03022202231", "03022202232", "03022202233", "03022202302", "03022202303", "03022202320", "03022202321", "03022202322", "03022202323", "03022202330", "03022202332", "03022203201", "03022203202", "03022203203", "03022203210", "03022203211", "03022203212", "03022203213", "03022203220", "03022203221", "03022203222", "03022203223", "03022203230", "03022203231", "03022203232", "03022203233", "03022203300", "03022203302", "03022203320", "03022203322", "03022210000", "03022210002", "03022210020", "03022212211", "03022212213", "03022212300", "03022212301", "03022212302", "03022212303", "03022212310", "03022212312", "03022212313", "03022212320", "03022212321", "03022212322", "03022212323", "03022212330", "03022212331", "03022212332", "03022212333", "03022213202", "03022213203", "03022213212", "03022213220", "03022213221", "03022213222", "03022213223", "03022213230", "03022213232", "03022220000", "03022220001", "03022220002", "03022220003", "03022220010", "03022220011", "03022220012", "03022220013", "03022220020", "03022220021", "03022220030", "03022220031", "03022220033", "03022220100", "03022220101", "03022220102", "03022220103", "03022220110", "03022220112", "03022220113", "03022220120", "03022220121", "03022220122", "03022220123", "03022220130", "03022220131", "03022220132", "03022220133", "03022220211", "03022220213", "03022220231", "03022220300", "03022220301", "03022220302", "03022220303", "03022220310", "03022220311", "03022220312", "03022220320", "03022220321", "03022220322", "03022220323", "03022220330", "03022220331", "03022220332", "03022220333", "03022221000", "03022221001", "03022221003", "03022221010", "03022221011", "03022221012", "03022221013", "03022221021", "03022221023", "03022221030", "03022221031", "03022221032", "03022221033", "03022221100", "03022221102", "03022221120", "03022221121", "03022221122", "03022221201", "03022221210", "03022221211", "03022221212", "03022221213", "03022221220", "03022221221", "03022221222", "03022221223", "03022221230", "03022221231", "03022221232", "03022221233", "03022221300", "03022221302", "03022221320", "03022221322", "03022221323", "03022222111", "03022222113", "03022222131", "03022223000", "03022223001", "03022223002", "03022223003", "03022223010", "03022223011", "03022223012", "03022223013", "03022223020", "03022223021", "03022223023", "03022223030", "03022223031", "03022223032", "03022223033", "03022223100", "03022223101", "03022223102", "03022223103", "03022223120", "03022223121", "03022223122", "03022223123", "03022223130", "03022223131", "03022223132", "03022223133", "03022223201", "03022223203", "03022223210", "03022223211", "03022223212", "03022223213", "03022223221", "03022223230", "03022223231", "03022223300", "03022223301", "03022223302", "03022223303", "03022223310", "03022223311", "03022223312", "03022223313", "03022223330", "03022223331", "03022230101", "03022230103", "03022230110", "03022230111", "03022230112", "03022230113", "03022230121", "03022230130", "03022230131", "03022230233", "03022230300", "03022230301", "03022230302", "03022230303", "03022230310", "03022230311", "03022230312", "03022230313", "03022230320", "03022230321", "03022230322", "03022230323", "03022230330", "03022230331", "03022230332", "03022230333", "03022231000", "03022231001", "03022231002", "03022231003", "03022231010", "03022231012", "03022231020", "03022231021", "03022231030", "03022231113", "03022231130", "03022231131", "03022231132", "03022231133", "03022231200", "03022231202", "03022231203", "03022231220", "03022231221", "03022231222", "03022231223", "03022231301", "03022231303", "03022231310", "03022231311", "03022231312", "03022231313", "03022231321", "03022231323", "03022231330", "03022231331", "03022231332", "03022231333", "03022232003", "03022232010", "03022232011", "03022232012", "03022232013", "03022232021", "03022232030", "03022232031", "03022232033", "03022232100", "03022232101", "03022232102", "03022232103", "03022232110", "03022232111", "03022232112", "03022232113", "03022232120", "03022232121", "03022232122", "03022232123", "03022232130", "03022232131", "03022232132", "03022232133", "03022232211", "03022232300", "03022232301", "03022232310", "03022232311", "03022233000", "03022233002", "03022233020", "03022233022", "03022233200", "03022233212", "03022233213", "03022233230", "03022233231", "03022233232", "03022233233", "03022233302", "03022233303", "03022233320", "03022233321", "03022233322", "03022233323", "03022302230", "03022302231", "03022302232", "03022302233", "03022302320", "03022302321", "03022302322", "03022302323", "03022302332", "03022313312", "03022313313", "03022313321", "03022313323", "03022313330", "03022313331", "03022313332", "03022313333", "03022320002", "03022320003", "03022320010", "03022320011", "03022320012", "03022320013", "03022320020", "03022320021", "03022320022", "03022320023", "03022320030", "03022320031", "03022320033", "03022320100", "03022320101", "03022320102", "03022320103", "03022320112", "03022320113", "03022320120", "03022320121", "03022320122", "03022320123", "03022320130", "03022320131", "03022320132", "03022320133", "03022320200", "03022320201", "03022320202", "03022320203", "03022320210", "03022320211", "03022320212", "03022320213", "03022320220", "03022320221", "03022320222", "03022320223", "03022320230", "03022320231", "03022320232", "03022320233", "03022320300", "03022320301", "03022320302", "03022320303", "03022320310", "03022320311", "03022320312", "03022320313", "03022320320", "03022320321", "03022320322", "03022320323", "03022320330", "03022320331", "03022320332", "03022320333", "03022321002", "03022321003", "03022321020", "03022321021", "03022321022", "03022321023", "03022321200", "03022321201", "03022321202", "03022322030", "03022322031", "03022322032", "03022322033", "03022322103", "03022322110", "03022322120", "03022322121", "03022322122", "03022322123", "03022322130", "03022322131", "03022322132", "03022322133", "03022322210", "03022322211", "03022322212", "03022322213", "03022322230", "03022322231", "03022322300", "03022322301", "03022322302", "03022322303", "03022322320", "03022322321", "03022323021", "03022323022", "03022323023", "03022323122", "03022323123", "03022323132", "03022323133", "03022323200", "03022323201", "03022323202", "03022323203", "03022323210", "03022323211", "03022323212", "03022323213", "03022323231", "03022323233", "03022323300", "03022323301", "03022323302", "03022323303", "03022323310", "03022323311", "03022323312", "03022323313", "03022323320", "03022323321", "03022323322", "03022323323", "03022323330", "03022323331", "03022330332", "03022330333", "03022331110", "03022331111", "03022331112", "03022331113", "03022331121", "03022331123", "03022331130", "03022331131", "03022331132", "03022331133", "03022331211", "03022331212", "03022331213", "03022331220", "03022331221", "03022331222", "03022331223", "03022331230", "03022331231", "03022331232", "03022331233", "03022331300", "03022331301", "03022331302", "03022331303", "03022331310", "03022331311", "03022331312", "03022331313", "03022331320", "03022331321", "03022331322", "03022331323", "03022331330", "03022331332", "03022332002", "03022332003", "03022332010", "03022332011", "03022332012", "03022332013", "03022332020", "03022332021", "03022332022", "03022332023", "03022332030", "03022332031", "03022332032", "03022332033", "03022332101", "03022332103", "03022332110", "03022332111", "03022332112", "03022332113", "03022332122", "03022332123", "03022332132", "03022332200", "03022332201", "03022332202", "03022332203", "03022332210", "03022332211", "03022332212", "03022332213", "03022332220", "03022332221", "03022332230", "03022332231", "03022332232", "03022332233", "03022332300", "03022332301", "03022332302", "03022332303", "03022332310", "03022332312", "03022332320", "03022332321", "03022332322", "03022332323", "03022332330", "03022332332", "03022332333", "03022333000", "03022333001", "03022333002", "03022333003", "03022333010", "03022333011", "03022333012", "03022333013", "03022333100", "03022333101", "03022333110", "03022333220", "03022333221", "03022333222", "03022333223", "03022333230", "03022333232", "03023202202", "03023202203", "03023202212", "03023202213", "03023202220", "03023202221", "03023202222", "03023202223", "03023202230", "03023202231", "03023202232", "03023202233", "03023202302", "03023202303", "03023202320", "03023202321", "03023202322", "03023202323", "03023202330", "03023202331", "03023202332", "03023202333", "03023203130", "03023203131", "03023203132", "03023203133", "03023203202", "03023203203", "03023203212", "03023203213", "03023203220", "03023203221", "03023203222", "03023203223", "03023203230", "03023203231", "03023203232", "03023203233", "03023203300", "03023203301", "03023203302", "03023203303", "03023203310", "03023203311", "03023203312", "03023203313", "03023203320", "03023203321", "03023203322", "03023203323", "03023203330", "03023203331", "03023203332", "03023203333", "03023210110", "03023210111", "03023210112", "03023210113", "03023210131", "03023210133", "03023210230", "03023210231", "03023210232", "03023210233", "03023210311", "03023210313", "03023210322", "03023210331", "03023210333", "03023211000", "03023211001", "03023211002", "03023211003", "03023211010", "03023211011", "03023211012", "03023211013", "03023211020", "03023211021", "03023211022", "03023211023", "03023211030", "03023211031", "03023211032", "03023211033", "03023211131", "03023211132", "03023211133", "03023211200", "03023211201", "03023211202", "03023211203", "03023211210", "03023211211", "03023211212", "03023211213", "03023211220", "03023211221", "03023211222", "03023211223", "03023211230", "03023211232", "03023211310", "03023211311", "03023211312", "03023211313", "03023211330", "03023211331", "03023212001", "03023212002", "03023212003", "03023212010", "03023212011", "03023212012", "03023212013", "03023212020", "03023212021", "03023212022", "03023212023", "03023212030", "03023212031", "03023212032", "03023212033", "03023212100", "03023212102", "03023212111", "03023212120", "03023212122", "03023212200", "03023212201", "03023212202", "03023212203", "03023212210", "03023212211", "03023212212", "03023212213", "03023212220", "03023212222", "03023212223", "03023212232", "03023212233", "03023212300", "03023212312", "03023212313", "03023212330", "03023212331", "03023212332", "03023212333", "03023213000", "03023213001", "03023213112", "03023213121", "03023213123", "03023213130", "03023213132", "03023213133", "03023213220", "03023213221", "03023213222", "03023213223", "03023213230", "03023213232", "03023213300", "03023213301", "03023213303", "03023213310", "03023213311", "03023213312", "03023213313", "03023213321", "03023213323", "03023213330", "03023213331", "03023213332", "03023213333", "03023220000", "03023220001", "03023220002", "03023220003", "03023220010", "03023220011", "03023220012", "03023220013", "03023220020", "03023220021", "03023220022", "03023220023", "03023220030", "03023220031", "03023220032", "03023220033", "03023220100", "03023220101", "03023220102", "03023220103", "03023220110", "03023220111", "03023220112", "03023220113", "03023220120", "03023220122", "03023220123", "03023220130", "03023220131", "03023220132", "03023220133", "03023220200", "03023220201", "03023220202", "03023220210", "03023220211", "03023220212", "03023220213", "03023220230", "03023220231", "03023220232", "03023220233", "03023220300", "03023220301", "03023220302", "03023220303", "03023220310", "03023220311", "03023220312", "03023220313", "03023220320", "03023220321", "03023220322", "03023220323", "03023220330", "03023220331", "03023220332", "03023220333", "03023221000", "03023221001", "03023221002", "03023221003", "03023221010", "03023221011", "03023221012", "03023221013", "03023221020", "03023221021", "03023221022", "03023221023", "03023221030", "03023221031", "03023221032", "03023221033", "03023221100", "03023221101", "03023221102", "03023221103", "03023221110", "03023221111", "03023221112", "03023221113", "03023221120", "03023221121", "03023221122", "03023221123", "03023221130", "03023221131", "03023221132", "03023221200", "03023221201", "03023221202", "03023221203", "03023221210", "03023221211", "03023221212", "03023221213", "03023221220", "03023221221", "03023221222", "03023221223", "03023221230", "03023221231", "03023221232", "03023221233", "03023221300", "03023221301", "03023221302", "03023221303", "03023221310", "03023221312", "03023221313", "03023221320", "03023221321", "03023221322", "03023221323", "03023221330", "03023221331", "03023221332", "03023221333", "03023222010", "03023222011", "03023222100", "03023222101", "03023222110", "03023222111", "03023223000", "03023223001", "03023223010", "03023223011", "03023223100", "03023223101", "03023223110", "03023223111", "03023223301", "03023223303", "03023223310", "03023223311", "03023223312", "03023223313", "03023223321", "03023223323", "03023223330", "03023223331", "03023223332", "03023223333", "03023230000", "03023230001", "03023230002", "03023230003", "03023230010", "03023230012", "03023230013", "03023230020", "03023230021", "03023230030", "03023230031", "03023230102", "03023230110", "03023230111", "03023230113", "03023230120", "03023230331", "03023230333", "03023231000", "03023231001", "03023231002", "03023231003", "03023231010", "03023231011", "03023231012", "03023231013", "03023231021", "03023231023", "03023231030", "03023231031", "03023231032", "03023231033", "03023231100", "03023231101", "03023231102", "03023231103", "03023231110", "03023231111", "03023231112", "03023231113", "03023231120", "03023231121", "03023231122", "03023231123", "03023231130", "03023231131", "03023231132", "03023231133", "03023231200", "03023231201", "03023231202", "03023231203", "03023231210", "03023231211", "03023231212", "03023231213", "03023231220", "03023231221", "03023231222", "03023231223", "03023231230", "03023231231", "03023231232", "03023231233", "03023231300", "03023231301", "03023231302", "03023231303", "03023231310", "03023231311", "03023231312", "03023231313", "03023231320", "03023231321", "03023231322", "03023231323", "03023231330", "03023231331", "03023231332", "03023231333", "03023232101", "03023232102", "03023232103", "03023232110", "03023232111", "03023232112", "03023232113", "03023232120", "03023232121", "03023232122", "03023232123", "03023232130", "03023232131", "03023232132", "03023232133", "03023232200", "03023232201", "03023232202", "03023232203", "03023232220", "03023232221", "03023232222", "03023232223", "03023232230", "03023232232", "03023232301", "03023232310", "03023232311", "03023232312", "03023232313", "03023232321", "03023232322", "03023232323", "03023232331", "03023232332", "03023232333", "03023233000", "03023233002", "03023233010", "03023233011", "03023233012", "03023233013", "03023233020", "03023233021", "03023233022", "03023233023", "03023233030", "03023233031", "03023233032", "03023233033", "03023233100", "03023233101", "03023233102", "03023233103", "03023233110", "03023233111", "03023233112", "03023233113", "03023233120", "03023233121", "03023233122", "03023233123", "03023233130", "03023233131", "03023233132", "03023233133", "03023233200", "03023233201", "03023233202", "03023233203", "03023233210", "03023233211", "03023233212", "03023233213", "03023233220", "03023233221", "03023233222", "03023233223", "03023233230", "03023233231", "03023233232", "03023233233", "03023233300", "03023233301", "03023233302", "03023233303", "03023233310", "03023233311", "03023233312", "03023233313", "03023233320", "03023233321", "03023233322", "03023233323", "03023233330", "03023233331", "03023233332", "03023233333", "03023300020", "03023300022", "03023300023", "03023300200", "03023300201", "03023300202", "03023300203", "03023300210", "03023300212", "03023300220", "03023300221", "03023300222", "03023300223", "03023301313", "03023301322", "03023301323", "03023301330", "03023301331", "03023301332", "03023301333", "03023302323", "03023302330", "03023302331", "03023302332", "03023302333", "03023303100", "03023303101", "03023303103", "03023303110", "03023303111", "03023303112", "03023303113", "03023303121", "03023303123", "03023303130", "03023303131", "03023303132", "03023303133", "03023303213", "03023303220", "03023303222", "03023303223", "03023303230", "03023303231", "03023303232", "03023303233", "03023303302", "03023303310", "03023303311", "03023303320", "03023303322", "03023303323", "03023310200", "03023310201", "03023310202", "03023310203", "03023310220", "03023310221", "03023310222", "03023310223", "03023312000", "03023312001", "03023312002", "03023312003", "03023312010", "03023312011", "03023312012", "03023312013", "03023312020", "03023312021", "03023312022", "03023312200", "03023320020", "03023320021", "03023320022", "03023320023", "03023320030", "03023320031", "03023320032", "03023320033", "03023320101", "03023320103", "03023320110", "03023320111", "03023320112", "03023320113", "03023320120", "03023320121", "03023320122", "03023320123", "03023320130", "03023320131", "03023320132", "03023320133", "03023320200", "03023320201", "03023320202", "03023320203", "03023320210", "03023320211", "03023320212", "03023320213", "03023320220", "03023320221", "03023320222", "03023320223", "03023320230", "03023320231", "03023320232", "03023320233", "03023320300", "03023320301", "03023320302", "03023320303", "03023320310", "03023320311", "03023320312", "03023320313", "03023320320", "03023320321", "03023320322", "03023320323", "03023320330", "03023320331", "03023320332", "03023320333", "03023321000", "03023321001", "03023321002", "03023321003", "03023321010", "03023321011", "03023321012", "03023321013", "03023321020", "03023321021", "03023321022", "03023321023", "03023321030", "03023321031", "03023321032", "03023321033", "03023321100", "03023321101", "03023321102", "03023321103", "03023321120", "03023321121", "03023321122", "03023321123", "03023321130", "03023321132", "03023321200", "03023321201", "03023321202", "03023321203", "03023321210", "03023321211", "03023321212", "03023321213", "03023321220", "03023321221", "03023321222", "03023321223", "03023321230", "03023321231", "03023321232", "03023321233", "03023321300", "03023321301", "03023321302", "03023321320", "03023321321", "03023321322", "03023321323", "03023321332", "03023322000", "03023322001", "03023322002", "03023322003", "03023322010", "03023322011", "03023322012", "03023322013", "03023322020", "03023322021", "03023322022", "03023322023", "03023322030", "03023322031", "03023322032", "03023322033", "03023322100", "03023322101", "03023322102", "03023322103", "03023322110", "03023322111", "03023322112", "03023322113", "03023322120", "03023322121", "03023322122", "03023322123", "03023322130", "03023322131", "03023322132", "03023322133", "03023322200", "03023322201", "03023322202", "03023322203", "03023322210", "03023322211", "03023322212", "03023322213", "03023322220", "03023322221", "03023322222", "03023322223", "03023322230", "03023322231", "03023322232", "03023322233", "03023322300", "03023322301", "03023322302", "03023322303", "03023322310", "03023322311", "03023322312", "03023322313", "03023322320", "03023322321", "03023322322", "03023322323", "03023322330", "03023322332", "03023322333", "03023323000", "03023323001", "03023323002", "03023323003", "03023323010", "03023323011", "03023323012", "03023323013", "03023323020", "03023323021", "03023323023", "03023323030", "03023323031", "03023323032", "03023323033", "03023323100", "03023323101", "03023323102", "03023323103", "03023323110", "03023323112", "03023323113", "03023323120", "03023323121", "03023323122", "03023323123", "03023323130", "03023323131", "03023323132", "03023323133", "03023323201", "03023323210", "03023323211", "03023323300", "03023323301", "03023323302", "03023323303", "03023323310", "03023323311", "03023323312", "03023323313", "03023330222", "03023330223", "03023332000", "03023332001", "03023332002", "03023332003", "03023332010", "03023332012", "03023332020", "03023332021", "03023332022", "03023332023", "03023332030", "03023332032", "03023332201", "03023332202", "03023332203", "03023332212", "03023332220", "03023332221", "03131010323", "03131010332", "03131012110", "03131013121", "03131013123", "03131013130", "03131013131", "03131013132", "03131013133", "03131013211", "03131013213", "03131013300", "03131013301", "03131013302", "03131013310", "03131013311", "03131023011", "03131023100", "03131100121", "03131100123", "03131100130", "03131100132", "03131102020", "03131102022", "03131103110", "03131103111", "03131103112", "03131103113", "03131110332", "03131110333", "03131111222", "03131112110", "03131112111", "03131112112", "03131112113", "03131112310", "03131112311", "03131113000", "03131113002", "03131113020", "03131113021", "03131113022", "03131113023", "03131113200", "03131113201", "03131113321", "03131113323", "03131121111", "03131121113", "03131121130", "03131121131", "03131121132", "03131121133", "03131121310", "03131121311", "03131121312", "03131121313", "03131121322", "03131123011", "03131123100", "03131123110", "03131123111", "03131123112", "03131123113", "03131123313", "03131123331", "03131130000", "03131130002", "03131130022", "03131130023", "03131130031", "03131130032", "03131130033", "03131130112", "03131130113", "03131130121", "03131130123", "03131130130", "03131130131", "03131130132", "03131130133", "03131130200", "03131130201", "03131130210", "03131130211", "03131130301", "03131130303", "03131130310", "03131130311", "03131130312", "03131130313", "03131130331", "03131130333", "03131131003", "03131131012", "03131131020", "03131131021", "03131131022", "03131131030", "03131131123", "03131131132", "03131131200", "03131131202", "03131131203", "03131131211", "03131131212", "03131131213", "03131131220", "03131131221", "03131131222", "03131131230", "03131131231", "03131131300", "03131131301", "03131131302", "03131131310", "03131131313", "03131131320", "03131131331", "03131132000", "03131132002", "03131132003", "03131132011", "03131132012", "03131132021", "03131132030", "03131132031", "03131132032", "03131132033", "03131132100", "03131132111", "03131132113", "03131132120", "03131132122", "03131132132", "03131132133", "03131132202", "03131132203", "03131132211", "03131132212", "03131132213", "03131132220", "03131132221", "03131132230", "03131132231", "03131132233", "03131132300", "03131132302", "03131132310", "03131132311", "03131132320", "03131132321", "03131132322", "03131132323", "03131132330", "03131132332", "03131132333", "03131133000", "03131133002", "03131133003", "03131133020", "03131133021", "03131133022", "03131133023", "03131133030", "03131133032", "03131133100", "03131133101", "03131133102", "03131133103", "03131133200", "03131133201", "03131133203", "03131133210", "03131133212", "03131133220", "03131133221", "03131133222", "03131133223", "03131133230", "03131133232", "03131133323", "03131133330", "03131133332", "03131301222", "03131301223", "03131301232", "03131301323", "03131301332", "03131301333", "03131303000", "03131303001", "03131303010", "03131303101", "03131303102", "03131303103", "03131303110", "03131303111", "03131303112", "03131303120", "03131303121", "03131303130", "03131303131", "03131303233", "03131303312", "03131303322", "03131310010", "03131310011", "03131310012", "03131310013", "03131310022", "03131310031", "03131310033", "03131310100", "03131310101", "03131310102", "03131310103", "03131310110", "03131310111", "03131310112", "03131310113", "03131310120", "03131310121", "03131310130", "03131310131", "03131310200", "03131310212", "03131310213", "03131310230", "03131310231", "03131310302", "03131310323", "03131310332", "03131311000", "03131311001", "03131311002", "03131311003", "03131311011", "03131311012", "03131311013", "03131311030", "03131311031", "03131311032", "03131311033", "03131311100", "03131311102", "03131311113", "03131311120", "03131311121", "03131311122", "03131311123", "03131311131", "03131311210", "03131311211", "03131311213", "03131311220", "03131311221", "03131311222", "03131311223", "03131311231", "03131311232", "03131311233", "03131311300", "03131311301", "03131311302", "03131311303", "03131311310", "03131311312", "03131311320", "03131311321", "03131311322", "03131311323", "03131311330", "03131311331", "03131311332", "03131311333", "03131312000", "03131312001", "03131312002", "03131312003", "03131312010", "03131312012", "03131312013", "03131312020", "03131312021", "03131312030", "03131312031", "03131312101", "03131312103", "03131312110", "03131312112", "03131312312", "03131312313", "03131312322", "03131312323", "03131312330", "03131312331", "03131312332", "03131312333", "03131313001", "03131313002", "03131313003", "03131313010", "03131313011", "03131313012", "03131313013", "03131313020", "03131313021", "03131313023", "03131313030", "03131313031", "03131313032", "03131313033", "03131313100", "03131313101", "03131313102", "03131313103", "03131313110", "03131313111", "03131313112", "03131313113", "03131313120", "03131313121", "03131313122", "03131313123", "03131313130", "03131313131", "03131313132", "03131313133", "03131313202", "03131313203", "03131313210", "03131313211", "03131313212", "03131313220", "03131313221", "03131313222", "03131313223", "03131313230", "03131313232", "03131313233", "03131313321", "03131313322", "03131313323", "03131313330", "03131313331", "03131313332", "03131313333", "03131320131", "03131320133", "03131321011", "03131321013", "03131321020", "03131321021", "03131321022", "03131321023", "03131321031", "03131321033", "03131321100", "03131321102", "03131321120", "03131330001", "03131330003", "03131330010", "03131330012", "03131330100", "03131330101", "03131330110", "03133113232", "03133113233", "03133131010", "03133131011", "03133131222", "03133131223", "03133131303", "03133131321", "03133213132", "03133213133", "03133213310", "03133213311", "03133213312", "03133213313", "03133213330", "03133213331", "03133221113", "03133221310", "03133221311", "03133221312", "03133221313", "03133221321", "03133221330", "03133221331", "03133221332", "03133223133", "03133223311", "03133223312", "03133223313", "03133223330", "03133223331", "03133223332", "03133223333", "03133230002", "03133230100", "03133230101", "03133230212", "03133230213", "03133230231", "03133231032", "03133231133", "03133231210", "03133232022", "03133232200", "03133232201", "03133233133", "03133233311", "03133233333", "03133302200", "03133303201", "03133303202", "03133303203", "03133303210", "03133303212", "03133303220", "03133303221", "03133311102", "03133311103", "03133311120", "03133311121", "03133312303", "03133312312", "03133312321", "03133320022", "03133320332", "03133321212", "03133321213", "03133322110", "03133322120", "03133322121", "03133322122", "03133322123", "03133322222", "03133323222", "03133330112", "03133330130", "03133333021", "03133333023", "03133333030", "03133333031", "03133333032", "03133333033", "03200000320", "03200000321", "03200000322", "03200000323", "03200000330", "03200000331", "03200000332", "03200000333", "03200002100", "03200002101", "03200002102", "03200002103", "03200002110", "03200002111", "03200002112", "03200002113", "03200002120", "03200002121", "03200002130", "03200002131", "03200002220", "03200002222", "03200003002", "03200003003", "03200003012", "03200003013", "03200003020", "03200003021", "03200003022", "03200003023", "03200003030", "03200003031", "03200003032", "03200003033", "03200003200", "03200003201", "03200003210", "03200003211", "03200010232", "03200010233", "03200010302", "03200010303", "03200010312", "03200010313", "03200010320", "03200010321", "03200010322", "03200010323", "03200010330", "03200010331", "03200010332", "03200010333", "03200011010", "03200011011", "03200011100", "03200011101", "03200011201", "03200011203", "03200011210", "03200011211", "03200011212", "03200011213", "03200011220", "03200011221", "03200011223", "03200011230", "03200011231", "03200011232", "03200011233", "03200011322", "03200011323", "03200011333", "03200012010", "03200012011", "03200012012", "03200012013", "03200012030", "03200012031", "03200012100", "03200012101", "03200012102", "03200012103", "03200012110", "03200012111", "03200012112", "03200012113", "03200012120", "03200012121", "03200012122", "03200012123", "03200012130", "03200012131", "03200012132", "03200012133", "03200012301", "03200012310", "03200012311", "03200013011", "03200013013", "03200013100", "03200013101", "03200013102", "03200013103", "03200013111", "03200013113", "03200013121", "03200013123", "03200013130", "03200013131", "03200013132", "03200013133", "03200013301", "03200013303", "03200013310", "03200013311", "03200013312", "03200013313", "03200013321", "03200013330", "03200013331", "03200013332", "03200013333", "03200020000", "03200020001", "03200020002", "03200020003", "03200020010", "03200020012", "03200021301", "03200021303", "03200021310", "03200021312", "03200021321", "03200021323", "03200021330", "03200023113", "03200023130", "03200023131", "03200023132", "03200023133", "03200023311", "03200023313", "03200030113", "03200030130", "03200030131", "03200030132", "03200030133", "03200030310", "03200030311", "03200030312", "03200030313", "03200030331", "03200031002", "03200031003", "03200031012", "03200031020", "03200031021", "03200031022", "03200031023", "03200031030", "03200031032", "03200031110", "03200031111", "03200031200", "03200031201", "03200031202", "03200031203", "03200031210", "03200031212", "03200031220", "03200031310", "03200031311", "03200031312", "03200031313", "03200031321", "03200031323", "03200031330", "03200031331", "03200031332", "03200031333", "03200032002", "03200032020", "03200032021", "03200032022", "03200032023", "03200032200", "03200032201", "03200032202", "03200032203", "03200033110", "03200033111", "03200100221", "03200100222", "03200100223", "03200100230", "03200100231", "03200100232", "03200100233", "03200100311", "03200100312", "03200100313", "03200100320", "03200100322", "03200100323", "03200100330", "03200100331", "03200100332", "03200100333", "03200101202", "03200101220", "03200101221", "03200101222", "03200101223", "03200102000", "03200102001", "03200102002", "03200102003", "03200102010", "03200102011", "03200102012", "03200102013", "03200102020", "03200102021", "03200102022", "03200102023", "03200102030", "03200102031", "03200102032", "03200102100", "03200102101", "03200102102", "03200102103", "03200102110", "03200102111", "03200102112", "03200102113", "03200102120", "03200102121", "03200102122", "03200102123", "03200102130", "03200102131", "03200102132", "03200102133", "03200102200", "03200102201", "03200102202", "03200102203", "03200102210", "03200102212", "03200102220", "03200102221", "03200102222", "03200102223", "03200102230", "03200102232", "03200102300", "03200102301", "03200102303", "03200102310", "03200102311", "03200102312", "03200102313", "03200103000", "03200103001", "03200103002", "03200103003", "03200103020", "03200103021", "03200103022", "03200103023", "03200103200", "03200103201", "03200103202", "03200103203", "03200110010", "03200110011", "03200110100", "03200110101", "03200110110", "03200110111", "03200110112", "03200110113", "03200110121", "03200110130", "03200110131", "03200110132", "03200110133", "03200110310", "03200110311", "03200110312", "03200110313", "03200110323", "03200110330", "03200110331", "03200110332", "03200110333", "03200111000", "03200111001", "03200111002", "03200111003", "03200111010", "03200111012", "03200111020", "03200111021", "03200111022", "03200111023", "03200111030", "03200111031", "03200111032", "03200111033", "03200111122", "03200111123", "03200111132", "03200111200", "03200111201", "03200111202", "03200111203", "03200111210", "03200111211", "03200111212", "03200111213", "03200111220", "03200111221", "03200111222", "03200111223", "03200111230", "03200111231", "03200111300", "03200111301", "03200111302", "03200111303", "03200111310", "03200111312", "03200111320", "03200111321", "03200111322", "03200111323", "03200111330", "03200112101", "03200112103", "03200112110", "03200112111", "03200112112", "03200112113", "03200113000", "03200113001", "03200113002", "03200113003", "03200120000", "03200120001", "03200120010", "03200120120", "03200120121", "03200120122", "03200120123", "03200120132", "03200120200", "03200120202", "03200120211", "03200120213", "03200120220", "03200120222", "03200120300", "03200120301", "03200120302", "03200120303", "03200120310", "03200120311", "03200120312", "03200120320", "03200120321", "03200121113", "03200121121", "03200121123", "03200121130", "03200121131", "03200121132", "03200121133", "03200121310", "03200121311", "03200121312", "03200121313", "03200130020", "03200130022", "03200130123", "03200130200", "03200130201", "03200130202", "03200130203", "03200130301", "03200130310", "03200133020", "03200133021", "03200133022", "03200133023", "03200201223", "03200201232", "03200201233", "03200202000", "03200202001", "03200202002", "03200202003", "03200202010", "03200202012", "03200202020", "03200202021", "03200202022", "03200202023", "03200202030", "03200202031", "03200202032", "03200202033", "03200202120", "03200202121", "03200202122", "03200202123", "03200202130", "03200202131", "03200202132", "03200202133", "03200202200", "03200202201", "03200202202", "03200202203", "03200202210", "03200202211", "03200202212", "03200202213", "03200202220", "03200202221", "03200202222", "03200202223", "03200202230", "03200202231", "03200202232", "03200202233", "03200202300", "03200202301", "03200202302", "03200202303", "03200202310", "03200202311", "03200202312", "03200202313", "03200202320", "03200202321", "03200202322", "03200202323", "03200202330", "03200202331", "03200202332", "03200202333", "03200203001", "03200203003", "03200203010", "03200203011", "03200203012", "03200203013", "03200203020", "03200203021", "03200203022", "03200203023", "03200203030", "03200203031", "03200203032", "03200203033", "03200203200", "03200203202", "03200203203", "03200203212", "03200203220", "03200203221", "03200203222", "03200203223", "03200203230", "03200203232", "03200203233", "03200203322", "03200203323", "03200203332", "03200203333", "03200210002", "03200210003", "03200210012", "03200210013", "03200210020", "03200210021", "03200210022", "03200210023", "03200210030", "03200210031", "03200210032", "03200210033", "03200210120", "03200210122", "03200210200", "03200210201", "03200210210", "03200210211", "03200210212", "03200210213", "03200210230", "03200210231", "03200210232", "03200210233", "03200210300", "03200210301", "03200210302", "03200210303", "03200210310", "03200210320", "03200210321", "03200210322", "03200210323", "03200211131", "03200211133", "03200211233", "03200211301", "03200211303", "03200211310", "03200211311", "03200211312", "03200211313", "03200211321", "03200211322", "03200211330", "03200211331", "03200211332", "03200212010", "03200212011", "03200212013", "03200212030", "03200212031", "03200212032", "03200212033", "03200212100", "03200212101", "03200212102", "03200212120", "03200212121", "03200212122", "03200212123", "03200212202", "03200212203", "03200212210", "03200212211", "03200212212", "03200212213", "03200212220", "03200212221", "03200212222", "03200212223", "03200212230", "03200212231", "03200212232", "03200212233", "03200212300", "03200212301", "03200212302", "03200212303", "03200212312", "03200212313", "03200212320", "03200212321", "03200212322", "03200212323", "03200212330", "03200212331", "03200212332", "03200212333", "03200213003", "03200213010", "03200213011", "03200213012", "03200213013", "03200213021", "03200213022", "03200213023", "03200213030", "03200213031", "03200213032", "03200213033", "03200213100", "03200213101", "03200213102", "03200213103", "03200213110", "03200213112", "03200213113", "03200213120", "03200213121", "03200213122", "03200213123", "03200213130", "03200213131", "03200213132", "03200213133", "03200213200", "03200213201", "03200213202", "03200213203", "03200213210", "03200213211", "03200213220", "03200213221", "03200213222", "03200213223", "03200213300", "03200220000", "03200220001", "03200220002", "03200220003", "03200220010", "03200220011", "03200220012", "03200220013", "03200220020", "03200220021", "03200220022", "03200220023", "03200220030", "03200220031", "03200220032", "03200220033", "03200220100", "03200220101", "03200220102", "03200220103", "03200220110", "03200220111", "03200220112", "03200220113", "03200220120", "03200220121", "03200220122", "03200220123", "03200220130", "03200220131", "03200220132", "03200220133", "03200220200", "03200220201", "03200220210", "03200220211", "03200220213", "03200220230", "03200220231", "03200220232", "03200220233", "03200220300", "03200220301", "03200220302", "03200220303", "03200220310", "03200220311", "03200220312", "03200220313", "03200220320", "03200220321", "03200220322", "03200220323", "03200220330", "03200220331", "03200220332", "03200220333", "03200221000", "03200221001", "03200221002", "03200221003", "03200221010", "03200221011", "03200221012", "03200221013", "03200221020", "03200221021", "03200221022", "03200221023", "03200221030", "03200221031", "03200221032", "03200221033", "03200221100", "03200221101", "03200221102", "03200221103", "03200221110", "03200221111", "03200221112", "03200221113", "03200221120", "03200221121", "03200221122", "03200221123", "03200221130", "03200221131", "03200221132", "03200221133", "03200221200", "03200221201", "03200221202", "03200221203", "03200221210", "03200221211", "03200221212", "03200221213", "03200221220", "03200221221", "03200221222", "03200221223", "03200221300", "03200221301", "03200221302", "03200221303", "03200221310", "03200221311", "03200221312", "03200221313", "03200221331", "03200222000", "03200222001", "03200222002", "03200222003", "03200222010", "03200222011", "03200222012", "03200222013", "03200222021", "03200222023", "03200222030", "03200222031", "03200222032", "03200222033", "03200222100", "03200222101", "03200222102", "03200222103", "03200222110", "03200222111", "03200222112", "03200222113", "03200222120", "03200222121", "03200222122", "03200222123", "03200222130", "03200222131", "03200222132", "03200222133", "03200222200", "03200222201", "03200222202", "03200222203", "03200222210", "03200222211", "03200222213", "03200222220", "03200222221", "03200222222", "03200222231", "03200222300", "03200222301", "03200222302", "03200222303", "03200222310", "03200222311", "03200222312", "03200222320", "03200222321", "03200222330", "03200223000", "03200223001", "03200223002", "03200223003", "03200223020", "03200223021", "03200223022", "03200223023", "03200223200", "03200223201", "03200230000", "03200230001", "03200230002", "03200230010", "03200230011", "03200230020", "03200230021", "03200230022", "03200230023", "03200230030", "03200230032", "03200230033", "03200230100", "03200230101", "03200230102", "03200230103", "03200230110", "03200230111", "03200230112", "03200230113", "03200230120", "03200230121", "03200230122", "03200230123", "03200230130", "03200230131", "03200230132", "03200230133", "03200230200", "03200230201", "03200230202", "03200230203", "03200230210", "03200230211", "03200230212", "03200230213", "03200230220", "03200230221", "03200230222", "03200230223", "03200230230", "03200230231", "03200230232", "03200230300", "03200230302", "03200231000", "03200231002", "03200231020", "03200231103", "03200231112", "03200231113", "03200231121", "03200231123", "03200231130", "03200231131", "03200231132", "03200231133", "03200231301", "03200231303", "03200231310", "03200231311", "03200231312", "03200231313", "03200231331", "03200232120", "03200232121", "03200232122", "03200232123", "03200232130", "03200232131", "03200232132", "03200232133", "03200232211", "03200232213", "03200232300", "03200232301", "03200232302", "03200232303", "03200232310", "03200232311", "03200232312", "03200232313", "03200233033", "03200233122", "03200233123", "03200233132", "03200233211", "03200233300", "03200233301", "03200233302", "03200233303", "03200233310", "03200300003", "03200300012", "03200300020", "03200300021", "03200300022", "03200300023", "03200300030", "03200300031", "03200300032", "03200300033", "03200300120", "03200300122", "03200300200", "03200300201", "03200300202", "03200300203", "03200300210", "03200300211", "03200300212", "03200300213", "03200300220", "03200300221", "03200300222", "03200300223", "03200300230", "03200300231", "03200300232", "03200300233", "03200300300", "03200300302", "03200300320", "03200300322", "03200301203", "03200301212", "03200301221", "03200301222", "03200301223", "03200301230", "03200301231", "03200301232", "03200301233", "03200301320", "03200301322", "03200302001", "03200302002", "03200302003", "03200302010", "03200302011", "03200302012", "03200302013", "03200302020", "03200302021", "03200302022", "03200302023", "03200302030", "03200302031", "03200302032", "03200302100", "03200302102", "03200302222", "03200302223", "03200302232", "03200303001", "03200303010", "03200303011", "03200303023", "03200303032", "03200303033", "03200303102", "03200303103", "03200303112", "03200303120", "03200303121", "03200303122", "03200303123", "03200303130", "03200303132", "03200303133", "03200303201", "03200303210", "03200303211", "03200303212", "03200303213", "03200303300", "03200303301", "03200303302", "03200303303", "03200303310", "03200303311", "03200303312", "03200303321", "03200303330", "03200310123", "03200310130", "03200310131", "03200310132", "03200310133", "03200310233", "03200310301", "03200310310", "03200310311", "03200310322", "03200310323", "03200310332", "03200310333", "03200311020", "03200311021", "03200311022", "03200311023", "03200311030", "03200311031", "03200311032", "03200311033", "03200311120", "03200311121", "03200311122", "03200311123", "03200311130", "03200311131", "03200311132", "03200311133", "03200311200", "03200311201", "03200311203", "03200311210", "03200311211", "03200311212", "03200311213", "03200311300", "03200311301", "03200311302", "03200311303", "03200311310", "03200311311", "03200311312", "03200311313", "03200311330", "03200311331", "03200311332", "03200311333", "03200312000", "03200312001", "03200312002", "03200312003", "03200312010", "03200312011", "03200312012", "03200312013", "03200312021", "03200312030", "03200312031", "03200312032", "03200312033", "03200312100", "03200312101", "03200312102", "03200312103", "03200312110", "03200312111", "03200312112", "03200312113", "03200312120", "03200312121", "03200312122", "03200312123", "03200312130", "03200312131", "03200312132", "03200312133", "03200312300", "03200312301", "03200312310", "03200312311", "03200320000", "03200320001", "03200320002", "03200320003", "03200320010", "03200320012", "03200320013", "03200320020", "03200320021", "03200320022", "03200320023", "03200320030", "03200320031", "03200320032", "03200320033", "03200320102", "03200320103", "03200320112", "03200320120", "03200320121", "03200320123", "03200320130", "03200320132", "03200320200", "03200320201", "03200320202", "03200320203", "03200320210", "03200320211", "03200320212", "03200320213", "03200320220", "03200320230", "03200320231", "03200320300", "03200320302", "03200321131", "03200321133", "03200321301", "03200321302", "03200321303", "03200321312", "03200321320", "03200321321", "03200321322", "03200321323", "03200321330", "03200321332", "03200322012", "03200322013", "03200322030", "03200322031", "03200322033", "03200322102", "03200322103", "03200322120", "03200322121", "03200322122", "03200322211", "03200322300", "03200322301", "03200330000", "03200330001", "03200330002", "03200330003", "03200330010", "03200330011", "03200330012", "03200330013", "03200330020", "03200330021", "03200330022", "03200330023", "03200330030", "03200330031", "03200330032", "03200330033", "03200330100", "03200330102", "03200330103", "03200330120", "03200330121", "03200330122", "03200330123", "03200330200", "03200330201", "03200330210", "03200330211", "03200331132", "03200331133", "03200331310", "03200331311", "03200332110", "03200332111", "03200332112", "03200332113", "03200332131", "03200332133", "03200332203", "03200332212", "03200332220", "03200332221", "03200332222", "03200332223", "03200332230", "03200332231", "03200332232", "03200332233", "03200332302", "03200332303", "03200332320", "03200332321", "03200332322", "03200333000", "03200333001", "03200333002", "03200333003", "03200333012", "03200333020", "03200333021", "03200333022", "03200333023", "03200333030", "03201000333", "03201001021", "03201001023", "03201001030", "03201001031", "03201001032", "03201001033", "03201001110", "03201001111", "03201001120", "03201001122", "03201001201", "03201001203", "03201001210", "03201001211", "03201001212", "03201001213", "03201001220", "03201001221", "03201001222", "03201001223", "03201001230", "03201001231", "03201001232", "03201001233", "03201001300", "03201001301", "03201001302", "03201001303", "03201001310", "03201001311", "03201001312", "03201001313", "03201001320", "03201001321", "03201001322", "03201001323", "03201001330", "03201001331", "03201001332", "03201001333", "03201002111", "03201002113", "03201002303", "03201002311", "03201002312", "03201002313", "03201002321", "03201002330", "03201002331", "03201002332", "03201002333", "03201003000", "03201003001", "03201003002", "03201003003", "03201003010", "03201003011", "03201003012", "03201003013", "03201003022", "03201003023", "03201003030", "03201003031", "03201003032", "03201003033", "03201003100", "03201003101", "03201003102", "03201003103", "03201003110", "03201003111", "03201003112", "03201003113", "03201003120", "03201003121", "03201003122", "03201003123", "03201003130", "03201003131", "03201003132", "03201003133", "03201003200", "03201003201", "03201003202", "03201003203", "03201003210", "03201003211", "03201003212", "03201003213", "03201003220", "03201003221", "03201003222", "03201003223", "03201003230", "03201003231", "03201003232", "03201003233", "03201003300", "03201003301", "03201003302", "03201003303", "03201003310", "03201003311", "03201003312", "03201003320", "03201003321", "03201003322", "03201003323", "03201010000", "03201010001", "03201010003", "03201010010", "03201010011", "03201010012", "03201010013", "03201010030", "03201010031", "03201010032", "03201010033", "03201010100", "03201010101", "03201010102", "03201010103", "03201010110", "03201010111", "03201010112", "03201010113", "03201010120", "03201010121", "03201010122", "03201010123", "03201010130", "03201010131", "03201010132", "03201010133", "03201010201", "03201010202", "03201010203", "03201010210", "03201010211", "03201010212", "03201010213", "03201010220", "03201010221", "03201010222", "03201010223", "03201010230", "03201010231", "03201010232", "03201010233", "03201010300", "03201010301", "03201010302", "03201010303", "03201010310", "03201010311", "03201010312", "03201010313", "03201010320", "03201010321", "03201010322", "03201010323", "03201010330", "03201010331", "03201010332", "03201010333", "03201011000", "03201011001", "03201011002", "03201011003", "03201011010", "03201011011", "03201011012", "03201011013", "03201011020", "03201011021", "03201011022", "03201011023", "03201011030", "03201011031", "03201011032", "03201011033", "03201011100", "03201011101", "03201011102", "03201011103", "03201011110", "03201011111", "03201011112", "03201011113", "03201011120", "03201011121", "03201011122", "03201011123", "03201011130", "03201011131", "03201011132", "03201011200", "03201011201", "03201011202", "03201011203", "03201011210", "03201011211", "03201011212", "03201011213", "03201011220", "03201011221", "03201011222", "03201011223", "03201011230", "03201011231", "03201011232", "03201012000", "03201012001", "03201012002", "03201012003", "03201012010", "03201012011", "03201012012", "03201012013", "03201012020", "03201012021", "03201012022", "03201012023", "03201012030", "03201012031", "03201012032", "03201012033", "03201012100", "03201012101", "03201012102", "03201012103", "03201012110", "03201012111", "03201012112", "03201012113", "03201012120", "03201012121", "03201012122", "03201012123", "03201012130", "03201012131", "03201012132", "03201012133", "03201012200", "03201012201", "03201012210", "03201012211", "03201012213", "03201012300", "03201012301", "03201012302", "03201012303", "03201012310", "03201012311", "03201012312", "03201012313", "03201012321", "03201012323", "03201012330", "03201012331", "03201012332", "03201013000", "03201013001", "03201013002", "03201013003", "03201013010", "03201013012", "03201013020", "03201013021", "03201013022", "03201013023", "03201013030", "03201013200", "03201013201", "03201020110", "03201020111", "03201020112", "03201020113", "03201020132", "03201020133", "03201020332", "03201020333", "03201021000", "03201021001", "03201021002", "03201021003", "03201021010", "03201021011", "03201021012", "03201021013", "03201021031", "03201021100", "03201021101", "03201021102", "03201022110", "03201022111", "03201022112", "03201022113", "03201022130", "03201022131", "03201023000", "03201023002", "03201023003", "03201023020", "03201023021", "03201023033", "03201023122", "03201023123", "03201023132", "03201023211", "03201023230", "03201023231", "03201023232", "03201023233", "03201023300", "03201023301", "03201023302", "03201023303", "03201023310", "03201023312", "03201023313", "03201023320", "03201023321", "03201023322", "03201023323", "03201023330", "03201023331", "03201023332", "03201023333", "03201030031", "03201030033", "03201030100", "03201030101", "03201030102", "03201030103", "03201030120", "03201030121", "03201030122", "03201030123", "03201032202", "03201032220", "03201032222", "03201100000", "03201100001", "03201100002", "03201100003", "03201100010", "03201100011", "03201100012", "03201100013", "03201100020", "03201100021", "03201100100", "03201100101", "03201100102", "03201100110", "03201200020", "03201200022", "03201200023", "03201200200", "03201200201", "03201200202", "03201200203", "03201200210", "03201200211", "03201200212", "03201200213", "03201200220", "03201200221", "03201200222", "03201200223", "03201200230", "03201200231", "03201200233", "03201200300", "03201200301", "03201200302", "03201200303", "03201200312", "03201200320", "03201200321", "03201200322", "03201200323", "03201200330", "03201200332", "03201201010", "03201201011", "03201201100", "03201201101", "03201201110", "03201201111", "03201210000", "03201210002", "03201210020", "03201210021", "03201210022", "03201210023", "03201210201", "03201210203", "03201210210", "03201210212", "03201210230", "03201210232", "03201212002", "03201212003", "03201212010", "03201212012", "03201220022", "03201220200", "03202000003", "03202000012", "03202000013", "03202000021", "03202000023", "03202000030", "03202000031", "03202000032", "03202000033", "03202000100", "03202000101", "03202000102", "03202000103", "03202000111", "03202000112", "03202000113", "03202000120", "03202000121", "03202000122", "03202000123", "03202000130", "03202000131", "03202000132", "03202000201", "03202000210", "03202000211", "03202000212", "03202000213", "03202000221", "03202000222", "03202000223", "03202000230", "03202000231", "03202000232", "03202000233", "03202000300", "03202000301", "03202000302", "03202000303", "03202000310", "03202000311", "03202000312", "03202000313", "03202000320", "03202000321", "03202000322", "03202000323", "03202000330", "03202000331", "03202000332", "03202000333", "03202001002", "03202001020", "03202001022", "03202001200", "03202001201", "03202001202", "03202001203", "03202001212", "03202001213", "03202001220", "03202001221", "03202001222", "03202001223", "03202001230", "03202001231", "03202001232", "03202001233", "03202001302", "03202001320", "03202001321", "03202001322", "03202001323", "03202001330", "03202001331", "03202001332", "03202001333", "03202002000", "03202002001", "03202002002", "03202002003", "03202002010", "03202002011", "03202002012", "03202002013", "03202002021", "03202002022", "03202002023", "03202002030", "03202002031", "03202002032", "03202002033", "03202002100", "03202002101", "03202002102", "03202002103", "03202002110", "03202002111", "03202002112", "03202002113", "03202002120", "03202002121", "03202002122", "03202002123", "03202002130", "03202002131", "03202002200", "03202002201", "03202002202", "03202002210", "03202002211", "03202002220", "03202002222", "03202003000", "03202003001", "03202003002", "03202003003", "03202003010", "03202003011", "03202003012", "03202003013", "03202003020", "03202003021", "03202003023", "03202003030", "03202003032", "03202003033", "03202003101", "03202003110", "03202003111", "03202003112", "03202003113", "03202003121", "03202003123", "03202003130", "03202003131", "03202003132", "03202003133", "03202010220", "03202010221", "03202010222", "03202010223", "03202010230", "03202010232", "03202010333", "03202011222", "03202011223", "03202011232", "03202012000", "03202012001", "03202012002", "03202012003", "03202012010", "03202012012", "03202012020", "03202012021", "03202012022", "03202012030", "03202012111", "03202012113", "03202012130", "03202012131", "03202013000", "03202013001", "03202013002", "03202013003", "03202013010", "03202013012", "03202013020", "03202013021", "03202013111", "03202013112", "03202013113", "03202013121", "03202013123", "03202013130", "03202013131", "03202013132", "03202013133", "03202020000", "03202101311", "03202101313", "03202101323", "03202101332", "03202101333", "03202102000", "03202102001", "03202102002", "03202102003", "03202102010", "03202102012", "03202102020", "03202102021", "03202102022", "03202102023", "03202102030", "03202102032", "03202102331", "03202102333", "03202103101", "03202103103", "03202103110", "03202103111", "03202103112", "03202103113", "03202103121", "03202103122", "03202103123", "03202103130", "03202103131", "03202103132", "03202103133", "03202103202", "03202103203", "03202103212", "03202103213", "03202103220", "03202103221", "03202103222", "03202103223", "03202103230", "03202103231", "03202103232", "03202103233", "03202103301", "03202103302", "03202103310", "03202103311", "03202103312", "03202103313", "03202103320", "03202103321", "03202103322", "03202103323", "03202110001", "03202110003", "03202110010", "03202110011", "03202110012", "03202110013", "03202110100", "03202110200", "03202110201", "03202110202", "03202110203", "03202110220", "03202112000", "03202112002", "03202112003", "03202112020", "03202112021", "03202112022", "03202112023", "03202112200", "03202112201", "03202121001", "03202121010", "03202121011", "03202121023", "03202121032", "03202121033", "03202121100", "03202121101", "03202121102", "03202121111", "03202121113", "03202121201", "03202121203", "03202121210", "03202121211", "03202121212", "03202121213", "03202121300", "03202121302", "03202121311", "03202121313", "03202121323", "03202121331", "03202121332", "03202121333", "03202123000", "03202123001", "03202123002", "03202123003", "03202123010", "03202123011", "03202123012", "03202123013", "03202123020", "03202123021", "03202123022", "03202123023", "03202123030", "03202123031", "03202123032", "03202123033", "03202123100", "03202123101", "03202123102", "03202123103", "03202123110", "03202123111", "03202123112", "03202123113", "03202123120", "03202123121", "03202123122", "03202123123", "03202123130", "03202123131", "03202123132", "03202123133", "03202123201", "03202123210", "03202123211", "03202123212", "03202123213", "03202123300", "03202123301", "03202123310", "03202123311", "03202130000", "03202130002", "03202130003", "03202130010", "03202130012", "03202130013", "03202130020", "03202130021", "03202130022", "03202130023", "03202130030", "03202130031", "03202130032", "03202130033", "03202130122", "03202130200", "03202130201", "03202130202", "03202130203", "03202130210", "03202130211", "03202130212", "03202130213", "03202130220", "03202130221", "03202130222", "03202130223", "03202130230", "03202130231", "03202130232", "03202130233", "03202130300", "03202130302", "03202130320", "03202130321", "03202130322", "03202130323", "03202132000", "03202132001", "03202132002", "03202132003", "03202132010", "03202132011", "03202132012", "03202132013", "03202132020", "03202132021", "03202132022", "03202132023", "03202132030", "03202132031", "03202132032", "03202132033", "03202132100", "03202132101", "03202132102", "03202132103", "03202132112", "03202132120", "03202132121", "03202132122", "03202132123", "03202132130", "03202132132", "03202132133", "03202132200", "03202132201", "03202132210", "03202132211", "03202132300", "03202132301", "03202132302", "03202132303", "03202132310", "03202132311", "03202132312", "03202132313", "03202301011", "03202301013", "03202301031", "03202301100", "03202301102", "03202301103", "03202301112", "03202301113", "03202301120", "03202301121", "03202301122", "03202301123", "03202301130", "03202301131", "03202301132", "03202301133", "03202301300", "03202301301", "03202301310", "03202301311", "03202310013", "03202310020", "03202310022", "03202310031", "03202310033", "03202310101", "03202310102", "03202310103", "03202310110", "03202310111", "03202310112", "03202310113", "03202310120", "03202310121", "03202310122", "03202310123", "03202310130", "03202310131", "03202310132", "03202310133", "03202310200", "03202310211", "03202310300", "03202310301", "03202310310", "03202310311", "03202310312", "03202310313", "03202310321", "03202310323", "03202310330", "03202310331", "03202310332", "03202310333", "03202311000", "03202311002", "03202311020", "03202311022", "03202311200", "03202311202", "03202311220", "03202311222", "03202312100", "03202312101", "03202312102", "03202312103", "03202312110", "03202312111", "03202312112", "03202312113", "03202312121", "03202312123", "03202312130", "03202312131", "03202312132", "03202312133", "03202313000", "03202313002", "03311001130", "03311001131", "03311001132", "03311001133", "03311001313", "03311001331", "03311003101", "03311003103", "03311003110", "03311003112", "03311003232", "03311003233", "03311003322", "03311003323", "03311010202", "03311010220", "03311011111", "03311013033", "03311013233", "03311013322", "03311021001", "03311021003", "03311021010", "03311021011", "03311021012", "03311021013", "03311021100", "03311021102", "03311021103", "03311021121", "03311032210", "03311032211", "03311032212", "03311032213", "03311033103", "03311033112", "03311033121", "03311033123", "03311033130", "03311033131", "03311033132", "03311100000", "03311100121", "03311100322", "03311101000", "03311101020", "03311101021", "03311101023", "03311101030", "03311101031", "03311101032", "03311101033", "03311101120", "03311101121", "03311101122", "03311101123", "03311101130", "03311101201", "03311101203", "03311101210", "03311101211", "03311101212", "03311101213", "03311101230", "03311101231", "03311101300", "03311101301", "03311103000", "03311103001", "03311103221", "03311103223", "03311110231", "03311110233", "03311110320", "03311110322", "03311111333", "03311113103", "03311113112", "03311113113", "03311113120", "03311113121", "03311113122", "03311113123", "03311113130", "03311113132", "03311113300", "03311113301", "03311113310", "03311113330", "03311113331", "03311113332", "03311113333", "03311120231", "03311120233", "03311120320", "03311120321", "03311120322", "03311120323", "03311121213", "03311121232", "03311122323", "03311122330", "03311122331", "03311122332", "03311122333", "03311123032", "03311123033", "03311123210", "03311123211", "03311123220", "03311123221", "03311123222", "03311123223", "03311123231", "03311123233", "03311123320", "03311123322", "03311123331", "03311131031", "03311131033", "03311131101", "03311131103", "03311131112", "03311131113", "03311131120", "03311131121", "03311131122", "03311131123", "03311131130", "03311131131", "03311131132", "03311131202", "03311131203", "03311131211", "03311131212", "03311131213", "03311131220", "03311131221", "03311131230", "03311131231", "03311131300", "03311131301", "03311131302", "03311131320", "03311132110", "03311132203", "03311132212", "03311132220", "03311132221", "03311132222", "03311132223", "03311132230", "03311133001", "03311133003", "03311133010", "03311133012", "03311211011", "03311211100", "03311211102", "03311300011", "03311300013", "03311300020", "03311300021", "03311300022", "03311300023", "03311300100", "03311300101", "03311300110", "03312122131", "03312122133", "03312123020", "03312123022", "03312130032", "03312130033", "03312130210", "12000313012", "12000313013", "12000313030", "12000313031", "12000313102", "12001113301", "12001113303", "12001113310", "12001113312", "12001130332", "12001130333", "12001132110", "12001132111", "12001212211", "12001212213", "12001303030", "12001303032", "12001303033", "12001310032", "12001310033", "12001310210", "12001310211", "12001310213", "12001320203", "12001320212", "12001320213", "12001320221", "12001320230", "12001320231", "12002013303", "12002013312", "12002013321", "12002013330", "12002013332", "12002122202", "12002122220", "12002122222", "12002131010", "12002131012", "12002131031", "12002131033", "12002131120", "12002131121", "12002131122", "12002131123", "12002131130", "12002131131", "12002131132", "12002131133", "12002131202", "12002131203", "12002131211", "12002131212", "12002131221", "12002131230", "12002131300", "12002131301", "12002131303", "12002132132", "12002132133", "12002132310", "12002132311", "12002132312", "12002132313", "12002133123", "12002133130", "12002133131", "12002133132", "12002133133", "12002133310", "12002300000", "12002330131", "12002330133", "12002331020", "12002331021", "12002331022", "12002331023", "12002332032", "12002332033", "12002332123", "12002332132", "12002332210", "12002332211", "12002332301", "12002332310", "12002332331", "12002332333", "12002333023", "12002333032", "12002333201", "12002333210", "12002333220", "12002333222", "12003013022", "12003013023", "12003013032", "12003013200", "12003013201", "12003013210", "12003023102", "12003023103", "12003031321", "12003031323", "12003031330", "12003031332", "12003032130", "12003032132", "12003033103", "12003033112", "12003033121", "12003033130", "12003102021", "12003102023", "12003102030", "12003102032", "12003111013", "12003111102", "12003111120", "12003113301", "12003113303", "12003113310", "12003113311", "12003113312", "12003113313", "12003120033", "12003120122", "12003120211", "12003120213", "12003120300", "12003120302", "12003122033", "12003122101", "12003122103", "12003122110", "12003122111", "12003122112", "12003122113", "12003122121", "12003122122", "12003122123", "12003122130", "12003122131", "12003122132", "12003122133", "12003122211", "12003122300", "12003122310", "12003122311", "12003123002", "12003123020", "12003123022", "12003200211", "12003200213", "12003200300", "12003200302", "12003200303", "12003200312", "12003200321", "12003200330", "12003201132", "12003201133", "12003201310", "12003201311", "12003202032", "12003202033", "12003202122", "12003202123", "12003202210", "12003202211", "12003202300", "12003202301", "12003203022", "12003203023", "12003203032", "12003203133", "12003203200", "12003203201", "12003203210", "12003203311", "12003211013", "12003211031", "12003211033", "12003211102", "12003211120", "12003211122", "12003211200", "12003211201", "12003212020", "12003212021", "12003212022", "12003212023", "12003212200", "12003220103", "12003220112", "12003220121", "12003220130", "12003221220", "12003221221", "12003221222", "12003221223", "12003222311", "12003222312", "12003222313", "12003222321", "12003222323", "12003222330", "12003222331", "12003222332", "12003222333", "12003223200", "12003223202", "12003223220", "12003223222", "12003230033", "12003230122", "12003230211", "12003230300", "12003230302", "12003231302", "12003231320", "12003231321", "12003231322", "12003231323", "12003232202", "12003233022", "12003233023", "12003233200", "12003233201", "12010030022", "12010030023", "12010030200", "12010030201", "12010030202", "12010030203", "12010213322", "12010213323", "12010230223", "12010230232", "12010230233", "12010231100", "12010231101", "12010232001", "12010232010", "12010232011", "12010232012", "12010321022", "12010321023", "12010321032", "12010321200", "12010321201", "12010321210", "12012000101", "12012000103", "12012000110", "12012000111", "12012000112", "12012000113", "12012000130", "12012000131", "12012001000", "12012001002", "12012001020", "12012001230", "12012001231", "12012001232", "12012001233", "12012003233", "12012003303", "12012003312", "12012003313", "12012003320", "12012003321", "12012003322", "12012003323", "12012003330", "12012003331", "12012003332", "12012003333", "12012010221", "12012010222", "12012010223", "12012010230", "12012010232", "12012011331", "12012013200", "12012013201", "12012013202", "12012013203", "12012013220", "12012013221", "12012021011", "12012021013", "12012021100", "12012021101", "12012021102", "12012021103", "12012021110", "12012021111", "12012021112", "12012021113", "12012100202", "12012100203", "12012100220", "12012100221", "12012100222", "12020020202", "12020020220", "12020022312", "12020022313", "12020022330", "12020022331", "12020022332", "12020022333", "12020023202", "12020023220", "12020023221", "12020023222", "12020023223", "12020023230", "12020023232", "12020033213", "12020033230", "12020033231", "12020033320", "12020033321", "12020033332", "12020033333", "12020101131", "12020101133", "12020110020", "12020110022", "12020110101", "12020110103", "12020110110", "12020110112", "12020110113", "12020110121", "12020110123", "12020110130", "12020110131", "12020110132", "12020111030", "12020111031", "12020111032", "12020111033", "12020111210", "12020111211", "12020112103", "12020112112", "12020112121", "12020112130", "12020113203", "12020113212", "12020113221", "12020113223", "12020113230", "12020113232", "12020121222", "12020121223", "12020121303", "12020121312", "12020121321", "12020121330", "12020122000", "12020122001", "12020122002", "12020122003", "12020122012", "12020122013", "12020122030", "12020122031", "12020122100", "12020122101", "12020122102", "12020122103", "12020122121", "12020122123", "12020122232", "12020122233", "12020122302", "12020122303", "12020122311", "12020122312", "12020122313", "12020122321", "12020122323", "12020123000", "12020123001", "12020123112", "12020123113", "12020123130", "12020123131", "12020123223", "12020130020", "12020130021", "12020130023", "12020130202", "12020130203", "12020130220", "12020130221", "12020131000", "12020131001", "12020131002", "12020131003", "12020131120", "12020131121", "12020131122", "12020131123", "12020132003", "12020132012", "12020132020", "12020132021", "12020132022", "12020132023", "12020132030", "12020132031", "12020132032", "12020132033", "12020133220", "12020133221", "12020133222", "12020133223", "12020200002", "12020200003", "12020200020", "12020200021", "12020200022", "12020200023", "12020200132", "12020200133", "12020200220", "12020200221", "12020200222", "12020200223", "12020200230", "12020200231", "12020200232", "12020200233", "12020200302", "12020200303", "12020200310", "12020200311", "12020200322", "12020200330", "12020201001", "12020201010", "12020202000", "12020202001", "12020202002", "12020202003", "12020202010", "12020202011", "12020202012", "12020202013", "12020202020", "12020202021", "12020202022", "12020202023", "12020202030", "12020202031", "12020202032", "12020202033", "12020202100", "12020202101", "12020202102", "12020202113", "12020202120", "12020202121", "12020202122", "12020202123", "12020202130", "12020202131", "12020202201", "12020202223", "12020202230", "12020202231", "12020202232", "12020202233", "12020202300", "12020202301", "12020202303", "12020202310", "12020202311", "12020202312", "12020202320", "12020203002", "12020203020", "12020210133", "12020210313", "12020211022", "12020211023", "12020211032", "12020211033", "12020211101", "12020211103", "12020211110", "12020211111", "12020211112", "12020211121", "12020211122", "12020211123", "12020211130", "12020211131", "12020211132", "12020211133", "12020211200", "12020211201", "12020211202", "12020211203", "12020211210", "12020211211", "12020211212", "12020211213", "12020211220", "12020211221", "12020211230", "12020211231", "12020211232", "12020211233", "12020211300", "12020211301", "12020211311", "12020211331", "12020212022", "12020212023", "12020212032", "12020212121", "12020212123", "12020212130", "12020212132", "12020212133", "12020212210", "12020212223", "12020212230", "12020212231", "12020212232", "12020212233", "12020212300", "12020212301", "12020212302", "12020212303", "12020212311", "12020212312", "12020212313", "12020212330", "12020212331", "12020212333", "12020213000", "12020213001", "12020213002", "12020213003", "12020213010", "12020213011", "12020213022", "12020213023", "12020213110", "12020213111", "12020213112", "12020213113", "12020213130", "12020213131", "12020213200", "12020213201", "12020213202", "12020213203", "12020213212", "12020213213", "12020213220", "12020213221", "12020213222", "12020213223", "12020213230", "12020213231", "12020213232", "12020213233", "12020213312", "12020213313", "12020213330", "12020213331", "12020213333", "12020220001", "12020230010", "12020230011", "12020230012", "12020230013", "12020230111", "12020230113", "12020230130", "12020230131", "12020231000", "12020231001", "12020231002", "12020231020", "12020231021", "12020231022", "12020231023", "12020231030", "12020231032", "12020231110", "12020231111", "12020231112", "12020231113", "12020232310", "12020232311", "12020232312", "12020232313", "12020300010", "12020300011", "12020300012", "12020300013", "12020300021", "12020300022", "12020300023", "12020300030", "12020300031", "12020300032", "12020300101", "12020300103", "12020300110", "12020300112", "12020300113", "12020300130", "12020300131", "12020300200", "12020300201", "12020300202", "12020300203", "12020300210", "12020300220", "12020300221", "12020300303", "12020300312", "12020300321", "12020300323", "12020300330", "12020300332", "12020301003", "12020301012", "12020301013", "12020301021", "12020301030", "12020301031", "12020301102", "12020301103", "12020301112", "12020301120", "12020301121", "12020301130", "12020301210", "12020301211", "12020301212", "12020301213", "12020301300", "12020301302", "12020301320", "12020301321", "12020301322", "12020301323", "12020301333", "12020302012", "12020302013", "12020302030", "12020302031", "12020302202", "12020302203", "12020302212", "12020302220", "12020302221", "12020302222", "12020302230", "12020302231", "12020302232", "12020302233", "12020302321", "12020302330", "12020302332", "12020303032", "12020303033", "12020303103", "12020303112", "12020303121", "12020303130", "12020303211", "12020303303", "12020303320", "12020303321", "12020303322", "12020303323", "12020303330", "12020310012", "12020310013", "12020310022", "12020310023", "12020310030", "12020310110", "12020310111", "12020310112", "12020310113", "12020310123", "12020310201", "12020311000", "12020311002", "12020311032", "12020311033", "12020311100", "12020311101", "12020311210", "12020311211", "12020312121", "12020312123", "12020312130", "12020312132", "12020312221", "12020312223", "12020312230", "12020312232", "12020313000", "12020313002", "12020313310", "12020313312", "12020313313", "12020313330", "12020313331", "12020320000", "12020320002", "12020320003", "12020320010", "12020320011", "12020321113", "12020322101", "12020322103", "12020322110", "12020322212", "12020322213", "12020322230", "12020322231", "12020322311", "12020322313", "12020323022", "12020323023", "12020323033", "12020323113", "12020323122", "12020323131", "12020323132", "12020323133", "12020323200", "12020323201", "12020323202", "12020323310", "12020323311", "12020323331", "12020323333", "12020330001", "12020330002", "12020330003", "12020330112", "12020330113", "12020330130", "12020330131", "12020330212", "12020330213", "12020330231", "12020330320", "12020331222", "12020331323", "12020331332", "12020332020", "12020332022", "12020332023", "12020332200", "12020332201", "12020332220", "12020332222", "12020332223", "12020332233", "12020332302", "12020332320", "12020332322", "12020333000", "12020333112", "12020333121", "12020333123", "12020333130", "12020333131", "12020333132", "12020333133", "12020333310", "12020333311", "12021000100", "12021000101", "12021000102", "12021000103", "12021000110", "12021000111", "12021000112", "12021000113", "12021000120", "12021000121", "12021000122", "12021000123", "12021000130", "12021000131", "12021000300", "12021000301", "12021001000", "12021001002", "12021001003", "12021001010", "12021001011", "12021001012", "12021001013", "12021001020", "12021001021", "12021001030", "12021002322", "12021002323", "12021003203", "12021003212", "12021003221", "12021003223", "12021003230", "12021003232", "12021003301", "12021003303", "12021003310", "12021003321", "12021020100", "12021020101", "12021021011", "12021021100", "12021021213", "12021021231", "12021023231", "12021023233", "12021023320", "12021023322", "12021023323", "12021200021", "12021200023", "12021200030", "12021200032", "12021200110", "12021200111", "12021200112", "12021200113", "12021200210", "12021200302", "12021200303", "12021200312", "12021200320", "12021200321", "12021200330", "12021201001", "12021201003", "12021201010", "12021201011", "12021201012", "12021201100", "12021201101", "12021202011", "12021202013", "12021202100", "12021202102", "12021202103", "12021202112", "12021202113", "12021202120", "12021202121", "12021202123", "12021202130", "12021202131", "12021202132", "12021202202", "12021202203", "12021202212", "12021202220", "12021202221", "12021202230", "12021202320", "12021202321", "12021202322", "12021202323", "12021203221", "12021203222", "12021203223", "12021203301", "12021203303", "12021203310", "12021203312", "12021210010", "12021210012", "12021210221", "12021210223", "12021210230", "12021212123", "12021212300", "12021212301", "12021220102", "12021220103", "12021220120", "12021220121", "12021220221", "12021220223", "12021220230", "12021220232", "12021222320", "12021222321", "12021222322", "12021222323", "12022002211", "12022002213", "12022002300", "12022002302", "12022010312", "12022010313", "12022013302", "12022013303", "12022013320", "12022013321", "12022020023", "12022020032", "12022020201", "12022020210", "12022021003", "12022021021", "12022022112", "12022022113", "12022022130", "12022022131", "12022031013", "12022031031", "12022032003", "12022032012", "12022032021", "12022032030", "12022033013", "12022033030", "12022033031", "12022033033", "12022033102", "12022033120", "12022033122", "12022033200", "12022033201", "12022033202", "12022033203", "12022100012", "12022100013", "12022100030", "12022100031", "12022101031", "12022101033", "12022101110", "12022101112", "12022101113", "12022101120", "12022101122", "12022101123", "12022101221", "12022101223", "12022101230", "12022101232", "12022101300", "12022101301", "12022101322", "12022101333", "12022102130", "12022102131", "12022102132", "12022102133", "12022102212", "12022102221", "12022102230", "12022103003", "12022103012", "12022103021", "12022103030", "12022103031", "12022103032", "12022103033", "12022103100", "12022103210", "12022103211", "12022103311", "12022103313", "12022103332", "12022103333", "12022110001", "12022110011", "12022110012", "12022110013", "12022110030", "12022110031", "12022110033", "12022110100", "12022110101", "12022110102", "12022110103", "12022110111", "12022110112", "12022110113", "12022110120", "12022110121", "12022110122", "12022110130", "12022110131", "12022110222", "12022111000", "12022111001", "12022111002", "12022111200", "12022111201", "12022111301", "12022111303", "12022111310", "12022111312", "12022112023", "12022112031", "12022112032", "12022112033", "12022112120", "12022112121", "12022112122", "12022112130", "12022112200", "12022112201", "12022112202", "12022112203", "12022112210", "12022112220", "12022112221", "12022112300", "12022112301", "12022112302", "12022112303", "12022113012", "12022113030", "12022113331", "12022120123", "12022120230", "12022120231", "12022120232", "12022120233", "12022120300", "12022120301", "12022120310", "12022121001", "12022121003", "12022121010", "12022121012", "12022121110", "12022121111", "12022122023", "12022122201", "12022122210", "12022122220", "12022122222", "12022122223", "12022123123", "12022123132", "12022123232", "12022123233", "12022123301", "12022123310", "12022123313", "12022123322", "12022123331", "12022131333", "12022132000", "12022132001", "12022132002", "12022132003", "12022132012", "12022132013", "12022132021", "12022132030", "12022132031", "12022132032", "12022132102", "12022132120", "12022132122", "12022132123", "12022132130", "12022132131", "12022132132", "12022132133", "12022132202", "12022132210", "12022132211", "12022132212", "12022132213", "12022132220", "12022132230", "12022132231", "12022132233", "12022132300", "12022132301", "12022132302", "12022132320", "12022132321", "12022132322", "12022132330", "12022133023", "12022133032", "12022133111", "12022133201", "12022133210", "12022133222", "12022133223", "12022133323", "12022133332", "12022202133", "12022202311", "12022203022", "12022203200", "12022211011", "12022211013", "12022211100", "12022211102", "12022212123", "12022212132", "12022212212", "12022212230", "12022212301", "12022212310", "12022213002", "12022213003", "12022213010", "12022213011", "12022213012", "12022213013", "12022213020", "12022213021", "12022213030", "12022213032", "12022213310", "12022213311", "12022213312", "12022213313", "12022213330", "12022213331", "12022222031", "12022222033", "12022222330", "12022222331", "12022222332", "12022222333", "12022223030", "12022223033", "12022223111", "12022223122", "12022223123", "12022223132", "12022223211", "12022223212", "12022223213", "12022223220", "12022223230", "12022223300", "12022223301", "12022223302", "12022230020", "12022230022", "12022232000", "12022301010", "12022301011", "12022301013", "12022301100", "12022301102", "12022301112", "12022301113", "12022301212", "12022301213", "12022301331", "12022302133", "12022302311", "12022303021", "12022303022", "12022303023", "12022303030", "12022303031", "12022303102", "12022303120", "12022303200", "12022310000", "12022310001", "12022310002", "12022310003", "12022310110", "12022310111", "12022310203", "12022310210", "12022310211", "12022310212", "12022310213", "12022310220", "12022310333", "12022311012", "12022311013", "12022311030", "12022311031", "12022311032", "12022311033", "12022311120", "12022311121", "12022311122", "12022311123", "12022311130", "12022311132", "12022311222", "12022311301", "12022311310", "12022311311", "12022312111", "12022313000", "12022313001", "12022313003", "12022313010", "12022313012", "12022313013", "12022313030", "12022313031", "12022313032", "12022313033", "12022313101", "12022313102", "12022313103", "12022313110", "12022313112", "12022313113", "12022313120", "12022313121", "12022313123", "12022313130", "12022313131", "12022313132", "12022313133", "12022313210", "12022331112", "12022331113", "12022331130", "12022331131", "12022332332", "12023000002", "12023000003", "12023000120", "12023000121", "12023000122", "12023000123", "12023000203", "12023000212", "12023000220", "12023000221", "12023000222", "12023000223", "12023000230", "12023000232", "12023001331", "12023002100", "12023002101", "12023002102", "12023002103", "12023002202", "12023002203", "12023002220", "12023002221", "12023003003", "12023003012", "12023010201", "12023010202", "12023010203", "12023010212", "12023010220", "12023010221", "12023011202", "12023011203", "12023011220", "12023011221", "12023020200", "12023021132", "12023021133", "12023021232", "12023021233", "12023021310", "12023022023", "12023022032", "12023022111", "12023022113", "12023022121", "12023022123", "12023022130", "12023022132", "12023022201", "12023022210", "12023022211", "12023022213", "12023022232", "12023022233", "12023022301", "12023022302", "12023022303", "12023022310", "12023022311", "12023022312", "12023022321", "12023022323", "12023022330", "12023022332", "12023023000", "12023023002", "12023023010", "12023023011", "12023023101", "12023023103", "12023023121", "12023023123", "12023023130", "12023023132", "12023023133", "12023030023", "12023030032", "12023200003", "12023200010", "12023200011", "12023200012", "12023200021", "12023200030", "12023200200", "12023200201", "12023200202", "12023200212", "12023200213", "12023200230", "12023200231", "12023200301", "12023200303", "12023200310", "12023200312", "12023200320", "12023200322", "12023200323", "12023200333", "12023202002", "12023202020", "12023202022", "12023202110", "12023202111", "12023202112", "12023202113", "12023202131", "12023202133", "12023202202", "12023202211", "12023202213", "12023202220", "12023202323", "12023202332", "12023203000", "12023203002", "12023203003", "12023203012", "12023203020", "12023203021", "12023203022", "12023203030", "12023203122", "12023203123", "12023203300", "12023203301", "12023220101", "12023220110", "12023220133", "12023220300", "12023220301", "12023220302", "12023220303", "12023220311", "12023220323", "12023220332", "12023220333", "12023221000", "12023221002", "12023221022", "12023221102", "12023221103", "12023221112", "12023221121", "12023221123", "12023221130", "12023221132", "12023221200", "12023221201", "12023221202", "12023221203", "12023221222", "12023222101", "12023222103", "12023222110", "12023222111", "12023222112", "12023222113", "12023222121", "12023222130", "12023222131", "12023223000", "12023223001", "12023223002", "12023223003", "12023223022", "12023223023", "12023223031", "12023223033", "12023223120", "12023223122", "12023223200", "12023223201", "12023230200", "12023230201", "12023230202", "12023230203", "12023232022", "12023232023", "12023232033", "12023232131", "12023232221", "12023232222", "12023232223", "12023232231", "12023232233", "12023232320", "12023232322", "12023233030", "12023233032", "12023233200", "12023233212", "12023233230", "12023233302", "12023233303", "12023233320", "12023233321", "12023233331", "12023233333", "12023322220", "12023322222", "12200101131", "12200101133", "12200110002", "12200110003", "12200110020", "12200110021", "12200110101", "12200110110", "12200110222", "12200110223", "12200110300", "12200110301", "12200110302", "12200110303", "12200112000", "12200112001", "12200112211", "12200112213", "12200112300", "12200112302", "12201001111", "12201001113", "12201010000", "12201010001", "12201010002", "12201010003", "12201010010", "12201010011", "12201010012", "12201010013", "12201010030", "12201010031", "12201010100", "12201010102", "12201010120", "12201011021", "12201011030", "12201011101", "12201011103", "12201011110", "12201011112", "12201011130", "12201013300", "12201013323", "12201013330", "12201013332", "12201013333", "12201020313", "12201020331", "12201020332", "12201020333", "12201021211", "12201021213", "12201021300", "12201021302", "12201023113", "12201023131", "12201030313", "12201031011", "12201031013", "12201031022", "12201031023", "12201031110", "12201031200", "12201031201", "12201031202", "12201031203", "12201031220", "12201031221", "12201032001", "12201032002", "12201032003", "12201032103", "12201032112", "12201032132", "12201032203", "12201032212", "12201032213", "12201032230", "12201032231", "12201032302", "12201032310", "12201032311", "12201032312", "12201032313", "12201032320", "12201100023", "12201100032", "12201100121", "12201100130", "12201100201", "12201100210", "12201100311", "12201102203", "12201102221", "12210000021", "12210000030", "12210000031", "12210000032", "12210000033", "12210020311", "12210020312", "12210020313", "12210020321", "12210020330", "12210020331", "12210020332", "12210020333", "12210021200", "12210021202", "12210021220", "12210021222"], i = false, d = [];
    this.Init = (function (a)
{
  t = a + "/GetBirdsEyeSceneByLocation";
  u = a + "/GetBirdsEyeSceneById";
}
);
    this.SetClientToken = (function (b)
{
  e = b;
  if (a)
    a.SetClientToken(e);
}
);
    this.SetGUID = (function (b)
{
  m = b;
  if (a)
    a.SetGUID(m);
  if (typeof VEMap != "undefined")
    p = VEMap._GetMapFromGUID(m);
}
);
    this.Destroy = (function ()
{
  e = null;
}
);
    this.RequestPending = (function ()
{
  return i;
}
);
    this.IsValidTile = L;
    this.GetFilename = J;
    this.MetersPerPixel = E;
    this.PixelToLatLong = F;
    this.PixelToLatLongAsync = z;
    this.LatLongToPixel = D;
    this.LatLongToPixelAsync = y;
    this.GetBounds = M;
    this.ValidateZoomLevel = B;
    this.IsAvailable = K;
    this.UpdateAvailability = A;
    this.CancelRequest = j;
    this.GetEventInfo = G;
    this.GetScene = N;
    this.RequestSceneAtLatLong = r;
    this.RequestScene = H;
    this.GetCurrentMaxZoomLevel = w;
    this.GetObliqueAvailability = x;
  }
  function OrthoMode()
  {
    function j(a,b,d)
    {
      var c = 1 << d;
      return a >= 0 && b >= 0 && a < c && b < c;
    }
    function i(c,d,f,b)
    {
      var a = new VETileContext();
      a.XPos = c;
      a.YPos = d;
      a.ZoomLevel = f;
      a.MapStyle = currentView.mapStyle;
      var e = b.GetTilePath(a);
      return e;
    }
    function b(a)
    {
      return earthCircumference / (1 << a) * tileSize;
    }
    function h(d,e)
    {
      var c = b(e), f = d.x * c - projectionOffset, g = projectionOffset - d.y * c, a = new Msn.VE.LatLong();
      a.latitude = RadToDeg(Math.PI / 2 - 2 * Math.atan(Math.exp(- g / earthRadius)));
      a.longitude = RadToDeg(f / earthRadius);
      return a;
    }
    function e(d,g,e)
    {
      var b = [];
      for (var a = 0;a < d.length;++a)
        {
          var c = this.PixelToLatLong(d[a], g);
          if (Msn.VE.API != null)
            {
              var f = new VELatLong(c.latitude, c.longitude);
              b[a] = f;
            }
          else
            b[a] = c;
        }
      if (e)
        e(b);
    }
    function g(d,f)
    {
      var e = Math.sin(DegToRad(d.latitude)), g = earthRadius * DegToRad(d.longitude), h = earthRadius / 2 * Math.log((1 + e) / (1 - e)), c = b(f), a = new VEPixel();
      a.x = (projectionOffset + g) / c;
      a.y = (projectionOffset - h) / c;
      return a;
    }
    function d(b,e,d)
    {
      var c = [];
      for (var a = 0;a < b.length;++a)
        c[a] = this.LatLongToPixel(b[a], e);
      if (d)
        d(c);
    }
    function k(c)
    {
      if (c == undefined)
        c = currentView;
      var d = c.zoomLevel, f = c.center.x + mapCenterOffset.x, g = c.center.y + mapCenterOffset.y;
      for (var b = 0;b < a.length;b++)
        {
          var h = d - a[b].z1, e = tileSize * Math.pow(2, h), k = a[b].x1 * e, i = a[b].x2 * e, l = a[b].y1 * e, j = a[b].y2 * e;
          if (f >= k && f <= i && g >= l && g <= j)
            if (d >= a[b].z1 && d <= a[b].z2 || d <= tileLayerManager.GetMaxTileZoom())
              return a[b];
        }
    }
    function c(e)
    {
      var f = e.center.x + mapCenterOffset.x, g = e.center.y + mapCenterOffset.y, c = 0;
      for (var b = 0;b < a.length;b++)
        {
          var d = tileSize * Math.pow(2, e.zoomLevel - a[b].z1), j = a[b].x1 * d, h = a[b].x2 * d, k = a[b].y1 * d, i = a[b].y2 * d;
          if (f >= j && f <= h && g >= k && g <= i)
            c = Math.max(c, a[b].z2);
        }
      c = Math.max(c, tileLayerManager.GetMaxTileZoom());
      return c;
    }
    function f(d)
    {
      var f = d.center.x + mapCenterOffset.x, g = d.center.y + mapCenterOffset.y, c = 0;
      for (var b = 0;b < a.length;b++)
        {
          var e = tileSize * Math.pow(2, d.zoomLevel - a[b].z1), j = a[b].x1 * e, h = a[b].x2 * e, k = a[b].y1 * e, i = a[b].y2 * e;
          if (f >= j && f <= h && g >= k && g <= i)
            {
              c = 0;
              if (a[b].z2 >= d.zoomLevel)
                {
                  tileLayerManager.SetMarketMaxZoom(a[b].z2);
                  return ;
                }
              else
                if (a[b].z2 > c)
                  {
                    tileLayerManager.SetMarketMaxZoom(a[b].z2);
                    c = a[b].z2;
                    if (c < tileLayerManager.GetMaxTileZoom())
                      if (d.zoomLevel <= tileLayerManager.GetMaxTileZoom())
                        c = d.zoomLevel;
                      else
                        c = tileLayerManager.GetMaxTileZoom();
                  }
            }
        }
      d.SetZoomLevel(c);
    }
    var a = [new Msn.VE.Bounds(1, 17, 0, 0, 2, 2), new Msn.VE.Bounds(18, 19, 35680, 82915, 83740, 113061), new Msn.VE.Bounds(18, 19, 122880, 53248, 155649, 103425), new Msn.VE.Bounds(18, 19, 12379, 112260, 20388, 119266), new Msn.VE.Bounds(18, 19, 80099, 115425, 85051, 119645), new Msn.VE.Bounds(18, 19, 220032, 93184, 240640, 113792)];
    this.Init = (function ()
{
  }
);
    this.Destroy = (function ()
{
  }
);
    this.IsValidTile = j;
    this.GetFilename = i;
    this.MetersPerPixel = b;
    this.PixelToLatLong = h;
    this.PixelToLatLongAsync = e;
    this.LatLongToPixel = g;
    this.LatLongToPixelAsync = d;
    this.GetBounds = k;
    this.ValidateZoomLevel = f;
    this.GetCurrentMaxZoomLevel = c;
  }
  function ThreeDMode()
  {
    function IsValidTile(b,c,a)
    {
      return internalOrthoMode.IsValidTile(b, c, a);
    }
    function GetFilename(a,b,d,c)
    {
      return internalOrthoMode.GetFilename(a, b, d, c);
    }
    function MetersPerPixel(a)
    {
      return internalOrthoMode.MetersPerPixel(a);
    }
    function PixelToLatLong(pixel)
    {
      if (! view3DCreated)
        return null;
      var lat, lon, latlonvalid, result = spacecontrol.PixelToLatLong(pixel.x, pixel.y);
      eval(result);
      if (latlonvalid != 0)
        {
          var latlong = new Msn.VE.LatLong();
          latlong.latitude = RadToDeg(lat);
          latlong.longitude = RadToDeg(lon);
          return latlong;
        }
      return null;
    }
    function PixelToLatLongAsync(d,g,e)
    {
      var b = [];
      for (var a = 0;a < d.length;++a)
        {
          var c = this.PixelToLatLong(d[a], g);
          if (Msn.VE.API != null)
            {
              var f = new VELatLong(c.latitude, c.longitude);
              b[a] = f;
            }
          else
            b[a] = c;
        }
      if (e)
        e(b);
    }
    function LatLongToPixel(latlong)
    {
      if (! view3DCreated)
        return null;
      var x, y, xyvalid = 0, result = spacecontrol.LatLongToPixel(parseFloat(latlong.latitude), parseFloat(latlong.longitude));
      eval(result);
      if (xyvalid != 0)
        {
          var pixel = new VEPixel(x, y);
          return pixel;
        }
      return null;
    }
    function LatLongToPixelAsync(b,e,d)
    {
      var c = [];
      for (var a = 0;a < b.length;++a)
        c[a] = this.LatLongToPixel(b[a], e);
      if (d)
        d(c);
    }
    function GetBounds()
    {
      return null;
    }
    function GetCurrentMaxZoomLevel()
    {
      return 19;
    }
    function ValidateZoomLevel(a)
    {
      if (a.zoomLevel < 1)
        a.SetZoomLevel(1);
      if (a.zoomLevel > 19)
        a.SetZoomLevel(19);
    }
    function _InternalOrthoMode()
    {
      return internalOrthoMode;
    }
    var internalOrthoMode = new OrthoMode(), bounds = [new Msn.VE.Bounds(1, 17, 0, 0, 2, 2), new Msn.VE.Bounds(18, 19, 35680, 82915, 83740, 113061), new Msn.VE.Bounds(18, 19, 122880, 53248, 155649, 103425), new Msn.VE.Bounds(18, 19, 12379, 112260, 20388, 119266), new Msn.VE.Bounds(18, 19, 80099, 115425, 85051, 119645), new Msn.VE.Bounds(18, 19, 220032, 93184, 240640, 113792)];
    this.Init = (function ()
{
  }
);
    this.Destroy = (function ()
{
  }
);
    this._InternalOrthoMode = _InternalOrthoMode;
    this.IsValidTile = IsValidTile;
    this.GetFilename = GetFilename;
    this.MetersPerPixel = MetersPerPixel;
    this.PixelToLatLong = PixelToLatLong;
    this.PixelToLatLongAsync = PixelToLatLongAsync;
    this.LatLongToPixel = LatLongToPixel;
    this.LatLongToPixelAsync = LatLongToPixelAsync;
    this.GetBounds = GetBounds;
    this.ValidateZoomLevel = ValidateZoomLevel;
    this.GetCurrentMaxZoomLevel = GetCurrentMaxZoomLevel;
  }
  function BoxTool()
  {
    function k(i)
    {
      if (typeof VE_ContextMenu != "undefined" && VE_ContextMenu != null)
        {
          VE_ContextMenu.RemoveContextPin();
          VE_ContextMenu.CloseMenu();
        }
      var b = Gimme.Screen.getMousePosition(i);
      h = g(p_elSource).getPagePosition();
      c = e = b.x - h.x + offsetX;
      d = f = b.y - h.y + offsetY;
      j(c, d, 1, 1);
      o();
      if (a.setCapture)
        a.setCapture();
    }
    function l(i)
    {
      var a = Gimme.Screen.getMousePosition(i);
      e = a.x - h.x + offsetX;
      f = a.y - h.y + offsetY;
      var g = e - c, b = f - d;
      j(Math.min(c, c + g), Math.min(d, d + b), Math.abs(g), Math.abs(b));
    }
    function m(j)
    {
      if (MathAbs(c - e) > 1 && MathAbs(d - f) > 1)
        {
          var b = preferredView.MakeCopy();
          b.SetZoomLevel(currentView.zoomLevel);
          if (! j.shiftKey)
            b.SetPixelRectangle(new Msn.VE.PixelRectangle(new VEPixel(originX + c, originY + d), new VEPixel(originX + e, originY + f)));
          else
            {
              var h = width / MathAbs(e - c), i = height / MathAbs(f - d), g = h < i ? h : i;
              b.SetPixelRectangle(new Msn.VE.PixelRectangle(new VEPixel(originX - Math.floor(width * (g - 1) / 2), originY - Math.floor(height * (g - 1) / 2)), new VEPixel(originX + Math.floor(width * (g + 1) / 2), originY + Math.floor(height * (g + 1) / 2))));
            }
          SetView(b);
        }
      setTimeout(n, 250);
      if (a.releaseCapture)
        a.releaseCapture();
    }
    function j(e,f,d,c)
    {
      i(b, e + 1, f + 1, d, c);
      i(a, e, f, d, c);
    }
    function i(a,d,e,c,b)
    {
      a.style.left = d + "px";
      a.style.top = e + "px";
      a.style.width = c + "px";
      a.style.height = b + "px";
    }
    function o()
    {
      b.style.display = "block";
      a.style.display = "block";
    }
    function n()
    {
      b.style.display = "none";
      a.style.display = "none";
    }
    var b = document.createElement("div"), a = document.createElement("div"), h, c = 0, d = 0, e = 0, f = 0;
    this.Init = (function ()
{
  b.className = "MSVE_ZoomBox_bg";
  a.className = "MSVE_ZoomBox_fg";
  b.attachEvent("onmouseup", MouseUp);
  a.attachEvent("onmouseup", MouseUp);
  if (map != null)
    {
      map.appendChild(b);
      map.appendChild(a);
    }
}
);
    this.Destroy = (function ()
{
  b.detachEvent("onmouseup", MouseUp);
  a.detachEvent("onmouseup", MouseUp);
  if (map != null)
    {
      map.removeChild(b);
      map.removeChild(a);
    }
}
);
    this.OnMouseDown = k;
    this.OnMouseMove = l;
    this.OnMouseUp = m;
  }
  function PanTool()
  {
    function b(b)
    {
      a = false;
      var d = Gimme.Screen.getMousePosition(b);
      lastMouseX = d.x;
      lastMouseY = d.y;
      if (p_elSource.setCapture)
        p_elSource.setCapture();
      var e = g(p_elSource).getPagePosition();
      x = e.x;
      y = e.y;
      var f = originX + offsetX + lastMouseX - x, h = originY + offsetY + lastMouseY - y, c = CreateEvent(currentMode.PixelToLatLong(new VEPixel(f, h), currentView.zoomLevel), currentView.zoomLevel, null, null, null, b.button, 0, b);
      Fire("onstartpan", c);
      FireDefaultEvent("onmousedown", c);
    }
    function c(e)
    {
      var d = Gimme.Screen.getMousePosition(e), b = d.x, c = d.y;
      PanMap(lastMouseX - b, lastMouseY - c);
      if (lastMouseX != b || lastMouseY != c)
        a = true;
      lastMouseX = b;
      lastMouseY = c;
    }
    function d(c)
    {
      ComputeCenterPoint(true);
      if (p_elSource.releaseCapture)
        p_elSource.releaseCapture();
      if (a)
        {
          Fire("onendpan");
          Fire("onchangeview");
          a = false;
          $VE_A.Log($VE_A.PgName.Map, "PAN", "Mouse");
        }
      var d = Gimme.Screen.getMousePosition(c), e = originX + offsetX + d.x - x, f = originY + offsetY + d.y - y, b = CreateEvent(currentMode.PixelToLatLong(new VEPixel(e, f), currentView.zoomLevel), currentView.zoomLevel, null, null, null, c.button, 0, c);
      FireDefaultEvent("onmouseup", b);
      FireDefaultEvent("onclick", b);
      return b;
    }
    var a = false;
    this.Init = (function ()
{
  }
);
    this.Destroy = (function ()
{
  }
);
    this.OnMouseDown = b;
    this.OnMouseMove = c;
    this.OnMouseUp = d;
  }
  function TargetTool()
  {
    function g()
    {
      d = false;
      a = false;
      e = null;
      c = false;
      m_dragging = false;
    }
    var b = this, f = Msn.VE.Geometry, d, a, e, c;
    this.centeringTrigger = false;
    g();
    this.init = (function ()
{
  if (currentView.mapStyle == Msn.VE.MapStyle.Oblique)
    b.trackMovement();
}
);
    this.destroy = (function ()
{
  b.ignoreMovement();
  f = null;
}
);
    this.isOutOfBounds = (function ()
{
  return a;
}
);
    this.trackMovement = (function ()
{
  if (! d)
    {
      p_elSource.attachEvent("onmousemove", b.OnMouseMove);
      d = true;
    }
}
);
    this.ignoreMovement = (function ()
{
  p_elSource.detachEvent("onmousemove", b.OnMouseMove);
  d = a = b.centeringTrigger = false;
  p_this.SetCursor(cssCursors.Grab);
}
);
    this.setBoundingArea = (function (a)
{
  if (a  instanceof  f.Rectangle)
    e = a;
}
);
    this.OnMouseDown = (function ()
{
  }
);
    this.OnMouseMove = (function (b)
{
  if (e == null)
    return ;
  if (! dragging)
    {
      var d = Gimme.Screen.getMousePosition(b);
      if (! e.containsPoint(d))
        {
          if (! hijackMouseMove && (! c || p_elSource.style.cursor != cssCursors.Target))
            {
              a = c = true;
              p_this.SetCursor(cssCursors.Target);
            }
        }
      else
        if (c)
          {
            a = c = false;
            p_this.SetCursor(cssCursors.Grab);
          }
    }
}
);
    this.OnMouseUp = (function (c)
{
  if (typeof VE_ContextMenu != "undefined" && VE_ContextMenu != null)
    {
      VE_ContextMenu.RemoveContextPin();
      VE_ContextMenu.CloseMenu();
    }
  var g = c.which || c.button;
  if (a && g == 1)
    {
      c.cancelBubble = true;
      b.centeringTrigger = true;
      var e = originX + offsetX + Math.round(GetMapWidth() / 2), f = originY + offsetY + Math.round(GetMapHeight() / 2), d = currentMode.PixelToLatLong(new VEPixel(e, f), currentView.zoomLevel);
      SetCenter(d.latitude, d.longitude);
    }
}
);
  }
  function GetTrafficAvailability()
  {
    return trafficAvailable;
  }
  function GetSlidingExpirationForAutoRefresh()
  {
    return 1800000;
  }
  function GetAutoRefreshRate()
  {
    return 300000;
  }
  function GetMarketsFile()
  {
    return "http://t1.traffic.virtualearth.net/incidents/markets.js";
  }
  function GetIncidentsFile()
  {
    return "http://t1.traffic.virtualearth.net/incidents/market";
  }
  function SetTrafficView()
  {
    var a = new VETileSourceSpecification();
    a.ID = trafficTiles;
    a.SourceName = Msn.VE.API ? Msn.VE.API.Constants.traffictileserver : "%0t%2.tiles.virtualearth.net/tiles/t%4";
    var b = "?";
    if (a.SourceName.match(/\?/))
      b = "&";
    a.SourceName = a.SourceName + b + "tc=" + Math.floor(new Date().getTime() / GetAutoRefreshRate() * 0.8);
    a.NumServers = 2;
    tileLayerManager.AddTileSource(a);
    tileLayerManager.LoadTileLayer("Traffic", a.ID, 0.6, 2);
  }
  function VETileLayerManager()
  {
    function j()
    {
      if (! zooming)
        return ;
      for (var a = 0;a < e[mapTiles].length;a++)
        e[mapTiles][a].SetFactor(zoomCounter);
      for (var a = 0;a < c[mapTiles].length;a++)
        c[mapTiles][a].SetFactor(zoomCounter);
      for (var b = 0;b < pushpins.length;b++)
        pushpins[b].SetFactor(zoomCounter);
      if (zoomCounter < zoomTotalSteps)
        {
          zoomCounter++;
          window.setTimeout(j, 1);
        }
      else
        {
          zoomCounter = 0;
          tileLayerManager.FinalizeView();
        }
    }
    function i()
    {
      if (typeof Msn.VE.API.Globals.vemapinstances == "undefined" || Msn.VE.API.Globals.vemapinstances == null)
        return null;
      var b = 0;
      for (a in Msn.VE.API.Globals.vemapinstances)
        if (Msn.VE.API.Globals.vemapinstances[a]  instanceof  VEMap && Msn.VE.API.Globals.vemapinstances[a].vemapcontrol && Msn.VE.API.Globals.vemapinstances[a].GetMapMode() == VEMapMode.Mode3D)
          return Msn.VE.API.Globals.vemapinstances[a].vemapcontrol.Get3DControl();
      return null;
    }
    var d = [], b = [], a = [], c = {}, e = {}, f = {}, k = null, h = true, g = 17;
    this.AddTileSource = (function (a)
{
  d[a.ID] = a;
  if (f[a.ID])
    this.SetClientToken(a.ID, f[a.ID]);
}
);
    this.Add3DTileSource = (function (f,c,h)
{
  if (trafficTiles == f)
    return ;
  if (1 == b[f].zIndex)
    return ;
  var g = c.MaxZoom == 1 ? 21 : c.MaxZoom, a = "ID=\"" + c.ID + "\" TILESOURCE=\"" + c.SourceName + "\" MINZOOM=\"" + c.MinZoom + "\" MAXZOOM=\"" + g + "\"", d = c.Bounds;
  if (typeof d != "undefined" && d != null)
    {
      a = a + " Bounds=\"";
      for (var e = 0;e < d.length;e++)
        {
          if (e > 0)
            a = a + ",";
          a = a + d[e].TopLeftLatLong.Longitude + "," + d[e].BottomRightLatLong.Latitude + "," + d[e].BottomRightLatLong.Longitude + "," + d[e].TopLeftLatLong.Latitude;
        }
      a = a + "\"";
    }
  h.AddImageSource(f, c.ID, a, b[f].zIndex, b[f].opacity);
}
);
    this.AddAllTileSourcesTo3D = (function (d)
{
  if (typeof Msn.VE.API != "undefined" && Msn.VE.API != null)
    for (var c = 0;c < a.length;c++)
      this.Add3DTileSource(a[c], b[a[c]], d);
}
);
    this.LoadBaseLayer = (function (c,e,f,g)
{
  if (b[c] == null || typeof b[c] == "undefined")
    a.push(c);
  b[c] = d[e];
  b[c].opacity = f;
  b[c].zIndex = g;
}
);
    this.HideBaseTileLayer = (function ()
{
  this.SetTileLayerVisibility(mapTiles, false);
  this.RefreshTileLayer(mapTiles);
}
);
    this.ShowBaseTileLayer = (function ()
{
  this.SetTileLayerVisibility(mapTiles, true);
  this.RefreshTileLayer(mapTiles);
}
);
    this.SetTileLayerVisibility = (function (c,a)
{
  if (b[c] != null && typeof a != "undefined")
    b[c].IsVisible = a;
}
);
    this.LoadTileLayer = (function (f,g,l,n)
{
  if (! h)
    return ;
  if (b[f] == null || typeof b[f] == "undefined")
    a.push(f);
  b[f] = d[g];
  if (c[f])
    ClearTiles(c[f]);
  if (typeof b[f].IsVisible != "undefined" && b[f].IsVisible == false)
    return ;
  c[f] = [];
  e[f] = [];
  if (l != null && l != "undefined")
    b[f].opacity = l;
  else
    b[f].opacity = 1;
  if (n != null && n != "undefined")
    b[f].zIndex = n;
  else
    b[f].zIndex = 1;
  var j = false;
  if (typeof Msn.VE.API != "undefined" && Msn.VE.API != null)
    {
      var m = i();
      if (typeof m != "undefined" && m != null)
        tileLayerManager.Add3DTileSource(f, d[g], m);
    }
  var k = d[g].MaxZoom;
  if (k == 1)
    k = d[mapTiles].MaxZoom;
  if (currentView.zoomLevel >= d[g].MinZoom && currentView.zoomLevel <= k)
    if (d[g].Bounds != "undefined" && d[g].Bounds != null)
      j = tileLayerManager.CheckTilesAvailability(g, f);
    else
      j = true;
  if (j)
    {
      b[f].isActive = true;
      for (var p = tileViewportY1;p <= tileViewportY2;p++)
        for (var o = tileViewportX1;o <= tileViewportX2;o++)
          {
            var q = RequestTile(o, p, currentView.zoomLevel, currentView.mapStyle, b[f], g, b[f].opacity, b[f].zIndex);
            c[f].push(q);
          }
    }
}
);
    this.SetViewPort = (function ()
{
  map.style.top = "0px";
  map.style.left = "0px";
  originX = MathRound(currentView.center.x - width / 2);
  originY = MathRound(currentView.center.y - height / 2);
  offsetX = 0;
  offsetY = 0;
  tileViewportX1 = MathFloor((originX - buffer) / tileSize);
  tileViewportY1 = MathFloor((originY - buffer) / tileSize);
  tileViewportX2 = MathFloor((originX + width + buffer) / tileSize);
  tileViewportY2 = MathFloor((originY + height + buffer) / tileSize);
  tileViewportWidth = tileViewportX2 - tileViewportX1 + 1;
  tileViewportHeight = tileViewportY2 - tileViewportY1 + 1;
  Fire("onmapoffsetreset");
}
);
    this.FinalizeView = (function ()
{
  zooming = false;
  for (var b = 0;b < a.length;b++)
    {
      if (e[a[b]])
        {
          ClearTiles(e[a[b]]);
          e[a[b]] = null;
        }
      for (var d = 0;d < c[a[b]].length;d++)
        {
          var f = c[a[b]];
          f[d].SwapStates();
          f[d].ClearSteps();
          f[d].SetFactor(0);
          f[d].ClearStates();
        }
    }
  for (var b = 0;b < pushpins.length;b++)
    {
      pushpins[b].SwapStates();
      pushpins[b].ClearSteps();
      pushpins[b].SetFactor(0);
    }
  if (copyright)
    copyright.Update();
  if (previousMapStyle != currentView.mapStyle)
    {
      Fire("onchangemapstyle");
      previousMapStyle = currentView.mapStyle;
    }
  if (previousZoomLevel != currentView.zoomLevel)
    Fire("onendzoom");
  Fire("onchangeview");
  try
    {
      CollectGarbage();
    }
  catch (g)
    {}
}
);
    this.CheckLayerUpdatability = (function (d)
{
  var e = false;
  if (b[a[d]].isActive == false)
    this.RefreshTileLayer(b[a[d]].ID);
  if (d >= 0)
    e = b[a[d]].ID == mapTiles || c[a[d]].length > 0;
  return e;
}
);
    this.PanView = (function ()
{
  if (! h)
    return ;
  if (zooming)
    return ;
  var i = originX + offsetX, j = originY + offsetY, k = MathFloor((i - buffer) / tileSize), m = MathFloor((j - buffer) / tileSize), l = MathFloor((i + width + buffer) / tileSize), n = MathFloor((j + height + buffer) / tileSize);
  while (tileViewportX1 < k)
    {
      for (var e = tileViewportHeight - 1;e >= 0;e--)
        for (var d = 0;d < a.length;d++)
          if (tileLayerManager.CheckLayerUpdatability(d))
            {
              var g = (c[a[d]].splice(e * tileViewportWidth, 1))[0];
              try
                {
                  g.RemoveFromMap();
                }
              catch (o)
                {}
            }
      tileViewportX1++;
      tileViewportWidth--;
    }
  while (tileViewportX1 > k)
    {
      tileViewportX1--;
      tileViewportWidth++;
      for (var e = 0;e < tileViewportHeight;e++)
        for (var d = 0;d < a.length;d++)
          if (tileLayerManager.CheckLayerUpdatability(d))
            {
              var g = RequestTile(tileViewportX1, tileViewportY1 + e, currentView.zoomLevel, currentView.mapStyle, b[a[d]], a[d], b[a[d]].opacity, b[a[d]].zIndex);
              c[a[d]].splice(e * tileViewportWidth, 0, g);
            }
    }
  while (tileViewportY1 < m)
    {
      for (var f = 0;f < tileViewportWidth;f++)
        for (var d = 0;d < a.length;d++)
          if (tileLayerManager.CheckLayerUpdatability(d))
            {
              var g = c[a[d]].shift();
              try
                {
                  g.RemoveFromMap();
                }
              catch (o)
                {}
            }
      tileViewportY1++;
      tileViewportHeight--;
    }
  while (tileViewportY1 > m)
    {
      tileViewportY1--;
      tileViewportHeight++;
      for (var f = tileViewportWidth - 1;f >= 0;f--)
        for (var d = 0;d < a.length;d++)
          if (tileLayerManager.CheckLayerUpdatability(d))
            {
              var g = RequestTile(tileViewportX1 + f, tileViewportY1, currentView.zoomLevel, currentView.mapStyle, b[a[d]], a[d], b[a[d]].opacity, b[a[d]].zIndex);
              c[a[d]].unshift(g);
            }
    }
  while (tileViewportX2 > l)
    {
      for (var e = tileViewportHeight - 1;e >= 0;e--)
        for (var d = 0;d < a.length;d++)
          if (tileLayerManager.CheckLayerUpdatability(d))
            {
              var g = (c[a[d]].splice(e * tileViewportWidth + tileViewportWidth - 1, 1))[0];
              try
                {
                  g.RemoveFromMap();
                }
              catch (o)
                {}
            }
      tileViewportX2--;
      tileViewportWidth--;
    }
  while (tileViewportX2 < l)
    {
      tileViewportX2++;
      tileViewportWidth++;
      for (var e = 0;e < tileViewportHeight;e++)
        for (var d = 0;d < a.length;d++)
          if (tileLayerManager.CheckLayerUpdatability(d))
            {
              var g = RequestTile(tileViewportX2, tileViewportY1 + e, currentView.zoomLevel, currentView.mapStyle, b[a[d]], a[d], b[a[d]].opacity, b[a[d]].zIndex);
              c[a[d]].splice(e * tileViewportWidth + tileViewportWidth - 1, 0, g);
            }
    }
  while (tileViewportY2 > n)
    {
      for (var f = 0;f < tileViewportWidth;f++)
        for (var d = 0;d < a.length;d++)
          if (tileLayerManager.CheckLayerUpdatability(d))
            {
              var g = c[a[d]].pop();
              try
                {
                  g.RemoveFromMap();
                }
              catch (o)
                {}
            }
      tileViewportY2--;
      tileViewportHeight--;
    }
  while (tileViewportY2 < n)
    {
      tileViewportY2++;
      tileViewportHeight++;
      for (var f = 0;f < tileViewportWidth;f++)
        for (var d = 0;d < a.length;d++)
          if (tileLayerManager.CheckLayerUpdatability(d))
            {
              var g = RequestTile(tileViewportX1 + f, tileViewportY2, currentView.zoomLevel, currentView.mapStyle, b[a[d]], a[d], b[a[d]].opacity, b[a[d]].zIndex);
              c[a[d]].push(g);
            }
    }
}
);
    this.StepAnimation = j;
    this.zoomView = (function (g)
{
  if (! h)
    return ;
  var l = originX + offsetX, m = originY + offsetY, o = currentView.zoomLevel, k = g.zoomLevel, i = MathRound(g.center.x - width / 2), j = MathRound(g.center.y - height / 2);
  e[mapTiles] = c[mapTiles];
  for (var d = 0;d < a.length;d++)
    if (b[a[d]].ID == mapTiles)
      c[a[d]] = [];
    else
      ClearTiles(c[a[d]]);
  for (var f = 0;f < e[mapTiles].length;f++)
    e[mapTiles][f].PrepareBaseTile(l, m, o, i, j, k);
  for (var d = 0;d < pushpins.length;d++)
    pushpins[d].PrepareForZoom(i, j, k);
  currentView.Destroy();
  currentView = g;
  var n = [];
  n = e[mapTiles];
  this.SetViewPort();
  this.RefreshTileLayers();
  e[mapTiles] = n;
  for (var f = 0;f < c[mapTiles].length;f++)
    c[mapTiles][f].PrepareSwapTile(l, m, o, i, j, k);
  zoomCounter = 1;
  this.StepAnimation();
}
);
    this.ClearTileLayers = (function ()
{
  for (var d = 0;d < a.length;d++)
    {
      ClearTiles(c[a[d]]);
      b[a[d]] = null;
      delete b[a[d]];
      a[d] = null;
    }
  a.length = 0;
}
);
    this.ClearTileLayer = (function (d)
{
  if (b[d] != null && b[d] != "undefined")
    {
      if (typeof Msn.VE.API != "undefined" && Msn.VE.API != null)
        {
          var f = i();
          if (typeof f != "undefined" && f != null)
            f.RemoveImageSource(d, b[d].ID);
        }
      ClearTiles(c[d]);
      b[d] = null;
      delete b[d];
    }
  for (var e = 0;e < a.length;e++)
    if (a[e] == d)
      {
        a[e] = null;
        a.splice(e, 1);
      }
}
);
    this.RefreshTileLayers = (function ()
{
  if (a != null)
    for (var c = 0;c < a.length;c++)
      this.LoadTileLayer(a[c], b[a[c]].ID, b[a[c]].opacity, b[a[c]].zIndex);
}
);
    this.RefreshTileLayer = (function (a)
{
  this.LoadTileLayer(a, b[a].ID, b[a].opacity, b[a].zIndex);
}
);
    this.SetTileSource = (function (a)
{
  var b = new VETileSourceSpecification();
  b.ID = a.ID;
  b.SourceName = a.TileSource;
  b.NumServers = a.NumServers;
  b.Bounds = a.Bounds;
  if (typeof a.MinZoomLevel != "undefined" && a.MinZoomLevel != null)
    b.MinZoom = a.MinZoomLevel;
  if (typeof a.MaxZoomLevel != "undefined" && a.MaxZoomLevel != null)
    {
      b.MaxZoom = a.MaxZoomLevel;
      if (b.MaxZoom > g)
        g = b.MaxZoom;
    }
  if (a.GetTilePath != "undefined" && a.GetTilePath != null)
    b.GetTilePath = a.GetTilePath;
  tileLayerManager.AddTileSource(b);
}
);
    this.DeleteTileSource = (function (f)
{
  if (d[f] != null && d[f] != "undefined")
    {
      d[f] = null;
      delete d[f];
    }
  if (a != null)
    for (var e = 0;e < a.length;e++)
      if (b[a[e]] != null && b[a[e]] != "undefined" && b[a[e]].ID == f)
        {
          ClearTiles(c[a[e]]);
          b[a[e]] = null;
          delete b[a[e]];
          a[e] = null;
          a.splice(e, 1);
        }
}
);
    this.CheckTilesAvailability = (function (h,n)
{
  var k = PixelToLatLong(new VEPixel(0, 0)), j = PixelToLatLong(new VEPixel(width, height));
  if (k == null || j == null)
    return ;
  var a = k.latitude, c = j.longitude, e = j.latitude, f = k.longitude;
  if (a < e)
    {
      var i = a;
      a = e;
      e = i;
    }
  if (c < f)
    {
      var i = c;
      c = f;
      f = i;
    }
  var l = new Msn.VE.LatLongRectangle(new Msn.VE.LatLong(a, f), new Msn.VE.LatLong(e, c)), o = d[h].Bounds.length;
  for (var g = 0;g < o;g++)
    {
      a = d[h].Bounds[g].TopLeftLatLong.Latitude;
      c = d[h].Bounds[g].BottomRightLatLong.Longitude;
      e = d[h].Bounds[g].BottomRightLatLong.Latitude;
      f = d[h].Bounds[g].TopLeftLatLong.Longitude;
      if (a < e)
        {
          var i = a;
          a = e;
          e = i;
        }
      if (c < f)
        {
          var i = c;
          c = f;
          f = i;
        }
      var m = new Msn.VE.LatLongRectangle(new Msn.VE.LatLong(a, f), new Msn.VE.LatLong(e, c));
      if (tileLayerManager.BBOverlap(l, m))
        return true;
    }
  b[n].isActive = false;
  return false;
}
);
    this.BBOverlap = (function (a,b)
{
  return this.RectInBoundingBox(b, a);
}
);
    this.RectInBoundingBox = (function (a,b)
{
  return ! (a.southeast.latitude > b.northwest.latitude || a.southeast.longitude < b.northwest.longitude || a.northwest.latitude < b.southeast.latitude || a.northwest.longitude > b.southeast.longitude);
}
);
    this.ShowTrafficLegend = (function (a)
{
  k = a;
  Fire("onapitrafficdisplay");
}
);
    this.HideTrafficLegend = (function ()
{
  Fire("onapitraffichide");
}
);
    this.GetTimeStamp = (function ()
{
  return k;
}
);
    this.GetMaxTileZoom = (function ()
{
  return g;
}
);
    this.SetMarketMaxZoom = (function (a)
{
  marketMaxZoom = a;
  d[mapTiles].MaxZoom = a;
}
);
    this.SetClientToken = (function (a,b)
{
  f[a] = b;
  if (d[a])
    d[a].SetClientToken(b);
}
);
  }
  function VETileSourceSpecification()
  {
    this.ID = "";
    this.SourceName = "";
    this.OriginalName = null;
    this.NumServers = 0;
    this.Bounds = null;
    this.MinZoom = minZoom;
    this.MaxZoom = 1;
    this.IsVisible = true;
    this.GetTilePath = (function (a)
{
  try
    {
      if (a != null && a != "undefined")
        {
          var e = "", b = 0;
          for (var c = a.ZoomLevel;c > 0;c--)
            {
              b = 0;
              var d = 1 << c - 1;
              if ((a.XPos & d) != 0)
                b++;
              if ((a.YPos & d) != 0)
                b += 2;
              e += b + "";
            }
          var c = b % this.NumServers;
          return this.SourceName.replace(/%1/g, a.MapStyle).replace(/%2/g, c).replace(/%3/g, a.MapStyle).replace(/%4/g, e).replace(/%5/g, a.MapStyle == roadStyle ? "png" : "jpeg").replace(/%6/g, generations[a.MapStyle]);
        }
      else
        return "";
    }
  catch (f)
    {}
}
);
    this.SetClientToken = (function (b)
{
  if (this.OriginalName)
    this.SourceName = this.OriginalName;
  else
    this.OriginalName = this.SourceName;
  if (b)
    {
      var a;
      if (this.SourceName.indexOf("?") >= 0)
        a = "&";
      else
        a = "?";
      this.SourceName = this.SourceName.concat(a, Msn.VE.API.Constants.clienttoken, "=", b);
    }
  else
    this.OriginalName = null;
}
);
  }
  function VETileLayerSpecification()
  {
    this.ID = "";
    this.ZIndex = 0;
    this.Opacity = 1;
  }
  function VETileContext()
  {
    this.XPos = 0;
    this.YPos = 0;
    this.ZoomLevel = 0;
    this.MapStyle = "";
  }
  var offsetMeters = 20971520, baseMetersPerPixel = 163840, buffer = 0, maxTilePixelBuffer = 768, animatedMovementEnabled = true, zoomTotalSteps = 6, keyboardPanSpeed = 15, panToLatLongSpeed = 15, earthRadius = 6378137, earthCircumference = earthRadius * 2 * Math.PI, projectionOffset = earthCircumference * 0.5, minZoom = 1, maxZoom = 19, emptyTile = "http://virtualearth.msn.com/i/spacer.gif", minLatitude = - 85, maxLatitude = 85, minLongitude = - 180, maxLongitude = 180, tileSize = 256, generations = {}, zoomLevelToAdjustObliqueToOrthro = 18, kbInputZIndex = 0, containerZIndex = 0, mapZIndex = 1, swapZIndex = 1, baseZIndex = 2, debugZIndex = 3, baseZIndex = 11, topZIndex = 20, p_this = this, m_clientToken = null, cssCursors = Msn.VE.Css.Cursors, cssFn = Msn.VE.Css.Functions, roadStyle = "r", shadedStyle = "s", hybridStyle = "h", aerialStyle = "a", obliqueStyle = "o";
  generations[roadStyle] = 117;
  generations[aerialStyle] = 117;
  generations[hybridStyle] = 117;
  generations[obliqueStyle] = 117;
  var mapTiles = "Road", trafficTiles = "Traffic", marketMaxZoom = 1, currentScaleBarUnit = null, currentView = new Msn.VE.MapView(p_this), preferredView = new Msn.VE.MapView(p_this), previousZoomLevel = 1, previousCenter = null, lastViewChangeType = null, previousMapStyle = null, lastOrthoZoomLevel = 15, lastOrthoMapStyle = roadStyle, x = 0, y = 0, width = 0, height = 0, trafficAvailable = false, tileLayerManager = new VETileLayerManager(), originX = 0, originY = 0, offsetX = 0, offsetY = 0, tileViewportX1 = 0, tileViewportY1 = 0, tileViewportX2 = 0, tileViewportY2 = 0, tileViewportWidth = 0, tileViewportHeight = 0, dragging = false, keyboardPan = false, lastMouseX = 0, lastMouseY = 0, zooming = false, zoomCounter = 0, panning = false, panCounter = 0, panningX = 0, panningY = 0, panLatitude = null, panLongitude = null, pushpins = [], lines = [], map = document.createElement("div"), keyboard = document.createElement("input");
  keyboard.id = "wl_ve_mapInput";
  var logo = null, scaleBar = null, mapLegend = null, copyright = null;
  this.UpdateCopyright = (function ()
{
  if (copyright)
    copyright.Update();
}
);
  var dashboardContainer = null, dashboard = null, minimapControl = null, minimapContainer = null, mouseZoomDisabled = false, mousewheelZoomToCenter = true, isMinimap = false, boxTool = null, panTool = null, targetTool = null, currentTool = null, orthoMode = null, obliqueMode = null, threeDMode = null, currentMode = null, previousMode = null, Initialized2D = false, currentBounds = null, defaultEventTable = [], customEventTable = [], debug = false, graphicCanvas = null, svgLayer = null, svgDiv = null, bShowSVG = true;
  this.GetsvgDiv = (function ()
{
  return svgDiv;
}
);
  var mapCenterOffset = new VEPixel(0, 0), resizeInProgress = false, view3DCreated = false, spacecontrol = false, spacediv = null, spaceCameraIsFlying = false, init3dparam = null, resizeTimer = null, traffic3dAdded = false, initial3dView = null, cameraUpdateCount = 0, photoplugin3dActive = false;
  this.Is3DPhotoPluginActive = (function ()
{
  return photoplugin3dActive;
}
);
  this.Set3DPhotoPluginActive = (function (a)
{
  photoplugin3dActive = a;
}
);
  this.Init = (function ()
{
  orthoMode = new OrthoMode();
  orthoMode.Init();
  if (p_htParams.obliqueEnabled)
    {
      obliqueMode = new ObliqueMode();
      obliqueMode.SetGUID(p_htParams.mapGUID);
      obliqueMode.Init(p_htParams.obliqueUrl ? p_htParams.obliqueUrl : "%0dev.virtualearth.net/services/v1/ImageryMetadataService/ImageryMetadataService.asmx");
    }
  if (p_htParams.clientToken)
    this.SetClientToken(p_htParams.clientToken);
  threeDMode = new ThreeDMode();
  threeDMode.Init();
  UpdateFromParent();
  map.className = "MSVE_Map";
  map.style.zIndex = mapZIndex;
  p_elSource.appendChild(map);
  cssFn.addClass(p_elSource, "MSVE_MapContainer");
  keyboard.className = "MSVE_KeyboardInput";
  p_elSource.appendChild(keyboard);
  if (! p_htParams.fixedView)
    {
      p_elSource.attachEvent("onmousedown", MouseDown);
      p_elSource.attachEvent("onmouseup", MouseUp);
      p_elSource.attachEvent("onmousemove", MouseMove);
      p_elSource.attachEvent("ondblclick", MouseDoubleClick);
      p_elSource.attachEvent("oncontextmenu", ContextMenu);
      p_elSource.attachEvent("onclick", MouseClick);
      p_elSource.attachEvent("onmouseout", MouseOut);
      p_elSource.attachEvent("onmouseover", MouseOver);
      p_elSource.attachEvent("onmouseenter", MouseEnter);
      p_elSource.attachEvent("onmouseleave", MouseLeave);
    }
  if (p_htParams.buffer != undefined && p_htParams.buffer != null)
    SetTilePixelBuffer(p_htParams.buffer);
  var startIn3DMode = false;
  if (p_htParams.mapMode != "undefined" && p_htParams.mapMode != null && p_htParams.mapMode == Msn.VE.MapActionMode.Mode3D || p_htParams.altitude && p_htParams.altitude > - 1000 || p_htParams.tilt && p_htParams.tilt != - 90 || p_htParams.direction && p_htParams.direction != 0)
    {
      SetBaseTileSource();
      startIn3DMode = true;
      currentMode = threeDMode;
    }
  init3dparam = p_htParams.mapGUID;
  if ((p_htParams.latitude != null && typeof p_htParams.latitude != "undefined" && p_htParams.longitude != null && typeof p_htParams.longitude != "undefined" && p_htParams.zoomlevel != null && typeof p_htParams.zoomlevel != "undefined" || p_htParams.boundingBox != null && typeof p_htParams.boundingBox != "undefined") && p_htParams.mapstyle != null && typeof p_htParams.mapstyle != "undefined")
    try
      {
        var initialView = new Msn.VE.MapView(p_this);
        initialView.SetMapStyle(ValidateMapStyle(p_htParams.mapstyle), p_htParams.obliqueSceneId);
        if (startIn3DMode)
          initialView.sceneId = p_htParams.obliqueSceneId;
        if (p_htParams.boundingBox)
          {
            initialView.SetLatLongRectangle(p_htParams.boundingBox);
            if (startIn3DMode)
              initialView.Resolve(orthoMode, width, height);
          }
        else
          {
            initialView.SetZoomLevel(eval(p_htParams.zoomlevel));
            initialView.SetCenterLatLong(new Msn.VE.LatLong(eval(p_htParams.latitude), eval(p_htParams.longitude)));
          }
        if (p_htParams.altitude)
          initialView.SetAltitude(p_htParams.altitude);
        if (p_htParams.tilt)
          initialView.SetTilt(p_htParams.tilt);
        if (p_htParams.direction)
          initialView.SetDirection(p_htParams.direction);
        if (p_htParams.cameraPos)
          {
            initialView.cameraLatlong = new Msn.VE.LatLong(eval(p_htParams.cameraPos[0]), eval(p_htParams.cameraPos[1]));
            initialView._needsPivotOperation = false;
          }
        if (! startIn3DMode)
          SetBaseTileSource();
        currentView = initialView;
      }
    catch (a)
      {
        if (! startIn3DMode)
          SetDefaultView();
        else
          currentView = initialView;
      }
  else
    if (! startIn3DMode)
      SetDefaultView();
    else
      currentView = initialView;
  if (startIn3DMode)
    this.Init3DOnly();
  else
    this.Init2DOnly();
  if (typeof p_htParams.hideCopyright == "undefined" || ! p_htParams.hideCopyright)
    {
      copyright = new Copyright(p_elSource);
      copyright.Init();
      copyright.Update();
      if (scaleBar)
        copyright.PinTo(scaleBar);
      if (mapLegend)
        mapLegend.PinTo(copyright);
    }
  if (typeof p_htParams.showMinimap != "undefined" && p_htParams.showMinimap)
    {
      var loadMinimapNow = false;
      if (obliqueMode != null && p_htParams.mapstyle == obliqueStyle)
        loadMinimapNow = true;
      CreateMinimap(null, null, null, loadMinimapNow, null, p_htParams.minimapVersion, p_htParams.clientToken);
    }
  if (p_htParams.showDashboard)
    {
      if (p_htParams.showMapModeSwitch != false)
        p_htParams.showMapModeSwitch = true;
      CreateDashboard(p_htParams.dashboardX, p_htParams.dashboardY, p_htParams.dashboardSize, p_htParams.dashboardId, p_htParams.showMapModeSwitch, p_htParams.dashboardVersion);
    }
  if (p_htParams.showMapLegend)
    this.CreateLegend();
  if (startIn3DMode)
    copyright.Hide();
}
);
  AttachEvent("onstartmapstyleoblique", (function ()
{
  if (targetTool)
    targetTool.trackMovement();
}
));
  AttachEvent("onendmapstyleoblique", (function ()
{
  if (targetTool)
    targetTool.ignoreMovement();
}
));
  AttachEvent("onchangeview", OnChangeView);
  this.Init2DOnly = (function (a)
{
  mvcViewFacade.OnSwitchToFlatlandView();
  currentView.doRoadShading = typeof p_htParams.doRoadShading != "undefined" && p_htParams.doRoadShading == true;
  if (! p_htParams.fixedView)
    {
      boxTool = new BoxTool();
      boxTool.Init();
      panTool = new PanTool();
      panTool.Init();
      currentTool = panTool;
      keyboard.attachEvent("onkeydown", KeyDown);
      keyboard.attachEvent("onkeyup", KeyUp);
      keyboard.attachEvent("onblur", StopKeyboardPan);
      p_elSource.attachEvent("onmousewheel", MouseWheel);
    }
  targetTool = new TargetTool();
  targetTool.init();
  if (! p_htParams.disableLogo)
    {
      logo = new Logo(p_elSource);
      logo.Init();
    }
  if (typeof copyright != "undefined" && copyright != null)
    copyright.Show();
  if (obliqueMode && currentMode != obliqueMode)
    obliqueMode.UpdateAvailability();
  graphicCanvas = GetGraphic(this);
  tileLayerManager.Active = true;
  if (currentView == null)
    SetDefaultView();
  else
    {
      if (a == true || ! Initialized2D)
        {
          SetView(currentView);
          Initialized2D = true;
        }
      SetView(null);
    }
  if (p_htParams.showScaleBar)
    {
      scaleBar = new ScaleBar(p_elSource);
      scaleBar.Init();
      if (currentScaleBarUnit)
        this.SetScaleBarDistanceUnit(currentScaleBarUnit);
      if (copyright)
        copyright.PinTo(scaleBar);
      AttachEvent("onendzoom", scaleBar.Update);
      AttachEvent("onendpan", scaleBar.Update);
      AttachEvent("onobliquechange", scaleBar.Update);
      AttachEvent("onchangemapstyle", scaleBar.Update);
      AttachEvent("onresize", scaleBar.Reposition);
    }
  Fire("oninitmode", Msn.VE.MapActionMode.Mode2D);
}
);
  this.Init3DOnly = (function ()
{
  if (typeof LoadMapDrawing == "function")
    LoadMapDrawing(null);
  if (dashboard)
    if (window.navigator.userAgent.indexOf("Firefox") < 0)
      {
        var d = dashboard.GetShimmedElements(), c;
        for (c = 0;c < d.length;c++)
          UpdateIFrameShim(d[c]);
      }
  if (mapLegend)
    mapLegend.UpdateShim();
  var b;
  try
    {
      if (currentView == null)
        b = SetDefaultView();
      else
        {
          var a = currentView.MakeCopy();
          if (currentView.mapStyle == obliqueStyle)
            {
              a.SetMapStyle(lastOrthoMapStyle);
              a.SetZoomLevel(a.GetZoomLevel() + zoomLevelToAdjustObliqueToOrthro);
            }
          a.SetCenterLatLong(new Msn.VE.LatLong(currentView.latlong.latitude, currentView.latlong.longitude));
          a.cameraLatlong = currentView.cameraLatlong;
          b = SetView(a);
        }
    }
  catch (e)
    {
      b = false;
    }
  if (! b)
    {
      this._Disable3DMode(true);
      return ;
    }
  if (! view3DCreated)
    return ;
  mvcViewFacade.OnSwitchToView3D(spacecontrol);
  if (p_htParams.showDashboard)
    spacecontrol.ShowNavigationControl = true;
  if (typeof p_htParams.hideCopyright == "undefined" || ! p_htParams.hideCopyright)
    spacecontrol.ShowCopyright = true;
  if (typeof copyright != "undefined" && copyright != null)
    copyright.Hide();
  if (p_htParams.showScaleBar)
    {
      spacecontrol.ShowScale = true;
      if (currentScaleBarUnit)
        this.SetScaleBarDistanceUnit(currentScaleBarUnit);
    }
  if (window.locale)
    {
      spacecontrol.CurrentLocale = window.locale;
      spacecontrol.DisplayMetricUnits = MapControl.Features.ScaleBarKilometers;
    }
  spacecontrol.AttachEvent("OnHardwareCapabilitiesUpdate", "OnHardwareCapabilitiesUpdate");
  if (spacecontrol.HardwareClassificationLevel > 0)
    this.Setup3DManifests();
  tileLayerManager.AddAllTileSourcesTo3D(spacecontrol);
  AttachEvent("onchangetraffic", OnView3DScaleBarPositionUpdate);
  spacecontrol.AttachEvent("OnCameraChanged", "OnView3DUpdateViewpoint");
  spacecontrol.AttachEvent("OnBeginCameraChange", "OnBeginFlyTo");
  if (! p_htParams.fixedView)
    {
      spacecontrol.AttachEvent("OnHover", "OnView3DPushpinHover");
      spacecontrol.AttachEvent("OnHoverEnd", "OnView3DHoverEnd");
      spacecontrol.AttachEvent("OnDropGeometry", "OnView3DDropGeometry");
      spacecontrol.AttachEvent("OnLatLonAltClicked", "OnView3DLatLonAltClicked");
      spacecontrol.AttachEvent("OnMouseDown", "OnMouseDown3D");
      spacecontrol.AttachEvent("OnMouseUp", "OnMouseUp3D");
      spacecontrol.AttachEvent("OnClick", "OnClick3D");
      spacecontrol.AttachEvent("OnMouseOver", "OnMouseOver3D");
      spacecontrol.AttachEvent("OnMouseOut", "OnMouseOut3D");
      spacecontrol.AttachEvent("OnDoubleClick", "OnDoubleClick3D");
      spacecontrol.AttachEvent("OnModelViewSuccess", " UniqueModelViewSuccess");
      spacecontrol.AttachEvent("OnModelViewFailure", " UniqueModelViewFailure");
    }
  else
    spacecontrol.FixedView = true;
  traffic3dAdded = false;
  if (typeof VE_TrafficManager != "undefined" && VE_TrafficManager != null)
    VE_TrafficManager.GetTrafficInfo(false);
  if (typeof VE_BrandExplorationManager != "undefined" && VE_BrandExplorationManager != null)
    VE_BrandExplorationManager.Clear();
  if (! init3dparam)
    Relay3DPushpins();
  Fire("oninitmode", Msn.VE.MapActionMode.Mode3D);
}
);
  this.Setup3DManifests = (function ()
{
  var c = currentView.mapStyle, a = "http://go.microsoft.com/fwlink/?LinkID=98770", b = "http://go.microsoft.com/fwlink/?LinkID=98775", d = "http://go.microsoft.com/fwlink/?LinkID=98774";
  if (c == "a")
    {
      a = "http://go.microsoft.com/fwlink/?LinkID=98771";
      spacecontrol.ShowAtmosphere = true;
    }
  if (c == "h")
    {
      a = "http://go.microsoft.com/fwlink/?LinkID=98772";
      spacecontrol.ShowAtmosphere = true;
    }
  if (c == "r")
    {
      spacecontrol.TexturesVisible = false;
      if (spacecontrol.HardwareClassificationLevel < 3)
        a = "http://go.microsoft.com/fwlink/?LinkID=98769";
      spacecontrol.ShowAtmosphere = false;
    }
  else
    spacecontrol.TexturesVisible = true;
  if (2 == spacecontrol.HardwareClassificationLevel)
    {
      d = "http://go.microsoft.com/fwlink/?LinkID=98773";
      b = "http://go.microsoft.com/fwlink/?LinkID=98776";
    }
  else
    if (1 == spacecontrol.HardwareClassificationLevel)
      {
        d = "http://go.microsoft.com/fwlink/?LinkID=98773";
        b = "";
      }
  spacecontrol.AddImageSource("Terrain", "Texture", GetManifestUrl(a), 0, 1);
  spacecontrol.AddElevationSource("Terrain", "DEM", GetManifestUrl(d), 0);
  if (b != "")
    spacecontrol.AddModelSource("Model", "Model", GetManifestUrl(b));
  else
    spacecontrol.RemoveModelSource("Model", "Model");
}
);
  this.ShowSVG = (function (a)
{
  bShowSVG = a;
}
);
  this.getSvgLayer = (function ()
{
  if (svgLayer == null)
    {
      svgDiv = document.createElement("div");
      svgDiv.style.position = "absolute";
      if (bShowSVG)
        svgDiv.style.zIndex = 60;
      else
        svgDiv.style.zIndex = - 1;
      this.resizeSVG();
      map.appendChild(svgDiv);
      svgLayer = new Msn.Drawing.SvgLayer(svgDiv, this);
    }
  return svgLayer;
}
);
  this.resetSvgLayer = (function ()
{
  this.getSvgLayer();
  svgDiv.style.top = - parseInt(map.style.top) + "px";
  svgDiv.style.left = - parseInt(map.style.left) + "px";
}
);
  this.resizeSVG = (function ()
{
  if (svgDiv != null)
    {
      var b = GetWindowWidth(), a = GetWindowHeight();
      svgDiv.style.top = "0px";
      svgDiv.style.left = "0px";
      svgDiv.style.width = b + "px";
      svgDiv.style.height = a + "px";
    }
}
);
  this.GetDashboard = (function ()
{
  return dashboard;
}
);
  this.GetMinimap = (function ()
{
  return minimapControl;
}
);
  this.DisableZoomEvents = (function (a)
{
  mouseZoomDisabled = a;
}
);
  this.GetMouseWheelZoomToCenter = (function ()
{
  return mousewheelZoomToCenter;
}
);
  this.SetMouseWheelZoomToCenter = (function (a)
{
  mousewheelZoomToCenter = a;
}
);
  this.SetMinimapMode = (function ()
{
  mouseZoomDisabled = true;
  isMinimap = true;
}
);
  this.SetCursor = (function (a)
{
  var b = p_elSource.style;
  if (b.cursor != a)
    b.cursor = a;
}
);
  this.Destroy = (function ()
{
  if (currentView)
    {
      currentView.Destroy();
      currentView = null;
    }
  if (preferredView)
    {
      preferredView.Destroy();
      preferredView = null;
    }
  if (copyright)
    {
      copyright.Destroy();
      copyright = null;
    }
  if (currentMode == threeDMode && currentMode != null)
    this.Destroy3DOnly();
  else
    {
      this.Destroy2DOnly();
      while (pushpins.length)
        pushpins.pop().Destroy();
      ClearLines();
    }
  if (! p_htParams.fixedView)
    {
      p_elSource.detachEvent("onmousedown", MouseDown);
      p_elSource.detachEvent("onmouseup", MouseUp);
      p_elSource.detachEvent("onmousemove", MouseMove);
      p_elSource.detachEvent("ondblclick", MouseDoubleClick);
      p_elSource.detachEvent("oncontextmenu", ContextMenu);
      p_elSource.detachEvent("onmousewheel", MouseWheel);
      p_elSource.detachEvent("onclick", MouseClick);
      p_elSource.detachEvent("onmouseout", MouseOut);
      p_elSource.detachEvent("onmouseover", MouseOver);
      p_elSource.detachEvent("onmouseenter", MouseEnter);
      p_elSource.detachEvent("onmouseleave", MouseLeave);
    }
  if (dashboard)
    {
      if (typeof dashboard.Destroy != "undefined")
        dashboard.Destroy();
      dashboard = null;
    }
  if (mapLegend)
    {
      DetachEvent("onendzoom", mapLegend.Update);
      DetachEvent("onendpan", mapLegend.Update);
      DetachEvent("onobliquechange", mapLegend.Update);
      if (typeof VE_TrafficManager != "undefined" && VE_TrafficManager != null)
        VE_TrafficManager.CloseTrafficLegend();
      mapLegend.Destroy();
      mapLegend = null;
    }
  if (dashboardContainer)
    {
      dashboardContainer.detachEvent("onmousedown", IgnoreEvent);
      dashboardContainer.detachEvent("onmouseup", IgnoreEvent);
      dashboardContainer.detachEvent("onmousemove", DashboardContainerMouseMoveEvent);
      dashboardContainer.detachEvent("onmousewheel", IgnoreEvent);
      dashboardContainer.detachEvent("ondblclick", IgnoreEvent);
      dashboardContainer.detachEvent("oncontextmenu", IgnoreEvent);
      dashboardContainer.detachEvent("onkeydown", IgnoreEvent);
      dashboardContainer.detachEvent("onkeyup", IgnoreEvent);
      dashboardContainer = null;
    }
  if (minimapControl)
    {
      minimapControl.Destroy();
      minimapControl = null;
    }
  if (minimapContainer)
    {
      minimapContainer.detachEvent("onmousedown", IgnoreEvent);
      minimapContainer.detachEvent("onmouseup", IgnoreEvent);
      minimapContainer.detachEvent("onmousemove", DashboardContainerMouseMoveEvent);
      minimapContainer.detachEvent("onmousewheel", IgnoreEvent);
      minimapContainer.detachEvent("ondblclick", IgnoreEvent);
      minimapContainer.detachEvent("oncontextmenu", IgnoreEvent);
      minimapContainer.detachEvent("onkeydown", IgnoreEvent);
      minimapContainer.detachEvent("onkeyup", IgnoreEvent);
      minimapContainer = null;
    }
  if (orthoMode)
    {
      orthoMode.Destroy();
      orthoMode = null;
    }
  if (obliqueMode)
    {
      obliqueMode.Destroy();
      obliqueMode = null;
    }
  if (threeDMode)
    {
      threeDMode.Destroy();
      threeDMode = null;
    }
  DestroyEventTable();
  m_clientToken = null;
  p_elSource.style.backgroundColor = "transparent";
  p_elSource.style.filter = "";
  keyboard = p_elSource = p_this = map = null;
  tileLayerManager.ClearTileLayers();
  cssCursors = null;
  cssFn = null;
}
);
  this.Destroy2DOnly = (function ()
{
  if (! p_htParams.fixedView)
    {
      keyboard.detachEvent("onkeydown", KeyDown);
      keyboard.detachEvent("onkeyup", KeyUp);
      keyboard.detachEvent("onblur", StopKeyboardPan);
      p_elSource.detachEvent("onmousewheel", MouseWheel);
    }
  tileLayerManager.Active = false;
  if (scaleBar)
    {
      DetachEvent("onendzoom", scaleBar.Update);
      DetachEvent("onendpan", scaleBar.Update);
      DetachEvent("onobliquechange", scaleBar.Update);
      DetachEvent("onchangemapstyle", scaleBar.Update);
      DetachEvent("onresize", scaleBar.Reposition);
      scaleBar.Destroy();
      scaleBar = null;
    }
  if (copyright)
    copyright.PinTo(null);
  if (logo)
    {
      logo.Destroy();
      logo = null;
    }
  if (boxTool)
    {
      boxTool.Destroy();
      boxTool = null;
    }
  if (panTool)
    {
      panTool.Destroy();
      panTool = null;
    }
  if (targetTool)
    {
      targetTool.destroy();
      targetTool = null;
    }
  if (graphicCanvas)
    {
      graphicCanvas.Destroy();
      graphicCanvas = null;
    }
  Fire("ondestroymode", Msn.VE.MapActionMode.Mode2D);
}
);
  this.Destroy3DOnly = (function ()
{
  DetachEvent("onchangetraffic", OnView3DScaleBarPositionUpdate);
  view3DCreated = false;
  try
    {
      spacecontrol.Close();
    }
  catch (c)
    {}
  spacecontrol = false;
  window.status = "";
  if (spacediv != null)
    {
      spacediv.removeNode(true);
      spacediv = null;
    }
  if (dashboard && dashboard.GetShimmedElements)
    {
      var b = dashboard.GetShimmedElements(), a;
      for (a = 0;a < b.length;a++)
        destroyIFrameShim(b[a].id);
    }
  if (mapLegend)
    mapLegend.RemoveShim();
  Fire("ondestroymode", Msn.VE.MapActionMode.Mode3D);
}
);
  this.FireResize = (function ()
{
  if (resizeInProgress)
    return ;
  else
    resizeInProgress = true;
  var b = p_this.w, a = p_this.h;
  if (! b || b <= 0 || ! a || a <= 0)
    Fill();
  else
    {
      p_elSource.style.width = b + "px";
      p_elSource.style.height = a + "px";
      UpdateFromParent();
      if (currentMode == null || currentMode != threeDMode)
        {
          if (b && b >= 0)
            width = b;
          if (a && a >= 0)
            height = a;
        }
      PanToView(currentView);
    }
  if (copyright)
    copyright.Reposition();
  if (scaleBar)
    scaleBar.Reposition();
  if (! document.all)
    p_this.resizeSVG();
  Fire("onresize");
}
);
  this.CreateLegend = (function ()
{
  if (! mapLegend)
    {
      mapLegend = new MapLegend(p_elSource);
      mapLegend.Init();
      if (copyright)
        mapLegend.PinTo(copyright);
    }
  return mapLegend;
}
);
  VECopyrightTableEntry.prototype.IsMatch = (function (b,c,a)
{
  var d = false;
  if (b >= this.MinZoomLevel && b <= this.MaxZoomLevel && c >= this.MinLatitude && c <= this.MaxLatitude && a >= this.MinLongitude && a <= this.MaxLongitude)
    d = true;
  return d;
}
);
  var g_sVECopyrightTable = new VECopyrightTable();
  var currentShapeID = null;
  var northLatitude = 0, southLatitude = 0, westLongitude = 0, eastLongitude = 0;
  var IsDrivingEventAttached = false;
  var hijackMouseMove = false, hijackMouseCursor = false, isLastButtonMiddle = false;
  var lastmouseX = 0, lastmouseY = 0;
  var isEnablingDefaultDblClick = true;
  var obliqueLoop = 0;
  Pushpin.prototype.Init = (function (i,g,h,f,e,c,d,j,a,b)
{
  this.id = i;
  this.lat = g;
  this.lon = h;
  this.width = f;
  this.height = e;
  this.className = c;
  this.innerHtml = d;
  this.zIndex = j;
  this.pinType = a;
  this.pin.id = i;
  this.pin.className = c;
  this.pin.style.position = "absolute";
  this.pin.innerHTML = d;
  this.pin.pinType = a || Msn.VE.PushPinTypes.Default;
  this.Offset = getPushPinOffset(this.pin.pinType);
  if (a == Msn.VE.PushPinTypes.SearchResultPrecise)
    {
      this.img.src = GetUrlPrefix() + "i/bin/" + window.buildVersion + "/pins/poi_search.gif";
      this.pin.appendChild(this.img);
    }
  else
    if (a == Msn.VE.PushPinTypes.SearchResultNonprecise)
      {
        this.img.src = GetUrlPrefix() + "i/bin/" + window.buildVersion + "/pins/poi_search_nonprecise.gif";
        this.pin.appendChild(this.img);
      }
    else
      if (a == Msn.VE.PushPinTypes.AdSponsor)
        {
          this.img.src = GetUrlPrefix() + "i/bin/" + window.buildVersion + "/pins/poi_search.gif";
          this.pin.appendChild(this.img);
        }
  this.pin.unselectable = "on";
  this.center = new Msn.VE.LatLong(g, h);
  this.w = f;
  this.h = e;
  if (b)
    this.SetAccuratePixel(b);
  var k = this.LatLongToPixelWithAccuracyOffset(currentView.zoomLevel, originX, originY);
  this.SetPixelLocation(k);
}
);
  Pushpin.prototype.SetAccuratePixel = (function (b)
{
  var a = currentMode.PixelToLatLong(b, currentView.zoomLevel);
  this.beLatLongOffset = new Msn.VE.LatLong(a.latitude - this.center.latitude, a.longitude - this.center.longitude);
}
);
  Pushpin.prototype.LatLongToPixelWithAccuracyOffset = (function (b,c,d)
{
  var a = this.center;
  if (this.beLatLongOffset && GetMapStyle() == Msn.VE.MapStyle.Oblique)
    a = new Msn.VE.LatLong(this.center.latitude + this.beLatLongOffset.latitude, this.center.longitude + this.beLatLongOffset.longitude);
  return GetPushpinPixel(a, b, c, d);
}
);
  Pushpin.prototype.GetLatitude = (function ()
{
  return this.center.latitude;
}
);
  Pushpin.prototype.GetLongitude = (function ()
{
  return this.center.longitude;
}
);
  Pushpin.prototype.ClearSteps = (function ()
{
  var b = zoomTotalSteps;
  for (var a = 0;a <= b;a++)
    {
      this.xs[a] = this.x1 - this.w / 2 + this.Offset.x + "px";
      this.ys[a] = this.y1 - this.h / 2 + this.Offset.y + "px";
    }
}
);
  Pushpin.prototype.PrecomputeSteps = (function ()
{
  var d = zoomTotalSteps;
  for (var a = 0;a <= d;a++)
    {
      var b = a / d, c = 1 - b;
      this.xs[a] = MathFloor(c * this.x1 + b * this.x2 - this.w / 2 + this.Offset.x) + "px";
      this.ys[a] = MathFloor(c * this.y1 + b * this.y2 - this.h / 2 + this.Offset.y) + "px";
    }
}
);
  Pushpin.prototype.SetFactor = (function (a)
{
  this.pin.style.left = this.xs[a];
  this.pin.style.top = this.ys[a];
}
);
  Pushpin.prototype.SetPixelLocation = (function (a)
{
  if (a && this.visible)
    {
      this.x1 = a.x;
      this.y1 = a.y;
      this.x2 = this.x1;
      this.y2 = this.y1;
      this.PrecomputeSteps();
      this.SetFactor(0);
      this.pin.style.display = "block";
    }
  else
    this.pin.style.display = "none";
}
);
  Pushpin.prototype.SwapStates = (function ()
{
  var a = 0;
  a = this.x1;
  this.x1 = this.x2;
  this.x2 = a;
  a = this.y1;
  this.y1 = this.y2;
  this.y2 = a;
}
);
  Pushpin.prototype.Reposition = (function ()
{
  var a = this.LatLongToPixelWithAccuracyOffset(currentView.zoomLevel, originX, originY);
  if (a)
    {
      this.x1 = a.x;
      this.y1 = a.y;
      this.ClearSteps();
      this.SetFactor(0);
      if (this.pin.style.display != "none" && this.visible)
        this.pin.style.display = "block";
    }
  else
    this.pin.style.display = "none";
}
);
  Pushpin.prototype.UnHide = (function ()
{
  if (! this.visible)
    {
      this.pin.style.display = "block";
      this.visible = true;
    }
}
);
  Pushpin.prototype.Hide = (function ()
{
  if (this.visible)
    {
      this.pin.style.display = "none";
      this.visible = false;
    }
}
);
  Pushpin.prototype.UnHide3D = (function ()
{
  if (IsModeEnabled(Msn.VE.MapActionMode.Mode3D))
    View3DAddPushpin(this);
}
);
  Pushpin.prototype.Hide3D = (function ()
{
  if (IsModeEnabled(Msn.VE.MapActionMode.Mode3D))
    View3DRemovePushpin(this.id);
}
);
  Pushpin.prototype.PrepareForZoom = (function (b,c,d)
{
  this.x1 -= offsetX;
  this.y1 -= offsetY;
  var a = this.LatLongToPixelWithAccuracyOffset(d, b, c);
  if (a)
    {
      this.x2 = a.x;
      this.y2 = a.y;
      this.PrecomputeSteps();
      if (this.pin.style.display != "none" && this.visible)
        this.pin.style.display = "block";
    }
  else
    this.pin.style.display = "none";
}
);
  Pushpin.prototype.RemoveFromMap = (function ()
{
  if (this.pin.parentNode == map)
    map.removeChild(this.pin);
}
);
  Pushpin.prototype.Move = (function (a)
{
  this.MoveToLatLon(PixelToLatLong(a));
}
);
  Pushpin.prototype.MoveToLatLon = (function (a)
{
  this.center = a;
  this.Reposition();
}
);
  var totalRequestTime = 0, totalRequestCount = 0, totalFailureCount = 0, responseRangeCeilings = [];
  responseRangeCeilings[roadStyle] = [325, 975];
  responseRangeCeilings[shadedStyle] = responseRangeCeilings[roadStyle];
  responseRangeCeilings[aerialStyle] = [350, 1050];
  responseRangeCeilings[hybridStyle] = [425, 1275];
  responseRangeCeilings[obliqueStyle] = [450, 1350];
  var responseRangeCounts = [0, 0, 0];
  var orthoTileSpec = new VETileSourceSpecification();
  orthoTileSpec.ID = mapTiles;
  orthoTileSpec.SourceName = Msn.VE.API ? Msn.VE.API.Constants.orthotileserver : "%0t%2.tiles.virtualearth.net/tiles/%3%4.%5?g=%6";
  orthoTileSpec.NumServers = 4;
  var shadedTileSpec = new VETileSourceSpecification();
  shadedTileSpec.ID = mapTiles;
  shadedTileSpec.SourceName = Msn.VE.API ? Msn.VE.API.Constants.shadedtileserver : "%0t%2.tiles.virtualearth.net/tiles/%3%4.%5?g=%6&shading=hill";
  shadedTileSpec.SourceName = shadedTileSpec.SourceName.replace(/%1/g, "r").replace(/%3/g, "r").replace(/%5/g, "png").replace(/%6/g, generations["r"]);
  shadedTileSpec.NumServers = 4;
  _VERegisterNamespaces("Msn.VE.Geometry");
  Msn.VE.Geometry.Point = (function (c,d)
{
  var a = this, b = Msn.VE.Geometry;
  this.x = c;
  this.y = d;
  this.add = (function (c,d)
{
  var e = new b.Point(a.x + c, a.y + d);
  return e;
}
);
  this.getDistanceFrom = (function (b)
{
  var c = Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2), d = Math.sqrt(c);
  return d;
}
);
}
);
  Msn.VE.Geometry.Overlap = {Range : {GreaterThanX : 1, LessThanX : 2, GreaterThanY : 4, LessThanY : 8, InXRange : 16, InYRange : 32, InRange : 48}, getInstance : (function (f,g)
{
  function e()
  {
    if ((b.getP2()).x > (a.getP2()).x)
      c += d.Range.GreaterThanX;
    if ((b.getP1()).x < (a.getP1()).x)
      c += d.Range.LessThanX;
    if ((b.getP2()).y > (a.getP2()).y)
      c += d.Range.GreaterThanY;
    if ((b.getP1()).y < (a.getP1()).y)
      c += d.Range.LessThanY;
    if ((a.getP1()).x <= (b.getP1()).x && (b.getP2()).x <= (a.getP2()).x)
      c += d.Range.InXRange;
    if ((a.getP1()).y <= (b.getP1()).y && (b.getP2()).y <= (a.getP2()).y)
      c += d.Range.InYRange;
  }
  var d = Msn.VE.Geometry.Overlap, a = f, b = g, c = 0;
  e();
  this.getRange = (function ()
{
  return c;
}
);
  this.getLeftXBleed = (function ()
{
  if (c & d.Range.LessThanX)
    return Math.abs((a.getP1()).x - (b.getP1()).x);
  else
    return 0;
}
);
  this.getRightXBleed = (function ()
{
  if (c & d.Range.GreaterThanX)
    return (b.getP2()).x - (a.getP2()).x;
  else
    return 0;
}
);
  this.getTopYBleed = (function ()
{
  if (c & d.Range.LessThanY)
    return Math.abs((a.getP1()).y - (b.getP1()).y);
  else
    return 0;
}
);
  this.getBottomYBleed = (function ()
{
  if (c & d.Range.GreaterThanY)
    return (b.getP2()).y - (a.getP2()).y;
  else
    return 0;
}
);
}
)};
  Msn.VE.Geometry.Rectangle = (function (h,i)
{
  function f()
  {
    c();
  }
  function c()
  {
    d = b.y - a.y;
    e = b.x - a.x;
  }
  var g = this, a = h, b = i, d, e;
  f();
  this.move = (function (c)
{
  a.x = c.x;
  a.y = c.y;
  b.x = c.x + e;
  b.y = c.y + d;
}
);
  this.getP1 = (function ()
{
  return a;
}
);
  this.getP2 = (function ()
{
  return b;
}
);
  this.setP1 = (function (b)
{
  a = b;
  c();
}
);
  this.setP2 = (function (a)
{
  b = a;
  c();
}
);
  this.getWidth = (function ()
{
  return e;
}
);
  this.getHeight = (function ()
{
  return d;
}
);
  this.containsPoint = (function (c)
{
  return c.x >= a.x && c.x <= b.x && c.y >= a.y && c.y <= b.y;
}
);
  this.scale = (function (d)
{
  a.x -= d;
  a.y -= d;
  b.x += d;
  b.y += d;
  c();
}
);
  this.getOverlap = (function (a)
{
  var b = Msn.VE.Geometry;
  return new b.Overlap.getInstance(g, a);
}
);
}
);
  Msn.VE.Geometry.Functions = {getSlope : (function (a,b)
{
  return (b.y - a.y) / (b.x - a.x);
}
), getYIntercept : (function (b,a)
{
  return a.y - b * a.x;
}
), getBestBoundingPoint : (function (f,b,c)
{
  var a = Msn.VE.Geometry;
  if (! b)
    b = g(f).getScreenPosition();
  var e = new a.Rectangle(b, new a.Point(b.x + f.offsetWidth, b.y + f.offsetHeight)), j = c.getOverlap(e), d = j.getRange();
  if ((d & a.Overlap.Range.InRange) == a.Overlap.Range.InRange)
    return b;
  var h = b.x, i = b.y;
  if (d & a.Overlap.Range.GreaterThanX)
    h = (c.getP2()).x - e.getWidth();
  if (d & a.Overlap.Range.LessThanX)
    h = (c.getP1()).x;
  if (d & a.Overlap.Range.GreaterThanY)
    i = (c.getP2()).y - e.getHeight();
  if (d & a.Overlap.Range.LessThanY)
    i = (c.getP1()).y;
  return new a.Point(h, i);
}
)};
  view3DMode = false;
  var sentinel3D, setStyle;
  var on3DAnimationInterruptedCallback = null;
  var setTrafficViewflag = true;
  VEAuthenticationCode = (function ()
{
  }
);
  VEAuthenticationCode.None = "0";
  VEAuthenticationCode.NoToken = "1";
  VEAuthenticationCode.TokenValid = "2";
  VEAuthenticationCode.TokenInvalid = "3";
  VEAuthenticationCode.TokenExpired = "4";
  this.__HandleAuthentication = (function (b)
{
  if (b && b.ResponseSummary && b.ResponseSummary.AuthResultCode)
    {
      var a = b.ResponseSummary.AuthResultCode;
      if (a != VEAuthenticationCode.None && a != VEAuthenticationCode.NoToken && a != VEAuthenticationCode.TokenValid)
        if (a == VEAuthenticationCode.TokenExpired)
          this.Fire("ontokenexpire");
        else
          this.Fire("ontokenerror");
    }
}
);
  this.SetCenter = SetCenter;
  this.SetCenterAccurate = SetCenterAccurate;
  this.SetMapStyle = SetMapStyle;
  this.SetScaleBarDistanceUnit = SetScaleBarDistanceUnit;
  this.GetCenterLatitude = GetCenterLatitude;
  this.GetCenterLongitude = GetCenterLongitude;
  this.GetLatitude = GetLatitude;
  this.GetLongitude = GetLongitude;
  this.GetY = GetY;
  this.GetX = GetX;
  this.LatLongToPixel = LatLongToPixel;
  this.LatLongToPixelAsync = LatLongToPixelAsync;
  this.PixelToLatLong = PixelToLatLong;
  this.PixelToLatLongAsync = PixelToLatLongAsync;
  this.GetZoomLevel = GetZoomLevel;
  this.GetMapStyle = GetMapStyle;
  this.GetMapMode = GetMapMode;
  this.GetMode = GetMode;
  this.GetAltitude = GetAltitude;
  this.GetDirection = GetDirection;
  this.GetTilt = GetTilt;
  this.GetMetersPerPixel = GetMetersPerPixel;
  this.Fill = Fill;
  this.Resize = Resize;
  this.PanMap = PanMap;
  this.ContinuousPan = ContinuousPan;
  this.StopContinuousPan = StopContinuousPan;
  this.StopKeyboardPan = StopKeyboardPan;
  this.PanToLatLong = PanToLatLong;
  this.PanByPixel = PanByPixel;
  this.GetPushpins = GetPushpins;
  this.AddPushpin = AddPushpin;
  this.RemovePushpin = RemovePushpin;
  this.ClearPushpins = ClearPushpins;
  this.GetPushpinMapPixel = GetPushpinMapPixel;
  this.SetViewport = SetViewport;
  this.SetBestMapView = SetBestMapView;
  this.ClipLatitude = ClipLatitude;
  this.ClipLongitude = ClipLongitude;
  this.GetBestMapViewBounds = GetBestMapViewBounds;
  this.IncludePointInViewport = IncludePointInViewport;
  this.SetZoom = SetZoom;
  this.SetTilt = SetTilt;
  this.SetDirection = SetDirection;
  this.SetAltitude = SetAltitude;
  this.ZoomIn = ZoomIn;
  this.ZoomOut = ZoomOut;
  this.SetCenterAndZoom = SetCenterAndZoom;
  this.AddLine = AddLine;
  this.RemoveLine = RemoveLine;
  this.ClearLines = ClearLines;
  this.AttachEvent = AttachEvent;
  this.DetachEvent = DetachEvent;
  this.AttachCustomEvent = AttachCustomEvent;
  this.DetachCustomEvent = DetachCustomEvent;
  this.FireCustomEvent = FireCustomEvent;
  this.DisposeAllCustomEvent = DisposeAllCustomEvent();
  this.CreateEvent = CreateEvent;
  this.Fire = Fire;
  this.IsObliqueAvailable = IsObliqueAvailable;
  this.GetObliqueScene = GetObliqueScene;
  this.SetAnimationEnabled = SetAnimationEnabled;
  this.IsAnimationEnabled = IsAnimationEnabled;
  this.SetObliqueScene = SetObliqueScene;
  this.SetObliqueLocation = SetObliqueLocation;
  this.SetObliqueOrientation = SetObliqueOrientation;
  this.SetView = SetView;
  this.Debug = Debug;
  this.GetResponseRangeCounts = GetResponseRangeCounts;
  this.ResetResponseRangeCounts = ResetResponseRangeCounts;
  this.GetFailureRate = GetFailureRate;
  this.SetTrafficView = SetTrafficView;
  this.GetTrafficAvailability = GetTrafficAvailability;
  this.GetMarketsFile = GetMarketsFile;
  this.GetIncidentsFile = GetIncidentsFile;
  this.GetSlidingExpirationForAutoRefresh = GetSlidingExpirationForAutoRefresh;
  this.GetAutoRefreshRate = GetAutoRefreshRate;
  this.GetMapLegend = GetMapLegend;
  this.SetFocus = SetFocus;
  this.GetCurrentMode = GetCurrentMode;
  this.GetMapWidth = GetMapWidth;
  this.GetMapHeight = GetMapHeight;
  this.GetCurrentMapView = GetCurrentMapView;
  this.SetBaseTileSource = SetBaseTileSource;
  this.SetTileSource = tileLayerManager.SetTileSource;
  this.SetTileLayerVisibility = tileLayerManager.SetTileLayerVisibility;
  this.LoadTileLayer = tileLayerManager.LoadTileLayer;
  this.ClearTileLayer = tileLayerManager.ClearTileLayer;
  this.ClearTileLayers = tileLayerManager.ClearTileLayers;
  this.DeleteTileSource = tileLayerManager.DeleteTileSource;
  this.HideBaseTileLayer = tileLayerManager.HideBaseTileLayer;
  this.ShowBaseTileLayer = tileLayerManager.ShowBaseTileLayer;
  this.RefreshTileLayer = tileLayerManager.RefreshTileLayer;
  this.RefreshTileLayers = tileLayerManager.RefreshTileLayers;
  this.ShowTrafficLegend = tileLayerManager.ShowTrafficLegend;
  this.HideTrafficLegend = tileLayerManager.HideTrafficLegend;
  this.GetTimeStamp = tileLayerManager.GetTimeStamp;
  this.GetMaxTileZoom = tileLayerManager.GetMaxTileZoom;
  this.PanView = tileLayerManager.PanView;
  this.LoadBaseLayer = tileLayerManager.LoadBaseLayer;
  this.GetCurrentViewMaxZoomLevel = GetCurrentViewMaxZoomLevel;
  this.SetTilePixelBuffer = SetTilePixelBuffer;
  this.SetClientToken = SetClientToken;
  this.SetMapHeight = SetMapHeight;
  this.GetMapSurface = GetMapSurface;
  this.EnableMode = EnableMode;
  this._Enable3DMode = _Enable3DMode;
  this._Disable3DMode = _Disable3DMode;
  this.ControlReady = ControlReady;
  this.Get3DVisibleArea = Get3DVisibleArea;
  this.Get3DControl = Get3DControl;
  this.IsModeEnabled = IsModeEnabled;
  this.Sync3dView = Sync3dView;
  this.OnBeginCameraUpdate = OnBeginCameraUpdate;
  this.OnEndCameraUpdate = OnEndCameraUpdate;
  this.IsCameraFlying = IsCameraFlying;
  this.Show3DTraffic = Show3DTraffic;
  this.Remove3DTraffic = Remove3DTraffic;
  this.IterativeCameraRefinement = IterativeCameraRefinement;
  this.SetChildDiv = SetChildDiv;
  this.EnableGeoCommunity = EnableGeoCommunity;
  this.IsGeoCommunityEnabled = IsGeoCommunityEnabled;
  this.HijackMouseCursor = HijackMouseCursor;
  this.IsHijackMouseCursor = IsHijackMouseCursor;
  this.GetOffsetX = GetOffsetX;
  this.GetOffsetY = GetOffsetY;
  this.GetCenterOffset = GetCenterOffset;
  this.SetCenterOffset = SetCenterOffset;
  this.UpdatePreferredView = UpdatePreferredView;
  this.GetGraphic = GetGraphic;
  this.CreateDashboard = CreateDashboard;
  this.GetLastViewChangeType = GetLastViewChangeType;
  this.SetOn3DAnimationInterruptedCallback = SetOn3DAnimationInterruptedCallback;
  this.GetOn3DAnimationInterruptedCallback = GetOn3DAnimationInterruptedCallback;
  this.SetShowMapModeSwitch = SetShowMapModeSwitch;
  this.GetObliqueAvailability = GetObliqueAvailability;
  this.GetTopPx = GetTopPx;
  this.GetLeftPx = GetLeftPx;
  this.CreateMinimap = CreateMinimap;
}
);
Msn.VE.Bounds = (function (e,f,a,c,b,d)
{
  this.z1 = e;
  this.z2 = f;
  this.x1 = a;
  this.y1 = c;
  this.x2 = b;
  this.y2 = d;
}
);
Msn.VE.DashboardStates = new (function ()
{
  this.MapMode = new (function ()
{
  this.Flatland = 1;
  this.View3D = 2;
}
)();
  this.MapView = new (function ()
{
  this.Ortho = 4;
  this.Oblique = 8;
  this.StreetSide = 16;
}
)();
  this.MapStyle = new (function ()
{
  this.Road = 32;
  this.Shaded = 64;
  this.Aerial = 128;
  this.Hybrid = 256;
}
)();
}
)();
VEMiniMapSize = (function ()
{
  }
);
VEMiniMapSize.Small = "small";
VEMiniMapSize.Large = "large";
VEMiniMapExpandState = (function ()
{
  }
);
VEMiniMapExpandState.Collapsed = "collapsed";
VEMiniMapExpandState.Expanded = "expanded";
VEMiniMapVersion = (function ()
{
  }
);
VEMiniMapVersion[5] = "MSVE_Minimap_V5";
VEMiniMapVersion[6] = "MSVE_Minimap_V6";
Msn.VE.Minimap = (function (bb,l,cb,h)
{
  function V()
  {
    var g = {};
    g.latitude = a.GetCenterLatitude();
    g.longitude = a.GetCenterLongitude();
    var h = a.GetZoomLevel() - 4;
    if (h < 1)
      h = 1;
    if (g.latitude == null || g.longitude == null)
      {
        g.latitude = 0;
        g.longitude = 0;
        h = 1;
      }
    g.zoomlevel = h;
    g.mapstyle = Msn.VE.MapStyle.Road;
    g.showScaleBar = false;
    g.showMapLegend = false;
    g.showDashboard = false;
    g.showMinimap = false;
    g.hideCopyright = true;
    g.disableLogo = true;
    g.clientToken = O;
    b = new Msn.VE.MapControl(f, g);
    b.Init();
    b.SetMinimapMode();
    G(D, "MSVE_minimap_r_style_button", "MSVE_minimap_style", L_MinimapRoad_Text, L_MinimapRoadToolTip_Text, J, $MVEM.IsEnabled(MapControl.Features.MapStyle.Road));
    G(C, "MSVE_minimap_h_style_button", "MSVE_minimap_style", L_MinimapHybrid_Text, L_MinimapHybridToolTip_Text, F, $MVEM.IsEnabled(MapControl.Features.MapStyle.Hybrid));
    K();
    b.AttachEvent("onendpan", S);
    b.AttachEvent("onclick", x);
    a.AttachEvent("onendpan", R);
    a.AttachEvent("onobliquechange", M);
    a.AttachEvent("onendzoom", P);
    a.AttachEvent("onchangeview", I);
    var i = a.IsModeEnabled(Msn.VE.MapActionMode.Mode3D) ? Msn.VE.DashboardStates.MapMode.View3D : Msn.VE.DashboardStates.MapMode.Flatland;
    e = Msn.VE.DashboardStates.MapView.Ortho;
    if (a.GetMapStyle() == Msn.VE.MapStyle.Oblique)
      {
        b.SetZoom(14);
        e = Msn.VE.DashboardStates.MapView.Oblique;
      }
    d = new Msn.VE.CameraRotator(c, this, f);
    q = true;
    T(i);
    y();
    s();
  }
  function T(a)
  {
    t = a;
  }
  function y()
  {
    if (! N && typeof minimapRoller != "undefined" && minimapRoller != null && t == Msn.VE.DashboardStates.MapMode.Flatland)
      if (e == Msn.VE.DashboardStates.MapView.Oblique)
        {
          if (! minimapRoller.isExpanded())
            minimapRoller.rollOut(n.rollOutDirection);
        }
      else
        if (e == Msn.VE.DashboardStates.MapView.Ortho)
          if (minimapRoller.isExpanded() && ! $MVEM.IsEnabled(MapControl.Features.Minimap.ShowByDefault))
            minimapRoller.rollIn(n.rollInDirection);
  }
  function s()
  {
    if (t == Msn.VE.DashboardStates.MapMode.Flatland)
      if (e == Msn.VE.DashboardStates.MapView.Oblique)
        {
          var b = a.GetObliqueScene();
          if (! b)
            return ;
          var c = b.GetOrientation();
          d.SetStyle("oblique");
          switch (c)
          {
            case "North":
              d.SetOrientation(90);
              break ;
            case "South":
              d.SetOrientation(270);
              break ;
            case "East":
              d.SetOrientation(0);
              break ;
            case "West":
              d.SetOrientation(180);
          }
          d.Show();
        }
      else
        if (e == Msn.VE.DashboardStates.MapView.Ortho)
          {
            d.SetStyle("ortho");
            d.Show();
          }
        else
          d.Hide();
    else
      d.Hide();
  }
  function Z()
  {
    u = true;
    a.PanToLatLong(b.GetCenterLatitude(), b.GetCenterLongitude());
  }
  function z()
  {
    var c = a.GetCenterLatitude(), d = a.GetCenterLongitude();
    A = true;
    b.PanToLatLong(c, d);
  }
  function W()
  {
    var b = e;
    e = Msn.VE.DashboardStates.MapView.Ortho;
    if (a.GetMapStyle() == Msn.VE.MapStyle.Oblique)
      {
        e = Msn.VE.DashboardStates.MapView.Oblique;
        if (! q)
          V();
      }
    if (q && e != b)
      {
        y();
        s();
      }
  }
  function S()
  {
    if (B)
      {
        B = false;
        return ;
      }
    if (! A)
      Z();
    else
      A = false;
  }
  function L()
  {
    var a = n.GetSize() == VEMiniMapSize.Small ? VEMiniMapSize.Large : VEMiniMapSize.Small;
    n.SetSize(a);
  }
  function R()
  {
    if (! j)
      return ;
    if (! u)
      {
        o = v();
        z();
      }
    else
      u = false;
  }
  function I()
  {
    if (! j)
      return ;
    var c = v();
    if (a.GetMapStyle() != Msn.VE.MapStyle.Oblique && ! c.Equals(o))
      {
        b.SetView(c);
        o = null;
      }
  }
  function M()
  {
    if (! j)
      return ;
    z();
    s();
  }
  function P()
  {
    if (! j)
      return ;
    o = v();
    Q();
  }
  function v()
  {
    var d = b.GetCurrentMapView().MakeCopy(), e = a.GetCurrentMapView();
    d.SetCenterLatLong(new Msn.VE.LatLong(e.latlong.latitude, e.latlong.longitude));
    var c = 1;
    if (e.style == Msn.VE.MapStyle.Oblique)
      c = 14;
    else
      c = e.GetZoomLevel() - 4;
    if (c < 1)
      c = 1;
    d.SetZoomLevel(c);
    d.Resolve(b.GetCurrentMode(), b.GetMapWidth(), b.GetMapHeight());
    return d;
  }
  function Q()
  {
    var c = 0;
    if (a.GetMapStyle() == Msn.VE.MapStyle.Oblique)
      c = 14;
    else
      c = a.GetZoomLevel() - 4;
    if (c < 1)
      c = 1;
    if (b.GetZoomLevel() == c)
      {
        z();
        return ;
      }
    b.SetCenterAndZoom(a.GetCenterLatitude(), a.GetCenterLongitude(), c);
  }
  function G(a,g,d,f,e,c,b)
  {
    a.innerText = f;
    a.id = g;
    a.title = e;
    if (typeof b == "undefined" || b == true)
      {
        a.className = d;
        a.attachEvent("onclick", c);
        a.attachEvent("onmousedown", IgnoreEvent);
      }
    pseudoHover(a);
    k.appendChild(a);
  }
  function E(a,b)
  {
    a.detachEvent("onclick", b);
    a.detachEvent("onmousedown", IgnoreEvent);
  }
  function x()
  {
    f.title = "";
    b.DetachEvent("onclick", x);
  }
  function J()
  {
    K();
  }
  function F()
  {
    X();
  }
  function X()
  {
    k.className = "MSVE_minimap_hybrid_style";
    b.SetMapStyle("h");
  }
  function K()
  {
    k.className = "MSVE_minimap_road_style";
    b.SetMapStyle("r");
  }
  function ab()
  {
    return h;
  }
  function H(b,g)
  {
    var f = l.GetMapStyle() == "o" || $MVEM.IsEnabled(MapControl.Features.Minimap.ShowByDefault), d, e, c = $ID("MSVE_minimap"), a = $ID("MSVE_minimap_glyph");
    if (! a || ! c)
      return ;
    switch (g)
    {
      case 5:
        b.rollInDirection = Msn.VE.Animation.RollDirection.RightLeft;
        b.rollOutDirection = Msn.VE.Animation.RollDirection.LeftRight;
        d = 8;
        e = 0;
        break ;
      case 6:
        b.rollInDirection = Msn.VE.Animation.RollDirection.LeftRight | Msn.VE.Animation.RollDirection.BottomUp;
        b.rollOutDirection = Msn.VE.Animation.RollDirection.RightLeft | Msn.VE.Animation.RollDirection.TopDown;
        d = a.offsetWidth + 1;
        e = a.offsetHeight;
        break ;
      default:
        return ;
    }
    window.minimapRoller = new Msn.VE.Animation.Roller(c);
    minimapRoller.setAccelerationFunction(AccelerationFunctions.CrazyElevator);
    minimapRoller.setXLeave(d);
    minimapRoller.setYLeave(e);
    pseudoHover(a);
    Y(c, minimapRoller, "MSVE_minimap_glyph");
    if (! f)
      minimapRoller.collapse(b.rollInDirection);
    a.onclick = (function ()
{
  var a = l.GetMinimap();
  a.SetKeepRollState();
  if (minimapRoller.isExpanded())
    {
      $VE_A.Log($VE_A.PgName.Map, "MiniMapCollapse");
      minimapRoller.rollIn(a.rollInDirection);
    }
  else
    {
      $VE_A.Log($VE_A.PgName.Map, "MiniMapExpand");
      minimapRoller.rollOut(a.rollOutDirection);
    }
}
);
    window.attachEvent("onunload", (function ()
{
  a = c = null;
  window.detachEvent("onunload", arguments.callee);
}
));
  }
  function Y(a,b,c)
  {
    b.hookEvent("afterrollin", (function ()
{
  var d = Msn.VE.Css.Functions, b = l.GetMinimap();
  d.removeClass(a, "expanded");
  d.addClass(a, "collapsed");
  if (b && b.IsInitialized())
    b.SetDoUpdates(false);
  $ID(c).title = L_MinimapShowToolTip_Text;
}
));
    b.hookEvent("afterrollout", (function ()
{
  var d = Msn.VE.Css.Functions, b = l.GetMinimap();
  d.removeClass(a, "collapsed");
  d.addClass(a, "expanded");
  if (b && b.IsInitialized())
    {
      b.SetDoUpdates(true);
      s();
    }
  $ID(c).title = L_MinimapHideToolTip_Text;
}
));
    b.hookEvent("beforerollout", (function ()
{
  var a = l.GetMinimap();
  if (a && ! a.IsInitialized())
    a.Init();
}
));
  }
  var n = this, db = Msn.VE.Css, U = Msn.VE.Css.Functions, t = Msn.VE.DashboardStates.MapMode.Flatland, e = Msn.VE.DashboardStates.MapView.Ortho, N = false, O = null, A = false, u = false, B = false, j = true, o = null, c = bb, b = null, a = l, i = [];
  i[VEMiniMapSize.Small] = "MSVE_smallMinimap";
  i[VEMiniMapSize.Large] = "MSVE_normalMinimap";
  var w = [];
  w[VEMiniMapSize.Small] = L_MinimapLargerToolTip_Text;
  w[VEMiniMapSize.Large] = L_MinimapSmallerToolTip_Text;
  var r = [];
  r[VEMiniMapSize.Small] = 138.5;
  r[VEMiniMapSize.Large] = 180.5;
  if (h != 5 && h != 6)
    h = 5;
  c.className = VEMiniMapExpandState.Expanded + " " + i[VEMiniMapSize.Small] + " " + VEMiniMapVersion[h];
  var p = document.createElement("div");
  p.id = "MSVE_minimap_transparency";
  c.appendChild(p);
  var f = document.createElement("div");
  f.id = "MSVE_minimap_content";
  f.title = L_MinimapDragToolTip_Text;
  p.appendChild(f);
  var m = document.createElement("span");
  m.id = "MSVE_minimap_glyph";
  m.title = L_MinimapHideToolTip_Text;
  if (cb != false && Msn.VE.Animation)
    {
      this.rollInDirection = null;
      this.rollOutDirection = null;
      c.appendChild(m);
      H(this, h);
    }
  var d = null, q = false;
  a.AttachEvent("onchangemapstyle", W);
  var D = document.createElement("div"), C = document.createElement("div"), k = document.createElement("div");
  k.id = "MSVE_minimap_style_wrapper";
  f.appendChild(k);
  switch (h)
  {
    case 5:
      var g = document.createElement("div");
      g.id = "MSVE_minimap_resize";
      g.attachEvent("onclick", L);
      g.title = L_MinimapLargerToolTip_Text;
      pseudoHover(g);
      c.appendChild(g);
      break ;
    case 6:
      m.title = L_MinimapShowToolTip_Text;
  }
  this.Init = V;
  this.Destroy = (function ()
{
  E(D, J);
  E(C, F);
  D = C = null;
  if (d)
    {
      d.Destroy();
      d = null;
    }
  a.DetachEvent("onendpan", R);
  a.DetachEvent("onobliquechange", M);
  a.DetachEvent("onendzoom", P);
  a.DetachEvent("onchangeview", I);
  if (b)
    {
      b.DetachEvent("onendpan", S);
      b.DetachEvent("onclick", x);
      b.Destroy();
      b = null;
    }
  switch (h)
  {
    case 5:
      g.detachEvent("onclick", L);
  }
  k = null;
  p = null;
  f = null;
  m = null;
  g = null;
  n = null;
}
);
  this.IsInitialized = (function ()
{
  return q;
}
);
  this.SetClientToken = (function (a)
{
  O = a;
  if (b)
    b.SetClientToken(a);
}
);
  this.SetMapMode = T;
  this.SetRollerState = y;
  this.ChangeOrientation = (function (b)
{
  if (t == Msn.VE.DashboardStates.MapMode.Flatland)
    if (e == Msn.VE.DashboardStates.MapView.Oblique)
      switch (b)
      {
        case 0:
        case 360:
          a.SetObliqueOrientation("East");
          break ;
        case 270:
          a.SetObliqueOrientation("South");
          break ;
        case 90:
          a.SetObliqueOrientation("North");
          break ;
        case 180:
          a.SetObliqueOrientation("West");
      }
}
);
  this.SetKeepRollState = (function ()
{
  N = true;
}
);
  this.Hide = (function ()
{
  c.style.display = "none";
}
);
  this.Show = (function ()
{
  c.style.display = "block";
}
);
  this.SetPosition = (function (a,b)
{
  c.style.left = a + "px";
  c.style.top = b + "px";
}
);
  this.SetSize = (function (a)
{
  var d = this.GetSize();
  if (a != d)
    {
      U.removeClass(c, i[d]);
      U.addClass(c, i[a]);
      g.title = w[a];
      if (c.className.indexOf(VEMiniMapExpandState.Expanded) >= 0)
        {
          B = true;
          b.Resize(r[a], r[a]);
        }
    }
}
);
  this.GetSize = (function ()
{
  return c.className.indexOf(i[VEMiniMapSize.Large]) > - 1 ? VEMiniMapSize.Large : VEMiniMapSize.Small;
}
);
  this.SetDoUpdates = (function (a)
{
  j = a;
  if (j)
    Q();
}
);
  this.GetContainer = (function ()
{
  return c;
}
);
  this.GetVersion = ab;
  this.creatMinimapRoller = H;
  Msn.VE.CameraRotator = (function (g,j,d)
{
  function i()
  {
    a = null;
  }
  function k()
  {
    a.style.display = "none";
  }
  function l()
  {
    a.style.display = "block";
  }
  function f(a)
  {
    b(a);
  }
  function h(a)
  {
    switch (a)
    {
      case "oblique":
        c = "MSVE_direction";
        b(90);
        break ;
      case "ortho":
        c = "MSVE_ortho";
        b(90);
        break ;
      default:
        c = "MSVE_ortho";
        b(90);
    }
  }
  function b(b)
  {
    e = MathFloor((b + 45 + 720) / 90) % 4;
    a.className = c + e;
  }
  var n = Msn.VE.Css, m = j, g = g, d = d, e = 0, c = "ortho", a = document.createElement("div");
  a.id = "MSVE_cameraPosition";
  d.appendChild(a);
  b(90);
  this.Hide = k;
  this.Show = l;
  this.Destroy = i;
  this.SetStyle = h;
  this.SetOrientation = f;
}
);
}
);
Msn.VE.DashboardSize = new (function ()
{
  this.Normal = "normal";
  this.Small = "small";
  this.Tiny = "tiny";
}
)();
Msn.VE.NavControlFactory = (function (f,g,c,b,e,d)
{
  if (typeof c == "undefined" || c == null)
    c = Msn.VE.DashboardSize.Normal;
  if (typeof b == "undefined" || b == null)
    b = "MSVE_dashboardId";
  if (! isFinite(parseInt(d)))
    d = 6;
  var a;
  switch (d)
  {
    case 5:
      a = new Msn.VE.V5Control(f, g, c, b, e);
      break ;
    case 6:
    default:
      a = new Msn.VE.V6Control(f, g, c, b, e);
  }
  a.version = d;
  a.GetVersion = (function ()
{
  return a.version;
}
);
  return a;
}
);
Msn.VE.V5Control = (function (z,a,i,B,x)
{
  function D()
  {
    if (i == Msn.VE.DashboardSize.Normal)
      {
        controlsNeeded = [b.Mode, b.View, b.Style, b.OrthoZoom, b.ObliqueCompass, b.ObliqueZoom];
        e = new Msn.VE.CommonControls(a, controlsNeeded);
        d = e.GetControls();
        e.displaying3DNotification = false;
        d[b.View].classRecipients = [o];
        d[b.Mode].classRecipients = [c];
        e.Init();
        e.Oblique3DFunctionality = e.ObliqueFunctions.ObliqueTiltIn3D;
        A(x);
        this.HideToggleGlyph();
        p.appendChild(d[b.View]);
        l.appendChild(d[b.Style]);
        l.appendChild(d[b.ObliqueCompass]);
        m.appendChild(d[b.OrthoZoom]);
        m.appendChild(d[b.ObliqueZoom]);
        if ($MVEM.IsEnabled(MapControl.Features.MapStyle.BirdsEye))
          {
            e.Create(b.ObliqueNotification);
            n.appendChild(d[b.ObliqueNotification]);
          }
        if (Msn.VE.Animation)
          t();
      }
    if (i == Msn.VE.DashboardSize.Small)
      {
        controlsNeeded = [b.Style];
        e = new Msn.VE.CommonControls(a, controlsNeeded);
        d = e.GetControls();
        l.appendChild(d[b.Style]);
        e.Init();
      }
    if (i == Msn.VE.DashboardSize.Small || i == Msn.VE.DashboardSize.Tiny)
      {
        controlsNeeded = [b.TinyZoom];
        e = new Msn.VE.CommonControls(a, controlsNeeded);
        d = e.GetControls();
        m.appendChild(d[b.TinyZoom]);
        var g = $ID("MSVE_navAction_tinyZoomBar_plus"), f = $ID("MSVE_navAction_tinyZoomBar_minus");
        if (g && f)
          e.GetTinyZoom().HookupPlusMinusEvents(g, f);
      }
  }
  function C()
  {
    if (i == Msn.VE.DashboardSize.Normal)
      {
        e.DestroyControl(d[b.OrthoZoom]);
        e.DestroyControl(d[b.ObliqueZoom]);
        e.DestroyControl(d[b.ObliqueCompass]);
        y();
        if (a)
          {
            try
              {
                a.DetachEvent("onobliquechange", OnObliqueChange);
                if ($MVEM.IsEnabled(MapControl.Features.MapStyle.BirdsEye))
                  {
                    a.DetachEvent("onobliqueenter", OnObliqueEnter);
                    a.DetachEvent("onobliqueleave", OnObliqueLeave);
                  }
              }
            catch (c)
              {}
            a = null;
          }
      }
    if (i == Msn.VE.DashboardSize.Normal || i == Msn.VE.DashboardSize.Small)
      {
        e.DestroyControl(d[b.Style]);
        l.removeChild(d[b.Style]);
      }
    if (i == Msn.VE.DashboardSize.Small || i == Msn.VE.DashboardSize.Tiny)
      {
        e.DestroyControl(d[b.TinyZoom]);
        m.removeChild(d[b.TinyZoom]);
      }
    l = e.obliqueCompass = null;
    p = q = null;
    n = null;
    j = null;
    d[b.ObliqueNotification] = m = d[b.ObliqueCompass] = null;
  }
  function v()
  {
    if (! a.IsModeEnabled(Msn.VE.MapActionMode.Mode3D) && a.GetMapStyle() != "o")
      {
        n.appendChild(j);
        j.style.top = - (f.offsetHeight / 2 + 6) + "px";
        j.innerHTML += "<div id=\"MSVE_threeDNotifyIcon\">&nbsp;</div> <div id=\"MSVE_threeDNotifyText\">" + L_Dashboard3DText_Text + "</div>";
        j.attachEvent("onclick", u);
        window.setTimeout(w, 6000);
        e.displaying3DNotification = true;
      }
    else
      j.style.display = "none";
  }
  function A(a)
  {
    r(a);
    h = document.createElement("a");
    h.className = "MSVE_toggleGlyph";
    h.title = L_NavActionHideToolTip_Text;
    f.appendChild(h);
  }
  function r(a)
  {
    if ($MVEM.IsEnabled(MapControl.Features.MapStyle.View3D) && a != false)
      {
        if (! k)
          {
            e.Create(b.Mode);
            f.appendChild(d[b.Mode]);
            v();
            k = true;
          }
        f.className = "MSVE_header MSVE_with3D";
      }
    else
      {
        f.className = "MSVE_header MSVE_no3D";
        k = false;
      }
  }
  function y()
  {
    if (k)
      {
        e.DestroyControl(b.Mode);
        if (d[b.Mode] != null)
          f.removeChild(d[b.Mode]);
        k = false;
      }
    f.removeChild(h);
    c.removeChild(f);
    h = f = null;
  }
  function u()
  {
    j.style.display = "none";
    e.displaying3DNotification = false;
    if (! a.IsModeEnabled(Msn.VE.MapActionMode.Mode3D))
      if (typeof ShowMessage != "undefined")
        {
          ShowMessage(L_3DLoading_Text);
          window.setTimeout(View3DSwitch, 200);
        }
      else
        a.EnableMode(Msn.VE.MapActionMode.Mode3D);
  }
  function w()
  {
    if (j)
      {
        j.style.display = "none";
        e.displaying3DNotification = false;
      }
    if (a != null && ! a.IsModeEnabled(Msn.VE.MapActionMode.Mode3D))
      if (a.IsObliqueAvailable() && $MVEM.IsEnabled(MapControl.Features.MapStyle.BirdsEye))
        e.DisplayObliqueNotification();
  }
  function t()
  {
    var b = (a.GetDashboard().GetHeader()).lastChild;
    a.GetDashboard().ShowToggleGlyph();
    window.dbRoller = new Msn.VE.Animation.Roller(a.GetDashboard().GetElement());
    dbRoller.setAccelerationFunction(AccelerationFunctions.CrazyElevator);
    dbRoller.setYLeave(32);
    dbRoller.hookEvent("beforerollin", (function ()
{
  dbRoller.setYLeave((a.GetDashboard().GetHeader()).offsetHeight);
  if (a.GetMinimap())
    {
      a.GetMinimap().Hide();
      if (a.GetMinimap().IsInitialized())
        a.GetMinimap().SetDoUpdates(false);
    }
}
));
    dbRoller.hookEvent("afterrollin", (function ()
{
  a.GetDashboard().GetElement().className = (a.GetDashboard().GetElement()).className.replace(/\s*expanded/g, "");
  a.GetDashboard().GetElement().className += " collapsed";
  (a.GetDashboard().GetHeader()).lastChild.title = L_NavActionShowToolTip_Text;
}
));
    dbRoller.hookEvent("beforerollout", (function ()
{
  a.GetDashboard().GetElement().className = (a.GetDashboard().GetElement()).className.replace(/\s*collapsed/g, "");
  a.GetDashboard().GetElement().className += " expanded";
}
));
    dbRoller.hookEvent("afterrollout", (function ()
{
  if (a.GetMinimap())
    {
      a.GetMinimap().Show();
      if (minimapRoller && minimapRoller.isExpanded() && a.GetMinimap().IsInitialized())
        a.GetMinimap().SetDoUpdates(true);
    }
  (a.GetDashboard().GetHeader()).lastChild.title = L_NavActionHideToolTip_Text;
}
));
    dbRoller.hookEvent("roll", RollShim);
    b.onclick = (function ()
{
  if (dbRoller.isExpanded())
    dbRoller.rollIn(Msn.VE.Animation.RollDirection.BottomUp);
  else
    dbRoller.rollOut(Msn.VE.Animation.RollDirection.TopDown);
  return false;
}
);
    b = null;
  }
  Msn.VE.DashboardStates = new (function ()
{
  this.MapMode = new (function ()
{
  this.Flatland = 1;
  this.View3D = 2;
}
)();
  this.MapView = new (function ()
{
  this.Ortho = 4;
  this.Oblique = 8;
  this.StreetSide = 16;
}
)();
  this.MapStyle = new (function ()
{
  this.Road = 32;
  this.Shaded = 64;
  this.Aerial = 128;
  this.Hybrid = 256;
}
)();
}
)();
  var s = {Style : "MSVE_navAction_mapStyleCell", Road : "MSVE_navAction_RoadMapStyle", Aerial : "MSVE_navAction_AerialMapStyle", Hybrid : "MSVE_navAction_HybridMapStyle", Mode : "MSVE_navAction_modeCell", Mode2D : "MSVE_navAction_FlatlandMapMode", Mode3D : "MSVE_navAction_View3DMapMode", View : "MSVE_navAction_mapViewCellInner", Ortho : "MSVE_navAction_OrthoMapView", Oblique : "MSVE_navAction_ObliqueMapView", StreetSide : "MSVE_navAction_StreetSideMapView", Pan : "MSVE_navAction_panContainer", PanUp : "MSVE_navAction_panUp", PanDown : "MSVE_navAction_panDown", PanLeft : "MSVE_navAction_panLeft", PanRight : "MSVE_navAction_panRight", TinyZoom : "MSVE_TinyZoomBar", OrthoZoom : "MSVE_OrthoZoomBar", ObliqueZoom : "MSVE_ObliqueZoomBar", ObliqueCompass : "MSVE_compassDiv", ObliqueNotification : "MSVE_obliqueNotification", Traffic : "MSVE_navAction_traffic"};
  Msn.VE.CommonControls = (function (c,r)
{
  function gb(b)
  {
    function v()
    {
      b.style.display = "block";
    }
    function u()
    {
      b.style.display = "none";
    }
    function r(a)
    {
      a = GetEvent(a);
      CancelEvent(a);
      k();
      n(h((Gimme.Screen.getMousePosition(a)).y));
      return false;
    }
    function h(b)
    {
      b -= s + d.offsetHeight + a.offsetHeight;
      var c = e.offsetHeight - a.offsetHeight;
      if (b < 0)
        b = 0;
      else
        if (b > c)
          b = c;
      return b;
    }
    function l()
    {
      c.ZoomOut();
    }
    function m()
    {
      c.ZoomIn();
    }
    function t()
    {
      d.detachEvent("onclick", l);
      a.detachEvent("onmousedown", o);
      a.detachEvent("onmousemove", p);
      a.detachEvent("onmouseup", q);
      a.detachEvent("onclick", IgnoreEvent);
      e.detachEvent("onclick", r);
      f.detachEvent("onclick", m);
      b.detachEvent("onmousedown", IgnoreEvent);
      b.detachEvent("onmousedown", IgnoreEvent);
      b.detachEvent("onclick", IgnoreEvent);
      b.detachEvent("ondblclick", IgnoreEvent);
      d = a = e = f = null;
    }
    function o(b)
    {
      b = GetEvent(b);
      CancelEvent(b);
      k();
      if (a.setCapture)
        a.setCapture();
      j = true;
      return false;
    }
    function p(b)
    {
      b = GetEvent(b);
      CancelEvent(b);
      if (j)
        a.style.top = h((Gimme.Screen.getMousePosition(b)).y) + "px";
      return false;
    }
    function q(b)
    {
      b = GetEvent(b);
      CancelEvent(b);
      if (a.releaseCapture)
        a.releaseCapture();
      j = false;
      n(h((Gimme.Screen.getMousePosition(b)).y));
      i();
      return false;
    }
    function k()
    {
      var a = g(b).getScreenPosition();
      w = a.x;
      s = a.y;
    }
    function n(f)
    {
      var b = e.offsetHeight - a.offsetHeight, d = 1 + MathRound((b - f) / b * 1);
      $VE_A.Log($VE_A.PgName.Map, "Zoom");
      c.SetZoom(d);
    }
    function i()
    {
      if (c.GetZoomLevel() == 1)
        a.style.top = e.offsetHeight - a.offsetHeight + "px";
      else
        a.style.top = "0px";
    }
    var f = document.createElement("div"), e = document.createElement("div"), a = document.createElement("div"), d = document.createElement("div"), w = 0, s = 0, j = false;
    this.Init = (function ()
{
  d.className = "MSVE_ZoomBar_minus";
  d.id = "MSVE_navAction_obliqueZoomBar_minus";
  d.unselectable = "on";
  d.title = L_ZoomBarMinusToolTip_Text;
  d.attachEvent("onclick", l);
  pseudoHover(d);
  a.className = "MSVE_ZoomBar_slider";
  a.id = "MSVE_navAction_obliqueZoomBar_slider";
  a.unselectable = "on";
  a.attachEvent("onmousedown", o);
  a.attachEvent("onmousemove", p);
  a.attachEvent("onmouseup", q);
  a.attachEvent("onclick", IgnoreEvent);
  pseudoHover(a);
  e.className = "MSVE_ObliqueZoomBar_bar";
  e.unselectable = "on";
  e.appendChild(a);
  e.attachEvent("onclick", r);
  f.className = "MSVE_ZoomBar_plus";
  f.id = "MSVE_navAction_obliqueZoomBar_plus";
  f.title = L_ZoomBarPlusToolTip_Text;
  f.unselectable = "on";
  f.attachEvent("onclick", m);
  pseudoHover(f);
  b.className = "MSVE_ZoomBar";
  b.id = "MSVE_ObliqueZoomBar";
  b.appendChild(d);
  b.appendChild(e);
  b.appendChild(f);
  b.attachEvent("onmousedown", IgnoreEvent);
  b.attachEvent("onmouseup", IgnoreEvent);
  b.attachEvent("onclick", IgnoreEvent);
  b.attachEvent("ondblclick", IgnoreEvent);
  i();
}
);
    this.Destroy = t;
    this.Show = v;
    this.Hide = u;
    this.UpdateFromMap = i;
  }
  function x(z,x,y)
  {
    function f(e)
    {
      if (d)
        return ;
      c = a.className;
      a.className = "MSVE_obliqueCompassPointHover";
      if (b.onmouseover)
        b.onmouseover(e);
    }
    function i(a)
    {
      if (d)
        return ;
      f(a);
      c = "MSVE_obliqueCompassPointOn";
      if (b.onclick)
        b.onclick(a);
    }
    function h(e)
    {
      if (d)
        return ;
      a.className = c;
      if (b.onmouseout)
        b.onmouseout(e);
    }
    function m()
    {
      c = "MSVE_obliqueCompassPointOn";
      a.className = "MSVE_obliqueCompassPointOn";
    }
    function l()
    {
      c = "MSVE_obliqueCompassPointOff";
      a.className = "MSVE_obliqueCompassPointOff";
    }
    function u()
    {
      d = true;
      l();
    }
    function k()
    {
      d = false;
      m();
    }
    function q()
    {
      return a;
    }
    function n()
    {
      return g;
    }
    function o(a)
    {
      g = a;
    }
    function w()
    {
      j.Reset();
      k();
    }
    function p(b)
    {
      a.style.left = b.left;
      a.style.top = b.top;
    }
    function v(s,o,p)
    {
      function n(a,b,c)
      {
        if (b >= c - a && b <= c + a)
          return true;
        return false;
      }
      function j()
      {
        a += b;
        if (a > Math.PI * 2)
          a -= Math.PI * 2;
        else
          if (a < 0)
            a += Math.PI * 2;
        if (n(q, a, d))
          {
            b = 0.3;
            a = d;
            f(a);
            c = false;
            return ;
          }
        f(a);
        window.setTimeout(j, m);
      }
      function f(a)
      {
        var b = o + e * Math.sin(a), c = p + e * Math.cos(a);
        h.style.left = b + "px";
        h.style.top = c + "px";
      }
      function g(a)
      {
        if (c)
          return ;
        c = true;
        d = a;
        j();
      }
      function k(a,c)
      {
        i = c;
        if (! i)
          b *= - 1;
        g(l * a);
      }
      function r()
      {
        c = false;
        a = 0;
      }
      var h = s, a = 0, b = 0.3, d = 0, m = 40, c = false, l = Math.PI / 2, i = true, q = b + 0.1;
      this.RotateTo = g;
      this.RotateToIndex = k;
      this.Reset = r;
    }
    function t()
    {
      a.detachEvent("onmouseover", f);
      a.detachEvent("onmouseout", h);
      a.detachEvent("onclick", i);
      a = null;
    }
    function s(a)
    {
      e = a;
    }
    function r()
    {
      return e;
    }
    var a = document.createElement("div");
    a.setAttribute("id", z);
    a.innerHTML = x;
    var c = "MSVE_obliqueCompassPointOff", g = y;
    a.attachEvent("onmouseover", f);
    a.attachEvent("onmouseout", h);
    a.attachEvent("onclick", i);
    this.onclick = null;
    this.onmouseover = null;
    this.onmouseout = null;
    var e = 25, b = this, d = false, j = new v(a, 17, 17);
    this.SetRadius = s;
    this.GetRadius = r;
    this.GetElement = q;
    this.GetCurrentPositionIndex = n;
    this.SetCurrentPositionIndex = o;
    this.SetCurrentPosition = p;
    this.On = m;
    this.Off = l;
    this.RotateToIndex = j.RotateToIndex;
    this.Reset = w;
    this.Disable = u;
    this.Enable = k;
    this.Destroy = t;
  }
  function fb(D)
  {
    function p(a)
    {
      if (a < 0)
        a = 4 - Math.abs(a);
      return a;
    }
    function n(h,g)
    {
      var f = h.GetCurrentPositionIndex();
      d.SetCurrentPositionIndex(p(d.GetCurrentPositionIndex() - f));
      e.SetCurrentPositionIndex(p(e.GetCurrentPositionIndex() - f));
      a.SetCurrentPositionIndex(p(a.GetCurrentPositionIndex() - f));
      b.SetCurrentPositionIndex(p(b.GetCurrentPositionIndex() - f));
      var c;
      if (g)
        c = g == Msn.VE.BirdsEyeSearchSpinDirection.CounterclockwiseSpin;
      else
        c = f != 3;
      a.RotateToIndex(2 - a.GetCurrentPositionIndex() < 0 ? a.GetCurrentPositionIndex() : 2 - a.GetCurrentPositionIndex(), c);
      d.RotateToIndex(2 - d.GetCurrentPositionIndex() < 0 ? d.GetCurrentPositionIndex() : 2 - d.GetCurrentPositionIndex(), c);
      b.RotateToIndex(2 - b.GetCurrentPositionIndex() < 0 ? b.GetCurrentPositionIndex() : 2 - b.GetCurrentPositionIndex(), c);
      e.RotateToIndex(2 - e.GetCurrentPositionIndex() < 0 ? e.GetCurrentPositionIndex() : 2 - e.GetCurrentPositionIndex(), c);
    }
    function g(a)
    {
      switch (a)
      {
        case 0:
          h();
          break ;
        case 1:
          A();
          break ;
        case 2:
          B();
          break ;
        case 3:
          C();
      }
    }
    function h()
    {
      m.className = "MSVE_obliqueCompassArrowU";
    }
    function B()
    {
      m.className = "MSVE_obliqueCompassArrowD";
    }
    function A()
    {
      m.className = "MSVE_obliqueCompassArrowR";
    }
    function C()
    {
      m.className = "MSVE_obliqueCompassArrowL";
    }
    function s()
    {
      n(b);
      g(0);
      var a = c.GetObliqueScene();
      if (a)
        if (a.GetOrientation() != Msn.VE.Orientation.South)
          c.SetObliqueOrientation("South");
    }
    function r()
    {
      n(a);
      g(0);
      var b = c.GetObliqueScene();
      if (b)
        if (b.GetOrientation() != Msn.VE.Orientation.North)
          c.SetObliqueOrientation("North");
    }
    function t()
    {
      n(d);
      g(0);
      var a = c.GetObliqueScene();
      if (a)
        if (a.GetOrientation() != Msn.VE.Orientation.East)
          c.SetObliqueOrientation("East");
    }
    function w()
    {
      n(e);
      g(0);
      var a = c.GetObliqueScene();
      if (a)
        if (a.GetOrientation() != Msn.VE.Orientation.West)
          c.SetObliqueOrientation("West");
    }
    function v()
    {
      g(b.GetCurrentPositionIndex());
    }
    function y()
    {
      g(d.GetCurrentPositionIndex());
    }
    function z()
    {
      g(e.GetCurrentPositionIndex());
    }
    function u()
    {
      g(a.GetCurrentPositionIndex());
    }
    function H()
    {
      f.style.display = "none";
    }
    function I()
    {
      f.style.display = "block";
    }
    function q(j)
    {
      var i = c.GetObliqueScene();
      if (! i)
        return ;
      var f = i.GetOrientation(), h;
      switch (f)
      {
        case "North":
          h = a;
          break ;
        case "South":
          h = b;
          break ;
        case "East":
          h = d;
          break ;
        case "West":
          h = e;
      }
      n(h, j);
      g(0);
      if (f != Msn.VE.Orientation.North)
        a.Enable();
      else
        a.Disable();
      if (f != Msn.VE.Orientation.South)
        b.Enable();
      else
        b.Disable();
      if (f != Msn.VE.Orientation.East)
        d.Enable();
      else
        d.Disable();
      if (f != Msn.VE.Orientation.West)
        e.Enable();
      else
        e.Disable();
    }
    function G()
    {
      a.Destroy();
      d.Destroy();
      b.Destroy();
      e.Destroy();
      i.detachEvent("onclick", r);
      i.detachEvent("onmouseover", u);
      i.detachEvent("onmouseout", h);
      k.detachEvent("onclick", t);
      k.detachEvent("onmouseover", y);
      k.detachEvent("onmouseout", h);
      j.detachEvent("onclick", s);
      j.detachEvent("onmouseover", v);
      j.detachEvent("onmouseout", h);
      l.detachEvent("onclick", w);
      l.detachEvent("onmouseover", z);
      l.detachEvent("onmouseout", h);
      f = null;
    }
    function F(c)
    {
      a.SetRadius(c);
      b.SetRadius(c);
      d.SetRadius(c);
      e.SetRadius(c);
    }
    function E()
    {
      return a.GetRadius();
    }
    var o = [];
    o.push({top : "-8px", left : "17px"});
    o.push({top : "17px", left : "42px"});
    o.push({top : "42px", left : "17px"});
    o.push({top : "17px", left : "-8px"});
    var f = document.createElement("div");
    f.setAttribute("id", "MSVE_obliqueCompassContainer");
    f.title = L_ObliqueCompassSelectDirection_Text;
    var a = new x("MSVE_obliqueCompassPointN", "N", 0), i = a.GetElement();
    i.attachEvent("onclick", r);
    i.attachEvent("onmouseover", u);
    i.attachEvent("onmouseout", h);
    var d = new x("MSVE_obliqueCompassPointE", "E", 1), k = d.GetElement();
    k.attachEvent("onclick", t);
    k.attachEvent("onmouseover", y);
    k.attachEvent("onmouseout", h);
    var b = new x("MSVE_obliqueCompassPointS", "S", 2), j = b.GetElement();
    j.attachEvent("onclick", s);
    j.attachEvent("onmouseover", v);
    j.attachEvent("onmouseout", h);
    var e = new x("MSVE_obliqueCompassPointW", "W", 3), l = e.GetElement();
    l.attachEvent("onclick", w);
    l.attachEvent("onmouseover", z);
    l.attachEvent("onmouseout", h);
    var m = document.createElement("div");
    m.id = "MSVE_navAction_obliqueCompassArrow";
    f.appendChild(i);
    f.appendChild(k);
    f.appendChild(j);
    f.appendChild(l);
    f.appendChild(m);
    D.appendChild(f);
    q();
    this.Hide = H;
    this.Show = I;
    this.UpdateFromMap = q;
    this.SetRadius = F;
    this.GetRadius = E;
    this.Destroy = G;
  }
  function kb(b)
  {
    function u()
    {
      b.style.display = "block";
    }
    function t()
    {
      b.style.display = "none";
    }
    function k()
    {
      var a = g(b).getScreenPosition();
      v = a.x;
      s = a.y;
    }
    function o(b)
    {
      b = GetEvent(b);
      CancelEvent(b);
      k();
      if (a.setCapture)
        a.setCapture();
      j = true;
      return false;
    }
    function p(b)
    {
      b = GetEvent(b);
      CancelEvent(b);
      if (j)
        a.style.top = h((Gimme.Screen.getMousePosition(b)).y) + "px";
      return false;
    }
    function q(b)
    {
      b = GetEvent(b);
      CancelEvent(b);
      if (a.releaseCapture)
        a.releaseCapture();
      j = false;
      n(h((Gimme.Screen.getMousePosition(b)).y));
      i();
      return false;
    }
    function m()
    {
      c.ZoomIn();
    }
    function l()
    {
      c.ZoomOut();
    }
    function r(a)
    {
      a = GetEvent(a);
      CancelEvent(a);
      k();
      n(h((Gimme.Screen.getMousePosition(a)).y));
      return false;
    }
    function h(b)
    {
      b -= s + d.offsetHeight + a.offsetHeight;
      var c = e.offsetHeight - a.offsetHeight;
      if (b < 0)
        b = 0;
      else
        if (b > c)
          b = c;
      return b;
    }
    function n(f)
    {
      var b = e.offsetHeight - a.offsetHeight, d = 1 + MathRound((b - f) / b * 18);
      $VE_A.Log($VE_A.PgName.Map, "Zoom");
      c.SetZoom(d);
    }
    function i()
    {
      var b = e.offsetHeight - a.offsetHeight, d = b - (c.GetZoomLevel() - 1) / 18 * b;
      a.style.top = d + "px";
    }
    var f = document.createElement("div"), e = document.createElement("div"), a = document.createElement("div"), d = document.createElement("div"), v = 0, s = 0, j = false;
    this.Init = (function ()
{
  d.className = "MSVE_ZoomBar_minus";
  d.id = "MSVE_navAction_orthoZoomBar_minus";
  d.title = L_ZoomBarMinusToolTip_Text;
  d.unselectable = "on";
  d.attachEvent("onclick", l);
  pseudoHover(d);
  a.className = "MSVE_ZoomBar_slider";
  a.id = "MSVE_navAction_orthoZoomBar_slider";
  a.title = L_ZoomBarSliderToolTip_Text;
  a.unselectable = "on";
  a.attachEvent("onmousedown", o);
  a.attachEvent("onmousemove", p);
  a.attachEvent("onmouseup", q);
  a.attachEvent("onclick", IgnoreEvent);
  pseudoHover(a);
  e.className = "MSVE_OrthoZoomBar_bar";
  e.unselectable = "on";
  e.appendChild(a);
  e.attachEvent("onclick", r);
  f.className = "MSVE_ZoomBar_plus";
  f.id = "MSVE_navAction_orthoZoomBar_plus";
  f.title = L_ZoomBarPlusToolTip_Text;
  f.unselectable = "on";
  f.attachEvent("onclick", m);
  pseudoHover(f);
  b.className = "MSVE_ZoomBar";
  b.id = "MSVE_OrthoZoomBar";
  b.appendChild(d);
  b.appendChild(e);
  b.appendChild(f);
  b.attachEvent("onmousedown", IgnoreEvent);
  b.attachEvent("onmouseup", IgnoreEvent);
  b.attachEvent("onclick", IgnoreEvent);
  b.attachEvent("ondblclick", IgnoreEvent);
  i();
}
);
    this.Destroy = (function ()
{
  d.detachEvent("onclick", l);
  a.detachEvent("onmousedown", o);
  a.detachEvent("onmousemove", p);
  a.detachEvent("onmouseup", q);
  a.detachEvent("onclick", IgnoreEvent);
  e.detachEvent("onclick", r);
  f.detachEvent("onclick", m);
  b.detachEvent("onmousedown", IgnoreEvent);
  b.detachEvent("onmousedown", IgnoreEvent);
  b.detachEvent("onclick", IgnoreEvent);
  b.detachEvent("ondblclick", IgnoreEvent);
  d = a = e = f = null;
}
);
    this.UpdateFromMap = i;
    this.Show = u;
    this.Hide = t;
  }
  function nb()
  {
    function m()
    {
      if (c.GetMapMode() == Msn.VE.MapActionMode.Mode3D)
        return true;
      else
        return c.IsAnimationEnabled();
    }
    function k()
    {
      g = "in";
      c.ZoomIn();
    }
    function i()
    {
      window.setTimeout(l, m() ? 1 : 500);
    }
    function l()
    {
      if (g == "in" && c.GetZoomLevel() < 21)
        c.ZoomIn();
      else
        if (g == "out" && c.GetZoomLevel() > 1)
          c.ZoomOut();
    }
    function j()
    {
      g = "out";
      c.ZoomOut();
    }
    function a()
    {
      g = false;
    }
    var h = document.createElement("div"), f = document.createElement("div"), e = document.createElement("div"), g = false, d = null, b = null;
    this.Init = (function ()
{
  f.className = "MSVE_ZoomBar_plus";
  f.id = "MSVE_navAction_tinyZoomBar_plus";
  f.title = L_ZoomBarPlusToolTip_Text;
  f.unselectable = "on";
  e.className = "MSVE_ZoomBar_minus";
  e.id = "MSVE_navAction_tinyZoomBar_minus";
  e.title = L_ZoomBarMinusToolTip_Text;
  e.unselectable = "on";
  c.AttachEvent("onendzoom", i);
  h.className = "MSVE_ZoomBar";
  h.id = "MSVE_TinyZoomBar";
  h.appendChild(f);
  h.appendChild(e);
  return h;
}
);
    this.HookupPlusMinusEvents = (function (e,c)
{
  e.attachEvent("onmousedown", k);
  e.attachEvent("onmouseup", a);
  e.attachEvent("onmouseout", a);
  d = e;
  c.attachEvent("onmousedown", j);
  c.attachEvent("onmouseup", a);
  c.attachEvent("onmouseout", a);
  b = c;
}
);
    this.Destroy = (function ()
{
  if (d != null)
    {
      d.detachEvent("onmousedown", k);
      d.detachEvent("onmouseup", a);
      d.detachEvent("onmouseout", a);
      d = null;
    }
  if (b != null)
    {
      b.detachEvent("onmousedown", j);
      b.detachEvent("onmouseup", a);
      b.detachEvent("onmouseout", a);
      b = null;
    }
  c.DetachEvent("onendzoom", i);
  f = e = null;
}
);
  }
  function qb()
  {
    var e = $MVEM.IsEnabled(MapControl.Features.MapStyle.BirdsEye) && (c.IsObliqueAvailable() || c.GetMapStyle() == "o");
    if (e)
      {
        i(a.Oblique, true);
        if (b[a.ObliqueNotification] && c.GetMapStyle() != "o")
          t();
      }
    else
      {
        i(a.Oblique, false);
        if (b[a.ObliqueNotification])
          p();
      }
    switch (c.GetMapStyle())
    {
      case "r":
        d = Msn.VE.DashboardStates.MapView.Ortho;
        k();
        h = Msn.VE.DashboardStates.MapStyle.Road;
        y();
        break ;
      case "s":
        d = Msn.VE.DashboardStates.MapView.Ortho;
        k();
        h = Msn.VE.DashboardStates.MapStyle.Shaded;
        y();
        break ;
      case "a":
        d = Msn.VE.DashboardStates.MapView.Ortho;
        k();
        h = Msn.VE.DashboardStates.MapStyle.Aerial;
        J();
        break ;
      case "h":
        d = Msn.VE.DashboardStates.MapView.Ortho;
        k();
        h = Msn.VE.DashboardStates.MapStyle.Hybrid;
        K();
        break ;
      case "o":
        d = Msn.VE.DashboardStates.MapView.Oblique;
        u();
    }
    if (c.IsModeEnabled(Msn.VE.MapActionMode.Mode3D))
      I();
    else
      H();
  }
  function pb()
  {
    var a;
    for (a in r)
      if (r.hasOwnProperty(a))
        D(r[a]);
    document.body.removeChild(n);
    n = null;
  }
  function F(e)
  {
    switch (e)
    {
      case a.OrthoZoom:
        b[e] = document.createElement("div");
        f.orthoZoom = new kb(b[e]);
        f.orthoZoom.Init();
        c.AttachEvent("onendzoom", A);
        n.appendChild(b[e]);
        A();
        return ;
      case a.ObliqueZoom:
        b[e] = document.createElement("div");
        N = true;
        b[e].id = e;
        n.appendChild(b[e]);
        return ;
      case a.TinyZoom:
        B = new nb();
        b[e] = B.Init();
        return ;
      case a.ObliqueCompass:
        b[e] = document.createElement("div");
        b[e].id = e;
        C = true;
        return ;
      case a.ObliqueNotification:
        P();
        return ;
      case a.Oblique:
        c.AttachEvent("onve3dphotostatechanged", ab);
    }
    var d = l[e], g = document.createElement("div");
    b[d.Id] = g;
    g.id = d.Id;
    g.enabled = d.Enabled;
    g.classRecipients = [g];
    if (d.Text != null)
      g.innerText = d.Text;
    if (d.OnClickFunction != null && d.Enabled == true)
      g.attachEvent("onclick", d.OnClickFunction);
    if (d.StyleUpdateEvent != null && d.StyleUpdateFunction != null)
      c.AttachEvent(d.StyleUpdateEvent, d.StyleUpdateFunction);
    if (d.InitialClass)
      {
        g.className = d.InitialClass;
        if (! g.enabled)
          g.className += "_disabled";
      }
    if (d.Children != null)
      {
        var h;
        for (h in d.Children)
          if (d.Children.hasOwnProperty(h))
            g.appendChild(F(d.Children[h]));
      }
    else
      pseudoHover(g);
    switch (e)
    {
      case a.Oblique:
      case a.ObliqueCompass:
        c.AttachEvent("onobliqueenter", hb);
        c.AttachEvent("onobliqueleave", ib);
        c.AttachEvent("onendmapstyleoblique", Y);
        c.AttachEvent("onobliquechange", eb);
        break ;
      case a.Traffic:
        c.AttachEvent("onchangetraffic", z);
        z();
    }
    return g;
  }
  function D(e)
  {
    switch (e)
    {
      case a.OrthoZoom:
        f.orthoZoom.Destroy();
        b[e] = null;
        c.DetachEvent("onendzoom", A);
        try
          {
            n.removeChild(b[e]);
          }
        catch (j)
          {}
        return ;
      case a.ObliqueZoom:
        try
          {
            n.removeChild(b[e]);
          }
        catch (j)
          {}
        if (f.obliqueZoom)
          {
            f.obliqueZoom.Destroy();
            f.obliqueZoom = null;
          }
      case a.TinyZoom:
        B.Destroy();
        b[e] = null;
        return ;
      case a.ObliqueCompass:
        if (C && f.obliqueCompass)
          {
            f.obliqueCompass.onclick = null;
            f.obliqueCompass.Destroy();
            f.obliqueCompass = null;
          }
        return ;
      case a.ObliqueNotification:
        b[a.ObliqueNotification].detachEvent("onclick", w);
        return ;
      case a.Traffic:
        c.DetachEvent("onchangetraffic", z);
    }
    var i = b[e];
    if (i == null)
      return ;
    var d = l[e];
    if (d.Children != null)
      {
        var g, h;
        for (h in d.Children)
          if (d.Children.hasOwnProperty(h))
            {
              g = d.Children[h];
              try
                {
                  i.removeChild(b[g]);
                }
              catch (j)
                {}
              D(g);
            }
      }
    if (d.OnClickFunction != null)
      i.detachEvent("onclick", d.OnClickFunction);
    try
      {
        if (c && d.StyleUpdateEvent != null && d.StyleUpdateFunction != null)
          c.DetachEvent(d.StyleUpdateEvent, d.StyleUpdateFunction);
      }
    catch (j)
      {}
    b[d.Id] = null;
  }
  function P()
  {
    b[a.ObliqueNotification] = document.createElement("div");
    b[a.ObliqueNotification].id = a.ObliqueNotification;
    b[a.ObliqueNotification].innerHTML += "<div id=\"MSVE_obliqueNotifyIcon\">&nbsp;</div> <div id=\"MSVE_obliqueNotifyText\">" + L_DashboardBirdsEyeText_Text + "</div>";
    b[a.ObliqueNotification].attachEvent("onclick", w);
  }
  function bb()
  {
    $VE_A.Log($VE_A.PgName.Map, "MapStyleRoad", $VE_A.PgName.Map);
    o();
  }
  function o()
  {
    if (h == Msn.VE.DashboardStates.MapStyle.Road && d == Msn.VE.DashboardStates.MapView.Ortho)
      return ;
    h = Msn.VE.DashboardStates.MapStyle.Road;
    d = Msn.VE.DashboardStates.MapView.Ortho;
    j(e + d + h);
  }
  function W()
  {
    $VE_A.Log($VE_A.PgName.Map, "MapStyleAerial", $VE_A.PgName.Map);
    cb();
  }
  function cb()
  {
    if (h == Msn.VE.DashboardStates.MapStyle.Aerial && d == Msn.VE.DashboardStates.MapView.Ortho)
      return ;
    h = Msn.VE.DashboardStates.MapStyle.Aerial;
    d = Msn.VE.DashboardStates.MapView.Ortho;
    j(e + d + h);
  }
  function X()
  {
    $VE_A.Log($VE_A.PgName.Map, "MapStyleHybrid", $VE_A.PgName.Map);
    db();
  }
  function db()
  {
    if (h == Msn.VE.DashboardStates.MapStyle.Hybrid && d == Msn.VE.DashboardStates.MapView.Ortho)
      return ;
    h = Msn.VE.DashboardStates.MapStyle.Hybrid;
    d = Msn.VE.DashboardStates.MapView.Ortho;
    j(e + d + h);
  }
  function m()
  {
    if (d == Msn.VE.DashboardStates.MapView.Ortho && e == Msn.VE.DashboardStates.MapMode.Flatland)
      return ;
    d = Msn.VE.DashboardStates.MapView.Ortho;
    if (e == Msn.VE.DashboardStates.MapMode.Flatland)
      switch (h)
      {
        case Msn.VE.DashboardStates.MapStyle.Aerial:
          if ($MVEM.IsEnabled(MapControl.Features.MapStyle.Aerial))
            j(e + d + h);
          else
            o();
          break ;
        case Msn.VE.DashboardStates.MapStyle.Hybrid:
          if ($MVEM.IsEnabled(MapControl.Features.MapStyle.Hybrid))
            j(e + d + h);
          else
            o();
          break ;
        default:
          j(e + d + h);
      }
    else
      j(e + d);
    k();
  }
  function w()
  {
    if (typeof b[a.ObliqueNotification] != "undefined" && b[a.ObliqueNotification])
      p();
    if (e == Msn.VE.DashboardStates.MapMode.View3D)
      f.Oblique3DFunctionality.ObliqueClickFunction();
    else
      {
        if (d == Msn.VE.DashboardStates.MapView.Oblique)
          return ;
        $VE_A.Log($VE_A.PgName.Map, "MapStyleOblique", $VE_A.PgName.Map);
        L();
      }
  }
  function Q()
  {
    var e = new Date();
    if (E != null)
      if (e.getTime() - E.getTime() < 1000)
        return ;
    E = e;
    var d = c.Get3DControl();
    if (g(b[a.Oblique]).hasClass("MSVE_selected"))
      {
        ProcessPhotoPluginActionIn3D("PhotosEnabled", "0", d);
        c.Set3DPhotoPluginActive(false);
      }
    else
      {
        ProcessPhotoPluginActionIn3D("PhotosEnabled", "1", d);
        c.Set3DPhotoPluginActive(true);
      }
    c.UpdateCopyright();
  }
  function L()
  {
    d = Msn.VE.DashboardStates.MapView.Oblique;
    j(e + d);
    u();
  }
  function S()
  {
    if (d == Msn.VE.DashboardStates.MapView.StreetSide && e == Msn.VE.DashboardStates.MapMode.Flatland)
      return ;
    d = Msn.VE.DashboardStates.MapView.StreetSide;
    j(e + d);
    U();
  }
  function V()
  {
    $VE_A.Log($VE_A.PgName.Map, "Mode2D", $VE_A.PgName.Map);
    c.EnableMode(Msn.VE.MapActionMode.Mode2D);
  }
  function Z()
  {
    if (! c.IsModeEnabled(Msn.VE.MapActionMode.Mode3D))
      {
        $VE_A.Log($VE_A.PgName.Map, "Mode3D", $VE_A.PgName.Map);
        if (typeof ShowMessage != "undefined")
          {
            ShowMessage(L_3DLoading_Text);
            window.setTimeout(View3DSwitch, 200);
          }
        else
          c.EnableMode(Msn.VE.MapActionMode.Mode3D);
      }
  }
  function z()
  {
    if (VE_TrafficManager.turnedOn)
      {
        g(b[a.Traffic]).addClass("MSVE_selected");
        b[a.Traffic].title = L_NavActionHideTrafficToolTip_Text;
      }
    else
      {
        g(b[a.Traffic]).removeClass("MSVE_selected");
        b[a.Traffic].title = L_NavActionShowTrafficToolTip_Text;
      }
  }
  function jb()
  {
    if (VE_TrafficManager.turnedOn)
      VE_TrafficManager.ClearTraffic();
    else
      VE_TrafficManager.GetTrafficInfo(true);
  }
  function ab(c)
  {
    if (c.state == "1")
      {
        g(b[a.Oblique]).addClass("MSVE_selected");
        $VE_A.Log($VE_A.PgName.Map, "LayerBirdsEyeOn", $VE_A.PgName.Map);
      }
    else
      {
        g(b[a.Oblique]).removeClass("MSVE_selected");
        $VE_A.Log($VE_A.PgName.Map, "LayerBirdsEyeOff", $VE_A.PgName.Map);
      }
  }
  function q(a)
  {
    switch (a.view.mapStyle)
    {
      case "s":
        if (e == Msn.VE.DashboardStates.MapMode.Flatland && c.IsModeEnabled(Msn.VE.MapActionMode.Mode2D) && d != Msn.VE.DashboardStates.MapView.Ortho)
          {
            d = Msn.VE.DashboardStates.MapView.Ortho;
            k();
          }
        h = Msn.VE.DashboardStates.MapStyle.Shaded;
        y();
        break ;
      case "r":
        if (e == Msn.VE.DashboardStates.MapMode.Flatland && c.IsModeEnabled(Msn.VE.MapActionMode.Mode2D) && d != Msn.VE.DashboardStates.MapView.Ortho)
          {
            d = Msn.VE.DashboardStates.MapView.Ortho;
            k();
          }
        h = Msn.VE.DashboardStates.MapStyle.Road;
        y();
        break ;
      case "a":
        if (e == Msn.VE.DashboardStates.MapMode.Flatland && c.IsModeEnabled(Msn.VE.MapActionMode.Mode2D) && d != Msn.VE.DashboardStates.MapView.Ortho)
          {
            d = Msn.VE.DashboardStates.MapView.Ortho;
            k();
          }
        h = Msn.VE.DashboardStates.MapStyle.Aerial;
        J();
        break ;
      case "h":
        if (e == Msn.VE.DashboardStates.MapMode.Flatland && c.IsModeEnabled(Msn.VE.MapActionMode.Mode2D) && d != Msn.VE.DashboardStates.MapView.Ortho)
          {
            d = Msn.VE.DashboardStates.MapView.Ortho;
            k();
          }
        h = Msn.VE.DashboardStates.MapStyle.Hybrid;
        K();
        break ;
      case "o":
        d = Msn.VE.DashboardStates.MapView.Oblique;
        u();
    }
  }
  function M(a)
  {
    if (a == Msn.VE.MapActionMode.Mode3D)
      I();
    else
      H();
  }
  function I()
  {
    if (e == Msn.VE.DashboardStates.MapMode.View3D)
      return ;
    e = Msn.VE.DashboardStates.MapMode.View3D;
    if (typeof b[a.Mode] != "undefined" && b[a.Mode] != null)
      g(b[a.Mode].classRecipients).swapClass("MSVE_FlatlandMapMode", "MSVE_View3DMapMode");
    i(a.StreetSide, true);
    i(a.Road, true);
    i(a.Aerial, true);
    i(a.Hybrid, true);
    if (! f.Oblique3DFunctionality.DependsOnObliqueAvailability)
      i(a.Oblique, true);
    else
      {
        if (b[a.ObliqueNotification] != null && b[a.ObliqueNotification].enabled)
          t();
        k();
      }
    if (typeof b[a.Ortho] != "undefined" && b[a.Ortho] != null)
      b[a.Ortho].title = L_NavAction3DOrthoToolTip_Text;
    if (typeof b[a.Oblique] != "undefined" && b[a.Oblique] != null)
      if (b[a.Oblique].enabled)
        {
          b[a.Oblique].title = f.Oblique3DFunctionality.Title;
          t();
        }
      else
        b[a.Oblique].title = "";
    if (typeof b[a.StreetSide] != "undefined" && b[a.StreetSide] != null)
      b[a.StreetSide].title = L_NavAction3DStreetSideToolTip_Text;
    var h = c.GetDashboard().GetShimmedElements(), d;
    for (d = 0;d < h.length;d++)
      mvcViewFacade.UpdateShimIfSupported(h[d]);
  }
  function H()
  {
    e = Msn.VE.DashboardStates.MapMode.Flatland;
    if (typeof b[a.Mode] != "undefined" && b[a.Mode] != null)
      g(b[a.Mode].classRecipients).swapClass("MSVE_View3DMapMode", "MSVE_FlatlandMapMode");
    if (typeof b[a.Ortho] != "undefined" && b[a.Ortho] != null)
      b[a.Ortho].title = L_NavActionOrthoToolTip_Text;
    if (typeof b[a.Oblique] != "undefined" && b[a.Oblique] != null)
      b[a.Oblique].title = L_NavActionObliqueToolTip_Text;
    g(b[a.Oblique]).removeClass("MSVE_selected");
    photoState = 0;
    if ($MVEM.IsEnabled(MapControl.Features.MapStyle.Road))
      i(a.Road, true);
    else
      i(a.Road, false);
    if ($MVEM.IsEnabled(MapControl.Features.MapStyle.Aerial))
      i(a.Aerial, true);
    else
      i(a.Aerial, false);
    if ($MVEM.IsEnabled(MapControl.Features.MapStyle.Hybrid))
      i(a.Hybrid, true);
    else
      i(a.Hybrid, false);
    if ($MVEM.IsEnabled(MapControl.Features.MapStyle.BirdsEye))
      {
        c.GetObliqueAvailability("OnFlatlandModeUpdateUIObliqueReturned", O);
        return ;
      }
    else
      {
        i(a.Oblique, false);
        d = Msn.VE.DashboardStates.MapView.Ortho;
        k();
      }
    switch (d)
    {
      case Msn.VE.DashboardStates.MapView.Oblique:
        if (c.IsObliqueAvailable() && $MVEM.IsEnabled(MapControl.Features.MapStyle.BirdsEye))
          j(e + d);
        else
          m();
        break ;
      case Msn.VE.DashboardStates.MapView.StreetSide:
        m();
        break ;
      case Msn.VE.DashboardStates.MapView.Ortho:
        switch (h)
        {
          case Msn.VE.DashboardStates.MapStyle.Aerial:
            if ($MVEM.IsEnabled(MapControl.Features.MapStyle.Aerial))
              j(e + d + h);
            else
              o();
            break ;
          case Msn.VE.DashboardStates.MapStyle.Hybrid:
            if ($MVEM.IsEnabled(MapControl.Features.MapStyle.Hybrid))
              j(e + d + h);
            else
              o();
            break ;
          default:
            j(e + d + h);
        }
        break ;
      default:
        m();
    }
  }
  function O(b)
  {
    if (b)
      {
        i(a.Oblique, true);
        if (f.obliqueZoom != null)
          f.obliqueZoom.UpdateFromMap();
      }
    else
      {
        i(a.Oblique, false);
        d = Msn.VE.DashboardStates.MapView.Ortho;
        k();
      }
    switch (d)
    {
      case Msn.VE.DashboardStates.MapView.Oblique:
        if (b && $MVEM.IsEnabled(MapControl.Features.MapStyle.BirdsEye))
          j(e + d);
        else
          m();
        break ;
      case Msn.VE.DashboardStates.MapView.StreetSide:
        m();
        break ;
      case Msn.VE.DashboardStates.MapView.Ortho:
        switch (h)
        {
          case Msn.VE.DashboardStates.MapStyle.Aerial:
            if ($MVEM.IsEnabled(MapControl.Features.MapStyle.Aerial))
              j(e + d + h);
            else
              o();
            break ;
          case Msn.VE.DashboardStates.MapStyle.Hybrid:
            if ($MVEM.IsEnabled(MapControl.Features.MapStyle.Hybrid))
              j(e + d + h);
            else
              o();
            break ;
          default:
            j(e + d + h);
        }
        break ;
      default:
        m();
    }
  }
  function A()
  {
    if (f.orthoZoom)
      f.orthoZoom.UpdateFromMap();
    if (f.obliqueZoom)
      f.obliqueZoom.UpdateFromMap();
  }
  function hb()
  {
    if (c.GetMapStyle() == "o")
      d = Msn.VE.DashboardStates.MapView.Oblique;
    if (e == Msn.VE.DashboardStates.MapMode.Flatland || e == Msn.VE.DashboardStates.MapMode.View3D && f.Oblique3DFunctionality.DependsOnObliqueAvailability)
      {
        i(a.Oblique, true);
        if (b[a.ObliqueNotification])
          t();
      }
  }
  function ib()
  {
    d = Msn.VE.DashboardStates.MapView.Ortho;
    k();
    if (e == Msn.VE.DashboardStates.MapMode.Flatland || e == Msn.VE.DashboardStates.MapMode.View3D && f.Oblique3DFunctionality.DependsOnObliqueAvailability)
      {
        i(a.Oblique, false);
        p();
      }
  }
  function Y()
  {
    d = Msn.VE.DashboardStates.MapView.Ortho;
    k();
  }
  function eb()
  {
    if ($MVEM.IsEnabled(MapControl.Features.MapStyle.BirdsEye))
      {
        if (d != Msn.VE.DashboardStates.MapView.Oblique)
          {
            d = Msn.VE.DashboardStates.MapView.Oblique;
            i(a.Oblique, true);
            u();
          }
      }
    else
      {
        d = Msn.VE.DashboardStates.MapView.Oblique;
        m();
      }
    if (b[a.ObliqueNotification])
      p();
    if (typeof f.obliqueCompass != "undefined" && f.obliqueCompass != null)
      f.obliqueCompass.UpdateFromMap(v);
  }
  function y()
  {
    if (typeof b[a.Style] != "undefined" && b[a.Style] != null)
      {
        var c;
        for (c = 0;c < b[a.Style].classRecipients.length;c++)
          b[a.Style].classRecipients[c].className = "MSVE_RoadMapStyle";
      }
  }
  function J()
  {
    if (typeof b[a.Style] != "undefined" && b[a.Style] != null)
      {
        var c;
        for (c = 0;c < b[a.Style].classRecipients.length;c++)
          b[a.Style].classRecipients[c].className = "MSVE_AerialMapStyle";
      }
  }
  function K()
  {
    if (typeof b[a.Style] != "undefined" && b[a.Style] != null)
      {
        var c;
        for (c = 0;c < b[a.Style].classRecipients.length;c++)
          b[a.Style].classRecipients[c].className = "MSVE_HybridMapStyle";
      }
  }
  function k()
  {
    if (typeof b[a.View] != "undefined" && b[a.View] != null)
      {
        var c = g(b[a.View].classRecipients);
        c.removeClass("MSVE_StreetSideView");
        c.removeClass("MSVE_ObliqueView");
        c.addClass("MSVE_OrthoView");
      }
    if (b[a.Traffic] != null && e == Msn.VE.DashboardStates.MapMode.Flatland)
      {
        i(a.Traffic, true);
        z();
      }
  }
  function u()
  {
    if (typeof b[a.View] != "undefined" && b[a.View] != null)
      {
        var c = g(b[a.View].classRecipients);
        c.removeClass("MSVE_StreetSideView");
        c.removeClass("MSVE_OrthoView");
        c.addClass("MSVE_ObliqueView");
      }
    if (C)
      {
        if (f.obliqueCompass == null)
          {
            f.obliqueCompass = new fb(b[a.ObliqueCompass]);
            if (b[a.ObliqueCompass].radius)
              f.obliqueCompass.SetRadius(b[a.ObliqueCompass].radius);
            f.obliqueCompass.onclick = (function ()
{
  v = Msn.VE.BirdsEyeSearchSpinDirection.NoSpin;
}
);
          }
        f.obliqueCompass.UpdateFromMap();
      }
    if (N)
      {
        if (f.obliqueZoom == null)
          {
            f.obliqueZoom = new gb(b[a.ObliqueZoom]);
            f.obliqueZoom.Init();
          }
        f.obliqueZoom.UpdateFromMap();
      }
    if (b[a.Traffic] != null && e == Msn.VE.DashboardStates.MapMode.Flatland)
      i(a.Traffic, false);
  }
  function U()
  {
    if (typeof b[a.View] != "undefined" && b[a.View] != null)
      {
        var c = g(b[a.View].classRecipients);
        c.removeClass("MSVE_OrthoView");
        c.removeClass("MSVE_ObliqueView");
        c.addClass("MSVE_StreetSideView");
      }
  }
  function t()
  {
    if (! b[a.ObliqueNotification])
      return ;
    if (! f.displaying3DNotification)
      if (d != Msn.VE.DashboardStates.MapView.Oblique)
        {
          b[a.ObliqueNotification].style.display = "block";
          mvcViewFacade.UpdateShimIfSupported(b[a.ObliqueNotification]);
          window.setTimeout(p, 6000);
        }
  }
  function p()
  {
    b[a.ObliqueNotification].style.display = "none";
    mvcViewFacade.UpdateShimIfSupported(b[a.ObliqueNotification]);
  }
  function i(c,d)
  {
    if (b[c] == null)
      return ;
    if (b[c].enabled == d)
      return ;
    b[c].enabled = d;
    var a = l[c];
    if (a.InitialClass)
      b[c].className = d ? a.InitialClass : a.InitialClass + "_disabled";
    if (a.Title)
      b[c].title = d ? a.Title : "";
    if (a.OnClickFunction)
      if (d)
        b[c].attachEvent("onclick", a.OnClickFunction);
      else
        b[c].detachEvent("onclick", a.OnClickFunction);
  }
  function j(a)
  {
    var b = false;
    if (a & Msn.VE.DashboardStates.MapStyle.Road)
      {
        c.SetMapStyle("r");
        b = true;
      }
    else
      if (a & Msn.VE.DashboardStates.MapStyle.Aerial)
        {
          c.SetMapStyle("a");
          b = true;
        }
      else
        if (a & Msn.VE.DashboardStates.MapStyle.Hybrid)
          {
            c.SetMapStyle("h");
            b = true;
          }
    if (a & Msn.VE.DashboardStates.MapMode.Flatland)
      {
        if (a & Msn.VE.DashboardStates.MapView.Oblique && c.GetMapStyle() != Msn.VE.MapStyle.Oblique)
          c.SetMapStyle("o");
      }
    else
      if (a & Msn.VE.DashboardStates.MapMode.View3D && ! b)
        if (a & Msn.VE.DashboardStates.MapView.Ortho)
          c.SetTilt(- 90);
        else
          if (a & Msn.VE.DashboardStates.MapView.Oblique)
            c.SetTilt(- 45);
          else
            if (a & Msn.VE.DashboardStates.MapView.StreetSide)
              c.SetTilt(- 25);
  }
  function ob(a)
  {
    return b[a];
  }
  function lb()
  {
    return b;
  }
  function mb()
  {
    return B;
  }
  function R()
  {
    return v;
  }
  function T(a)
  {
    v = a;
  }
  var a = s, l = [];
  l[a.Style] = {Id : a.Style, InitialClass : null, OnClickFunction : null, StyleUpdateEvent : null, StyleUpdateFunction : null, Enabled : true, Title : null, Children : [a.Road, a.Aerial, a.Hybrid], Text : null};
  l[a.Road] = {Id : a.Road, InitialClass : "MSVE_MapStyle", OnClickFunction : bb, StyleUpdateEvent : "onchangemapstyle", StyleUpdateFunction : q, Enabled : MapControl.Features.MapStyle.Road, Title : L_NavActionRoadToolTip_Text, Children : null, Text : L_NavActionRoad_Text};
  l[a.Aerial] = {Id : a.Aerial, InitialClass : "MSVE_MapStyle", OnClickFunction : W, StyleUpdateEvent : "onchangemapstyle", StyleUpdateFunction : q, Enabled : MapControl.Features.MapStyle.Aerial, Title : L_NavActionAerialToolTip_Text, Children : null, Text : L_NavActionAerial_Text};
  l[a.Hybrid] = {Id : a.Hybrid, InitialClass : "MSVE_MapStyle", OnClickFunction : X, StyleUpdateEvent : "onchangemapstyle", StyleUpdateFunction : q, Enabled : MapControl.Features.MapStyle.Hybrid, Title : L_NavActionHybridToolTip_Text, Children : null, Text : L_NavActionHybrid_Text};
  l[a.Mode] = {Id : a.Mode, InitialClass : "MSVE_modeCell", OnClickFunction : null, StyleUpdateEvent : null, StyleUpdateFunction : null, Enabled : true, Title : null, Children : [a.Mode2D, a.Mode3D], Text : null};
  l[a.Mode2D] = {Id : a.Mode2D, InitialClass : "MSVE_MapMode", OnClickFunction : V, StyleUpdateEvent : "oninitmode", StyleUpdateFunction : M, Enabled : true, Title : L_NavActionFlatlandToolTip_Text, Children : null, Text : L_NavActionFlatland_Text};
  l[a.Mode3D] = {Id : a.Mode3D, InitialClass : "MSVE_MapMode", OnClickFunction : Z, StyleUpdateEvent : "oninitmode", StyleUpdateFunction : M, Enabled : MapControl.Features.MapStyle.View3D, Title : L_NavActionView3DToolTip_Text, Children : null, Text : L_NavActionView3D_Text};
  l[a.View] = {Id : a.View, InitialClass : null, OnClickFunction : null, StyleUpdateEvent : null, StyleUpdateFunction : null, Enabled : true, Title : null, Children : [a.Ortho, a.Oblique, a.StreetSide], Text : null};
  l[a.Ortho] = {Id : a.Ortho, InitialClass : "MSVE_MapStyle", OnClickFunction : m, StyleUpdateEvent : "onchangemapstyle", StyleUpdateFunction : q, Enabled : true, Title : L_NavActionOrthoToolTip_Text, Children : null, Text : null};
  l[a.Oblique] = {Id : a.Oblique, InitialClass : "MSVE_MapStyle", OnClickFunction : w, StyleUpdateEvent : "onchangemapstyle", StyleUpdateFunction : q, Enabled : false, Title : L_NavActionObliqueToolTip_Text, Children : null, Text : null};
  l[a.StreetSide] = {Id : a.StreetSide, InitialClass : "MSVE_MapStyle", OnClickFunction : S, StyleUpdateEvent : "onchangemapstyle", StyleUpdateFunction : q, Enabled : false, Title : L_NavActionStreetSideToolTip_Text, Children : null, Text : null};
  l[a.Traffic] = {Id : a.Traffic, InitialClass : "MSVE_MapStyle", OnClickFunction : jb, StyleUpdateEvent : null, StyleUpdateFunction : null, Enabled : true, Title : L_NavActionShowTrafficToolTip_Text, Children : null, Text : L_NavActionTraffic_Text};
  this.ObliqueFunctions = [];
  this.ObliqueFunctions.ObliqueImageryIn3D = {ObliqueClickFunction : Q, Title : L_NavActionShowObliqueToolTip_Text, DependsOnObliqueAvailability : true};
  this.ObliqueFunctions.ObliqueTiltIn3D = {ObliqueClickFunction : L, Title : L_NavAction3DObliqueToolTip_Text, DependsOnObliqueAvailability : false};
  var f = this, b = [], e = Msn.VE.DashboardStates.MapMode.Flatland, d = Msn.VE.DashboardStates.MapView.Ortho, h = Msn.VE.DashboardStates.MapStyle.Road;
  this.orthoZoom = null;
  var B;
  this.obliqueCompass = null;
  this.obliqueZoom = null;
  this.displaying3DNotification = false;
  this.Oblique3DFunctionality = this.ObliqueFunctions.ObliqueImageryIn3D;
  var n = document.createElement("div");
  n.id = "MSVE_navAction_palette";
  document.body.appendChild(n);
  var C = false, N, v = Msn.VE.BirdsEyeSearchSpinDirection.NoSpin, G;
  for (G in r)
    if (r.hasOwnProperty(G))
      F(r[G]);
  var E = null;
  this.SetMapViewState = (function (a)
{
  d = a;
}
);
  this.GetMapViewState = (function ()
{
  return d;
}
);
  this.SetMapModeState = (function (a)
{
  e = a;
}
);
  this.GetMapModeState = (function ()
{
  return e;
}
);
  this.GetLastRotationDirection = R;
  this.SetLastRotationDirection = T;
  this.Init = qb;
  this.Create = F;
  this.Destroy = pb;
  this.DestroyControl = D;
  this.GetControl = ob;
  this.GetControls = lb;
  this.GetTinyZoom = mb;
  this.OnOrthoMapViewClick = m;
  this.OnObliqueMapViewClick = w;
  this.UpdateZoom = A;
  this.SelectObliqueMapView = u;
  this.SelectOrthoMapView = k;
  this.DisplayObliqueNotification = t;
  this.HideObliqueNotification = p;
}
);
  var c = document.createElement("div");
  c.id = B;
  z.appendChild(c);
  c.attachEvent("onmousedown", IgnoreEvent);
  c.attachEvent("onmouseup", IgnoreEvent);
  c.attachEvent("onmousemove", DashboardContainerMouseMoveEvent);
  c.attachEvent("onmousewheel", IgnoreEvent);
  c.attachEvent("ondblclick", IgnoreEvent);
  c.attachEvent("oncontextmenu", IgnoreEvent);
  c.attachEvent("onkeydown", IgnoreEvent);
  c.attachEvent("onkeyup", IgnoreEvent);
  c.className = "MSVE_Dashboard MSVE_Dashboard_V5 MSVE_FlatlandMapMode";
  if (i == Msn.VE.DashboardSize.Normal)
    c.className += " MSVE_Dashboard_Normal";
  else
    if (i == Msn.VE.DashboardSize.Small)
      c.className += " MSVE_Dashboard_Small";
    else
      if (i == Msn.VE.DashboardSize.Tiny)
        c.className += " MSVE_Dashboard_Tiny";
  var h = null, f = document.createElement("div");
  f.className = "MSVE_header";
  f.id = "MSVE_navAction_header";
  var e, d, b = s, o = document.createElement("div");
  o.id = "MSVE_dashboardContainer";
  var q = document.createElement("div");
  q.id = "MSVE_mapViewRow";
  o.appendChild(q);
  var m = document.createElement("div");
  m.id = "MSVE_zoomDiv";
  var p = document.createElement("div");
  p.id = "MSVE_navAction_mapViewCell";
  p.className = "MSVE_dashboardMapModeContainer";
  q.appendChild(m);
  q.appendChild(p);
  var l = document.createElement("div");
  l.id = "MSVE_mapStyleRow";
  o.appendChild(l);
  var j = document.createElement("div");
  j.id = "MSVE_threeDNotification";
  var n = document.createElement("div");
  n.id = "MSVE_lowerContainer";
  n.appendChild(o);
  c.className += " expanded";
  c.appendChild(f);
  c.appendChild(n);
  var k = false;
  this.SetX = (function (a)
{
  c.style.left = a + "px";
}
);
  this.GetElement = (function ()
{
  return c;
}
);
  this.GetShimmedElements = (function ()
{
  return [c];
}
);
  this.GetHeader = (function ()
{
  return f;
}
);
  this.GetY = (function ()
{
  return (g(c).getScreenPosition()).y;
}
);
  this.GetHeight = (function ()
{
  return c.offsetHeight;
}
);
  this.ShowToggleGlyph = (function ()
{
  if (h != null && h != "undefined")
    h.style.display = "block";
}
);
  this.HideToggleGlyph = (function ()
{
  if (h != null && h != "undefined")
    h.style.display = "none";
}
);
  this.SetShowMapModeSwitch = (function (a)
{
  if (a != k)
    {
      if (! a)
        {
          e.DestroyControl(b.Mode);
          f.removeChild(d[b.Mode]);
          k = false;
        }
      r(a);
    }
}
);
  this.Hide = (function ()
{
  if (c)
    c.style.display = "none";
}
);
  this.Show = (function ()
{
  if (c)
    c.style.display = "block";
}
);
  this.Init = D;
  this.Destroy = C;
  this.createRoller = t;
}
);
Msn.VE.V6Control = (function (J,f,fb,db,C)
{
  function W(o,c,d,b)
  {
    function k(m)
    {
      m = GetEvent(m);
      CancelEvent(m);
      var n = g(a).getPagePosition();
      i = n.x;
      j = n.y;
      if (a.setCapture)
        a.setCapture();
      var k = (Gimme.Screen.getMousePosition(m)).x - i - c, l = (Gimme.Screen.getMousePosition(m)).y - j - d, o = Math.sqrt(k * k + l * l);
      if (o < b)
        {
          k = Math.floor(k / b * e);
          l = Math.floor(l / b * e);
          $VE_A.Log($VE_A.PgName.Map, "Pan", $VE_A.PgName.Map);
          f.ContinuousPan(k, l, 0, true);
          h = true;
        }
      return false;
    }
    function l(k)
    {
      k = GetEvent(k);
      CancelEvent(k);
      if (h)
        {
          var a = (Gimme.Screen.getMousePosition(k)).x - i - c, g = (Gimme.Screen.getMousePosition(k)).y - j - d, l = Math.sqrt(a * a + g * g);
          if (l < b)
            {
              a = Math.floor(a / b * e);
              g = Math.floor(g / b * e);
              f.ContinuousPan(a, g, 0, true);
            }
        }
      return false;
    }
    function m(b)
    {
      b = GetEvent(b);
      CancelEvent(b);
      if (a.releaseCapture)
        a.releaseCapture();
      f.StopContinuousPan();
      h = false;
      return false;
    }
    function p()
    {
      a.style.display = "none";
    }
    function q()
    {
      a.style.display = "block";
    }
    function n()
    {
      return a;
    }
    var a = document.createElement("div"), i = 0, j = 0, h = false, e = 15;
    this.Init = (function ()
{
  a.id = "Compass";
  a.attachEvent("onmousedown", k);
  a.attachEvent("onmouseup", m);
  a.attachEvent("onmousemove", l);
  a.attachEvent("ondblclick", IgnoreEvent);
  a.title = L_NavActionCompassPan;
  o.appendChild(a);
  if (isNaN(parseInt(c)))
    c = a.offsetWidth / 2;
  if (isNaN(parseInt(d)))
    d = a.offsetHeight / 2;
  if (isNaN(parseInt(b)))
    b = Math.min(c, d);
}
);
    this.Destroy = (function ()
{
  a.detachEvent("onmousedown", k);
  a.detachEvent("onmouseup", m);
  a.detachEvent("onmousemove", l);
  a.detachEvent("ondblclick", IgnoreEvent);
  a = null;
}
);
    this.Hide = p;
    this.Show = q;
    this.GetElement = n;
  }
  function ab()
  {
    f.AttachEvent("oninitmode", T);
    z = [a.Mode, a.View, a.Style, a.TinyZoom, a.ObliqueNotification, a.ObliqueCompass];
    if (typeof $MVEF != "undefined" && $MVEM.IsEnabled($MVEF.MapAction.Traffic))
      if (typeof VE_TrafficManager != "undefined")
        z.push(a.Traffic);
    i = new Msn.VE.CommonControls(f, z);
    b = i.GetControls();
    b[a.Oblique].innerText = L_DashboardBirdsEye_Text;
    c = document.createElement("div");
    c.id = "MSVE_navAction_container";
    c.className = "MSVE_Dashboard_V6";
    e = document.createElement("div");
    e.id = "MSVE_navAction_styleGroup";
    d = document.createElement("div");
    d.id = "MSVE_navAction_topBar";
    b[a.View].classRecipients = [e, c];
    b[a.Style].classRecipients = [e];
    b[a.Mode].classRecipients = [d];
    i.Oblique3DFunctionality = i.ObliqueFunctions.ObliqueImageryIn3D;
    J.appendChild(c);
    s = document.createElement("div");
    s.id = "MSVE_navAction_topBackground";
    s.className = "MSVE_navAction_background";
    v = document.createElement("div");
    v.id = "MSVE_navAction_compassBackground";
    v.className = "MSVE_navAction_background";
    w = document.createElement("div");
    w.id = "MSVE_navAction_leftBackground";
    w.className = "MSVE_navAction_background";
    d.className = "MSVE_Dashboard MSVE_Dashboard_V6 MSVE_FlatlandMapMode";
    m = document.createElement("div");
    m.id = "MSVE_navAction_leftBar";
    m.className = "MSVE_Dashboard MSVE_Dashboard_V6";
    p = document.createElement("div");
    p.id = "MSVE_navAction_compassContainer";
    p.className = "MSVE_Dashboard MSVE_Dashboard_V6";
    j = document.createElement("div");
    j.id = "MSVE_navAction_toggleGlyphWrapper";
    j.title = L_NavActionHideToolTip_Text;
    pseudoHover(j);
    c.appendChild(w);
    c.appendChild(v);
    c.appendChild(s);
    c.appendChild(p);
    c.appendChild(m);
    c.appendChild(d);
    c.appendChild(j);
    if (! f.IsModeEnabled(Msn.VE.MapActionMode.Mode3D))
      M();
    var B = g(c), A = B.select("> div");
    A.addEvent("mousedown", IgnoreEvent);
    A.addEvent("mouseup", IgnoreEvent);
    A.addEvent("mousemove", DashboardContainerMouseMoveEvent);
    A.addEvent("mousewheel", IgnoreEvent);
    A.addEvent("dblclick", IgnoreEvent);
    A.addEvent("contextmenu", IgnoreEvent);
    A.addEvent("keydown", IgnoreEvent);
    A.addEvent("keyup", IgnoreEvent);
    A.addEvent("click", IgnoreEvent);
    h = [];
    for (r = 0;r < 4;r++)
      {
        h[r] = document.createElement("div");
        h[r].className = "MSVE_navAction_separator";
        h[r].id = "MSVE_navAction_separator" + r;
      }
    x = document.createElement("div");
    x.id = "MSVE_navAction_toggleGlyphInner";
    x.className = "MSVE_navAction_toggleGlyph";
    j.appendChild(x);
    b[a.Road].title = L_NavActionRoadToolTip_Text;
    b[a.Aerial].title = L_NavActionAerialToolTip_Text;
    b[a.Hybrid].title = L_NavActionHybridToolTip_Text;
    b[a.Mode2D].title = L_NavActionFlatlandToolTip_Text;
    b[a.Mode3D].title = L_NavActionView3DToolTip_Text;
    e.appendChild(b[a.Road]);
    e.appendChild(b[a.Aerial]);
    e.appendChild(b[a.Hybrid]);
    e.appendChild(h[1]);
    e.appendChild(b[a.Oblique]);
    if (C)
      {
        d.appendChild(b[a.Mode]);
        d.appendChild(h[0]);
      }
    d.appendChild(e);
    d.appendChild(h[2]);
    if (b[a.Traffic] != null)
      {
        b[a.Traffic].title = L_NavActionShowTrafficToolTip_Text;
        d.appendChild(b[a.Traffic]);
        d.appendChild(h[3]);
      }
    else
      B.addClass("notraffic");
    q = document.createElement("div");
    q.id = "MSVE_navAction_compassWrapper";
    p.appendChild(q);
    y = new W(q);
    y.Init();
    pseudoHover(y.GetElement());
    b[a.ObliqueCompass].radius = 31;
    q.appendChild(b[a.ObliqueCompass]);
    m.appendChild(b[a.TinyZoom]);
    o = document.createElement("div");
    o.id = "MSVE_navAction_zoomPlusWrapper";
    pseudoHover(o);
    o.appendChild($ID("MSVE_navAction_tinyZoomBar_plus"));
    b[a.TinyZoom].appendChild(o);
    n = document.createElement("div");
    n.id = "MSVE_navAction_zoomMinusWrapper";
    pseudoHover(n);
    n.appendChild($ID("MSVE_navAction_tinyZoomBar_minus"));
    b[a.TinyZoom].appendChild(n);
    i.GetTinyZoom().HookupPlusMinusEvents(o, n);
    rotatorContainer = document.createElement("div");
    rotatorContainer.id = "MSVE_navAction_rotatorContainer";
    t = document.createElement("div");
    t.id = "MSVE_navAction_ccw";
    t.title = L_NavActionObliqueRotationToolTip_CCW_Text;
    t.className = "MSVE_navAction_rotator";
    u = document.createElement("div");
    u.id = "MSVE_navAction_cw";
    u.title = L_NavActionObliqueRotationToolTip_CW_Text;
    u.className = "MSVE_navAction_rotator";
    k = document.createElement("div");
    k.id = "MSVE_navAction_ccwWrapper";
    pseudoHover(k);
    k.appendChild(t);
    l = document.createElement("div");
    l.id = "MSVE_navAction_cwWrapper";
    pseudoHover(l);
    l.appendChild(u);
    g(k).addEvent("click", L);
    g(l).addEvent("click", N);
    rotatorContainer.appendChild(k);
    rotatorContainer.appendChild(l);
    m.appendChild(rotatorContainer);
    b[a.Oblique].appendChild(b[a.ObliqueNotification]);
    i.Init();
    if (Msn.VE.Animation)
      H();
  }
  function X()
  {
    b[a.Oblique].removeChild(b[a.ObliqueNotification]);
    g(k).removeEvent("click", L);
    g(l).removeEvent("click", N);
    k.removeChild(t);
    l.removeChild(u);
    rotatorContainer.removeChild(k);
    rotatorContainer.removeChild(l);
    m.removeChild(rotatorContainer);
    n.removeChild($ID("MSVE_navAction_tinyZoomBar_minus"));
    b[a.TinyZoom].removeChild(n);
    o.removeChild($ID("MSVE_navAction_tinyZoomBar_plus"));
    b[a.TinyZoom].removeChild(o);
    m.removeChild(b[a.TinyZoom]);
    y.Destroy();
    p.removeChild(q);
    q.removeChild(b[a.ObliqueCompass]);
    if (b[a.Traffic] != null)
      {
        d.removeChild(b[a.Traffic]);
        d.removeChild(h[3]);
      }
    e.removeChild(b[a.Road]);
    e.removeChild(b[a.Aerial]);
    e.removeChild(b[a.Hybrid]);
    e.removeChild(h[1]);
    e.removeChild(b[a.Oblique]);
    if (C)
      {
        d.removeChild(b[a.Mode]);
        d.removeChild(h[0]);
      }
    d.removeChild(e);
    d.removeChild(h[2]);
    j.removeChild(x);
    var r = g(c), f = r.select("> div");
    f.removeEvent("mouseleave", A);
    f.removeEvent("mouseenter", B);
    f.removeEvent("mousedown", IgnoreEvent);
    f.removeEvent("mouseup", IgnoreEvent);
    f.removeEvent("mousemove", DashboardContainerMouseMoveEvent);
    f.removeEvent("mousewheel", IgnoreEvent);
    f.removeEvent("dblclick", IgnoreEvent);
    f.removeEvent("contextmenu", IgnoreEvent);
    f.removeEvent("keydown", IgnoreEvent);
    f.removeEvent("keyup", IgnoreEvent);
    f.removeEvent("click", IgnoreEvent);
    c.removeChild(w);
    c.removeChild(v);
    c.removeChild(s);
    c.removeChild(p);
    c.removeChild(m);
    c.removeChild(d);
    c.removeChild(j);
    J.removeChild(c);
    i.Destroy();
    if (Msn.VE.Animation)
      D().onclick = null;
  }
  function A()
  {
    Gimme.Animation.end("MSVE_NAVACTION_FADEIN");
    g(c).select("div.MSVE_navAction_background").fadeTo(null, E, I, "MSVE_NAVACTION_FADEOUT");
  }
  function B()
  {
    Gimme.Animation.end("MSVE_NAVACTION_FADEOUT");
    g(c).select("div.MSVE_navAction_background").fadeTo(null, S, I, "MSVE_NAVACTION_FADEIN");
  }
  function T(a)
  {
    if (a == Msn.VE.MapActionMode.Mode3D)
      U();
    else
      M();
  }
  function M()
  {
    var a = g(c), b = a.select("> div");
    a.select("div.MSVE_navAction_background").setStyle("opacity", E);
    b.addEvent("mouseleave", A);
    b.addEvent("mouseenter", B);
  }
  function U()
  {
    var a = g(c), b = a.select("> div");
    b.removeEvent("mouseleave", A);
    b.removeEvent("mouseenter", B);
    a.select("div.MSVE_navAction_background").setStyle("opacity", K);
  }
  function L()
  {
    G(Msn.VE.BirdsEyeSearchSpinDirection.CounterclockwiseSpin);
  }
  function N()
  {
    G(Msn.VE.BirdsEyeSearchSpinDirection.ClockwiseSpin);
  }
  function G(a)
  {
    i.SetLastRotationDirection(a);
    var b = f.GetObliqueScene();
    if (b)
      {
        var d = O[(b.GetOrientation())], c = Q[((d + a + 4) % 4)];
        f.SetObliqueOrientation(c, a);
        i.obliqueCompass.UpdateFromMap();
      }
  }
  function V()
  {
    return c;
  }
  function P()
  {
    return [s, b[a.ObliqueNotification]];
  }
  function D()
  {
    return j;
  }
  function Y()
  {
    return i.GetMapModeState();
  }
  function bb()
  {
    if (c)
      c.style.display = "block";
  }
  function Z()
  {
    if (c)
      c.style.display = "none";
  }
  function H()
  {
    if (! f.GetDashboard().GetToggleGlyph())
      return ;
    f.GetDashboard().GetToggleGlyph().onclick = (function ()
{
  var a = f.GetDashboard();
  if (g(a.GetElement()).hasClass("collapsed"))
    {
      g(a.GetElement()).removeClass("collapsed");
      a.GetToggleGlyph().title = L_NavActionHideToolTip_Text;
      if (f.Get3DControl())
        f.Get3DControl().ShowNavigationControl = true;
    }
  else
    {
      g(a.GetElement()).addClass("collapsed");
      a.GetToggleGlyph().title = L_NavActionShowToolTip_Text;
      if (f.Get3DControl())
        f.Get3DControl().ShowNavigationControl = false;
    }
  var c = f.GetDashboard().GetShimmedElements(), b;
  for (b = 0;b < c.length;b++)
    mvcViewFacade.UpdateShimIfSupported(c[b]);
  g("#MSVE_navAction_topBackground").setStyle("opacity", K);
}
);
  }
  function R()
  {
    i.ObliqueFunctions.ObliqueImageryIn3D.ObliqueClickFunction();
  }
  Msn.VE.DashboardStates = new (function ()
{
  this.MapMode = new (function ()
{
  this.Flatland = 1;
  this.View3D = 2;
}
)();
  this.MapView = new (function ()
{
  this.Ortho = 4;
  this.Oblique = 8;
  this.StreetSide = 16;
}
)();
  this.MapStyle = new (function ()
{
  this.Road = 32;
  this.Shaded = 64;
  this.Aerial = 128;
  this.Hybrid = 256;
}
)();
}
)();
  var F = {Style : "MSVE_navAction_mapStyleCell", Road : "MSVE_navAction_RoadMapStyle", Aerial : "MSVE_navAction_AerialMapStyle", Hybrid : "MSVE_navAction_HybridMapStyle", Mode : "MSVE_navAction_modeCell", Mode2D : "MSVE_navAction_FlatlandMapMode", Mode3D : "MSVE_navAction_View3DMapMode", View : "MSVE_navAction_mapViewCellInner", Ortho : "MSVE_navAction_OrthoMapView", Oblique : "MSVE_navAction_ObliqueMapView", StreetSide : "MSVE_navAction_StreetSideMapView", Pan : "MSVE_navAction_panContainer", PanUp : "MSVE_navAction_panUp", PanDown : "MSVE_navAction_panDown", PanLeft : "MSVE_navAction_panLeft", PanRight : "MSVE_navAction_panRight", TinyZoom : "MSVE_TinyZoomBar", OrthoZoom : "MSVE_OrthoZoomBar", ObliqueZoom : "MSVE_ObliqueZoomBar", ObliqueCompass : "MSVE_compassDiv", ObliqueNotification : "MSVE_obliqueNotification", Traffic : "MSVE_navAction_traffic"};
  Msn.VE.CommonControls = (function (c,r)
{
  function gb(b)
  {
    function v()
    {
      b.style.display = "block";
    }
    function u()
    {
      b.style.display = "none";
    }
    function r(a)
    {
      a = GetEvent(a);
      CancelEvent(a);
      k();
      n(h((Gimme.Screen.getMousePosition(a)).y));
      return false;
    }
    function h(b)
    {
      b -= s + d.offsetHeight + a.offsetHeight;
      var c = e.offsetHeight - a.offsetHeight;
      if (b < 0)
        b = 0;
      else
        if (b > c)
          b = c;
      return b;
    }
    function l()
    {
      c.ZoomOut();
    }
    function m()
    {
      c.ZoomIn();
    }
    function t()
    {
      d.detachEvent("onclick", l);
      a.detachEvent("onmousedown", o);
      a.detachEvent("onmousemove", p);
      a.detachEvent("onmouseup", q);
      a.detachEvent("onclick", IgnoreEvent);
      e.detachEvent("onclick", r);
      f.detachEvent("onclick", m);
      b.detachEvent("onmousedown", IgnoreEvent);
      b.detachEvent("onmousedown", IgnoreEvent);
      b.detachEvent("onclick", IgnoreEvent);
      b.detachEvent("ondblclick", IgnoreEvent);
      d = a = e = f = null;
    }
    function o(b)
    {
      b = GetEvent(b);
      CancelEvent(b);
      k();
      if (a.setCapture)
        a.setCapture();
      j = true;
      return false;
    }
    function p(b)
    {
      b = GetEvent(b);
      CancelEvent(b);
      if (j)
        a.style.top = h((Gimme.Screen.getMousePosition(b)).y) + "px";
      return false;
    }
    function q(b)
    {
      b = GetEvent(b);
      CancelEvent(b);
      if (a.releaseCapture)
        a.releaseCapture();
      j = false;
      n(h((Gimme.Screen.getMousePosition(b)).y));
      i();
      return false;
    }
    function k()
    {
      var a = g(b).getScreenPosition();
      w = a.x;
      s = a.y;
    }
    function n(f)
    {
      var b = e.offsetHeight - a.offsetHeight, d = 1 + MathRound((b - f) / b * 1);
      $VE_A.Log($VE_A.PgName.Map, "Zoom");
      c.SetZoom(d);
    }
    function i()
    {
      if (c.GetZoomLevel() == 1)
        a.style.top = e.offsetHeight - a.offsetHeight + "px";
      else
        a.style.top = "0px";
    }
    var f = document.createElement("div"), e = document.createElement("div"), a = document.createElement("div"), d = document.createElement("div"), w = 0, s = 0, j = false;
    this.Init = (function ()
{
  d.className = "MSVE_ZoomBar_minus";
  d.id = "MSVE_navAction_obliqueZoomBar_minus";
  d.unselectable = "on";
  d.title = L_ZoomBarMinusToolTip_Text;
  d.attachEvent("onclick", l);
  pseudoHover(d);
  a.className = "MSVE_ZoomBar_slider";
  a.id = "MSVE_navAction_obliqueZoomBar_slider";
  a.unselectable = "on";
  a.attachEvent("onmousedown", o);
  a.attachEvent("onmousemove", p);
  a.attachEvent("onmouseup", q);
  a.attachEvent("onclick", IgnoreEvent);
  pseudoHover(a);
  e.className = "MSVE_ObliqueZoomBar_bar";
  e.unselectable = "on";
  e.appendChild(a);
  e.attachEvent("onclick", r);
  f.className = "MSVE_ZoomBar_plus";
  f.id = "MSVE_navAction_obliqueZoomBar_plus";
  f.title = L_ZoomBarPlusToolTip_Text;
  f.unselectable = "on";
  f.attachEvent("onclick", m);
  pseudoHover(f);
  b.className = "MSVE_ZoomBar";
  b.id = "MSVE_ObliqueZoomBar";
  b.appendChild(d);
  b.appendChild(e);
  b.appendChild(f);
  b.attachEvent("onmousedown", IgnoreEvent);
  b.attachEvent("onmouseup", IgnoreEvent);
  b.attachEvent("onclick", IgnoreEvent);
  b.attachEvent("ondblclick", IgnoreEvent);
  i();
}
);
    this.Destroy = t;
    this.Show = v;
    this.Hide = u;
    this.UpdateFromMap = i;
  }
  function w(z,x,y)
  {
    function f(e)
    {
      if (d)
        return ;
      c = a.className;
      a.className = "MSVE_obliqueCompassPointHover";
      if (b.onmouseover)
        b.onmouseover(e);
    }
    function i(a)
    {
      if (d)
        return ;
      f(a);
      c = "MSVE_obliqueCompassPointOn";
      if (b.onclick)
        b.onclick(a);
    }
    function h(e)
    {
      if (d)
        return ;
      a.className = c;
      if (b.onmouseout)
        b.onmouseout(e);
    }
    function m()
    {
      c = "MSVE_obliqueCompassPointOn";
      a.className = "MSVE_obliqueCompassPointOn";
    }
    function l()
    {
      c = "MSVE_obliqueCompassPointOff";
      a.className = "MSVE_obliqueCompassPointOff";
    }
    function u()
    {
      d = true;
      l();
    }
    function k()
    {
      d = false;
      m();
    }
    function q()
    {
      return a;
    }
    function n()
    {
      return g;
    }
    function o(a)
    {
      g = a;
    }
    function w()
    {
      j.Reset();
      k();
    }
    function p(b)
    {
      a.style.left = b.left;
      a.style.top = b.top;
    }
    function v(s,o,p)
    {
      function n(a,b,c)
      {
        if (b >= c - a && b <= c + a)
          return true;
        return false;
      }
      function j()
      {
        a += b;
        if (a > Math.PI * 2)
          a -= Math.PI * 2;
        else
          if (a < 0)
            a += Math.PI * 2;
        if (n(q, a, d))
          {
            b = 0.3;
            a = d;
            f(a);
            c = false;
            return ;
          }
        f(a);
        window.setTimeout(j, m);
      }
      function f(a)
      {
        var b = o + e * Math.sin(a), c = p + e * Math.cos(a);
        h.style.left = b + "px";
        h.style.top = c + "px";
      }
      function g(a)
      {
        if (c)
          return ;
        c = true;
        d = a;
        j();
      }
      function k(a,c)
      {
        i = c;
        if (! i)
          b *= - 1;
        g(l * a);
      }
      function r()
      {
        c = false;
        a = 0;
      }
      var h = s, a = 0, b = 0.3, d = 0, m = 40, c = false, l = Math.PI / 2, i = true, q = b + 0.1;
      this.RotateTo = g;
      this.RotateToIndex = k;
      this.Reset = r;
    }
    function t()
    {
      a.detachEvent("onmouseover", f);
      a.detachEvent("onmouseout", h);
      a.detachEvent("onclick", i);
      a = null;
    }
    function s(a)
    {
      e = a;
    }
    function r()
    {
      return e;
    }
    var a = document.createElement("div");
    a.setAttribute("id", z);
    a.innerHTML = x;
    var c = "MSVE_obliqueCompassPointOff", g = y;
    a.attachEvent("onmouseover", f);
    a.attachEvent("onmouseout", h);
    a.attachEvent("onclick", i);
    this.onclick = null;
    this.onmouseover = null;
    this.onmouseout = null;
    var e = 25, b = this, d = false, j = new v(a, 17, 17);
    this.SetRadius = s;
    this.GetRadius = r;
    this.GetElement = q;
    this.GetCurrentPositionIndex = n;
    this.SetCurrentPositionIndex = o;
    this.SetCurrentPosition = p;
    this.On = m;
    this.Off = l;
    this.RotateToIndex = j.RotateToIndex;
    this.Reset = w;
    this.Disable = u;
    this.Enable = k;
    this.Destroy = t;
  }
  function fb(D)
  {
    function p(a)
    {
      if (a < 0)
        a = 4 - Math.abs(a);
      return a;
    }
    function n(h,g)
    {
      var f = h.GetCurrentPositionIndex();
      d.SetCurrentPositionIndex(p(d.GetCurrentPositionIndex() - f));
      e.SetCurrentPositionIndex(p(e.GetCurrentPositionIndex() - f));
      a.SetCurrentPositionIndex(p(a.GetCurrentPositionIndex() - f));
      b.SetCurrentPositionIndex(p(b.GetCurrentPositionIndex() - f));
      var c;
      if (g)
        c = g == Msn.VE.BirdsEyeSearchSpinDirection.CounterclockwiseSpin;
      else
        c = f != 3;
      a.RotateToIndex(2 - a.GetCurrentPositionIndex() < 0 ? a.GetCurrentPositionIndex() : 2 - a.GetCurrentPositionIndex(), c);
      d.RotateToIndex(2 - d.GetCurrentPositionIndex() < 0 ? d.GetCurrentPositionIndex() : 2 - d.GetCurrentPositionIndex(), c);
      b.RotateToIndex(2 - b.GetCurrentPositionIndex() < 0 ? b.GetCurrentPositionIndex() : 2 - b.GetCurrentPositionIndex(), c);
      e.RotateToIndex(2 - e.GetCurrentPositionIndex() < 0 ? e.GetCurrentPositionIndex() : 2 - e.GetCurrentPositionIndex(), c);
    }
    function g(a)
    {
      switch (a)
      {
        case 0:
          h();
          break ;
        case 1:
          A();
          break ;
        case 2:
          B();
          break ;
        case 3:
          C();
      }
    }
    function h()
    {
      m.className = "MSVE_obliqueCompassArrowU";
    }
    function B()
    {
      m.className = "MSVE_obliqueCompassArrowD";
    }
    function A()
    {
      m.className = "MSVE_obliqueCompassArrowR";
    }
    function C()
    {
      m.className = "MSVE_obliqueCompassArrowL";
    }
    function s()
    {
      n(b);
      g(0);
      var a = c.GetObliqueScene();
      if (a)
        if (a.GetOrientation() != Msn.VE.Orientation.South)
          c.SetObliqueOrientation("South");
    }
    function r()
    {
      n(a);
      g(0);
      var b = c.GetObliqueScene();
      if (b)
        if (b.GetOrientation() != Msn.VE.Orientation.North)
          c.SetObliqueOrientation("North");
    }
    function t()
    {
      n(d);
      g(0);
      var a = c.GetObliqueScene();
      if (a)
        if (a.GetOrientation() != Msn.VE.Orientation.East)
          c.SetObliqueOrientation("East");
    }
    function x()
    {
      n(e);
      g(0);
      var a = c.GetObliqueScene();
      if (a)
        if (a.GetOrientation() != Msn.VE.Orientation.West)
          c.SetObliqueOrientation("West");
    }
    function v()
    {
      g(b.GetCurrentPositionIndex());
    }
    function y()
    {
      g(d.GetCurrentPositionIndex());
    }
    function z()
    {
      g(e.GetCurrentPositionIndex());
    }
    function u()
    {
      g(a.GetCurrentPositionIndex());
    }
    function H()
    {
      f.style.display = "none";
    }
    function I()
    {
      f.style.display = "block";
    }
    function q(j)
    {
      var i = c.GetObliqueScene();
      if (! i)
        return ;
      var f = i.GetOrientation(), h;
      switch (f)
      {
        case "North":
          h = a;
          break ;
        case "South":
          h = b;
          break ;
        case "East":
          h = d;
          break ;
        case "West":
          h = e;
      }
      n(h, j);
      g(0);
      if (f != Msn.VE.Orientation.North)
        a.Enable();
      else
        a.Disable();
      if (f != Msn.VE.Orientation.South)
        b.Enable();
      else
        b.Disable();
      if (f != Msn.VE.Orientation.East)
        d.Enable();
      else
        d.Disable();
      if (f != Msn.VE.Orientation.West)
        e.Enable();
      else
        e.Disable();
    }
    function G()
    {
      a.Destroy();
      d.Destroy();
      b.Destroy();
      e.Destroy();
      i.detachEvent("onclick", r);
      i.detachEvent("onmouseover", u);
      i.detachEvent("onmouseout", h);
      k.detachEvent("onclick", t);
      k.detachEvent("onmouseover", y);
      k.detachEvent("onmouseout", h);
      j.detachEvent("onclick", s);
      j.detachEvent("onmouseover", v);
      j.detachEvent("onmouseout", h);
      l.detachEvent("onclick", x);
      l.detachEvent("onmouseover", z);
      l.detachEvent("onmouseout", h);
      f = null;
    }
    function F(c)
    {
      a.SetRadius(c);
      b.SetRadius(c);
      d.SetRadius(c);
      e.SetRadius(c);
    }
    function E()
    {
      return a.GetRadius();
    }
    var o = [];
    o.push({top : "-8px", left : "17px"});
    o.push({top : "17px", left : "42px"});
    o.push({top : "42px", left : "17px"});
    o.push({top : "17px", left : "-8px"});
    var f = document.createElement("div");
    f.setAttribute("id", "MSVE_obliqueCompassContainer");
    f.title = L_ObliqueCompassSelectDirection_Text;
    var a = new w("MSVE_obliqueCompassPointN", "N", 0), i = a.GetElement();
    i.attachEvent("onclick", r);
    i.attachEvent("onmouseover", u);
    i.attachEvent("onmouseout", h);
    var d = new w("MSVE_obliqueCompassPointE", "E", 1), k = d.GetElement();
    k.attachEvent("onclick", t);
    k.attachEvent("onmouseover", y);
    k.attachEvent("onmouseout", h);
    var b = new w("MSVE_obliqueCompassPointS", "S", 2), j = b.GetElement();
    j.attachEvent("onclick", s);
    j.attachEvent("onmouseover", v);
    j.attachEvent("onmouseout", h);
    var e = new w("MSVE_obliqueCompassPointW", "W", 3), l = e.GetElement();
    l.attachEvent("onclick", x);
    l.attachEvent("onmouseover", z);
    l.attachEvent("onmouseout", h);
    var m = document.createElement("div");
    m.id = "MSVE_navAction_obliqueCompassArrow";
    f.appendChild(i);
    f.appendChild(k);
    f.appendChild(j);
    f.appendChild(l);
    f.appendChild(m);
    D.appendChild(f);
    q();
    this.Hide = H;
    this.Show = I;
    this.UpdateFromMap = q;
    this.SetRadius = F;
    this.GetRadius = E;
    this.Destroy = G;
  }
  function kb(b)
  {
    function u()
    {
      b.style.display = "block";
    }
    function t()
    {
      b.style.display = "none";
    }
    function k()
    {
      var a = g(b).getScreenPosition();
      v = a.x;
      s = a.y;
    }
    function o(b)
    {
      b = GetEvent(b);
      CancelEvent(b);
      k();
      if (a.setCapture)
        a.setCapture();
      j = true;
      return false;
    }
    function p(b)
    {
      b = GetEvent(b);
      CancelEvent(b);
      if (j)
        a.style.top = h((Gimme.Screen.getMousePosition(b)).y) + "px";
      return false;
    }
    function q(b)
    {
      b = GetEvent(b);
      CancelEvent(b);
      if (a.releaseCapture)
        a.releaseCapture();
      j = false;
      n(h((Gimme.Screen.getMousePosition(b)).y));
      i();
      return false;
    }
    function m()
    {
      c.ZoomIn();
    }
    function l()
    {
      c.ZoomOut();
    }
    function r(a)
    {
      a = GetEvent(a);
      CancelEvent(a);
      k();
      n(h((Gimme.Screen.getMousePosition(a)).y));
      return false;
    }
    function h(b)
    {
      b -= s + d.offsetHeight + a.offsetHeight;
      var c = e.offsetHeight - a.offsetHeight;
      if (b < 0)
        b = 0;
      else
        if (b > c)
          b = c;
      return b;
    }
    function n(f)
    {
      var b = e.offsetHeight - a.offsetHeight, d = 1 + MathRound((b - f) / b * 18);
      $VE_A.Log($VE_A.PgName.Map, "Zoom");
      c.SetZoom(d);
    }
    function i()
    {
      var b = e.offsetHeight - a.offsetHeight, d = b - (c.GetZoomLevel() - 1) / 18 * b;
      a.style.top = d + "px";
    }
    var f = document.createElement("div"), e = document.createElement("div"), a = document.createElement("div"), d = document.createElement("div"), v = 0, s = 0, j = false;
    this.Init = (function ()
{
  d.className = "MSVE_ZoomBar_minus";
  d.id = "MSVE_navAction_orthoZoomBar_minus";
  d.title = L_ZoomBarMinusToolTip_Text;
  d.unselectable = "on";
  d.attachEvent("onclick", l);
  pseudoHover(d);
  a.className = "MSVE_ZoomBar_slider";
  a.id = "MSVE_navAction_orthoZoomBar_slider";
  a.title = L_ZoomBarSliderToolTip_Text;
  a.unselectable = "on";
  a.attachEvent("onmousedown", o);
  a.attachEvent("onmousemove", p);
  a.attachEvent("onmouseup", q);
  a.attachEvent("onclick", IgnoreEvent);
  pseudoHover(a);
  e.className = "MSVE_OrthoZoomBar_bar";
  e.unselectable = "on";
  e.appendChild(a);
  e.attachEvent("onclick", r);
  f.className = "MSVE_ZoomBar_plus";
  f.id = "MSVE_navAction_orthoZoomBar_plus";
  f.title = L_ZoomBarPlusToolTip_Text;
  f.unselectable = "on";
  f.attachEvent("onclick", m);
  pseudoHover(f);
  b.className = "MSVE_ZoomBar";
  b.id = "MSVE_OrthoZoomBar";
  b.appendChild(d);
  b.appendChild(e);
  b.appendChild(f);
  b.attachEvent("onmousedown", IgnoreEvent);
  b.attachEvent("onmouseup", IgnoreEvent);
  b.attachEvent("onclick", IgnoreEvent);
  b.attachEvent("ondblclick", IgnoreEvent);
  i();
}
);
    this.Destroy = (function ()
{
  d.detachEvent("onclick", l);
  a.detachEvent("onmousedown", o);
  a.detachEvent("onmousemove", p);
  a.detachEvent("onmouseup", q);
  a.detachEvent("onclick", IgnoreEvent);
  e.detachEvent("onclick", r);
  f.detachEvent("onclick", m);
  b.detachEvent("onmousedown", IgnoreEvent);
  b.detachEvent("onmousedown", IgnoreEvent);
  b.detachEvent("onclick", IgnoreEvent);
  b.detachEvent("ondblclick", IgnoreEvent);
  d = a = e = f = null;
}
);
    this.UpdateFromMap = i;
    this.Show = u;
    this.Hide = t;
  }
  function nb()
  {
    function m()
    {
      if (c.GetMapMode() == Msn.VE.MapActionMode.Mode3D)
        return true;
      else
        return c.IsAnimationEnabled();
    }
    function k()
    {
      g = "in";
      c.ZoomIn();
    }
    function i()
    {
      window.setTimeout(l, m() ? 1 : 500);
    }
    function l()
    {
      if (g == "in" && c.GetZoomLevel() < 21)
        c.ZoomIn();
      else
        if (g == "out" && c.GetZoomLevel() > 1)
          c.ZoomOut();
    }
    function j()
    {
      g = "out";
      c.ZoomOut();
    }
    function a()
    {
      g = false;
    }
    var h = document.createElement("div"), f = document.createElement("div"), e = document.createElement("div"), g = false, d = null, b = null;
    this.Init = (function ()
{
  f.className = "MSVE_ZoomBar_plus";
  f.id = "MSVE_navAction_tinyZoomBar_plus";
  f.title = L_ZoomBarPlusToolTip_Text;
  f.unselectable = "on";
  e.className = "MSVE_ZoomBar_minus";
  e.id = "MSVE_navAction_tinyZoomBar_minus";
  e.title = L_ZoomBarMinusToolTip_Text;
  e.unselectable = "on";
  c.AttachEvent("onendzoom", i);
  h.className = "MSVE_ZoomBar";
  h.id = "MSVE_TinyZoomBar";
  h.appendChild(f);
  h.appendChild(e);
  return h;
}
);
    this.HookupPlusMinusEvents = (function (e,c)
{
  e.attachEvent("onmousedown", k);
  e.attachEvent("onmouseup", a);
  e.attachEvent("onmouseout", a);
  d = e;
  c.attachEvent("onmousedown", j);
  c.attachEvent("onmouseup", a);
  c.attachEvent("onmouseout", a);
  b = c;
}
);
    this.Destroy = (function ()
{
  if (d != null)
    {
      d.detachEvent("onmousedown", k);
      d.detachEvent("onmouseup", a);
      d.detachEvent("onmouseout", a);
      d = null;
    }
  if (b != null)
    {
      b.detachEvent("onmousedown", j);
      b.detachEvent("onmouseup", a);
      b.detachEvent("onmouseout", a);
      b = null;
    }
  c.DetachEvent("onendzoom", i);
  f = e = null;
}
);
  }
  function qb()
  {
    var e = $MVEM.IsEnabled(MapControl.Features.MapStyle.BirdsEye) && (c.IsObliqueAvailable() || c.GetMapStyle() == "o");
    if (e)
      {
        i(a.Oblique, true);
        if (b[a.ObliqueNotification] && c.GetMapStyle() != "o")
          s();
      }
    else
      {
        i(a.Oblique, false);
        if (b[a.ObliqueNotification])
          p();
      }
    switch (c.GetMapStyle())
    {
      case "r":
        d = Msn.VE.DashboardStates.MapView.Ortho;
        k();
        h = Msn.VE.DashboardStates.MapStyle.Road;
        x();
        break ;
      case "s":
        d = Msn.VE.DashboardStates.MapView.Ortho;
        k();
        h = Msn.VE.DashboardStates.MapStyle.Shaded;
        x();
        break ;
      case "a":
        d = Msn.VE.DashboardStates.MapView.Ortho;
        k();
        h = Msn.VE.DashboardStates.MapStyle.Aerial;
        J();
        break ;
      case "h":
        d = Msn.VE.DashboardStates.MapView.Ortho;
        k();
        h = Msn.VE.DashboardStates.MapStyle.Hybrid;
        K();
        break ;
      case "o":
        d = Msn.VE.DashboardStates.MapView.Oblique;
        t();
    }
    if (c.IsModeEnabled(Msn.VE.MapActionMode.Mode3D))
      I();
    else
      H();
  }
  function pb()
  {
    var a;
    for (a in r)
      if (r.hasOwnProperty(a))
        C(r[a]);
    document.body.removeChild(n);
    n = null;
  }
  function E(e)
  {
    switch (e)
    {
      case a.OrthoZoom:
        b[e] = document.createElement("div");
        f.orthoZoom = new kb(b[e]);
        f.orthoZoom.Init();
        c.AttachEvent("onendzoom", z);
        n.appendChild(b[e]);
        z();
        return ;
      case a.ObliqueZoom:
        b[e] = document.createElement("div");
        N = true;
        b[e].id = e;
        n.appendChild(b[e]);
        return ;
      case a.TinyZoom:
        A = new nb();
        b[e] = A.Init();
        return ;
      case a.ObliqueCompass:
        b[e] = document.createElement("div");
        b[e].id = e;
        B = true;
        return ;
      case a.ObliqueNotification:
        P();
        return ;
      case a.Oblique:
        c.AttachEvent("onve3dphotostatechanged", ab);
    }
    var d = l[e], g = document.createElement("div");
    b[d.Id] = g;
    g.id = d.Id;
    g.enabled = d.Enabled;
    g.classRecipients = [g];
    if (d.Text != null)
      g.innerText = d.Text;
    if (d.OnClickFunction != null && d.Enabled == true)
      g.attachEvent("onclick", d.OnClickFunction);
    if (d.StyleUpdateEvent != null && d.StyleUpdateFunction != null)
      c.AttachEvent(d.StyleUpdateEvent, d.StyleUpdateFunction);
    if (d.InitialClass)
      {
        g.className = d.InitialClass;
        if (! g.enabled)
          g.className += "_disabled";
      }
    if (d.Children != null)
      {
        var h;
        for (h in d.Children)
          if (d.Children.hasOwnProperty(h))
            g.appendChild(E(d.Children[h]));
      }
    else
      pseudoHover(g);
    switch (e)
    {
      case a.Oblique:
      case a.ObliqueCompass:
        c.AttachEvent("onobliqueenter", hb);
        c.AttachEvent("onobliqueleave", ib);
        c.AttachEvent("onendmapstyleoblique", Y);
        c.AttachEvent("onobliquechange", eb);
        break ;
      case a.Traffic:
        c.AttachEvent("onchangetraffic", y);
        y();
    }
    return g;
  }
  function C(e)
  {
    switch (e)
    {
      case a.OrthoZoom:
        f.orthoZoom.Destroy();
        b[e] = null;
        c.DetachEvent("onendzoom", z);
        try
          {
            n.removeChild(b[e]);
          }
        catch (j)
          {}
        return ;
      case a.ObliqueZoom:
        try
          {
            n.removeChild(b[e]);
          }
        catch (j)
          {}
        if (f.obliqueZoom)
          {
            f.obliqueZoom.Destroy();
            f.obliqueZoom = null;
          }
      case a.TinyZoom:
        A.Destroy();
        b[e] = null;
        return ;
      case a.ObliqueCompass:
        if (B && f.obliqueCompass)
          {
            f.obliqueCompass.onclick = null;
            f.obliqueCompass.Destroy();
            f.obliqueCompass = null;
          }
        return ;
      case a.ObliqueNotification:
        b[a.ObliqueNotification].detachEvent("onclick", v);
        return ;
      case a.Traffic:
        c.DetachEvent("onchangetraffic", y);
    }
    var i = b[e];
    if (i == null)
      return ;
    var d = l[e];
    if (d.Children != null)
      {
        var g, h;
        for (h in d.Children)
          if (d.Children.hasOwnProperty(h))
            {
              g = d.Children[h];
              try
                {
                  i.removeChild(b[g]);
                }
              catch (j)
                {}
              C(g);
            }
      }
    if (d.OnClickFunction != null)
      i.detachEvent("onclick", d.OnClickFunction);
    try
      {
        if (c && d.StyleUpdateEvent != null && d.StyleUpdateFunction != null)
          c.DetachEvent(d.StyleUpdateEvent, d.StyleUpdateFunction);
      }
    catch (j)
      {}
    b[d.Id] = null;
  }
  function P()
  {
    b[a.ObliqueNotification] = document.createElement("div");
    b[a.ObliqueNotification].id = a.ObliqueNotification;
    b[a.ObliqueNotification].innerHTML += "<div id=\"MSVE_obliqueNotifyIcon\">&nbsp;</div> <div id=\"MSVE_obliqueNotifyText\">" + L_DashboardBirdsEyeText_Text + "</div>";
    b[a.ObliqueNotification].attachEvent("onclick", v);
  }
  function bb()
  {
    $VE_A.Log($VE_A.PgName.Map, "MapStyleRoad", $VE_A.PgName.Map);
    o();
  }
  function o()
  {
    if (h == Msn.VE.DashboardStates.MapStyle.Road && d == Msn.VE.DashboardStates.MapView.Ortho)
      return ;
    h = Msn.VE.DashboardStates.MapStyle.Road;
    d = Msn.VE.DashboardStates.MapView.Ortho;
    j(e + d + h);
  }
  function W()
  {
    $VE_A.Log($VE_A.PgName.Map, "MapStyleAerial", $VE_A.PgName.Map);
    cb();
  }
  function cb()
  {
    if (h == Msn.VE.DashboardStates.MapStyle.Aerial && d == Msn.VE.DashboardStates.MapView.Ortho)
      return ;
    h = Msn.VE.DashboardStates.MapStyle.Aerial;
    d = Msn.VE.DashboardStates.MapView.Ortho;
    j(e + d + h);
  }
  function X()
  {
    $VE_A.Log($VE_A.PgName.Map, "MapStyleHybrid", $VE_A.PgName.Map);
    db();
  }
  function db()
  {
    if (h == Msn.VE.DashboardStates.MapStyle.Hybrid && d == Msn.VE.DashboardStates.MapView.Ortho)
      return ;
    h = Msn.VE.DashboardStates.MapStyle.Hybrid;
    d = Msn.VE.DashboardStates.MapView.Ortho;
    j(e + d + h);
  }
  function m()
  {
    if (d == Msn.VE.DashboardStates.MapView.Ortho && e == Msn.VE.DashboardStates.MapMode.Flatland)
      return ;
    d = Msn.VE.DashboardStates.MapView.Ortho;
    if (e == Msn.VE.DashboardStates.MapMode.Flatland)
      switch (h)
      {
        case Msn.VE.DashboardStates.MapStyle.Aerial:
          if ($MVEM.IsEnabled(MapControl.Features.MapStyle.Aerial))
            j(e + d + h);
          else
            o();
          break ;
        case Msn.VE.DashboardStates.MapStyle.Hybrid:
          if ($MVEM.IsEnabled(MapControl.Features.MapStyle.Hybrid))
            j(e + d + h);
          else
            o();
          break ;
        default:
          j(e + d + h);
      }
    else
      j(e + d);
    k();
  }
  function v()
  {
    if (typeof b[a.ObliqueNotification] != "undefined" && b[a.ObliqueNotification])
      p();
    if (e == Msn.VE.DashboardStates.MapMode.View3D)
      f.Oblique3DFunctionality.ObliqueClickFunction();
    else
      {
        if (d == Msn.VE.DashboardStates.MapView.Oblique)
          return ;
        $VE_A.Log($VE_A.PgName.Map, "MapStyleOblique", $VE_A.PgName.Map);
        L();
      }
  }
  function Q()
  {
    var e = new Date();
    if (D != null)
      if (e.getTime() - D.getTime() < 1000)
        return ;
    D = e;
    var d = c.Get3DControl();
    if (g(b[a.Oblique]).hasClass("MSVE_selected"))
      {
        ProcessPhotoPluginActionIn3D("PhotosEnabled", "0", d);
        c.Set3DPhotoPluginActive(false);
      }
    else
      {
        ProcessPhotoPluginActionIn3D("PhotosEnabled", "1", d);
        c.Set3DPhotoPluginActive(true);
      }
    c.UpdateCopyright();
  }
  function L()
  {
    d = Msn.VE.DashboardStates.MapView.Oblique;
    j(e + d);
    t();
  }
  function S()
  {
    if (d == Msn.VE.DashboardStates.MapView.StreetSide && e == Msn.VE.DashboardStates.MapMode.Flatland)
      return ;
    d = Msn.VE.DashboardStates.MapView.StreetSide;
    j(e + d);
    U();
  }
  function V()
  {
    $VE_A.Log($VE_A.PgName.Map, "Mode2D", $VE_A.PgName.Map);
    c.EnableMode(Msn.VE.MapActionMode.Mode2D);
  }
  function Z()
  {
    if (! c.IsModeEnabled(Msn.VE.MapActionMode.Mode3D))
      {
        $VE_A.Log($VE_A.PgName.Map, "Mode3D", $VE_A.PgName.Map);
        if (typeof ShowMessage != "undefined")
          {
            ShowMessage(L_3DLoading_Text);
            window.setTimeout(View3DSwitch, 200);
          }
        else
          c.EnableMode(Msn.VE.MapActionMode.Mode3D);
      }
  }
  function y()
  {
    if (VE_TrafficManager.turnedOn)
      {
        g(b[a.Traffic]).addClass("MSVE_selected");
        b[a.Traffic].title = L_NavActionHideTrafficToolTip_Text;
      }
    else
      {
        g(b[a.Traffic]).removeClass("MSVE_selected");
        b[a.Traffic].title = L_NavActionShowTrafficToolTip_Text;
      }
  }
  function jb()
  {
    if (VE_TrafficManager.turnedOn)
      VE_TrafficManager.ClearTraffic();
    else
      VE_TrafficManager.GetTrafficInfo(true);
  }
  function ab(c)
  {
    if (c.state == "1")
      {
        g(b[a.Oblique]).addClass("MSVE_selected");
        $VE_A.Log($VE_A.PgName.Map, "LayerBirdsEyeOn", $VE_A.PgName.Map);
      }
    else
      {
        g(b[a.Oblique]).removeClass("MSVE_selected");
        $VE_A.Log($VE_A.PgName.Map, "LayerBirdsEyeOff", $VE_A.PgName.Map);
      }
  }
  function q(a)
  {
    switch (a.view.mapStyle)
    {
      case "s":
        if (e == Msn.VE.DashboardStates.MapMode.Flatland && c.IsModeEnabled(Msn.VE.MapActionMode.Mode2D) && d != Msn.VE.DashboardStates.MapView.Ortho)
          {
            d = Msn.VE.DashboardStates.MapView.Ortho;
            k();
          }
        h = Msn.VE.DashboardStates.MapStyle.Shaded;
        x();
        break ;
      case "r":
        if (e == Msn.VE.DashboardStates.MapMode.Flatland && c.IsModeEnabled(Msn.VE.MapActionMode.Mode2D) && d != Msn.VE.DashboardStates.MapView.Ortho)
          {
            d = Msn.VE.DashboardStates.MapView.Ortho;
            k();
          }
        h = Msn.VE.DashboardStates.MapStyle.Road;
        x();
        break ;
      case "a":
        if (e == Msn.VE.DashboardStates.MapMode.Flatland && c.IsModeEnabled(Msn.VE.MapActionMode.Mode2D) && d != Msn.VE.DashboardStates.MapView.Ortho)
          {
            d = Msn.VE.DashboardStates.MapView.Ortho;
            k();
          }
        h = Msn.VE.DashboardStates.MapStyle.Aerial;
        J();
        break ;
      case "h":
        if (e == Msn.VE.DashboardStates.MapMode.Flatland && c.IsModeEnabled(Msn.VE.MapActionMode.Mode2D) && d != Msn.VE.DashboardStates.MapView.Ortho)
          {
            d = Msn.VE.DashboardStates.MapView.Ortho;
            k();
          }
        h = Msn.VE.DashboardStates.MapStyle.Hybrid;
        K();
        break ;
      case "o":
        d = Msn.VE.DashboardStates.MapView.Oblique;
        t();
    }
  }
  function M(a)
  {
    if (a == Msn.VE.MapActionMode.Mode3D)
      I();
    else
      H();
  }
  function I()
  {
    if (e == Msn.VE.DashboardStates.MapMode.View3D)
      return ;
    e = Msn.VE.DashboardStates.MapMode.View3D;
    if (typeof b[a.Mode] != "undefined" && b[a.Mode] != null)
      g(b[a.Mode].classRecipients).swapClass("MSVE_FlatlandMapMode", "MSVE_View3DMapMode");
    i(a.StreetSide, true);
    i(a.Road, true);
    i(a.Aerial, true);
    i(a.Hybrid, true);
    if (! f.Oblique3DFunctionality.DependsOnObliqueAvailability)
      i(a.Oblique, true);
    else
      {
        if (b[a.ObliqueNotification] != null && b[a.ObliqueNotification].enabled)
          s();
        k();
      }
    if (typeof b[a.Ortho] != "undefined" && b[a.Ortho] != null)
      b[a.Ortho].title = L_NavAction3DOrthoToolTip_Text;
    if (typeof b[a.Oblique] != "undefined" && b[a.Oblique] != null)
      if (b[a.Oblique].enabled)
        {
          b[a.Oblique].title = f.Oblique3DFunctionality.Title;
          s();
        }
      else
        b[a.Oblique].title = "";
    if (typeof b[a.StreetSide] != "undefined" && b[a.StreetSide] != null)
      b[a.StreetSide].title = L_NavAction3DStreetSideToolTip_Text;
    var h = c.GetDashboard().GetShimmedElements(), d;
    for (d = 0;d < h.length;d++)
      mvcViewFacade.UpdateShimIfSupported(h[d]);
  }
  function H()
  {
    e = Msn.VE.DashboardStates.MapMode.Flatland;
    if (typeof b[a.Mode] != "undefined" && b[a.Mode] != null)
      g(b[a.Mode].classRecipients).swapClass("MSVE_View3DMapMode", "MSVE_FlatlandMapMode");
    if (typeof b[a.Ortho] != "undefined" && b[a.Ortho] != null)
      b[a.Ortho].title = L_NavActionOrthoToolTip_Text;
    if (typeof b[a.Oblique] != "undefined" && b[a.Oblique] != null)
      b[a.Oblique].title = L_NavActionObliqueToolTip_Text;
    g(b[a.Oblique]).removeClass("MSVE_selected");
    photoState = 0;
    if ($MVEM.IsEnabled(MapControl.Features.MapStyle.Road))
      i(a.Road, true);
    else
      i(a.Road, false);
    if ($MVEM.IsEnabled(MapControl.Features.MapStyle.Aerial))
      i(a.Aerial, true);
    else
      i(a.Aerial, false);
    if ($MVEM.IsEnabled(MapControl.Features.MapStyle.Hybrid))
      i(a.Hybrid, true);
    else
      i(a.Hybrid, false);
    if ($MVEM.IsEnabled(MapControl.Features.MapStyle.BirdsEye))
      {
        c.GetObliqueAvailability("OnFlatlandModeUpdateUIObliqueReturned", O);
        return ;
      }
    else
      {
        i(a.Oblique, false);
        d = Msn.VE.DashboardStates.MapView.Ortho;
        k();
      }
    switch (d)
    {
      case Msn.VE.DashboardStates.MapView.Oblique:
        if (c.IsObliqueAvailable() && $MVEM.IsEnabled(MapControl.Features.MapStyle.BirdsEye))
          j(e + d);
        else
          m();
        break ;
      case Msn.VE.DashboardStates.MapView.StreetSide:
        m();
        break ;
      case Msn.VE.DashboardStates.MapView.Ortho:
        switch (h)
        {
          case Msn.VE.DashboardStates.MapStyle.Aerial:
            if ($MVEM.IsEnabled(MapControl.Features.MapStyle.Aerial))
              j(e + d + h);
            else
              o();
            break ;
          case Msn.VE.DashboardStates.MapStyle.Hybrid:
            if ($MVEM.IsEnabled(MapControl.Features.MapStyle.Hybrid))
              j(e + d + h);
            else
              o();
            break ;
          default:
            j(e + d + h);
        }
        break ;
      default:
        m();
    }
  }
  function O(b)
  {
    if (b)
      {
        i(a.Oblique, true);
        if (f.obliqueZoom != null)
          f.obliqueZoom.UpdateFromMap();
      }
    else
      {
        i(a.Oblique, false);
        d = Msn.VE.DashboardStates.MapView.Ortho;
        k();
      }
    switch (d)
    {
      case Msn.VE.DashboardStates.MapView.Oblique:
        if (b && $MVEM.IsEnabled(MapControl.Features.MapStyle.BirdsEye))
          j(e + d);
        else
          m();
        break ;
      case Msn.VE.DashboardStates.MapView.StreetSide:
        m();
        break ;
      case Msn.VE.DashboardStates.MapView.Ortho:
        switch (h)
        {
          case Msn.VE.DashboardStates.MapStyle.Aerial:
            if ($MVEM.IsEnabled(MapControl.Features.MapStyle.Aerial))
              j(e + d + h);
            else
              o();
            break ;
          case Msn.VE.DashboardStates.MapStyle.Hybrid:
            if ($MVEM.IsEnabled(MapControl.Features.MapStyle.Hybrid))
              j(e + d + h);
            else
              o();
            break ;
          default:
            j(e + d + h);
        }
        break ;
      default:
        m();
    }
  }
  function z()
  {
    if (f.orthoZoom)
      f.orthoZoom.UpdateFromMap();
    if (f.obliqueZoom)
      f.obliqueZoom.UpdateFromMap();
  }
  function hb()
  {
    if (c.GetMapStyle() == "o")
      d = Msn.VE.DashboardStates.MapView.Oblique;
    if (e == Msn.VE.DashboardStates.MapMode.Flatland || e == Msn.VE.DashboardStates.MapMode.View3D && f.Oblique3DFunctionality.DependsOnObliqueAvailability)
      {
        i(a.Oblique, true);
        if (b[a.ObliqueNotification])
          s();
      }
  }
  function ib()
  {
    d = Msn.VE.DashboardStates.MapView.Ortho;
    k();
    if (e == Msn.VE.DashboardStates.MapMode.Flatland || e == Msn.VE.DashboardStates.MapMode.View3D && f.Oblique3DFunctionality.DependsOnObliqueAvailability)
      {
        i(a.Oblique, false);
        p();
      }
  }
  function Y()
  {
    d = Msn.VE.DashboardStates.MapView.Ortho;
    k();
  }
  function eb()
  {
    if ($MVEM.IsEnabled(MapControl.Features.MapStyle.BirdsEye))
      {
        if (d != Msn.VE.DashboardStates.MapView.Oblique)
          {
            d = Msn.VE.DashboardStates.MapView.Oblique;
            i(a.Oblique, true);
            t();
          }
      }
    else
      {
        d = Msn.VE.DashboardStates.MapView.Oblique;
        m();
      }
    if (b[a.ObliqueNotification])
      p();
    if (typeof f.obliqueCompass != "undefined" && f.obliqueCompass != null)
      f.obliqueCompass.UpdateFromMap(u);
  }
  function x()
  {
    if (typeof b[a.Style] != "undefined" && b[a.Style] != null)
      {
        var c;
        for (c = 0;c < b[a.Style].classRecipients.length;c++)
          b[a.Style].classRecipients[c].className = "MSVE_RoadMapStyle";
      }
  }
  function J()
  {
    if (typeof b[a.Style] != "undefined" && b[a.Style] != null)
      {
        var c;
        for (c = 0;c < b[a.Style].classRecipients.length;c++)
          b[a.Style].classRecipients[c].className = "MSVE_AerialMapStyle";
      }
  }
  function K()
  {
    if (typeof b[a.Style] != "undefined" && b[a.Style] != null)
      {
        var c;
        for (c = 0;c < b[a.Style].classRecipients.length;c++)
          b[a.Style].classRecipients[c].className = "MSVE_HybridMapStyle";
      }
  }
  function k()
  {
    if (typeof b[a.View] != "undefined" && b[a.View] != null)
      {
        var c = g(b[a.View].classRecipients);
        c.removeClass("MSVE_StreetSideView");
        c.removeClass("MSVE_ObliqueView");
        c.addClass("MSVE_OrthoView");
      }
    if (b[a.Traffic] != null && e == Msn.VE.DashboardStates.MapMode.Flatland)
      {
        i(a.Traffic, true);
        y();
      }
  }
  function t()
  {
    if (typeof b[a.View] != "undefined" && b[a.View] != null)
      {
        var c = g(b[a.View].classRecipients);
        c.removeClass("MSVE_StreetSideView");
        c.removeClass("MSVE_OrthoView");
        c.addClass("MSVE_ObliqueView");
      }
    if (B)
      {
        if (f.obliqueCompass == null)
          {
            f.obliqueCompass = new fb(b[a.ObliqueCompass]);
            if (b[a.ObliqueCompass].radius)
              f.obliqueCompass.SetRadius(b[a.ObliqueCompass].radius);
            f.obliqueCompass.onclick = (function ()
{
  u = Msn.VE.BirdsEyeSearchSpinDirection.NoSpin;
}
);
          }
        f.obliqueCompass.UpdateFromMap();
      }
    if (N)
      {
        if (f.obliqueZoom == null)
          {
            f.obliqueZoom = new gb(b[a.ObliqueZoom]);
            f.obliqueZoom.Init();
          }
        f.obliqueZoom.UpdateFromMap();
      }
    if (b[a.Traffic] != null && e == Msn.VE.DashboardStates.MapMode.Flatland)
      i(a.Traffic, false);
  }
  function U()
  {
    if (typeof b[a.View] != "undefined" && b[a.View] != null)
      {
        var c = g(b[a.View].classRecipients);
        c.removeClass("MSVE_OrthoView");
        c.removeClass("MSVE_ObliqueView");
        c.addClass("MSVE_StreetSideView");
      }
  }
  function s()
  {
    if (! b[a.ObliqueNotification])
      return ;
    if (! f.displaying3DNotification)
      if (d != Msn.VE.DashboardStates.MapView.Oblique)
        {
          b[a.ObliqueNotification].style.display = "block";
          mvcViewFacade.UpdateShimIfSupported(b[a.ObliqueNotification]);
          window.setTimeout(p, 6000);
        }
  }
  function p()
  {
    b[a.ObliqueNotification].style.display = "none";
    mvcViewFacade.UpdateShimIfSupported(b[a.ObliqueNotification]);
  }
  function i(c,d)
  {
    if (b[c] == null)
      return ;
    if (b[c].enabled == d)
      return ;
    b[c].enabled = d;
    var a = l[c];
    if (a.InitialClass)
      b[c].className = d ? a.InitialClass : a.InitialClass + "_disabled";
    if (a.Title)
      b[c].title = d ? a.Title : "";
    if (a.OnClickFunction)
      if (d)
        b[c].attachEvent("onclick", a.OnClickFunction);
      else
        b[c].detachEvent("onclick", a.OnClickFunction);
  }
  function j(a)
  {
    var b = false;
    if (a & Msn.VE.DashboardStates.MapStyle.Road)
      {
        c.SetMapStyle("r");
        b = true;
      }
    else
      if (a & Msn.VE.DashboardStates.MapStyle.Aerial)
        {
          c.SetMapStyle("a");
          b = true;
        }
      else
        if (a & Msn.VE.DashboardStates.MapStyle.Hybrid)
          {
            c.SetMapStyle("h");
            b = true;
          }
    if (a & Msn.VE.DashboardStates.MapMode.Flatland)
      {
        if (a & Msn.VE.DashboardStates.MapView.Oblique && c.GetMapStyle() != Msn.VE.MapStyle.Oblique)
          c.SetMapStyle("o");
      }
    else
      if (a & Msn.VE.DashboardStates.MapMode.View3D && ! b)
        if (a & Msn.VE.DashboardStates.MapView.Ortho)
          c.SetTilt(- 90);
        else
          if (a & Msn.VE.DashboardStates.MapView.Oblique)
            c.SetTilt(- 45);
          else
            if (a & Msn.VE.DashboardStates.MapView.StreetSide)
              c.SetTilt(- 25);
  }
  function ob(a)
  {
    return b[a];
  }
  function lb()
  {
    return b;
  }
  function mb()
  {
    return A;
  }
  function R()
  {
    return u;
  }
  function T(a)
  {
    u = a;
  }
  var a = F, l = [];
  l[a.Style] = {Id : a.Style, InitialClass : null, OnClickFunction : null, StyleUpdateEvent : null, StyleUpdateFunction : null, Enabled : true, Title : null, Children : [a.Road, a.Aerial, a.Hybrid], Text : null};
  l[a.Road] = {Id : a.Road, InitialClass : "MSVE_MapStyle", OnClickFunction : bb, StyleUpdateEvent : "onchangemapstyle", StyleUpdateFunction : q, Enabled : MapControl.Features.MapStyle.Road, Title : L_NavActionRoadToolTip_Text, Children : null, Text : L_NavActionRoad_Text};
  l[a.Aerial] = {Id : a.Aerial, InitialClass : "MSVE_MapStyle", OnClickFunction : W, StyleUpdateEvent : "onchangemapstyle", StyleUpdateFunction : q, Enabled : MapControl.Features.MapStyle.Aerial, Title : L_NavActionAerialToolTip_Text, Children : null, Text : L_NavActionAerial_Text};
  l[a.Hybrid] = {Id : a.Hybrid, InitialClass : "MSVE_MapStyle", OnClickFunction : X, StyleUpdateEvent : "onchangemapstyle", StyleUpdateFunction : q, Enabled : MapControl.Features.MapStyle.Hybrid, Title : L_NavActionHybridToolTip_Text, Children : null, Text : L_NavActionHybrid_Text};
  l[a.Mode] = {Id : a.Mode, InitialClass : "MSVE_modeCell", OnClickFunction : null, StyleUpdateEvent : null, StyleUpdateFunction : null, Enabled : true, Title : null, Children : [a.Mode2D, a.Mode3D], Text : null};
  l[a.Mode2D] = {Id : a.Mode2D, InitialClass : "MSVE_MapMode", OnClickFunction : V, StyleUpdateEvent : "oninitmode", StyleUpdateFunction : M, Enabled : true, Title : L_NavActionFlatlandToolTip_Text, Children : null, Text : L_NavActionFlatland_Text};
  l[a.Mode3D] = {Id : a.Mode3D, InitialClass : "MSVE_MapMode", OnClickFunction : Z, StyleUpdateEvent : "oninitmode", StyleUpdateFunction : M, Enabled : MapControl.Features.MapStyle.View3D, Title : L_NavActionView3DToolTip_Text, Children : null, Text : L_NavActionView3D_Text};
  l[a.View] = {Id : a.View, InitialClass : null, OnClickFunction : null, StyleUpdateEvent : null, StyleUpdateFunction : null, Enabled : true, Title : null, Children : [a.Ortho, a.Oblique, a.StreetSide], Text : null};
  l[a.Ortho] = {Id : a.Ortho, InitialClass : "MSVE_MapStyle", OnClickFunction : m, StyleUpdateEvent : "onchangemapstyle", StyleUpdateFunction : q, Enabled : true, Title : L_NavActionOrthoToolTip_Text, Children : null, Text : null};
  l[a.Oblique] = {Id : a.Oblique, InitialClass : "MSVE_MapStyle", OnClickFunction : v, StyleUpdateEvent : "onchangemapstyle", StyleUpdateFunction : q, Enabled : false, Title : L_NavActionObliqueToolTip_Text, Children : null, Text : null};
  l[a.StreetSide] = {Id : a.StreetSide, InitialClass : "MSVE_MapStyle", OnClickFunction : S, StyleUpdateEvent : "onchangemapstyle", StyleUpdateFunction : q, Enabled : false, Title : L_NavActionStreetSideToolTip_Text, Children : null, Text : null};
  l[a.Traffic] = {Id : a.Traffic, InitialClass : "MSVE_MapStyle", OnClickFunction : jb, StyleUpdateEvent : null, StyleUpdateFunction : null, Enabled : true, Title : L_NavActionShowTrafficToolTip_Text, Children : null, Text : L_NavActionTraffic_Text};
  this.ObliqueFunctions = [];
  this.ObliqueFunctions.ObliqueImageryIn3D = {ObliqueClickFunction : Q, Title : L_NavActionShowObliqueToolTip_Text, DependsOnObliqueAvailability : true};
  this.ObliqueFunctions.ObliqueTiltIn3D = {ObliqueClickFunction : L, Title : L_NavAction3DObliqueToolTip_Text, DependsOnObliqueAvailability : false};
  var f = this, b = [], e = Msn.VE.DashboardStates.MapMode.Flatland, d = Msn.VE.DashboardStates.MapView.Ortho, h = Msn.VE.DashboardStates.MapStyle.Road;
  this.orthoZoom = null;
  var A;
  this.obliqueCompass = null;
  this.obliqueZoom = null;
  this.displaying3DNotification = false;
  this.Oblique3DFunctionality = this.ObliqueFunctions.ObliqueImageryIn3D;
  var n = document.createElement("div");
  n.id = "MSVE_navAction_palette";
  document.body.appendChild(n);
  var B = false, N, u = Msn.VE.BirdsEyeSearchSpinDirection.NoSpin, G;
  for (G in r)
    if (r.hasOwnProperty(G))
      E(r[G]);
  var D = null;
  this.SetMapViewState = (function (a)
{
  d = a;
}
);
  this.GetMapViewState = (function ()
{
  return d;
}
);
  this.SetMapModeState = (function (a)
{
  e = a;
}
);
  this.GetMapModeState = (function ()
{
  return e;
}
);
  this.GetLastRotationDirection = R;
  this.SetLastRotationDirection = T;
  this.Init = qb;
  this.Create = E;
  this.Destroy = pb;
  this.DestroyControl = C;
  this.GetControl = ob;
  this.GetControls = lb;
  this.GetTinyZoom = mb;
  this.OnOrthoMapViewClick = m;
  this.OnObliqueMapViewClick = v;
  this.UpdateZoom = z;
  this.SelectObliqueMapView = t;
  this.SelectOrthoMapView = k;
  this.DisplayObliqueNotification = s;
  this.HideObliqueNotification = p;
}
);
  var a = F, b = null, i = null, z = null, c = null, s = null, v = null, w = null, d = null, m = null, p = null, q = null, h = null, e = null, eb = null, j = null, n = null, o = null, k = null, l = null, u = null, t = null, Q = ["North", "East", "South", "West"], O = {North : 0, East : 1, South : 2, West : 3}, y, x, r, I = 150, E = 0.7, S = 0.9, K = 1;
  this.Init = ab;
  this.Destroy = X;
  this.GetElement = V;
  this.GetToggleGlyph = D;
  this.GetShimmedElements = P;
  this.createRoller = H;
  this.GetMode = Y;
  this.Show = bb;
  this.Hide = Z;
  this.Oblique3DToggle = R;
}
);
Msn.VE.LatLong = (function (b,a)
{
  this.latitude = b;
  this.longitude = a;
}
);
Msn.VE.LatLong.prototype.ToString = (function ()
{
  return "(" + this.latitude + ", " + this.longitude + ")";
}
);
Msn.VE.LatLong.prototype.Copy = (function (a)
{
  if (! a)
    return ;
  this.latitude = a.latitude;
  this.longitude = a.longitude;
}
);
Msn.VE.LatLong.prototype.Equals = (function (a)
{
  if (a  instanceof  Msn.VE.LatLong)
    return this.latitude == a.latitude && this.longitude == a.longitude;
  else
    return false;
}
);
Msn.VE.LatLongRectangle = (function (a,b)
{
  this.northwest = a;
  this.southeast = b;
  this.ToString = (function ()
{
  return "(" + (this.northwest ? this.northwest.ToString() : "null") + ", " + (this.southeast ? this.southeast.ToString() : "null") + ")";
}
);
  this.Copy = (function (a)
{
  if (! a)
    return ;
  if (! this.northwest)
    this.northwest = new Msn.VE.LatLong();
  if (! this.southeast)
    this.southeast = new Msn.VE.LatLong();
  this.northwest.Copy(a.northwest);
  this.southeast.Copy(a.southeast);
}
);
  this.Center = (function ()
{
  var b = Math.sin(this.northwest.latitude * Math.PI / 180), c = Math.sin(this.southeast.latitude * Math.PI / 180), d = 0.25 * (Math.log((1 + b) / (1 - b)) + Math.log((1 + c) / (1 - c))), a = new Msn.VE.LatLong();
  a.latitude = Math.atan(Math.exp(d)) * 360 / Math.PI - 90;
  a.longitude = 0.5 * (parseFloat(this.northwest.longitude) + parseFloat(this.southeast.longitude));
  return a;
}
);
  this.Contains = (function (c)
{
  return c.latitude <= a.latitude && c.longitude >= a.longitude && c.latitude >= b.latitude && c.longitude <= b.longitude;
}
);
  this.ContainsRectangle = (function (a)
{
  return a.southeast.latitude >= this.southeast.latitude && a.southeast.longitude <= this.southeast.longitude && a.northwest.latitude <= this.northwest.latitude && a.northwest.longitude >= this.northwest.longitude;
}
);
}
);
Msn.VE.MapStyle = new (function ()
{
  this.Road = "r";
  this.Shaded = "s";
  this.Aerial = "a";
  this.Hybrid = "h";
  this.Oblique = "o";
}
)();
Msn.VE.MapViewType = (function ()
{
  }
);
Msn.VE.MapViewType.Pixel = "pixel";
Msn.VE.MapViewType.PixelRect = "pixelRect";
Msn.VE.MapViewType.LatLong = "latlong";
Msn.VE.MapViewType.LatLongAccurate = "latlongaccurate";
Msn.VE.MapViewType.LatLongRect = "latlongRect";
Msn.VE.MapView = (function (map)
{
  function MakeCopy()
  {
    var a = new Msn.VE.MapView();
    a.Copy(p_this);
    return a;
  }
  function Copy(a)
  {
    p_this.zoomLevel = a.zoomLevel;
    p_this.mapStyle = a.mapStyle;
    p_this.doRoadShading = a.doRoadShading;
    p_this.tilt = a.tilt;
    p_this.direction = a.direction;
    p_this.altitude = a.altitude;
    p_this.center.Copy(a.center);
    if (a.cameraLatlong != null)
      {
        p_this.cameraLatlong = new Msn.VE.LatLong();
        p_this.cameraLatlong.Copy(a.cameraLatlong);
      }
    p_this.latlong.Copy(a.latlong);
    p_this.pixelRect.Copy(a.pixelRect);
    p_this.latlongRect.Copy(a.latlongRect);
    p_this.sceneId = a.sceneId;
    p_this.sceneOrientation = a.sceneOrientation;
    p_this.SetMap(a.GetMap());
    viewType = a.GetViewType();
  }
  function Equals(a)
  {
    return a != null && p_this.zoomLevel == a.zoomLevel && p_this.mapStyle == a.mapStyle && MathAbs(p_this.tilt - a.tilt) < 0.000001 && MathAbs(p_this.direction - a.direction) < 0.000001 && MathAbs(p_this.altitude - a.altitude) < 0.000001 && MathAbs(p_this.center.x - a.center.x) < 0.000001 && MathAbs(p_this.center.y - a.center.y) < 0.000001 && p_this.sceneId == a.sceneId && p_this.GetMap() == a.GetMap() && p_this.sceneOrientation == a.sceneOrientation;
  }
  function ToString()
  {
    return "(" + p_this.latlong.ToString() + ", " + p_this.zoomLevel + ", " + p_this.mapStyle + ")";
  }
  function SetCenter(a)
  {
    if (! a)
      return ;
    p_this.center = a;
    viewType = Msn.VE.MapViewType.Pixel;
  }
  function SetCenterLatLong(a)
  {
    if (! a)
      return ;
    p_this.latlong = a;
    p_this.cameraLatlong = null;
    viewType = Msn.VE.MapViewType.LatLong;
  }
  function SetCenterLatLongAccurate(a)
  {
    if (a)
      {
        p_this.latlong = a;
        p_this.cameraLatlong = null;
        if (p_this.mapStyle == Msn.VE.MapStyle.Oblique)
          viewType = Msn.VE.MapViewType.LatLongAccurate;
        else
          viewType = Msn.VE.MapViewType.LatLong;
      }
  }
  function SetPixelRectangle(a)
  {
    p_this.pixelRect = a;
    p_this.cameraLatlong = null;
    p_this.tilt = - 90;
    p_this.direction = 0;
    viewType = Msn.VE.MapViewType.PixelRect;
  }
  function SetLatLongRectangle(a)
  {
    p_this.latlongRect = a;
    p_this.cameraLatlong = null;
    p_this.tilt = - 90;
    p_this.direction = 0;
    viewType = Msn.VE.MapViewType.LatLongRect;
  }
  function SetZoomLevel(a)
  {
    if (a <= 0)
      a = 1;
    var c = (mapInstance.GetCenterOffset()).x, d = (mapInstance.GetCenterOffset()).y;
    switch (viewType)
    {
      case Msn.VE.MapViewType.Pixel:
        var b = Math.pow(2, a - p_this.zoomLevel);
        p_this.center.x = (p_this.center.x + c) * b - c;
        p_this.center.y = (p_this.center.y + d) * b - d;
        break ;
      case Msn.VE.MapViewType.PixelRect:
        var b = Math.pow(2, a - p_this.zoomLevel);
        p_this.pixelRect.topLeft.x = p_this.pixelRect.topLeft.x * b;
        p_this.pixelRect.topLeft.y = p_this.pixelRect.topLeft.y * b;
        p_this.pixelRect.bottomRight.x = p_this.pixelRect.bottomRight.x * b;
        p_this.pixelRect.bottomRight.y = p_this.pixelRect.bottomRight.y * b;
    }
    if (p_this.zoomLevel != a)
      {
        p_this.altitude = - 1000;
        if (p_this.zoomLevel != 0)
          p_this.cameraLatlong = null;
      }
    p_this.zoomLevel = a;
  }
  function SetMapStyle(a,b,c,d)
  {
    p_this.mapStyle = a;
    if (viewType == Msn.VE.MapViewType.Pixel)
      viewType = Msn.VE.MapViewType.LatLong;
    if (a != "o")
      {
        p_this.sceneId = null;
        p_this.sceneOrientation = null;
        p_this.bySceneId = false;
      }
    else
      {
        p_this.sceneId = b;
        p_this.sceneOrientation = c;
        p_this.spinDirection = d;
        if (b)
          p_this.bySceneId = true;
        else
          p_this.bySceneId = false;
      }
  }
  function SetTilt(a)
  {
    if (a >= 269.99999)
      a = a - 360;
    if (a < - 90)
      a = - 90;
    if (a > 90)
      a = 90;
    p_this.tilt = a;
    p_this._needsPivotOperation = true;
  }
  function SetDirection(a)
  {
    if (a < 0 || a >= 360)
      a = 0;
    p_this.direction = a;
    p_this._needsPivotOperation = true;
  }
  function SetAltitude(a)
  {
    if (a < - 1000 || a > 15000000)
      a = - 1000;
    p_this.altitude = a;
  }
  function GetTilt()
  {
    return p_this.tilt;
  }
  function GetDirection()
  {
    return p_this.direction;
  }
  function GetAltitude()
  {
    return p_this.altitude;
  }
  function ScaleCoord(a,b)
  {
    if (b)
      a = a * Math.pow(2, b - p_this.zoomLevel);
    return a;
  }
  function GetX(a)
  {
    return ScaleCoord(p_this.center.x, a);
  }
  function GetY(a)
  {
    return ScaleCoord(p_this.center.y, a);
  }
  function GetCenter(a)
  {
    var b = ScaleCoord(p_this.center.x + (mapInstance.GetCenterOffset()).x, a), c = ScaleCoord(p_this.center.y + (mapInstance.GetCenterOffset()).y, a);
    return new VEPixel(b, c);
  }
  function GetZoomLevel()
  {
    return p_this.zoomLevel;
  }
  function GetLatLongRectangle()
  {
    return p_this.latlongRect;
  }
  function GetPixelRectangle()
  {
    return p_this.pixelRect;
  }
  function GetCenterLatLong()
  {
    var b = p_this.center.x + (mapInstance.GetCenterOffset()).x, c = p_this.center.y + (mapInstance.GetCenterOffset()).y, a = mapInstance.GetCurrentMode().PixelToLatLong(new VEPixel(b, c), p_this.zoomLevel);
    return a == null ? p_this.latlong : a;
  }
  function Resolve(b,d,c,a)
  {
    if (viewType == Msn.VE.MapViewType.LatLongAccurate)
      ResolveAsync(b, d, c, a);
    else
      ResolveSync(b, d, c, a);
  }
  function ResolveAsync(b,e,d,a)
  {
    function c(c)
    {
      if (c != null && typeof c != "undefined" && c.length == 1)
        p_this.center = c[0];
      if (p_this.cameraLatlong == null)
        if (! p_this._UpdateCamera(b))
          {
            p_this.tilt = - 90;
            p_this.cameraLatlong = p_this.latlong;
          }
      viewType = Msn.VE.MapViewType.Pixel;
      if (a != null && typeof a == "function")
        a();
    }
    b.LatLongToPixelAsync([p_this.latlong], p_this.zoomLevel, c);
  }
  function ResolveSync(a,d,c,b)
  {
    switch (viewType)
    {
      case Msn.VE.MapViewType.Pixel:
        p_this.latlong = a.PixelToLatLong(p_this.center, p_this.zoomLevel);
        break ;
      case Msn.VE.MapViewType.LatLong:
        p_this.center = a.LatLongToPixel(p_this.latlong, p_this.zoomLevel);
        if (p_this.center != null)
          {
            p_this.center.x -= (mapInstance.GetCenterOffset()).x;
            p_this.center.y -= (mapInstance.GetCenterOffset()).y;
          }
        break ;
      case Msn.VE.MapViewType.PixelRect:
        ResolveRectangle(a, d, c);
        break ;
      case Msn.VE.MapViewType.LatLongRect:
        if (p_this.mapStyle == "o")
          {
            p_this.zoomLevel = 1;
            var e = a.GetScene();
            if (! e.ContainsLatLong(p_this.latlongRect.northwest) || ! e.ContainsLatLong(p_this.latlongRect.southeast))
              {
                p_this.latlong = p_this.latlongRect.Center();
                p_this.center = a.LatLongToPixel(p_this.latlong, p_this.zoomLevel);
              }
            else
              {
                p_this.pixelRect.topLeft = a.LatLongToPixel(p_this.latlongRect.northwest, p_this.zoomLevel);
                p_this.pixelRect.bottomRight = a.LatLongToPixel(p_this.latlongRect.southeast, p_this.zoomLevel);
                ResolveRectangle(a, d, c);
              }
          }
        else
          {
            p_this.zoomLevel = 12;
            p_this.altitude = - 1000;
            p_this.pixelRect.topLeft = a.LatLongToPixel(p_this.latlongRect.northwest, p_this.zoomLevel);
            p_this.pixelRect.bottomRight = a.LatLongToPixel(p_this.latlongRect.southeast, p_this.zoomLevel);
            ResolveRectangle(a, d, c);
          }
    }
    if (p_this.cameraLatlong == null)
      if (! p_this._UpdateCamera(a))
        {
          p_this.tilt = - 90;
          p_this.cameraLatlong = p_this.latlong;
        }
    viewType = Msn.VE.MapViewType.Pixel;
    if (b != null && typeof b == "function")
      b();
  }
  function ResolveRectangle(i,k,j)
  {
    var c = 19, a = Math.pow(2, c - p_this.zoomLevel), g = MathMax(1, MathAbs(p_this.pixelRect.topLeft.x - p_this.pixelRect.bottomRight.x) * a), f = MathMax(1, MathAbs(p_this.pixelRect.topLeft.y - p_this.pixelRect.bottomRight.y) * a), d = Math.log(2), e = c - Math.ceil(Math.log(g / k) / d), h = c - Math.ceil(Math.log(f / j) / d), b = MathMin(e, h);
    if (b <= 0)
      b = 1;
    a = Math.pow(2, b - p_this.zoomLevel);
    p_this.center.x = 0.5 * (p_this.pixelRect.topLeft.x + p_this.pixelRect.bottomRight.x) * a - (mapInstance.GetCenterOffset()).x;
    p_this.center.y = 0.5 * (p_this.pixelRect.topLeft.y + p_this.pixelRect.bottomRight.y) * a - (mapInstance.GetCenterOffset()).y;
    p_this.zoomLevel = b;
    p_this.altitude = - 1000;
    p_this.latlong = i.PixelToLatLong(p_this.center, p_this.zoomLevel);
  }
  function _UpdateCamera(viewMode)
  {
    if (p_this.latlong == null)
      if (p_this.center != null && p_this.zoomLevel != null && typeof viewMode._InternalOrthoMode == "function")
        {
          var orthoMode = viewMode._InternalOrthoMode();
          p_this.latlong = orthoMode.PixelToLatLong(p_this.center, p_this.zoomLevel);
          if (p_this.latlong != null)
            {
              p_this.tilt = - 90;
              p_this.direction = 0;
            }
        }
    if (p_this.latlong == null)
      return false;
    p_this._needsPivotOperation = false;
    if (mapInstance.IsModeEnabled(Msn.VE.MapActionMode.Mode3D))
      {
        var control = mapInstance.Get3DControl();
        if (control != null)
          {
            var cam = control.CameraPositionGivenTarget(p_this.latlong.latitude, p_this.latlong.longitude, p_this.altitude, p_this.zoomLevel, p_this.tilt, p_this.direction);
            if (cam != null)
              {
                var lat, lon, alt;
                eval(cam);
                p_this.cameraLatlong = new Msn.VE.LatLong();
                p_this.cameraLatlong.latitude = lat;
                p_this.cameraLatlong.longitude = lon;
                p_this.altitude = alt;
              }
            else
              return false;
          }
      }
    return true;
  }
  this.zoomLevel = 0;
  this.mapStyle = null;
  this.doRoadShading = false;
  this.tilt = - 90;
  this.direction = 0;
  this.altitude = - 1000;
  this.center = new VEPixel();
  this.latlong = new Msn.VE.LatLong();
  this.cameraLatlong = null;
  this.pixelRect = new Msn.VE.PixelRectangle();
  this.latlongRect = new Msn.VE.LatLongRectangle();
  this.sceneId = null;
  this.sceneOrientation = null;
  this.bySceneId = false;
  this.callback = null;
  this._supressFlyToCall = false;
  this._needsPivotOperation = true;
  var mapInstance = map, p_this = this, viewType = Msn.VE.MapViewType.Pixel;
  this.Destroy = (function ()
{
  this.center = this.latlong = p_this = mapInstance = null;
}
);
  this.GetViewType = (function ()
{
  return viewType;
}
);
  this.GetMap = (function ()
{
  return mapInstance;
}
);
  this.SetMap = (function (a)
{
  mapInstance = a;
}
);
  this.MakeCopy = MakeCopy;
  this.Copy = Copy;
  this.Equals = Equals;
  this.ToString = ToString;
  this.SetCenter = SetCenter;
  this.SetCenterLatLong = SetCenterLatLong;
  this.SetCenterLatLongAccurate = SetCenterLatLongAccurate;
  this.SetPixelRectangle = SetPixelRectangle;
  this.SetLatLongRectangle = SetLatLongRectangle;
  this.SetZoomLevel = SetZoomLevel;
  this.SetMapStyle = SetMapStyle;
  this.SetTilt = SetTilt;
  this.SetDirection = SetDirection;
  this.SetAltitude = SetAltitude;
  this.GetTilt = GetTilt;
  this.GetDirection = GetDirection;
  this.GetAltitude = GetAltitude;
  this.ScaleCoord = ScaleCoord;
  this.GetX = GetX;
  this.GetY = GetY;
  this.GetCenter = GetCenter;
  this.Resolve = Resolve;
  this.SetZoomLevel = SetZoomLevel;
  this.GetZoomLevel = GetZoomLevel;
  this.GetLatLongRectangle = GetLatLongRectangle;
  this.GetPixelRectangle = GetPixelRectangle;
  this.GetCenterLatLong = GetCenterLatLong;
  this._UpdateCamera = _UpdateCamera;
}
);
Msn.VE.ViewChangeType = (function ()
{
  }
);
Msn.VE.ViewChangeType.Zoom = 1;
Msn.VE.ViewChangeType.Pan = 2;
Msn.VE.ViewChangeType.Hybrid = 3;
Msn.VE.ViewChangeType.IsValid = (function (a)
{
  return typeof a == "number" && a > 0 && a < 4;
}
);
Msn.VE.ObliqueScene = (function (e,F,A,C,E,J,c,g,t,s)
{
  function z(d,e)
  {
    var c = Math.pow(2, e - 2), f = [[d.x / c], [d.y / c], [1]], a = MatrixMultiply(t, f), b = new Msn.VE.LatLong();
    b.longitude = a[0][0] / a[2][0];
    b.latitude = a[1][0] / a[2][0];
    return b;
  }
  function v(g,l,m)
  {
    if (a != null && typeof a != "undefined" && a.length > 0)
      {
        var i = Math.pow(2, l - 2), h = [];
        for (var f = 0;f < g.length;++f)
          h[f] = parseInt(g[f].x / i) + "," + parseInt(g[f].y / i);
        var j = new VENetwork();
        j.ServiceUrl = a;
        var c = [];
        if (b)
          c.push(new VEParameter(Msn.VE.API.Constants.clienttoken, b));
        if (d)
          c.push(new VEParameter("mapguid", d));
        c.push(new VEParameter("a", "P2L"));
        c.push(new VEParameter("b", h.join(";")));
        c.push(new VEParameter("s", e));
        c.push(new VEParameter("f", "__PixelToLatLongAsyncResponse"));
        var k = (function (b)
{
  var c = null;
  if (b != null && (b.err == null || typeof b.err == "undefined"))
    {
      c = [];
      for (var a = 0;a < b.length;++a)
        if (b[a] != null)
          if (Msn.VE.API != null)
            {
              var e = new VELatLong();
              e._reserved = b[a];
              c[a] = e;
            }
          else
            {
              var d = p.Decode(b[a]);
              c[a] = new Msn.VE.LatLong(d[0], d[1]);
            }
        else
          c[a] = null;
    }
  m(c);
}
);
        j.BeginInvoke("__PixelToLatLongAsyncResponse", c, k, q);
      }
  }
  function i(d,e)
  {
    var c = Math.pow(2, e - 2), f = [[d.longitude], [d.latitude], [1]], a = MatrixMultiply(s, f), b = new VEPixel();
    b.x = a[0][0] / a[2][0] * c;
    b.y = a[1][0] / a[2][0] * c;
    return b;
  }
  function u(i,k,l)
  {
    var g = [];
    for (var f = 0;f < i.length;++f)
      g[f] = p.Encode(i[f].latitude, i[f].longitude);
    var c = [];
    if (Msn.VE.API == null)
      {
        c.push(new VEParameter("a", "L2P"));
        c.push(new VEParameter("b", g.join("")));
        c.push(new VEParameter("s", e));
        c.push(new VEParameter("f", "__LatLongToPixelAsyncResponse"));
      }
    else
      {
        if (b)
          c.push(new VEParameter(Msn.VE.API.Constants.clienttoken, b));
        if (d)
          c.push(new VEParameter("mapguid", d));
        c.push(new VEParameter("locations", "\"" + g.join("") + "\""));
        c.push(new VEParameter("sceneId", e));
        c.push(new VEParameter("encodingLength", 6));
      }
    if (Msn.VE.API != null)
      {
        var j = (function (d)
{
  if (h)
    h.__HandleAuthentication(d);
  var c = null;
  if (d != null && d.Pixels != null)
    {
      var e = Math.pow(2, k - 2);
      c = [];
      var b = d.Pixels;
      for (var a = 0;a < b.length;++a)
        if (b[a] != null && b[a].X != null && typeof b[a].X != "undefined" && b[a].Y != null && typeof b[a].Y != "undefined")
          c[a] = new VEPixel(b[a].X * e, b[a].Y * e);
        else
          c[a] = null;
    }
  l(c);
}
);
        VEAPIRequestInvoke(m, c, j);
      }
    else
      {
        var j = (function (a)
{
  var c = null;
  if (a != null && (a.err == null || typeof a.err == "undefined"))
    {
      var d = Math.pow(2, k - 2);
      c = [];
      for (var b = 0;b < a.length;++b)
        if (a[b] != null && a[b].x != null && typeof a[b].x != "undefined" && a[b].y != null && typeof a[b].y != "undefined")
          c[b] = new VEPixel(a[b].x * d, a[b].y * d);
        else
          c[b] = null;
    }
  l(c);
}
), n = new VENetwork();
        n.ServiceUrl = a;
        n.BeginInvoke("__LatLongToPixelAsyncResponse", c, j, q);
      }
  }
  function B(a,b,d)
  {
    if (a < 0 || b < 0)
      return false;
    if (d == 1)
      return a < c / 2 && b < g / 2;
    return a < c && b < g;
  }
  function H()
  {
    return e;
  }
  function x(e,g,a)
  {
    var b = g * (a == 1 ? c / 2 : c) + e, d = Msn.VE.API ? Msn.VE.API.Constants.obliquetileserver + f : "%0t%3.tiles.virtualearth.net/tiles/o%4-%5-%6-%7.jpeg?g=%8";
    return d.replace(/%3/g, b % 4).replace(/%4/g, F).replace(/%5/g, A).replace(/%6/g, E + a - 2).replace(/%7/g, b).replace(/%8/g, k);
  }
  function r()
  {
    var a = Msn.VE.API ? Msn.VE.API.Constants.obliquethumbnailtileserver + f : "%0t%1.tiles.virtualearth.net/tiles/ot%2.jpeg?g=%3";
    return a.replace(/%1/g, e % 4).replace(/%2/g, e).replace(/%3/g, k);
  }
  function y()
  {
    return C;
  }
  function D()
  {
    return G;
  }
  function n()
  {
    return c * o;
  }
  function l()
  {
    return g * o;
  }
  function w(a)
  {
    if (! a)
      return false;
    var b = i(a, 2);
    return j(b, 2);
  }
  function j(b,e)
  {
    var a = Math.pow(2, 2 - e), c = b.x * a, d = b.y * a;
    return c >= 0 && d >= 0 && c < n() && d < l();
  }
  var b = null, f = "", d = null, h = null, k = "117", a = null, I = null, m = null;
  if (Msn.VE.API == null)
    a = "%0dev.virtualearth.net/legacyService/ElevatedLoc.ashx";
  else
    {
      m = Msn.VE.API.Constants.imageryurl + "/ConvertLatLongToPixelInBirdsEye";
      a = "%0dev.virtualearth.net/legacyService/ElevatedLoc.ashx";
    }
  var p = new _xz1(), o = 256, q = this, G = new Msn.VE.Bounds(1, 2, 0, 0, c / 2, g / 2);
  this.SetClientToken = (function (a)
{
  b = a;
  if (f)
    f = "&" + Msn.VE.API.Constants.clienttoken + "=" + b;
  else
    f = "";
}
);
  this.SetGUID = (function (a)
{
  d = a;
  if (typeof VEMap != "undefined")
    h = VEMap._GetMapFromGUID(d);
}
);
  this.PixelToLatLong = z;
  this.PixelToLatLongAsync = v;
  this.LatLongToPixel = i;
  this.LatLongToPixelAsync = u;
  this.IsValidTile = B;
  this.GetID = H;
  this.GetTileFilename = x;
  this.GetThumbnailFilename = r;
  this.GetOrientation = y;
  this.GetBounds = D;
  this.GetWidth = n;
  this.GetHeight = l;
  this.ContainsLatLong = w;
  this.ContainsPixel = j;
}
);
Msn.VE.Orientation = new (function ()
{
  this.North = "North";
  this.East = "East";
  this.West = "West";
  this.South = "South";
}
)();
VEPixel = (function (a,b)
{
  this.x = parseFloat(a);
  this.y = parseFloat(b);
}
);
VEPixel.prototype.ToString = (function ()
{
  return "(" + this.x + ", " + this.y + ")";
}
);
VEPixel.prototype.Copy = (function (a)
{
  if (! a)
    return ;
  this.x = a.x;
  this.y = a.y;
}
);
Msn.VE.PixelRectangle = (function (b,a)
{
  this.topLeft = b;
  this.bottomRight = a;
  this.ToString = (function ()
{
  return "(" + (this.topLeft ? this.topLeft.ToString() : "null") + ", " + (this.bottomRight ? this.bottomRight.ToString() : "null") + ")";
}
);
  this.Copy = (function (a)
{
  if (! a)
    return ;
  if (! this.topLeft)
    this.topLeft = new VEPixel();
  if (! this.bottomRight)
    this.bottomRight = new VEPixel();
  this.topLeft.Copy(a.topLeft);
  this.bottomRight.Copy(a.bottomRight);
}
);
  this.Contains = (function (a)
{
  if (a  instanceof  VEPixel)
    return a.x > this.topLeft.x && a.y > this.topLeft.y && a.x < this.bottomRight.x && a.y < this.bottomRight.y;
}
);
}
);
Msn.VE.LineRegion = (function (b,a,c)
{
  function d()
  {
    return "Bounding Rectangle: " + this.boundingRectangle[0].ToString() + " to " + this.boundingRectangle[1].ToString() + " | Indices: [" + a + "]";
  }
  this.boundingRectangle = b;
  this.indices = a;
  this.childRegions = c;
  this.ToString = d;
}
);
var L_integerencodingoutofrange_text = "VEIntegerEncoding: The number encoded is out of supported range", L_floatintegermapencodingoutofrange_text = "VEFloatIntegerMap: The number encoded is out of supported range", L_integerencodinginvalidstringlength_text = "VEIntegerEncoding: Invalid string length", L_integerencodingunknowndigit_text = "VEIntegerEncoding: The encoded string has an unknown digit";
var L_velatlongencodinginvalidstringlength_text = "_xz1: Invalid string length";
var Shims = ["help", "msve_ScratchPad", "VE_MessageControl", "contextMenu", "MSVE_dashboardId"], vedomain = "http://dev.virtualearth.net/mapcontrol/v6", sceneParam = "Yes";
var UseClipToSize = window.navigator.userAgent.indexOf("Firefox") >= 0;
var __shapeIdBeingDragged = null;
VE_ModelActionType = {CreateModel : "CreateModel", AddModel : "AssociateModel", DeleteModel : "DissociateModel", MoveModel : "MoveModel", RotateModel : "RotateModel", ElevateModel : "ElevateModel", EditModel : "EditModel"};
VE_ModelWhereType = {Scratchpad : "scratchpad", Taskbar : "taskbar", ContextMenu : "contextmenu", CV : "cv"};
Msn.VE.FFSentinel = (function (a)
{
  this.CurrentVersion = a;
}
);
var _VEHtmlToImgUrlHash = [];
VE_3DPlugin = {MovieRecorderGuid : "791BC97B-7526-4C74-85DB-8CC220E3A65E", PhotoGuid : "B1FC67C1-F8CE-4CA5-A957-B5FF2215037B", PhotoManifest : GetManifestUrl("http://go.microsoft.com/fwlink/?LinkID=99342"), PhotoUrl : "http://go.microsoft.com/fwlink/?LinkID=98905", GeoCommunityGuid : "49D0BC0C-67A7-44CD-93BA-C7CF6F20EAB9", GeoCommunityManifest : GetManifestUrl("http://go.microsoft.com/fwlink/?LinkID=99343"), GeoCommunityUrl : "http://go.microsoft.com/fwlink/?LinkID=98904"};
var VE_3DPhotoPluginObj = 0, VE_3DGeoCommunityPluginObj = 0, PluginEventRegistered = 0, PhotoPluginEventRegistered = 0, GeoCommunityPluginEventRegistered = 0;
var __vemapcontrolisReady = true;
if (! window.__DEP_COL_HASH)
    var CompatVersion = "";
if (typeof VEAPI_DisableAtlasCompat == "undefined" || ! VEAPI_DisableAtlasCompat)
    _VERegisterNamespaces("Web.Browser", "Web.Debug.Performance");
if (! Web.Debug.Enabled)
    Web.Browser.isSafari = (function ()
{
  return navigator.userAgent.indexOf("KHTML") !== - 1;
}
);
Web.Browser.AttachSafariCompatibility = (function (e)
{
  function a(a)
  {
    window.event = a;
  }
  function d(c,d,e)
  {
    var b = d.slice(2);
    if (b !== "mouseenter" && b !== "mouseleave")
      c.addEventListener(b, a, true);
    else
      {
        c.addEventListener("mouseover", a, true);
        c.addEventListener("mouseout", a, true);
      }
    c.addEventListener(b, e, false);
  }
  function c(d,b,c)
  {
    var a = b.slice(2);
    if (b === "mousewheel")
      a = "DOMMouseScroll";
    d.removeEventListener(a, c, false);
  }
  function b(b)
  {
    var a, c = "";
    for (a in b)
      c += a + " = " + b[a] + "\n";
    return c;
  }
  e.CollectGarbage = (function ()
{
  }
);
  Web.Browser.Button = {LEFT : 0, RIGHT : 2, MIDDLE : 1};
  Object.prototype.attachEvent = (function (a,b)
{
  if (a === "onmousewheel")
    a = "onmousewheel";
  if (a === "onclick")
    a = "onmouseup";
  d(this, a, b);
}
);
  Object.prototype.detachEvent = (function (a,b)
{
  if (a === "onclick")
    a = "onmouseup";
  c(this, a, b);
}
);
  Object.prototype.isPrototypeOf = (function (a)
{
  var c = b(a.constructor), d = b(this.constructor);
  return c === d;
}
);
}
);
if (Web.Browser.isSafari())
    var windowWidth = 0, windowHeight = 0, scrollbarWidth = null;
_VERegisterNamespaces("Msn.VE.API.Globals");
_VERegisterNamespaces("Msn.VE.API.Constants");
Msn.VE.API.Globals.vemapinstances = null;
Msn.VE.API.Globals.veonbegininvokeevent = null;
Msn.VE.API.Globals.veonendinvokeevent = null;
Msn.VE.API.Globals.vefindresultsnpanel = null;
Msn.VE.API.Globals.language = "en";
Msn.VE.API.Globals.locale = "en-us";
Msn.VE.API.Globals.vecurrentversion = "1.0.20070926140324.39";
Msn.VE.API.Globals.ishttpsenabled = false;
Msn.VE.API.Globals.protocol = Msn.VE.API.Globals.ishttpsenabled ? "https://" : "http://";
Msn.VE.API.Globals.vecurrentdomain = "http://dev.virtualearth.net/mapcontrol/v6";
Msn.VE.API.Globals.veanalyticsenabled = "__analyticsenabled__";
Msn.VE.API.Globals.veomnitureaccount = "__omnitureaccount__";
Msn.VE.API.Globals.vedebug = false;
Msn.VE.API.Globals.analyticsInitialized = false;
var VE_MapDispatch_SymbolLib = null;
Msn.VE.API.Constants.orthotileserver = "%0t%2.tiles.virtualearth.net/tiles/%3%4.%5?g=%6".replace(/%0/g, Msn.VE.API.Globals.protocol);
Msn.VE.API.Constants.obliquetileserver = "%0t%3.tiles.virtualearth.net/tiles/o%4-%5-%6-%7.jpeg?g=%8".replace(/%0/g, Msn.VE.API.Globals.protocol);
Msn.VE.API.Constants.obliquethumbnailtileserver = "%0t%1.tiles.virtualearth.net/tiles/ot%2.jpeg?g=%3".replace(/%0/g, Msn.VE.API.Globals.protocol);
Msn.VE.API.Constants.shadedtileserver = "%0t%2.tiles.virtualearth.net/tiles/%3%4.%5?g=%6&shading=hill".replace(/%0/g, Msn.VE.API.Globals.protocol);
Msn.VE.API.Constants.traffictileserver = "%0t%2.tiles.virtualearth.net/tiles/t%4".replace(/%0/g, Msn.VE.API.Globals.protocol);
Msn.VE.API.Constants.imageryurl = "%0dev.virtualearth.net/services/v1/ImageryMetadataService/ImageryMetadataService.asmx".replace(/%0/g, Msn.VE.API.Globals.protocol);
Msn.VE.API.Constants.collectionservice = "%0maps.live.com/GeoCommunity.aspx".replace(/%0/g, Msn.VE.API.Globals.protocol);
Msn.VE.API.Constants.searchservice = "%0dev.virtualearth.net/legacyService/search.ashx".replace(/%0/g, Msn.VE.API.Globals.protocol);
Msn.VE.API.Constants.legacyrouteservice = "%0dev.virtualearth.net/legacyService/directions.ashx".replace(/%0/g, Msn.VE.API.Globals.protocol);
Msn.VE.API.Constants.routeservice = "%0dev.virtualearth.net/services/v1/RouteService/RouteService.asmx".replace(/%0/g, Msn.VE.API.Globals.protocol);
Msn.VE.API.Constants.obliquecalcservice = "%0dev.virtualearth.net/legacyService/ElevatedLoc.ashx".replace(/%0/g, Msn.VE.API.Globals.protocol);
Msn.VE.API.Constants.geocodingservice = "%0dev.virtualearth.net/services/v1/geocodeservice/geocodeservice.asmx".replace(/%0/g, Msn.VE.API.Globals.protocol);
Msn.VE.API.Constants.iconurl = Msn.VE.API.Globals.vecurrentdomain + "/i/bin/" + Msn.VE.API.Globals.vecurrentversion + "/pins/poi_usergenerated.gif";
Msn.VE.API.Constants.atlascompatjs = Msn.VE.API.Globals.vecurrentdomain + "/js/atlascompat.js";
Msn.VE.API.Constants.stylesheet = Msn.VE.API.Globals.vecurrentdomain + "/css/bin/" + Msn.VE.API.Globals.vecurrentversion + "/" + Msn.VE.API.Globals.language + "/mapcontrol.css";
Msn.VE.API.Constants.stylesheetiev6 = Msn.VE.API.Globals.vecurrentdomain + "/css/bin/" + Msn.VE.API.Globals.vecurrentversion + "/" + Msn.VE.API.Globals.language + "/mapcontroliev6.css";
Msn.VE.API.Constants.vedirectionsstarticon = Msn.VE.API.Globals.vecurrentdomain + "/i/bin/" + Msn.VE.API.Globals.vecurrentversion + "/pins/mapicon_start.gif";
Msn.VE.API.Constants.vedirectionsendicon = Msn.VE.API.Globals.vecurrentdomain + "/i/bin/" + Msn.VE.API.Globals.vecurrentversion + "/pins/mapicon_end.gif";
Msn.VE.API.Constants.vedirectionsstepicon = Msn.VE.API.Globals.vecurrentdomain + "/i/bin/" + Msn.VE.API.Globals.vecurrentversion + "/pins/RedCircle%1.gif";
Msn.VE.API.Constants.trafficiconurl = Msn.VE.API.Globals.vecurrentdomain + "/i/bin/" + Msn.VE.API.Globals.vecurrentversion + "/Traffic/Traffic%1.gif";
Msn.VE.API.Constants.spacerurl = Msn.VE.API.Globals.vecurrentdomain + "/i/bin/" + Msn.VE.API.Globals.vecurrentversion + "/spacer.gif";
Msn.VE.API.Constants.mapguid = "mapguid";
Msn.VE.API.Constants.rim = "rim";
Msn.VE.API.Constants.rimargs = "rimargs";
Msn.VE.API.Constants.contextid = "contextid";
Msn.VE.API.Constants.clienttoken = "token";
Msn.VE.API.Constants.market = "mkt";
Msn.VE.API.Constants.culture = "culture";
Msn.VE.API.Constants.format = "format";
Msn.VE.API.Constants.json = "json";
Msn.VE.API.Constants.requestid = "rid";
Msn.VE.API.Globals.vemapmode = Msn.VE.MapActionMode.Mode2D;
Msn.VE.API.Globals.vemapheight = 400;
Msn.VE.API.Globals.vemapwidth = 600;
Msn.VE.API.Globals.vemapzoom = 4;
Msn.VE.API.Globals.vemaplatitude = 43.75;
Msn.VE.API.Globals.vemaplongitude = - 99.71;
Msn.VE.API.Globals.vemapstyle = "r";
Msn.VE.API.Globals.vemaxzoom = 26;
Msn.VE.API.Globals.vetilesize = 256;
Msn.VE.API.Globals.vepushpinpanelzIndex = 999;
Msn.VE.API.Globals.veshapeiconzindex = 1000;
Msn.VE.API.Globals.veshapepolyshapezindex = 50;
Msn.VE.API.Globals.vetilelayerdefaultzindex = 2;
Msn.VE.API.Globals.vemessagepanelheight = 75;
Msn.VE.API.Globals.vemessagepanelzIndex = 99;
Msn.VE.API.Globals.veplacelistpanelheight = 200;
Msn.VE.API.Globals.veplacelistpanelwidth = 350;
Msn.VE.API.Globals.veplacelistpanelzIndex = 300;
Msn.VE.API.Globals.vefindresultsnpanelwidth = 200;
Msn.VE.API.Globals.vefindresultsnpanelzIndex = 99;
Msn.VE.API.Globals.vefindresultsnpanelcolor = "blue";
Msn.VE.API.Globals.veiscommercialcontrol = false;
Msn.VE.API.Globals.veobliqueMode = null;
Msn.VE.API.Constants.maxasynlatlongs = 50;
Msn.VE.API.Globals.vefindnumresultsdefault = 10;
Msn.VE.API.Globals.vefindnumresultsmin = 1;
Msn.VE.API.Globals.vefindnumresultsmax = 20;
Msn.VE.API.Globals.Dispose = (function ()
{
  Msn.VE.API.Globals.veonbegininvokeevent = null;
  Msn.VE.API.Globals.veonendinvokeevent = null;
  Msn.VE.API.Globals.vefindresultsnpanel = null;
}
);
Msn.VE.API.Globals.PosX = (function (a)
{
  var b = 0;
  if (! a)
    var a = window.event;
  if (a.pageX)
    b = a.pageX;
  else
    if (a.clientX)
      b = a.clientX + document.body.scrollLeft;
  return b;
}
);
Msn.VE.API.Globals.PosY = (function (a)
{
  var b = 0;
  if (! a)
    var a = window.event;
  if (a.pageY)
    b = a.pageY;
  else
    if (a.clientY)
      b = a.clientY + document.body.scrollTop;
  return b;
}
);
_VERegisterNamespaces("Msn.VE.Constants.Css");
var MSVE_header = (document.getElementsByTagName("body"))[0], VE_ContextMenu = null;
s_account = Msn.VE.API.Globals.veomnitureaccount;
var Gimme = {};
(function ()
{
  function c()
  {
    this.id = null;
    this.tag = null;
    this.classes = [];
    this.attributes = [];
    this.pseudos = [];
    this.isEmpty = true;
  }
  function o(j)
  {
    var a = 0, e = [".#[:", ".[:", ".#[:", "]", ".#[:"], k = " >~+", b = "", d = e[a], h = [], f = new c(), g, i, l = j.length;
    for (i = 0;i < l;i++)
      {
        g = j.charAt(i);
        if (d.indexOf(g) !== - 1)
          {
            if (b !== "")
              {
                f.addPart(b, a);
                b = "";
              }
            switch (g)
            {
              case "#":
                d = e[(a = 1)];
                continue ;
              case ".":
                d = e[(a = 2)];
                continue ;
              case "[":
                d = e[(a = 3)];
                continue ;
              case "]":
                d = e[(a = 0)];
                continue ;
              case ":":
                d = e[(a = 4)];
                continue ;
            }
          }
        else
          if (a !== 3 && k.indexOf(g) !== - 1)
            {
              h.push(f.addPart(b, a));
              h.push(g);
              b = "";
              f = new c();
              d = e[(a = 0)];
            }
          else
            b += g;
      }
    if (b !== "")
      f.addPart(b, a);
    if (! f.isEmpty)
      h.push(f);
    return h;
  }
  function p(c,n)
  {
    var o = n || document, l = c.id, b = c.tag, i = c.classes, h = c.attributes, j = c.pseudos, f, e = [], g, d, k;
    if (l)
      {
        f = $ID(l);
        return a(f, null, b, i, h, j) ? [f] : [];
      }
    else
      {
        b = b || "*";
        g = o.getElementsByTagName(b);
        k = g.length;
        for (d = 0;d < k;d++)
          e[d] = g[d];
        m(e, b === "*" ? null : b, i, h, j);
        return e;
      }
  }
  function m(c,j,g,e,h)
  {
    var a, b = 0, k = c.length;
    while (b < k)
      {
        a = c[b];
        if (e.length > 0 && ! f(a, e) || j & a.tagName !== j || g.length > 0 && ! d(a, g) || h.length > 0 && ! i(a, h))
          {
            c.splice(b, 1);
            k--;
          }
        else
          b++;
      }
  }
  function a(a,h,g,c,b,e)
  {
    if (! a)
      return false;
    if (g && g !== a.tagName)
      return false;
    if (h && a.id !== h)
      return false;
    if (b.length > 0 && ! f(a, b))
      return false;
    if (c.length > 0 && ! d(a, c))
      return false;
    if (e.length > 0 && ! i(a, e))
      return false;
    return true;
  }
  function d(d,c)
  {
    var a = d.className;
    if (typeof a !== "string")
      a = d.getAttribute("class");
    if (! a)
      return false;
    var e = a.split(" "), b, f = c.length;
    for (b = 0;b < f;b++)
      if (! k(e, c[b]))
        return false;
    return true;
  }
  function f(k,h)
  {
    var c = false, f, l = h.length, d, j, b, i, a, g;
    for (f = 0;f < l;f++)
      {
        d = h[f];
        j = d.name;
        b = d.val;
        i = d.delim;
        a = e(k, j);
        if (! a)
          continue ;
        switch (i)
        {
          case "=":
            c = a === b;
            break ;
          case "^=":
            c = a.indexOf(b) === 0;
            break ;
          case "$=":
            g = a.lastIndexOf(b);
            c = g !== - 1 && g + b.length === a.length;
            break ;
          case "*=":
            c = a.indexOf(b) !== - 1;
            break ;
          case "|=":
            c = a === b || a.indexOf(b + "-") === 0;
            break ;
          case "!=":
            c = a !== b;
            break ;
          case null:
          default:
            c = a !== null;
        }
        if (! c)
          break ;
      }
    return c;
  }
  function e(a,b)
  {
    if (typeof a.getAttribute === "unknown")
      return a.attributes && a.attributes[b] ? a.attributes[b].nodeValue : "";
    return a.getAttribute(b, 2) || (a.attributes && a.attributes[b] ? a.attributes[b].nodeValue : a.getAttribute(b));
  }
  function n(d)
  {
    var e = /\=|\^=|\$=|\*=|\|=|!=/, a = d.match(e);
    a = a && a[0];
    var c = d.split(a), f = c[0] && b(c[0].replace(/[\[\]"]/g, "")), g = c[1] && b(c[1].replace(/[\[\]"]/g, ""));
    return {name : f, delim : a, val : g};
  }
  function i(h,i)
  {
    var j, e, g, c, d, b = false, f, a, k = i.length;
    for (f = 0;f < k;f++)
      {
        j = h.parentNode;
        e = j.childNodes;
        g = e.length;
        switch (i[f])
        {
          case "first-child":
            for (a = 0;a < g;a++)
              {
                c = e[a];
                if (c.nodeType === 1)
                  break ;
              }
            if (c.nodeType !== 1)
              b = false;
            else
              b = c === h;
            break ;
          case "last-child":
            for (a = g - 1;a >= 0;a--)
              {
                d = e[a];
                if (d.nodeType === 1)
                  break ;
              }
            if (d.nodeType !== 1)
              b = false;
            else
              b = d === h;
            break ;
          default:
            b = false;
        }
        if (! b)
          break ;
      }
    return b;
  }
  function h(c,b)
  {
    if (b === 0)
      return c;
    var e = b > 0 ? "nextSibling" : "previousSibling", a = c, f = Math.abs(b), d = 0;
    while (d < f)
      {
        a = a[e];
        if (! a)
          break ;
        if (a.nodeType === 1)
          d++;
      }
    return a;
  }
  function b(a)
  {
    return a.replace(/^\s+|\s+$/g, "");
  }
  function j(a)
  {
    return b(a).replace(/\s{2,}/g, " ");
  }
  Gimme.id = (function (a)
{
  return $ID(a);
}
);
  Gimme.query = (function (e,z,w)
{
  if (! e)
    return [];
  if (e  instanceof  Array)
    return e;
  if (typeof e !== "string")
    return [e];
  var B = [];
  e = j(e).replace(/\s*(\+|>|~|,)\s*/g, "$1");
  var i = o(e), v = i.length, m = p(i[(v - 1)], z);
  passed = true;
  var C, u, s, c, l, r, k, d, q = 0, f = 0, t = 0, x = m.length;
  while (q < x)
    {
      t = 0;
      u = true;
      d = c = s = m[q];
      a:
      for (f = v - 3;f >= 0;f -= 2)
        {
          var y = i[(f + 1)], b = i[f];
          switch (y)
          {
            case " ":
              d = d.parentNode;
              while (d && d !== document)
                {
                  if (a(d, b.id, b.tag, b.classes, b.attributes, b.pseudos))
                    {
                      c = d;
                      continue a;
                    }
                  d = d.parentNode;
                }
              passed = false;
              break a;
            case ">":
              while (k !== document)
                {
                  k = c.parentNode;
                  if (a(k, b.id, b.tag, b.classes, b.attributes, b.pseudos))
                    {
                      c = k;
                      continue a;
                    }
                  else
                    if (i[(f + 3)] !== " ")
                      break ;
                  c = k;
                }
              passed = false;
              break a;
            case "+":
              l = h(c, - 1);
              if (l)
                if (a(l, b.id, b.tag, b.classes, b.attributes, b.pseudos))
                  {
                    c = l;
                    continue a;
                  }
              passed = false;
              break a;
            case "~":
              r = c.parentNode.childNodes;
              var A = r.length;
              while (t < A)
                {
                  var n = r[(t++)];
                  if (n.nodeType === 3)
                    continue ;
                  if (n === s)
                    {
                      u = false;
                      break ;
                    }
                  if (a(n, b.id, b.tag, b.classes, b.attributes, b.pseudos))
                    {
                      c = n;
                      continue a;
                    }
                }
              passed = false;
              break a;
          }
        }
      if (! passed)
        {
          m.splice(q, 1);
          x--;
        }
      else
        {
          if (typeof w === "function")
            w(g(s));
          q++;
        }
      passed = true;
    }
  _gimmeCallback = null;
  return m;
}
);
  c.prototype.addPart = (function (a,b)
{
  this.isEmpty = false;
  switch (b)
  {
    case 0:
      this.tag = a.toUpperCase();
      break ;
    case 1:
      this.id = a;
      break ;
    case 2:
      this.classes.push(a);
      break ;
    case 3:
      this.attributes.push(n(a));
      break ;
    case 4:
      this.pseudos.push(a);
  }
  return this;
}
);
  var l = (function ()
{
  function b(b,a)
  {
    return b.indexOf(a);
  }
  function a(b,c)
  {
    var a, d = b.length;
    for (a = 0;a < d;a++)
      if (b[a] === c)
        return a;
    return - 1;
  }
  return typeof Array.prototype.indexOf !== "undefined" ? b : a;
}
)(), k = (function ()
{
  function b(b,a)
  {
    return b.contains(a);
  }
  function a(b,a)
  {
    return l(b, a) !== - 1;
  }
  return typeof Array.prototype.contains !== "undefined" ? b : a;
}
)();
  Gimme.helper = {indexOf : l, contains : k, trim : b, normalize : j, hasClass : d, readAttribute : e, getSibling : h};
}
)();
Gimme.object = (function (a)
{
  this.entities = a;
  this.length = this.entities.length;
}
);
Gimme.ext = Gimme.object.prototype;
(function ()
{
  function d(a)
  {
    if (typeof a.guid === "undefined")
      a.guid = j++;
    return a.guid;
  }
  function e(a)
  {
    return a === window ? "theWindow" : a === document ? "theDocument" : a.uniqueID;
  }
  function i(c,a,b)
  {
    if (c === a)
      return false;
    var d = 0;
    while (a && a != c)
      {
        d++;
        a = a.parentNode;
      }
    b = b || d;
    return a === c && b === d;
  }
  function c(c)
  {
    var e = d(c), b = a[e];
    if (typeof b === "undefined")
      b = a[e] = (function (b)
{
  var a = b.relatedTarget;
  if (this === a || i(this, a))
    return ;
  c.call(this, b);
}
);
    return b;
  }
  function h(c,b)
  {
    if (/px$/.test(c))
      return parseInt(c, 10);
    if (! b)
      b = document.body;
    var a = document.createElement("div");
    a.style.visbility = "hidden";
    a.style.position = "absolute";
    a.style.lineHeight = "0";
    if (/%$/.test(c) || b.tagName === "IMG")
      {
        b = b.parentNode || b;
        a.style.height = c;
      }
    else
      {
        a.style.borderStyle = "solid";
        a.style.borderBottomWidth = "0";
        a.style.borderTopWidth = c;
      }
    b.appendChild(a);
    var d = a.offsetHeight;
    b.removeChild(a);
    return d || 0;
  }
  var b = Gimme.helper, o = b.contains, q = b.indexOf, n = b.normalize, f = b.hasClass, p = b.readAttribute, l = b.getSibling;
  Gimme.ext.element = (function (a)
{
  return this.entities[(a || 0)];
}
);
  Gimme.ext.parent = (function (a)
{
  return this.entities[(a || 0)].parentNode;
}
);
  Gimme.ext.addClass = (function (b)
{
  var a = b.split(/\s+/);
  this.forEach((function (b)
{
  g(a).forEach((function (a)
{
  if (! f(b, [a]))
    if (b.className === "")
      b.className = a;
    else
      b.className += " " + a;
}
));
}
));
  return this;
}
);
  Gimme.ext.removeClass = (function (a)
{
  return this.swapClass(a, "$1");
}
);
  Gimme.ext.swapClass = (function (b,a)
{
  if (a !== "$1")
    a = " " + a + " ";
  var c = b.split(/\s+/);
  this.forEach((function (d)
{
  var b = d.className;
  g(c).forEach((function (c)
{
  var d = new RegExp("(^| )" + c + "( |$)");
  b = b.replace(d, a);
}
));
  d.className = n(b);
}
));
  return this;
}
);
  Gimme.ext.hasClass = (function (a,b)
{
  return f(this.entities[(b || 0)], [a]);
}
);
  Gimme.ext.getAncestor = (function (b,d)
{
  var a = this.entities[(d || 0)], c = b;
  while (c-- > 0)
    if (a)
      a = a.parentNode;
    else
      break ;
  return a;
}
);
  Gimme.ext.getSibling = (function (a,b)
{
  return l(this.entities[(b || 0)], a);
}
);
  Gimme.ext.select = (function (a)
{
  return new Gimme.object(Gimme.query(a, this.entities[0]));
}
);
  Gimme.ext.setHTML = (function (a)
{
  this.forEach((function (b)
{
  b.innerHTML = a;
}
));
  return this;
}
);
  Gimme.ext.getHTML = (function (a)
{
  return this.entities[(a || 0)].innerHTML;
}
);
  Gimme.ext.setValue = (function (a)
{
  this.forEach((function (b)
{
  if (typeof b.value !== "undefined")
    b.value = a;
}
));
  return this;
}
);
  Gimme.ext.getValue = (function (a)
{
  return this.entities[(a || 0)].value || "";
}
);
  Gimme.ext.readAttribute = (function (a,b)
{
  return p(this.entities[(b || 0)], a);
}
);
  Gimme.ext.writeAttribute = (function (a,b)
{
  this.forEach((function (c)
{
  c.setAttribute(a, b);
}
));
  return this;
}
);
  Gimme.ext.filter = (function (d)
{
  var b = this.entities, a = 0, c = b.length;
  while (a < c)
    if (! d(b[a]))
      {
        b.splice(a, 1);
        c--;
      }
    else
      a++;
  return this;
}
);
  Gimme.ext.iterate = (function (b)
{
  var c = this.entities, a, e = c.length;
  for (a = 0;a < e;a++)
    {
      var d = g(c[a]);
      b.call(d, a);
    }
  b = null;
  return this;
}
);
  Gimme.ext.getStyle = (function (a,n,e)
{
  var b = this.entities[(n || 0)];
  if (a === "opacity")
    {
      var d = k(b);
      if (isNaN(d))
        a = d;
      else
        return d;
    }
  if (e !== false)
    e = true;
  var c = "";
  if (typeof document.defaultView !== "undefined" && typeof document.defaultView.getComputedStyle !== "undefined")
    c = document.defaultView.getComputedStyle(b, null);
  else
    if (typeof b.currentStyle !== "undefined")
      {
        c = b.currentStyle;
        var g = c[a];
        if (g === "auto")
          {
            if (a === "height")
              return (b.clientHeight || b.offsetHeight) + "px";
            if (a === "width")
              return (b.clientWidth || b.offsetWidth) + "px";
            if (a === "top")
              return b.offsetTop + "px";
            else
              if (a === "left")
                return b.offsetLeft + "px";
              else
                if (e && (a === "right" || a === "bottom"))
                  {
                    var f = {bottom : ["top", "Height"], right : ["left", "Width"]}, l = parseInt(this.getComputedStyle(b, f[a][0], false), 10);
                    return b.parentNode[("client" + f[a][1])] - b[("offset" + f[a][1])] - l + "px";
                  }
                else
                  return "0px";
          }
        var m = /(em|ex|%|in|cm|mm|pt|pc|small|medium|large|thin|thick)$/, j = /border(.*)Width/i, i = j.test(a) ? a.replace(j, "border$1Style") : null;
        if (m.test(g))
          if (i !== null && c[i] === "none")
            return "0px";
          else
            return h(g, b);
      }
  return c[a];
}
);
  Gimme.ext.setStyle = (function (a,b)
{
  this.forEach((function (c)
{
  if (a === "opacity")
    m(c, b);
  else
    c.style[a] = b;
}
));
  return this;
}
);
  Gimme.ext.addEvent = (function (b,f,g)
{
  this.forEach((function (h)
{
  if (typeof h.addEventListener !== "undefined")
    if (b === "mouseenter")
      h.addEventListener("mouseover", c(f), g);
    else
      if (b === "mouseleave")
        h.addEventListener("mouseout", c(f), g);
      else
        h.addEventListener(b, f, g);
  else
    if (typeof h.attachEvent !== "undefined")
      {
        var j = "{" + e(h) + "/" + b + "/" + d(f) + "}", i = a[j];
        if (typeof i !== "undefined")
          return ;
        i = (function (a)
{
  a.target = a.srcElement;
  if (b == "mouseover")
    a.relatedTarget = a.fromElement;
  else
    if (b == "mouseout")
      a.relatedTarget = a.toElement;
  a.preventDefault = (function ()
{
  a.returnValue = false;
}
);
  a.stopPropagation = (function ()
{
  a.cancelBubble = true;
}
);
  f.call(h, a);
  a.target = null;
  a.relatedTarget = null;
  a.preventDefault = null;
  a.stopPropagation = null;
  a = null;
}
);
        a[j] = i;
        h.attachEvent("on" + b, i);
        window.attachEvent("onunload", (function ()
{
  h.detachEvent("on" + b, i);
  window.detachEvent("onunload", arguments.callee);
}
));
        j = null;
      }
}
));
  return this;
}
);
  Gimme.ext.removeEvent = (function (b,f,g)
{
  this.forEach((function (h)
{
  if (typeof h.removeEventListener !== "undefined")
    if (b === "mouseenter")
      h.removeEventListener("mouseover", c(f), g);
    else
      if (b === "mouseleave")
        h.removeEventListener("mouseout", c(f), g);
      else
        h.removeEventListener(b, f, g);
  else
    if (typeof h.detachEvent !== "undefined")
      {
        var i = "{" + e(h) + "/" + b + "/" + d(f) + "}", j = a[i];
        if (typeof j !== "undefined")
          {
            h.detachEvent("on" + b, j);
            delete a[i];
          }
        i = null;
        j = null;
      }
}
));
  return this;
}
);
  Gimme.ext.forEach = (function ()
{
  function b(b,a)
  {
    this.entities.forEach(b, a);
    return this;
  }
  function a(e,d)
  {
    var b = this.entities, a, c, f = b.length;
    for (a = 0;a < f;a++)
      {
        c = b[a];
        e.call(d, c, a, b);
      }
    return this;
  }
  return typeof Array.prototype.forEach !== "undefined" ? b : a;
}
)();
  Gimme.ext.map = (function ()
{
  function b(b,a)
  {
    return this.entities.map(b, a);
  }
  function a(c,b)
  {
    var a = [];
    this.forEach((function (d)
{
  a.push(c.call(b, d));
}
));
    return a;
  }
  return typeof Array.prototype.map !== "undefined" ? b : a;
}
)();
  Gimme.ext.contains = (function (a)
{
  return o(this.entities, a);
}
);
  Gimme.ext.indexOf = (function (a)
{
  return q(this.entities, a);
}
);
  var j = 0, a = {}, m = (function ()
{
  function c(a,b)
  {
    a.style.opacity = b;
  }
  function d(a,b)
  {
    a.style.filter = "alpha(opacity=" + b * 100 + ")";
  }
  var a, b = document.createElement("div");
  if (typeof b.style.opacity !== "undefined")
    a = c;
  else
    if (typeof b.style.filter !== "undefined")
      a = d;
    else
      a = (function ()
{
  }
);
  b = null;
  return a;
}
)(), k = (function ()
{
  function c(a)
  {
    return parseFloat(a.style.opacity) || "opacity";
  }
  function d(c)
  {
    var b = c.currentStyle.filter, a = b.match(/pacity\s*=\s*(\d{1,3}.?\d*)\)/);
    if (! a)
      return 1;
    else
      return parseFloat(a[1]) / 100;
  }
  var a, b = document.createElement("div");
  if (typeof b.style.opacity !== "undefined")
    a = c;
  else
    if (typeof b.style.filter !== "undefined")
      a = d;
    else
      a = (function ()
{
  }
);
  b = null;
  return a;
}
)();
}
)();
Gimme.Screen = new (function ()
{
  this.getViewportSize = (function ()
{
  var a = {width : 0, height : 0};
  if (typeof window.innerWidth !== "undefined")
    a = {width : window.innerWidth, height : window.innerHeight};
  else
    if (typeof document.documentElement !== "undefined" && typeof document.documentElement.clientWidth !== "undefined" && document.documentElement.clientWidth !== 0)
      a = {width : document.documentElement.clientWidth, height : document.documentElement.clientHeight};
    else
      a = {width : (document.getElementsByTagName("body"))[0].clientWidth, height : (document.getElementsByTagName("body"))[0].clientHeight};
  return a;
}
);
  this.getMousePosition = (function (a)
{
  if (! a)
    a = window.event;
  var b = {x : 0, y : 0};
  if (typeof a.pageX !== "undefined" && typeof a.x !== "undefined")
    {
      b.x = a.pageX;
      b.y = a.pageY;
    }
  else
    {
      var c = this.getScrollPosition();
      b.x = a.clientX + c.x;
      b.y = a.clientY + c.y;
    }
  return b;
}
);
  this.getScrollPosition = (function ()
{
  var a = {x : 0, y : 0};
  if (typeof window.pageYOffset !== "undefined")
    {
      a.x = window.pageXOffset;
      a.y = window.pageYOffset;
    }
  else
    if (typeof document.documentElement.scrollTop !== "undefined")
      {
        a.x = document.documentElement.scrollLeft;
        a.y = document.documentElement.scrollTop;
      }
    else
      if (typeof document.body.scrollTop !== "undefined")
        {
          a.x = document.body.scrollLeft;
          a.y = document.body.scrollTop;
        }
  return a;
}
);
}
)();
Gimme.ext.getPosition = (function (f,g)
{
  var b, a = this.entities[(g || 0)], c = 0, d = 0;
  while (a !== null)
    {
      b = typeof a.scrollTop !== "undefined" && a !== document.body && a !== document.documentElement && a.tagName !== "TEXTAREA" && a.tagName !== "INPUT" ? 1 : 0;
      c += a.offsetLeft - b * a.scrollLeft;
      d += a.offsetTop - b * a.scrollTop;
      a = a.offsetParent;
    }
  if (f)
    {
      var e = Gimme.Screen.getScrollPosition();
      c -= e.x;
      d -= e.y;
    }
  return {x : c, y : d};
}
);
Gimme.ext.getScreenPosition = (function (a)
{
  return this.getPosition(true, a);
}
);
Gimme.ext.getPagePosition = (function (a)
{
  return this.getPosition(false, a);
}
);
Gimme.ext.getComputedPosition = (function (b)
{
  var a = this.entities[(b || 0)];
  return {x : parseInt(g(a).getStyle("left"), 10), y : parseInt(g(a).getStyle("top"), 10)};
}
);
Gimme.Util = new (function ()
{
  function a(a,c)
  {
    function d()
    {
      e.apply(this, Array.prototype.slice.call(a, 2));
      if (! c)
        e = null;
    }
    var e = a[0], b = a[1];
    if (c === true)
      return window.setInterval(d, b);
    else
      return window.setTimeout(d, b);
  }
  this.setTimeout = (function ()
{
  return a(arguments, false);
}
);
  this.setInterval = (function ()
{
  return a(arguments, true);
}
);
}
)();
Gimme.Animation = new (function ()
{
  var a = {}, b = false;
  this.Speeds = {snail : 2000, turtle : 1250, slowly : 1250, rabbit : 1000, greyhound : 750, quickly : 750, cheetah : 500, lightning : 250};
  this.Directions = {vertically : 1, horizontally : 2, both : 3};
  this.start = (function (b,f,e)
{
  var c = setInterval(f, e), d = a[b];
  if (typeof d === "undefined")
    a[b] = {iids : [c], callback : null};
  else
    d.iids.push(c);
}
);
  this.end = (function ()
{
  var c, e = arguments.length;
  for (c = 0;c < e;c++)
    {
      var d = arguments[c], b = a[d];
      if (typeof b !== "undefined")
        {
          g(b.iids).forEach((function (a)
{
  clearTimeout(a);
}
));
          if (typeof b.callback === "function")
            {
              b.callback.call();
              b.callback = null;
            }
          delete a[d];
        }
    }
}
);
  this.isRunning = (function (b)
{
  return typeof a[b] !== "undefined";
}
);
  this.whenDone = (function (c,b)
{
  var d = a[c];
  if (typeof d === "undefined")
    a[c] = {iids : [], callback : b};
  else
    d.callback = b;
}
);
  this.startGroup = (function ()
{
  b = true;
}
);
  this.endGroup = (function ()
{
  b = false;
}
);
  this.isGrouping = (function ()
{
  return b === true;
}
);
}
)();
Gimme.Animation.BezierCurve = (function ()
{
  this.points = [];
  this.args = arguments;
}
);
Gimme.Animation.BezierCurve.prototype.initialize = (function ()
{
  function j(j)
  {
    var d, h = 0, i = 0;
    for (d = 0;d <= b;d++)
      {
        var f = c[b] / c[d] * c[(b - d)], e = Math.pow(1 - j, b - d), g = Math.pow(j, d);
        h += f * a[d].x * e * g;
        i += f * a[d].y * e * g;
      }
    return {x : h, y : i};
  }
  function i(d)
  {
    var a, c = 1, b = [1];
    for (a = 1;a <= d;a++)
      {
        c *= a;
        b.push(c);
      }
    return b;
  }
  var d = this.args, h = d.length, g = d[(h - 1)] || 100, k = h - 1, e, f, b, c, a;
  for (e = 0;e < k;e++)
    {
      a = d[e];
      c = i(a.length);
      b = a.length - 1;
      for (f = 0;f <= g;f++)
        this.points.push(j(f / g));
    }
  this.args = d = null;
  return g;
}
);
Gimme.Animation.BezierCurve.prototype.getPoint = (function (c)
{
  var a = this.points.length;
  if (a === 0)
    a = this.initialize();
  var b = Math.floor(c * a);
  if (b > a - 1)
    b = a - 1;
  return this.points[b];
}
);
Gimme.Animation.AccelerationLine = (function (a,c)
{
  var d = a[(a.length - 1)], b = g(a).map((function (a)
{
  return {x : a / d, y : 0};
}
));
  this.bezier = new Gimme.Animation.BezierCurve(b, c);
  this.points = this.bezier.points;
}
);
Gimme.Animation.AccelerationLine.prototype.getValue = (function (a)
{
  return (this.bezier.getPoint(a)).x;
}
);
Gimme.Animation.AccelerationLines = {zoom : new Gimme.Animation.AccelerationLine([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520], 75), slowStartAccelerate : new Gimme.Animation.AccelerationLine([0, 1, 2, 3, 8, 50], 100), quickStartDecelerate : new Gimme.Animation.AccelerationLine([0, 50, 55, 56, 57, 58], 100), linear : new Gimme.Animation.AccelerationLine([0, 10], 100)};
Gimme.Animation.AccelerationLines.defaultLine = Gimme.Animation.AccelerationLines.zoom;
Gimme.ext.fadeIn = (function (b,c,a)
{
  g(this.entities).fadeTo(null, 0.99999, b, c, a);
  a = null;
  return this;
}
);
Gimme.ext.fadeOut = (function (b,c,a)
{
  g(this.entities).fadeTo(null, 0, b, c, a);
  a = null;
  return this;
}
);
Gimme.ext.fadeTo = (function (b,c,e,h,d,a)
{
  function i(e)
  {
    var a = b === 0 ? 0 : b || Number(g(e).getStyle("opacity")), d = c - a;
    return {startOpacity : a, deltaO : d};
  }
  function f(e,b,c,a)
  {
    var f = c.getValue(b), d = a.startOpacity + f * a.deltaO;
    g(e).setStyle("opacity", d);
  }
  a = a || Gimme.Animation.AccelerationLines.linear;
  g(this.entities).animate(a, e, h, d, f, i);
  return this;
}
);
Gimme.ext.veil = (function (b,d,h,c,e)
{
  function i(c)
  {
    var d = parseInt(g(c).getStyle("height"), 10), e = parseInt(g(c).getStyle("width"), 10);
    c.style.overflow = "hidden";
    if ((b & a.horizontally) === a.horizontally)
      c.style.height = d + "px";
    return {deltaH : d, deltaW : e};
  }
  function f(c,f,i,d)
  {
    var e, g, h;
    if (f >= 1)
      {
        c.style.display = "none";
        c.style.height = c.style.width = "auto";
      }
    else
      {
        e = i.getValue(f);
        if ((b & a.vertically) === a.vertically)
          {
            g = d.deltaH - e * d.deltaH;
            c.style.height = g + "px";
          }
        if ((b & a.horizontally) === a.horizontally)
          {
            h = d.deltaW - e * d.deltaW;
            c.style.width = h + "px";
          }
      }
  }
  var a = Gimme.Animation.Directions;
  b = Math.floor(b) || a[b] || a.vertically;
  g(this.entities).animate(e, d, h, c, f, i);
  return this;
}
);
Gimme.ext.unveil = (function (b,d,h,c,e)
{
  function i(d)
  {
    var h = d.style.width, g = d.style.height, f = d.style.overflow, c = d.cloneNode(true);
    c.style.visibility = "hidden";
    c.style.margin = "0";
    c.style.padding = "0";
    c.style.border = "0";
    c.style.position = "absolute";
    c.style.display = "block";
    d.parentNode.appendChild(c);
    var e = c.offsetHeight, i = c.offsetWidth;
    c.parentNode.removeChild(c);
    d.style.visibility = "visible";
    d.style.display = "block";
    d.style.overflow = "hidden";
    if ((b & a.horizontally) === a.horizontally)
      d.style.height = e + "px";
    return {deltaH : e, deltaW : i, styleH : g, styleW : h, styleOverflow : f};
  }
  function f(d,f,i,c)
  {
    var e, g, h;
    if (f >= 1)
      {
        d.style.overflow = c.styleOverflow;
        d.style.width = c.styleW;
        d.style.height = c.styleH;
      }
    else
      {
        e = i.getValue(f);
        if ((b & a.vertically) === a.vertically)
          {
            g = e * c.deltaH;
            d.style.height = g + "px";
          }
        if ((b & a.horizontally) === a.horizontally)
          {
            h = e * c.deltaW;
            d.style.width = h + "px";
          }
      }
  }
  var a = Gimme.Animation.Directions;
  b = Math.floor(b) || a[b] || a.vertically;
  g(this.entities).animate(e, d, h, c, f, i);
  return this;
}
);
Gimme.ext.scrollTo = (function (b,e,a,c)
{
  function f(c)
  {
    var a = Gimme.Screen.getScrollPosition(), b = (g(c).getPagePosition()).y - a.y;
    return {scrollPos : a, deltaY : b};
  }
  function d(f,b,c,a)
  {
    var d = c.getValue(b), e = a.scrollPos.y + d * a.deltaY;
    window.scrollTo(0, Math.floor(e));
  }
  g(this.entities[0]).animate(c, b, e, a, d, f);
  return this;
}
);
Gimme.ext.slideToPoint = (function (a,c,f,b,d)
{
  function h(e)
  {
    var b = g(e).getComputedPosition();
    if (a.x === null)
      a.x = b.x;
    if (a.y === null)
      a.y = b.y;
    var d = a.y - b.y, c = a.x - b.x;
    return {startPt : b, deltaX : c, deltaY : d};
  }
  function e(c,e,f,a)
  {
    var b = a.startPt, g = a.deltaX, h = a.deltaY, d = f.getValue(e), i = b.x + d * g, j = b.y + d * h;
    c.style.top = Math.floor(Math.round(j)) + "px";
    c.style.left = Math.floor(Math.round(i)) + "px";
  }
  g(this.entities).animate(d, c, f, b, e, h);
  return this;
}
);
Gimme.ext.followPath = (function (f,a,d,e,c)
{
  function h(b)
  {
    var a = g(b).getComputedPosition();
    return {startPt : a};
  }
  function b(c,e,g,f)
  {
    var b = f.startPt, d = g.getPoint(e), h = b.x + d.x * a, i = b.y + d.y * a;
    c.style.top = Math.floor(Math.round(i)) + "px";
    c.style.left = Math.floor(Math.round(h)) + "px";
  }
  a = a || 1;
  g(this.entities).animate(f, d, e, c, b, h);
  return this;
}
);
Gimme.ext.animate = (function (b,c,a,h,d,e)
{
  function i(h)
  {
    var i = e(h);
    return (function ()
{
  var l = new Date().getTime(), k = (l - j) / c;
  if (k >= 1)
    {
      if (typeof d === "function")
        d(h, 1, b, i);
      if (++g === f)
        {
          Gimme.Animation.end(a);
          e = null;
          d = null;
        }
    }
  else
    d(h, k, b, i);
}
);
  }
  var f = this.entities.length;
  if (f < 1)
    return ;
  b = b || Gimme.Animation.AccelerationLines.defaultLine;
  c = Math.floor(c) || Gimme.Animation.Speeds[c] || Gimme.Animation.Speeds.quickly;
  a = a || "AUTOGUID_" + Math.random(new Date().getTime());
  if (! Gimme.Animation.isGrouping() && Gimme.Animation.isRunning(a))
    return ;
  Gimme.Animation.whenDone(a, h);
  var g = 0, k = b.points.length, j = new Date().getTime();
  this.forEach((function (c,b)
{
  Gimme.Animation.start(a, i(c, b), 10);
}
));
}
);
Gimme.ext.getRelativePosition = (function (d,e)
{
  var a = this.entities[(e || 0)], b = 0, c = 0;
  while (a !== null && a !== d)
    {
      b += a.offsetLeft;
      c += a.offsetTop;
      a = a.offsetParent;
    }
  return {x : b, y : c};
}
);
Gimme.ext.addShim = (function (d,e)
{
  var b = this.entities[0];
  if (b.shim)
    {
      b.shim.parentNode.removeChild(b.shim);
      b.shim = null;
    }
  var a = document.createElement("iframe");
  a.frameBorder = "0";
  a.scrolling = "no";
  a.className = "iframeShim";
  a.style.position = "absolute";
  a.style.zIndex = e || "1";
  a.style.background = "#fff";
  a.style.height = b.offsetHeight + "px";
  a.style.width = b.offsetWidth + "px";
  var c = g(b);
  a.style.top = c.getStyle("top");
  a.style.left = c.getStyle("left");
  a.style.marginTop = c.getStyle("marginTop");
  a.style.marginLeft = c.getStyle("marginLeft");
  a.style.marginRight = c.getStyle("marginRight");
  a.style.marginBottom = c.getStyle("marginBottom");
  this.entities.push(a);
  d = d || b;
  (d.parentNode || document.body).insertBefore(a, d);
  b.shim = a;
  return this;
}
);
Gimme.ext.removeShim = (function ()
{
  var b = this.entities[0], a = b.shim;
  if (a)
    {
      a.parentNode.removeChild(a);
      b.shim = null;
    }
  return this;
}
);
Gimme.ext.toggle = (function (a)
{
  if (a !== true)
    a = false;
  this.forEach((function (c)
{
  var b = g(c);
  if (a)
    b.setStyle("visibility", b.getStyle("visibility") === "visible" ? "hidden" : "visible");
  else
    b.setStyle("display", b.getStyle("display") !== "none" ? "none" : "block");
}
));
  return this;
}
);
VE_SelectItem.prototype.toString = (function ()
{
  return this.description;
}
);
var IOSec = new OutputEncoder();
VE_Panel.panels = [];
VE_Panel.shadowThickness = 3;
VE_Panel._CreateElement = (function (d,e,b,c)
{
  var a = document.createElement(d);
  a.id = e;
  a.className = b;
  a.style.zIndex = c;
  return a;
}
);
VE_Panel._PositionElement = (function (a,d,e,c,b)
{
  a.style.top = e + "px";
  a.style.left = d + "px";
  a.style.width = c + "px";
  a.style.height = b + "px";
}
);
VE_Panel.prototype.SetPosition = (function (c,d,b,a)
{
  this.x = c;
  this.y = d;
  this.width = b;
  this.height = a;
  if (map.IsModeEnabled(Msn.VE.MapActionMode.Mode3D) && this.usesShimIn3D)
    UpdateIFrameShim(this.el);
}
);
VE_Panel.prototype.SetToolbarSize = (function (toolbarHeight)
{
  this.toolbarHeight = toolbarHeight;
  var d = eval(toolbarHeight) > 0 ? "block" : "none";
  this.tb.style.display = d;
  this.Resize();
}
);
VE_Panel.prototype.SetFooterSize = (function (footerHeight)
{
  if (! this.isLegacyPanel)
    {
      this.footerHeight = footerHeight;
      var d = eval(footerHeight) > 0 ? "block" : "none";
      this.foot.style.display = d;
      this.Resize();
    }
}
);
VE_Panel.prototype.Resize = (function ()
{
  if (typeof globals != "undefined")
    {
      var geoFn = Msn.VE.Geometry.Functions, taskAreaHeight = (Gimme.Screen.getViewportSize()).y - (g(globals["taskArea"]).getScreenPosition()).y - globals["footer"].offsetHeight;
      if (taskAreaHeight >= 0 && typeof taskAreaHeight == "number")
        globals["taskArea"].style.height = taskAreaHeight - 2 + "px";
      if (this.el.id == "contextMenu" || this.el.id == "scratchpad" || this.el.id == "annotationPanel" || this.el.id == "annotationPopup" || this.el.id == "searchPopup" || this.el.id == "help")
        {
          if (this.height != "auto" && typeof this.height == "number")
            this.el.style.height = eval(this.height) + "px";
          if (this.width != "auto" && typeof this.width == "number")
            this.el.style.width = eval(this.width) + "px";
          if (this.x != "auto" && typeof this.x == "number")
            this.el.style.left = eval(this.x) + "px";
          if (this.y != "auto" && typeof this.y == "number")
            this.el.style.top = eval(this.y) + "px";
        }
      if (this.el.shimElement)
        ShowShim(this.el);
    }
}
);
VE_Panel.prototype.SetHeightToFit = (function ()
{
  var contentid = this.id + "_body_table", content = $ID(contentid);
  if (! content)
    return false;
  this.height = 0;
  var width = Math.max(eval(this.width), 100);
  if (content.offsetWidth > width - 14)
    this.height += scrollbarWidth;
  this.height += this.titleDisabled ? 14 : 21 + 14;
  this.height += this.toolbarHeight;
  this.height += content.offsetHeight;
  this.height += this.footerHeight;
  this.height = Math.min(this.dynamicHeightMax, this.height);
}
);
VE_Panel.prototype.DisableClosebox = (function ()
{
  if (! this.isLegacyPanel)
    {
      if (this.closeboxDisabled)
        return ;
      this.closeboxDisabled = true;
      this.el.removeChild(this.cb);
    }
}
);
VE_Panel.prototype.EnableClosebox = (function ()
{
  if (! this.isLegacyPanel)
    {
      if (! this.closeboxDisabled)
        return ;
      this.closeboxDisabled = false;
      this.el.appendChild(this.cb);
    }
}
);
VE_Panel.prototype.DisableTitle = (function ()
{
  if (! this.isLegacyPanel)
    {
      if (this.titleDisabled)
        return ;
      this.titleDisabled = true;
      this.el.removeChild(this.cb);
      this.el.removeChild(this.title);
    }
}
);
VE_Panel.prototype.EnableTitle = (function ()
{
  if (! this.isLegacyPanel)
    {
      if (! this.titleDisabled)
        return ;
      this.titleDisabled = false;
      this.el.insertBefore(this.cb, this.tb);
      this.el.insertBefore(this.title, this.cb);
    }
}
);
VE_Panel.prototype.SetTitle = (function (c)
{
  if (! this.isLegacyPanel)
    {
      var b = document.createTextNode(c), a = this.title.firstChild;
      if (a)
        if (a.firstChild)
          a.replaceChild(b, a.firstChild);
        else
          a.appendChild(b);
    }
}
);
VE_Panel.prototype.SetToolbar = (function (a)
{
  this.tb.innerHTML = a;
}
);
VE_Panel.prototype.SetBody = (function (a)
{
  this.body.innerHTML = a;
}
);
VE_Panel.prototype.SetDynamicBody = (function (a)
{
  this.body.innerHTML = "<table id=\"" + this.id + "_body_table\"><tr><td>" + a + "</td></tr></table>";
}
);
VE_Panel.prototype.SetFooter = (function (a)
{
  if (! this.isLegacyPanel)
    this.foot.innerHTML = a;
}
);
VE_Panel.prototype.SetOpacity = (function (o)
{
  if (o >= 100)
    o = 99.99;
  with (this.el.style)
    {
      filter = "alpha(opacity:" + o + ")";
      o *= 0.01;
      KHTMLOpacity = o;
      MozOpacity = o;
      opacity = o;
    }
}
);
VE_Panel.prototype.SetColor = (function (a)
{
  if (! this.isLegacyPanel)
    {
      this.color = a;
      this.title.className = "VE_Panel_title VE_Panel_title_" + a;
      this.foot.className = "VE_Panel_foot VE_Panel_foot_" + a;
      this.cb.className = "VE_Panel_cb VE_Panel_cb_" + a;
    }
}
);
VE_Panel.prototype.Minimize = (function ()
{
  this.el.className = " VE_Panel_el_minimized";
  if (this.onMinimize)
    this.onMinimize(this._CreateEvent());
}
);
VE_Panel.prototype.Maximize = (function ()
{
  this.el.className = "VE_Panel_el";
  if (this.onMaximize)
    this.onMaximize(this._CreateEvent());
  this.Resize();
}
);
VE_Panel.prototype.isMaximized = (function ()
{
  return this.el.className == "VE_Panel_el";
}
);
VE_Panel.prototype.Show = (function ()
{
  this.el.style.display = "block";
  this.visible = true;
  if (this.usesShimIn3D)
    mvcViewFacade.ShowShimIfSupported(this.el);
}
);
VE_Panel.prototype.Hide = (function ()
{
  this.el.style.display = "none";
  this.visible = false;
  HideShim(this.el);
}
);
VE_Panel.prototype.IsVisible = (function ()
{
  return this.el.style.display != "none";
}
);
VE_Panel.prototype._CreateEvent = (function ()
{
  return new VE_PanelEvent(this);
}
);
VE_Panel._OnTitleClick = (function (c)
{
  if (! c)
    c = window.event;
  var d = GetTarget(c), b = VE_Panel.panels;
  for (var a = 0;a < b.length;a++)
    if (b[a].title == d || b[a].title == d.parentNode)
      {
        if (b[a].onTitleClick)
          b[a].onTitleClick(b[a]._CreateEvent());
        return ;
      }
}
);
VE_Panel._OnCloseClick = (function (c)
{
  if (! c)
    c = window.event;
  var d = GetTarget(c), b = VE_Panel.panels;
  for (var a = 0;a < b.length;a++)
    if (b[a].cb == d)
      {
        if (b[a].onCloseClick)
          b[a].onCloseClick(b[a]._CreateEvent());
        return ;
      }
}
);
Ad.prototype.ToHtml = (function ()
{
  var a = "<li>" + "<a href = \"" + this.url + "\" target = \"_blank\">" + IOSec.EncodeHtml(this.title) + "</a>" + "$AdDescription$" + "</li>";
  if (this.description && this.description.length > 0)
    a = a.replace("$AdDescription$", "<p>" + IOSec.EncodeHtml(this.description) + "</p>");
  return a;
}
);
Ad.prototype.HasAddress = (function ()
{
  return this.address1.length > 0 && this.city.length > 0 && this.state.length > 0 && this.zip.length > 0;
}
);
Ad.prototype.GetAdDescription = (function ()
{
  var a = this.description;
  if (this.HasAddress())
    a = this.address1 + ", " + this.city + ", " + this.state + " " + this.zip;
  return a;
}
);
Msn.VE.DirectionsDecoder = (function ()
{
  function e(a,c,m,l)
  {
    if (! a || a.length < c)
      return [];
    var k = a.length - a.length % c, i = [], f = false, b = 0, j = c - 1;
    for (var d = 0;d < k;d++)
      {
        var e = a.charCodeAt(d), h = d % c;
        if (l && h == 0)
          {
            f = e & 128;
            e &= 127;
          }
        b |= e;
        if (h == j)
          {
            var g = b / m;
            i.push(f ? - g : g);
            b = 0;
            f = false;
          }
        else
          b <<= 8;
      }
    return i;
  }
  function d(c)
  {
    return e(c, a, b, true);
  }
  function c(c)
  {
    var l = true;
    if (! c || c.length < a)
      return [];
    var j = [], g = false, d = 0, k = a - 1, m = c.length;
    for (var e = 0;e < m;++e)
      {
        var f = c[e], i = e % a;
        if (l && i == 0)
          {
            g = f & 128;
            f &= 127;
          }
        d |= f;
        if (i == k)
          {
            var h = d / b;
            j.push(g ? - h : h);
            d = 0;
            g = false;
          }
        else
          d <<= 8;
      }
    return j;
  }
  var a = 4, b = 1000000;
  this.DecodeCoordinatesString = d;
  this.DecodeCoordinatesByteArray = c;
}
);
var HelpHistory = [];
VE_Help.helpZIndex = 31;
VE_Help.introZIndex = 31;
VE_Help.introPanel = null;
VE_Help.helpPanel = null;
VE_Help.margins = 110;
VE_Help.LiveHelp = new (function ()
{
  this.Keyword = "keyword";
  this.Search = "search";
  this.Topic = "topic";
}
)();
VE_Help.CreateHelpPanel = (function ()
{
  VE_Help.CreateSizedHelpPanel(220, 160, windowWidth <= 430 ? 300 : windowWidth - 430, windowHeight <= 220 ? 200 : windowHeight - 220);
}
);
VE_Help.CreateSizedHelpPanel = (function (e,f,c,b)
{
  if (typeof VE_Help.helpPanel != "undefined" && VE_Help.helpPanel != null)
    {
      VE_Help.helpPanel.SetBody("");
      VE_Help.helpPanel.Destroy();
      VE_Help.helpPanel = null;
    }
  var d = "<iframe id=\"helpFrame\" src=\"about:blank\" width=\"100%\" height=\"100%\" allowtransparency=\"true\" frameborder=\"0\"></iframe>", a = new VE_Panel("help", e, f, c <= 300 ? 300 : c, b <= 200 ? 200 : b, "blue", VE_Help.helpZIndex, L_Help_Text, d, "");
  a.body.className = "VE_Panel_body_help";
  a.Hide();
  a.SetToolbarSize(0);
  a.SetFooterSize(0);
  a.SetOpacity(95);
  a.onCloseClick = (function ()
{
  VE_Help.DisablePreventLayer();
  VE_Help.ClosePanel();
}
);
  VE_Help.helpPanel = a;
}
);
VE_Help.EnablePreventLayer = (function ()
{
  var a = $ID("__preventLayer__");
  if (! a)
    a = document.createElement("div");
  a.id = "__preventLayer__";
  a.className = "preventLayer";
  document.body.appendChild(a);
}
);
VE_Help.DisablePreventLayer = (function ()
{
  var a = $ID("__preventLayer__");
  if (a)
    document.body.removeChild(a);
}
);
VE_Help.EnableDrawingPreventLayer = (function ()
{
  var c = $ID("msve_header");
  if (c)
    {
      var b = $ID("__preventLayerHeader__");
      if (! b)
        b = document.createElement("div");
      b.id = "__preventLayerHeader__";
      b.className = "preventLayer";
      b.style.left = c.clientLeft;
      b.style.top = c.clientTop;
      b.style.width = c.clientWidth;
      b.style.height = c.clientHeight;
      document.body.appendChild(b);
    }
  var d = $ID("msve_footer");
  if (d)
    {
      var a = $ID("__preventLayerFooter__");
      if (! a)
        a = document.createElement("div");
      a.id = "__preventLayerFooter__";
      a.className = "preventLayer";
      a.style.left = 0;
      a.style.top = GetWindowHeight() - d.clientHeight;
      a.style.width = d.clientWidth;
      a.style.height = d.clientHeight;
      document.body.appendChild(a);
    }
}
);
VE_Help.DisableDrawingPreventLayer = (function ()
{
  var d = $ID("__preventLayerHeader__");
  if (d)
    document.body.removeChild(d);
  var b = $ID("__preventLayerTaskArea__");
  if (b)
    document.body.removeChild(b);
  var a = $ID("__preventLayerActionBar__");
  if (a)
    document.body.removeChild(a);
  var c = $ID("__preventLayerFooter__");
  if (c)
    document.body.removeChild(c);
}
);
VE_Help.Open = (function (b,c)
{
  VE_Help.EnablePreventLayer();
  VE_Help.helpPanel.Show();
  VE_Help.helpPanel.SetTitle(b);
  VE_Help.helpPanel.SetBody("<iframe id = \"helpFrame\" src = \"about:blank\" width = \"100%\" allowtransparency = \"true\" scrolling = \"auto\" frameborder = \"0\"></iframe>");
  var a = $ID("helpFrame");
  a.src = c;
  VE_Help.Redraw();
}
);
VE_Help.OpenSized = (function (d,e,a,b)
{
  if (a > windowWidth - 10)
    a = windowWidth - 10;
  if (b > windowHeight - 10)
    b = windowHeight - 10;
  VE_Help.CreateSizedHelpPanel((windowWidth - a) / 2, (windowHeight - b) / 2, a, b);
  VE_Help.EnablePreventLayer();
  VE_Help.helpPanel.Show();
  VE_Help.helpPanel.SetTitle(d);
  VE_Help.helpPanel.SetBody("<iframe id = \"helpFrame\" src = \"about:blank\" width = \"100%\" allowtransparency = \"true\" scrolling = \"no\" frameborder = \"0\"></iframe>");
  var c = $ID("helpFrame");
  c.src = e;
}
);
VE_Help.OpenLiveHelp = (function (b,a,c)
{
  var g = "_live_help", f = 550, e = 575, i = (screen.availWidth - f) * 0.5, j = (screen.availHeight - e) * 0.5, h = "resizable=yes,top=" + j + ",width=" + f + ",height=" + e + ",left=" + i;
  if (typeof b == "undefined" || b == null || b == "")
    b = liveLocalHelpProjectCode;
  if (typeof a == "undefined" || a == null || a == "")
    a = VE_Help.LiveHelp.Keyword;
  if (typeof c == "undefined" || c == null || c == "")
    c = "qaf";
  var k = liveHelpUrl + "&project=" + b + "&querytype=" + a + "&query=" + c, d = window.open(k, g, h);
  if (d != null && typeof d == "object")
    d.focus();
}
);
VE_Help.Redraw = (function ()
{
  var b = VE_Help.helpPanel;
  if (! b)
    return ;
  var c = Gimme.Screen.getViewportSize(), a = g(b.el);
  a.setStyle("top", (c.height - (a.element()).offsetHeight) / 2 + "px");
  a.setStyle("left", (c.width - (a.element()).offsetWidth) / 2 + "px");
  ShowShim(b.el);
}
);
VE_Help.CloseIntro = (function ()
{
  if (VE_Help.introPanel)
    VE_Help.introPanel.Hide();
}
);
VE_Help.ClosePanel = (function ()
{
  if (VE_Help.helpPanel)
    {
      VE_Help.helpPanel.Hide();
      VE_Help.DisablePreventLayer();
    }
}
);
VE_Help.Destroy = (function ()
{
  if (VE_Help.introPanel)
    {
      VE_Help.introPanel.Destroy();
      VE_Help.introPanel = null;
    }
  if (VE_Help.helpPanel)
    {
      VE_Help.helpPanel.Destroy();
      VE_Help.helpPanel = null;
    }
}
);
VEValidator.ValidateFloat = (function (b,c)
{
  var a = "";
  if (arguments != null && arguments.caller != null)
    a = VEValidator.GetCaller(arguments.caller);
  if (a == "")
    a = "VEValidator.ValidateFloat";
  if (b == null || b == "undefined")
    throw new VEException(a, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "float"));
  try
    {
      if (isNaN(parseFloat(b)))
        throw new VEException(a, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "float"));
      return true;
    }
  catch (d)
    {
      throw new VEException(a, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "float"));
    }
}
);
VEValidator.ValidateInt = (function (b,c)
{
  var a = "";
  if (arguments != null && arguments.caller != null)
    a = VEValidator.GetCaller(arguments.caller);
  if (a == "")
    a = "VEValidator.ValidateInt";
  if (b == null || b == "undefined")
    throw new VEException(a, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "int"));
  try
    {
      if (isNaN(parseInt(b)) || parseFloat(b) != parseInt(b))
        throw new VEException(a, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "int"));
      return true;
    }
  catch (d)
    {
      throw new VEException(a, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "int"));
    }
}
);
VEValidator.ValidateNonNegativeInt = (function (a,c)
{
  var b = "";
  if (arguments != null && arguments.caller != null)
    b = VEValidator.GetCaller(arguments.caller);
  if (b == "")
    b = "VEValidator.ValidateNonNegativeInt";
  if (a == null || a == "undefined")
    throw new VEException(b, "err_invalidargument", L_invalidnonnegativeint_text.replace("%1", c));
  try
    {
      if (isNaN(parseInt(a)) || parseFloat(a) != parseInt(a) || parseInt(a) < 0)
        throw new VEException(b, "err_invalidargument", L_invalidnonnegativeint_text.replace("%1", c));
      return true;
    }
  catch (d)
    {
      throw new VEException(b, "err_invalidargument", L_invalidnonnegativeint_text.replace("%1", c));
    }
}
);
VEValidator.ValidateFunction = (function (b,c)
{
  var a = "";
  if (arguments != null && arguments.caller != null)
    a = VEValidator.GetCaller(arguments.caller);
  if (a == "")
    a = "VEValidator.ValidateFunction";
  if (b == null || typeof b != "function")
    throw new VEException(a, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "function"));
}
);
VEValidator.ValidateNonNull = (function (b,c)
{
  var a = "";
  if (arguments != null && arguments.caller != null)
    a = VEValidator.GetCaller(arguments.caller);
  if (a == "")
    a = "VEValidator.ValidateNonNull";
  if (b == null || b == "undefined")
    throw new VEException(a, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "non null"));
}
);
VEValidator.ValidateBetween = (function (b,e,d,c)
{
  var a = "";
  if (arguments != null && arguments.caller != null)
    a = VEValidator.GetCaller(arguments.caller);
  if (a == "")
    a = "VEValidator.ValidateBetween";
  if (b < d || b > c)
    throw new VEException(a, "err_invalidargument", L_invalidbetweenint_text.replace("%1", e).replace("%2", d).replace("%3", c));
}
);
VEValidator.ValidateBoolean = (function (b,c)
{
  var a = "";
  if (arguments != null && arguments.caller != null)
    a = VEValidator.GetCaller(arguments.caller);
  if (a == "")
    a = "VEValidator.ValidateBoolean";
  if (b != true && b != false)
    throw new VEException(a, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "bool"));
}
);
VEValidator.ValidateMapStyle = (function (a,c)
{
  var b = "";
  if (arguments != null && arguments.caller != null)
    b = VEValidator.GetCaller(arguments.caller);
  if (b == "")
    b = "VEValidator.ValidateMapStyle";
  if (a == null || a == "undefined")
    throw new VEException(b, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "MapStyle"));
  if (a == "r" || a == "R" || a == "s" || a == "S" || a == "a" || a == "A" || a == "o" || a == "O" || a == "h" || a == "H")
    return true;
  throw new VEException(b, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "MapStyle"));
}
);
VEValidator.ValidateMapMode = (function (b,c)
{
  var a = "";
  if (arguments != null && arguments.caller != null)
    a = VEValidator.GetCaller(arguments.caller);
  if (a = "")
    a = "VEValidator.ValidateMapMode";
  if (b == null || b == "undefined")
    throw new VEException(a, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "MapMode"));
  if (b == VEMapMode.Mode2D || b == VEMapMode.Mode3D)
    return true;
  throw new VEException(a, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "MapMode"));
}
);
VEValidator.ValidateDistanceUnit = (function (b,c)
{
  var a = "";
  if (arguments != null && arguments.caller != null)
    a = VEValidator.GetCaller(arguments.caller);
  if (a == "")
    a = "VEValidator.ValidateDistanceUnit";
  if (b == null || b == "undefined")
    throw new VEException(a, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "VEDistanceUnit"));
  if (b == VEDistanceUnit.Miles || b == VEDistanceUnit.Kilometers)
    return true;
  throw new VEException(a, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "VEDistanceUnit"));
}
);
VEValidator.ValidateMaxZoom = (function (b,c)
{
  var a = "";
  if (arguments != null && arguments.caller != null)
    a = VEValidator.GetCaller(arguments.caller);
  if (a == "")
    a = "VEValidator.ValidateMaxZoom";
  if (b == null || b == "undefined")
    throw new VEException(a, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "ValidateMaxZoom"));
  if (b <= Msn.VE.API.Globals.vemaxzoom)
    return true;
  throw new VEException(a, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "ValidateMaxZoom"));
}
);
VEValidator.ValidateLayerType = (function (a,c)
{
  var b = "";
  if (arguments != null && arguments.caller != null)
    b = VEValidator.GetCaller(arguments.caller);
  if (b == "")
    b = "VEValidator.ValidateLayerType";
  if (a == null || a == "undefined")
    throw new VEException(b, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "VEDataType"));
  if (a == VEDataType.GeoRSS || a == VEDataType.VECollection || a == VEDataType.VETileSource)
    return true;
  throw new VEException(b, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "VEDataType"));
}
);
VEValidator.ValidateDashboardSize = (function (a,c)
{
  var b = "";
  if (arguments != null && arguments.caller != null)
    b = VEValidator.GetCaller(arguments.caller);
  if (b == "")
    b = "VEValidator.ValidateDashboardSize";
  if (a == null || a == "undefined")
    throw new VEException(b, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "VEDashboardSize"));
  if (a == VEDashboardSize.Normal || a == VEDashboardSize.Small || a == VEDashboardSize.Tiny)
    return true;
  throw new VEException(b, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "VEDashboardSize"));
}
);
VEValidator.ValidateMiniMapSize = (function (b,c)
{
  var a = "";
  if (arguments != null && arguments.caller != null)
    a = VEValidator.GetCaller(arguments.caller);
  if (a == "")
    a = "VEValidator.ValidateMiniMapSize";
  if (b == null || b == "undefined")
    throw new VEException(a, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "VEMiniMapSize"));
  if (b == VEMiniMapSize.Small || b == VEMiniMapSize.Large)
    return true;
  throw new VEException(a, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "VEMiniMapSize"));
}
);
VEValidator.ValidateAltitudeMode = (function (b,c)
{
  var a = "";
  if (arguments != null && arguments.caller != null)
    a = VEValidator.GetCaller(arguments.caller);
  if (a == "")
    a = "VEValidator.ValidateAltitudeMode";
  if (b == null)
    throw new VEException(a, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "VEAltitudeMode"));
  if (b != VEAltitudeMode.Absolute && b != VEAltitudeMode.RelativeToGround)
    throw new VEException(a, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "VEAltitudeMode"));
  return true;
}
);
VEValidator.ValidateObject = (function (b,c,e,d)
{
  var a = "";
  if (arguments != null && arguments.caller != null)
    a = VEValidator.GetCaller(arguments.caller);
  if (a == "")
    a = "VEValidator.ValidateObject";
  if (b == null || b == "undefined")
    throw new VEException(a, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "non null"));
  if (! e.prototype.isPrototypeOf(b))
    throw new VEException(a, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", d));
}
);
VEValidator.ValidateObjectArray = (function (a,d,f,e)
{
  var b = "";
  if (arguments != null && arguments.caller != null)
    b = VEValidator.GetCaller(arguments.caller);
  if (b == "")
    b = "VEValidator.ValidateObject";
  if (a == null || typeof a == "undefined" || a.length == null || typeof a.length == "undefined")
    throw new VEException(b, "err_invalidargument", L_invalidargument_text.replace("%1", d).replace("%2", "array"));
  for (var c = 0;c < a.length;++c)
    if (a[c] == null || typeof a[c] == "undefined" || ! f.prototype.isPrototypeOf(a[c]))
      throw new VEException(b, "err_invalidargument", L_invalidargument_text.replace("%1", d).replace("%2", e));
}
);
VEValidator.ValidateOrientation = (function (a,c)
{
  var b = "";
  if (arguments != null && arguments.caller != null)
    b = VEValidator.GetCaller(arguments.caller);
  if (b == "")
    b = "VEValidator.ValidateOrientation";
  if (a == null || a == "undefined")
    throw new VEException(b, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "VEOrientation"));
  if (a != VEOrientation.North && a != VEOrientation.East && a != VEOrientation.West && a != VEOrientation.South)
    throw new VEException(b, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "VEOrientation"));
}
);
VEValidator.ValidateBounds = (function (a,c)
{
  var b = "";
  if (arguments != null && arguments.caller != null)
    b = VEValidator.GetCaller(arguments.caller);
  if (b == "")
    b = "VEValidator.ValidateBounds";
  if (a == null || a == "undefined")
    throw new VEException(b, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "VELatLongRectangle"));
  if (a.TopLeftLatLong == null || a.BottomRightLatLong == null || a.TopLeftLatLong.Latitude <= a.BottomRightLatLong.Latitude || a.TopLeftLatLong.Longitude >= a.BottomRightLatLong.Longitude)
    throw new VEException(b, "err_invalidargument", L_invalidargument_text.replace("%1", c).replace("%2", "VELatLongRectangle"));
}
);
VEValidator.GetCaller = (function (b)
{
  if (b != null || b != "")
    {
      try
        {
          var a = (b.toString().match(/function (\w*)/))[1];
        }
      catch (c)
        {
          a = "";
        }
      if (a == null || a.length == 0)
        return "";
      else
        return a;
    }
  else
    return "";
}
);
VEPushpin.ShowDetailOnMouseOver = true;
VEPushpin.OnMouseOverCallback = null;
VEPushpin.prototype.Dispose = (function ()
{
  this.DetailsStyle == null;
  this.TitleStyle = null;
  this.IconStyle = null;
  this.Details = null;
  this.IconUrl = null;
  this.Title = null;
  this.LatLong = null;
  this.ID = null;
  this.m_vemapcontrol = null;
  this.m_vemap = null;
}
);
VEPushpin.Hide = (function (a)
{
  if (window.ero != null)
    {
      if (a == "undefined" || a == null)
        a = false;
      window.ero.hide(a);
    }
}
);
VEPushpin.GetEroContent = (function (c,b,e,d)
{
  var a = "<p>";
  if (c != null && c != "undefined" && c.length > 0)
    a += "<div class=\"" + e + "\">" + unescape(c) + "</div>";
  if (b != null && b != "undefined" && b.length > 0)
    a += "<div class=\"" + d + "\">" + unescape(b) + "</div>";
  if (! document.all && (c.length == 0 || b.length == 0))
    a += "<br/><br/>";
  a += "</p>";
  return a;
}
);
VEPushpin.Show = (function (l,m,k,h,d,c,g,e)
{
  var a = VEMap._GetMapFromGUID(l);
  if (a == null || a == "undefined")
    return ;
  var i = a.vemapcontrol.GetX(h) + a.GetLeft(), j = a.vemapcontrol.GetY(k) + a.GetTop();
  if (VEPushpin.ShowDetailOnMouseOver)
    {
      var b = $ID(m + "_" + a.GUID);
      if (b != null && b != "undefined")
        {
          var f = VEPushpin.GetEroContent(d, c, g, e);
          window.ero.setContent(f);
          window.ero.setBoundingArea(null);
          window.ero.getBoundingArea().move(Gimme.Screen.getScrollPosition());
          window.ero.dockToElement(b);
        }
    }
  if (VEPushpin.OnMouseOverCallback != null)
    VEPushpin.OnMouseOverCallback(i, j, d, unescape(c));
}
);
VEPushpin.Show3D = (function (a,c,b,f,d)
{
  if (VEPushpin.ShowDetailOnMouseOver)
    {
      var e = VEPushpin.GetEroContent(c, b, f, d);
      window.ero.setContent(e);
      ero.setGlitz(false, false, false, true);
      window.ero.dockToRect(a, null, - 1);
    }
  if (VEPushpin.OnMouseOverCallback != null)
    VEPushpin.OnMouseOverCallback((a.getP1()).x, (a.getP1()).y, c, unescape(b));
}
);
VEPushpin.DisposeERO = (function ()
{
  if (window.ero != null && window.ero != "undefined")
    {
      window.ero.destroy();
      window.ero = null;
    }
}
);
VEPushpin.prototype._SetMapInstance = (function (a)
{
  this.m_vemap = a;
  this.m_vemapcontrol = a.vemapcontrol;
}
);
VEPushpin.prototype.GetContent = GetContent;
VE_ScratchpadManager.AddGeoLocation = (function ()
{
  return ;
}
);
VE_ScratchpadManager.AddLocation = VE_ScratchpadManager.AddGeoLocation;
VE_Scratchpad = VE_ScratchpadManager;
VEGraphicsManager.prototype.RemoveLine = (function (a)
{
  this.RemoveLinebyId(a.ID);
}
);
VEGraphicsManager.prototype.RemoveLinebyId = (function (b)
{
  if (this.m_vegraphiccanvas == null || this.m_vegraphiccanvas == "undefined")
    {
      throw new VEException("VEMap:RemoveLinebyId", "err_GraphicsInitError", L_GraphicsInitError_Text);
      return ;
    }
  var c = this.m_vegraphicspolylines.length, a = 0;
  while (a < c && b != this.m_vegraphicspolylines[a].ID)
    a++;
  if (a < c)
    this.m_vegraphicspolylines.splice(a, 1);
  else
    {
      throw new VEException("VEMap:RemoveLinebyId", "err_GraphicsInitError", L_invalidpolylineid_text);
      return ;
    }
  if (this.m_vemap.GetMapMode() == Msn.VE.MapActionMode.Mode3D)
    this.Clear3DShape(b);
  else
    {
      this.Clear();
      this.Draw();
    }
}
);
VEGraphicsManager.prototype.RemoveAllLines = (function ()
{
  if (this.m_vemap.GetMapMode() == Msn.VE.MapActionMode.Mode3D)
    this.ClearAll3DShape();
  this.m_vegraphicspolylines = [];
  this.Clear();
  this.Draw();
}
);
VEGraphicsManager.prototype.DrawLine = (function (a)
{
  if (this.m_vegraphiccanvas == null || this.m_vegraphiccanvas == "undefined")
    {
      throw new VEException("VEMap:DrawLine", "err_GraphicsInitError", L_GraphicsInitError_Text);
      return ;
    }
  VEValidator.ValidateObject(a, "vePolyline", VEPolyline, "VEPolyline");
  var c = this.m_vegraphicspolylines.length;
  for (var b = 0;b < c;b++)
    if (a.ID == this.m_vegraphicspolylines[b].ID)
      throw new VEException("VEMap:DrawLine", "err_invalidpolylineid", L_invalidpolylineid_text);
  this.m_vegraphicspolylines.push(a);
  this.DrawOne(a, true);
}
);
VEGraphicsManager.prototype.RemovePolygon = (function (a)
{
  this.RemovePolygonbyId(a.ID);
}
);
VEGraphicsManager.prototype.RemovePolygonbyId = (function (b)
{
  if (this.m_vegraphiccanvas == null || this.m_vegraphiccanvas == "undefined")
    {
      throw new VEException("VEMap:RemovePolygonbyId", "err_GraphicsInitError", L_GraphicsInitError_Text);
      return ;
    }
  var c = this.m_vegraphicspolygons.length, a = 0;
  while (a < c && b != this.m_vegraphicspolygons[a].ID)
    a++;
  if (a < c)
    this.m_vegraphicspolygons.splice(a, 1);
  else
    {
      throw new VEException("VEMap:RemovePolygonbyId", "err_GraphicsInitError", L_invalidpolygonid_text);
      return ;
    }
  if (this.m_vemap.GetMapMode() == Msn.VE.MapActionMode.Mode3D)
    this.Clear3DShape(b);
  else
    {
      this.Clear();
      this.Draw();
    }
}
);
VEGraphicsManager.prototype.RemoveAllPolygons = (function ()
{
  if (this.m_vemap.GetMapMode() == Msn.VE.MapActionMode.Mode3D)
    this.ClearAll3DShape();
  this.m_vegraphicspolygons = [];
  this.Clear();
  this.Draw();
}
);
VEGraphicsManager.prototype.DrawPolygon = (function (a)
{
  if (this.m_vegraphiccanvas == null || this.m_vegraphiccanvas == "undefined")
    {
      throw new VEException("VEMap:DrawPolygon", "err_GraphicsInitError", L_GraphicsInitError_Text);
      return ;
    }
  VEValidator.ValidateObject(a, "vePolygon", VEPolygon, "VEPolygon");
  var c = this.m_vegraphicspolygons.length;
  for (var b = 0;b < c;b++)
    if (a.ID == this.m_vegraphicspolygons[b].ID)
      throw new VEException("VEMap:DrawPolygon", "err_invalidpolygonid", L_invalidpolygonid_text);
  this.m_vegraphicspolygons.push(a);
  this.DrawOne(a, false);
}
);
VEGraphicsManager.prototype.Dispose = (function ()
{
  if (this.m_vegraphiccanvas != null)
    {
      this.m_vegraphiccanvas.Clear();
      this.m_vegraphiccanvas.Destroy();
      this.m_vegraphiccanvas = null;
    }
  if (this.m_vegraphicspolylines != null && this.m_vegraphicspolylines != "undefined")
    {
      var b = this.m_vegraphicspolylines.length;
      for (var a = 0;a < b;a++)
        this.m_vegraphicspolylines.pop().Dispose();
    }
  if (this.m_vegraphicspolygons != null && this.m_vegraphicspolygons != "undefined")
    {
      var c = this.m_vegraphicspolygons.length;
      for (var a = 0;a < c;a++)
        this.m_vegraphicspolygons.pop().Dispose();
    }
  if (this.m_vemap != null)
    {
      this.m_vemapcontrol.DetachEvent("onchangeview", this.Update);
      this.m_vemapcontrol.DetachEvent("onobliquechange", this.Update);
      this.m_vemapcontrol.DetachEvent("onstartzoom", this.Clear);
    }
}
);
VEGraphicsManager.prototype.DrawAll3DPushpins = (function ()
{
  if (this.m_vemap.GetMapMode() != Msn.VE.MapActionMode.Mode3D)
    return ;
  if (! this.m_vemap.pushpins)
    return ;
  if (typeof this._spacecontrol == "undefined" || this._spacecontrol == null)
    this._spacecontrol = this.m_vemapcontrol.Get3DControl();
  if (! this._spacecontrol)
    return ;
  var c = this.m_vemap.pushpins, e = c.length;
  for (var a = 0;a < e;a++)
    {
      var b = c[a], d = b.LatLong;
      this.Add3DPushpin(b.ID, d.Latitude, d.Longitude, 25, 25, "VEAPI_Pushpin", b, Msn.VE.API.Globals.vepushpinpanelzIndex - 1);
    }
}
);
VEGraphicsManager.prototype.Add3DPushpin = (function (b,e,f,n,l,g,d,m)
{
  var h = f, j = e, k = this._hackUniqueLayerId, o = "text=\"\"", c;
  c = GetImageFullUrl(d.Iconurl);
  var i = b;
  this.m_vemapcontrol.Get3DControl().AddPointWithProperties(k, i, j, h, c, o);
  var a = null;
  if (! $ID(b))
    {
      a = this.m_vemapcontrol.AddPushpin(b, e, f, n, l, g, d.GetContent(), m, "VEAPI_Pushpin", false, false);
      if (a)
        a.style.display = "none";
    }
}
);
VEGraphicsManager.prototype.Remove3DPushpin = (function (a)
{
  if (typeof this._spacecontrol == "undefined" || this._spacecontrol == null)
    this._spacecontrol = this.m_vemapcontrol.Get3DControl();
  this.Clear3DShape(a);
  this.m_vemapcontrol.RemovePushpin(a);
}
);
VEGraphicsManager.prototype.ClearAllPushpins = (function (b)
{
  if (typeof this._spacecontrol == "undefined" || this._spacecontrol == null)
    this._spacecontrol = this.m_vemapcontrol.Get3DControl();
  var d = b.length;
  for (var c = 0;c < d;c++)
    {
      var a = b.pop();
      if (! a.IsInLayer)
        {
          this.Clear3DShape(a.ID);
          a.Dispose();
        }
    }
  this.m_vemapcontrol.ClearPushpins();
}
);
VEGraphicsManager.prototype.ClearAll3DShape = (function ()
{
  var c = null, b = 0;
  if (this.m_vegraphicspolylines != null && this.m_vegraphicspolylines != "undefined")
    {
      b = this.m_vegraphicspolylines.length;
      for (var a = 0;a < b;a++)
        {
          c = this.m_vegraphicspolylines[a];
          this.Clear3DShape(c.ID);
        }
    }
  if (this.m_vegraphicspolygons != null && this.m_vegraphicspolygons != "undefined")
    {
      b = this.m_vegraphicspolygons.length;
      for (var a = 0;a < b;a++)
        {
          c = this.m_vegraphicspolygons[a];
          this.Clear3DShape(c.ID);
        }
    }
}
);
VEGraphicsManager.prototype.Clear3DShape = (function (c)
{
  var a = c;
  this._spacecontrol.DeleteGeometry(this._hackUniqueLayerId, a);
  var b = a + this._entityIdShapePostfix;
  this._spacecontrol.DeleteGeometry(this._hackUniqueLayerId, b);
}
);
VELatLong.prototype.SetAltitude = (function (b,a)
{
  VEValidator.ValidateFloat(b, "altitude");
  this.Altitude = b;
  if (a != null)
    {
      VEValidator.ValidateAltitudeMode(a, "altitudeMode");
      this.AltitudeMode = a;
    }
  else
    this.AltitudeMode = VEAltitudeMode.Default;
}
);
VELatLong.prototype.HasAltitude = (function ()
{
  return this.Altitude != null;
}
);
VELatLong.prototype.toString = toString;
VELatLong.prototype.Clone = Clone;
VEAltitudeMode = new (function ()
{
  this.Default = "Ground";
  this.Absolute = "Datum";
  this.RelativeToGround = "Ground";
}
)();
VEPolyline.prototype.SetColor = SetColor;
VEPolyline.prototype.SetWidth = SetWidth;
VEPolyline.prototype.GetLatLongs = GetLatLongs;
VEPolyline.prototype.Dispose = Dispose;
VEPolygon.prototype.SetFillColor = SetFillColor;
VEPolygon.prototype.SetOutlineColor = SetOutlineColor;
VEPolygon.prototype.SetOutlineWidth = SetOutlineWidth;
VEPolygon.prototype.GetLatLongs = GetLatLongs;
VEPolygon.prototype.Dispose = Dispose;
var L_integerencodingoutofrange_text = "VEIntegerEncoding: The number encoded is out of supported range", L_floatintegermapencodingoutofrange_text = "VEFloatIntegerMap: The number encoded is out of supported range", L_integerencodinginvalidstringlength_text = "VEIntegerEncoding: Invalid string length", L_integerencodingunknowndigit_text = "VEIntegerEncoding: The encoded string has an unknown digit";
var L_velatlongencodinginvalidstringlength_text = "_xz1: Invalid string length";
VEMapMode = new (function ()
{
  this.Mode2D = 1;
  this.Mode3D = 2;
}
)();
VEMapViewSpecification.prototype.Clone = MapViewSpecClone;
VEMapStyle = new (function ()
{
  this.Road = Msn.VE.MapStyle.Road;
  this.Shaded = Msn.VE.MapStyle.Shaded;
  this.Aerial = Msn.VE.MapStyle.Aerial;
  this.Hybrid = Msn.VE.MapStyle.Hybrid;
  this.Oblique = Msn.VE.MapStyle.Oblique;
  this.Birdseye = Msn.VE.MapStyle.Oblique;
}
)();
VEOrientation = new (function ()
{
  this.North = Msn.VE.Orientation.North;
  this.East = Msn.VE.Orientation.East;
  this.West = Msn.VE.Orientation.West;
  this.South = Msn.VE.Orientation.South;
}
)();
VEMap.prototype.__HandleAuthentication = (function (a)
{
  if (this.vemapcontrol)
    this.vemapcontrol.__HandleAuthentication(a);
}
);
$VE_A.PgName = {Ads : "Ads Response", AdsListing : "Ads", Business : "Business Listing", BusinessWebsite : "Business Website", Call : "Click to Call", CategoryBrowser : "Category Browser", Collection : "Collections", ColBrowser : "Collection Browser", DD : "Driving Directions", Default : "Default", Details : "Details", Email : "Email", ERO : "ERO", Fav : "Favorites", Help : "Help", Home : "Home Page", MAB : "Map Action Bar", Map : "Map Control", Mobile : "Send to Mobile", PartyMap : "Party Map", PersonalLocations : "Personal Locations", PLink : "Permanlink", Print : "Print", SP : "Scratchpad", SReq : "Search Request", SRes : "Search Response", Traffic : "Traffic", WIP : "Welcome Panel", Inst3D : "Install 3D", Model3D : "3D Models", Quality3D : "3D Performance Options", TD : "Transit Directions"};
$VE_A.MapMode = ["ModeUnknown", "Mode2D", "Mode3D", "ModeOblique"];
$VE_A.analyticsEnabled = Msn.VE.API ? false : true;
$VE_A.logDelay = 500;
$VE_A.LogHelp = (function ()
{
  $VE_A.Log($VE_A.PgName.Help, "Help");
}
);
$VE_A.FireLog3DPan = (function ()
{
  $VE_A.Log($VE_A.PgName.Map, "3D PAN");
}
);
$VE_A.LogCategoryBrowser = (function (a)
{
  if (a == null || typeof a == "undefined")
    return ;
  if (a.EntryPoint != null)
    s.prop17 = a.EntryPoint;
  if (a.CategoryMode != null)
    s.eVar13 = a.CategoryMode;
  if (a.SearchId != null)
    s.eVar15 = a.SearchId;
  if (a.IsSearchRequest)
    s.events = "Event8";
  if (a.CategoryId != null)
    s.eVar14 = a.CategoryId;
  $VE_A.Log($VE_A.PgName.CategoryBrowser, a.NavAction);
}
);
$VE_A.LogSearchResponse = (function (a)
{
  if (a == null || typeof a == "undefined")
    return ;
  s.events = "Event10";
  $VE_A.SetProperties(null, map.GetMapMode() == Msn.VE.MapActionMode.ModeOblique ? 1 : map.GetZoomLevel(), a.CenterPoint.Latitude, a.CenterPoint.Longitude);
  if (a.BoundingBox != null)
    {
      var b = a.BoundingBox.NorthEastCorner, c = a.BoundingBox.SouthWestCorner;
      s.prop30 = "(" + b.Latitude + "," + b.Longitude + "),(" + c.Latitude + "," + c.Longitude + ")";
    }
  if (a.WhatString != null && a.WhatString != "")
    s.eVar22 = a.WhatString;
  if (a.WhereString != null && a.WhereString != "")
    s.eVar23 = a.WhereString;
  if (a.Classification != null && a.Classification != "")
    s.eVar25 = a.Classification;
  if (a.SearchId != null && a.SearchId != "")
    s.eVar15 = a.SearchId;
  if (a.PageNumber != null && a.PageNumber != - 1)
    s.prop7 = a.PageNumber;
  if (a.LocalSearchResultCount != null && a.LocalSearchResultCount != - 1)
    s.prop27 = a.LocalSearchResultCount;
  if (a.SortOrder != null && a.SortOrder != "")
    s.prop28 = a.SortOrder;
  if (a.SuggestedSearchTerm != null && a.SuggestedSearchTerm != "")
    s.eVar19 = a.SuggestedSearchTerm;
  if (a.DisambiguationCase != null && a.DisambiguationCase != "")
    s.prop41 = a.DisambiguationCase;
  $VE_A.Log($VE_A.PgName.SRes, a.NavAction);
}
);
$VE_A.LogSearchNavAction = (function (f,e,a,b,c,d)
{
  if (a != null && typeof a != "undefined")
    s.prop17 = a;
  if (VE_SearchManager.searchId != null)
    s.eVar15 = VE_SearchManager.searchId;
  if (b != null && typeof b != "undefined")
    s.prop12 = b;
  if (c != null && typeof c != "undefined")
    s.prop38 = c;
  if (d != null && typeof d != "undefined")
    s.prop21 = d;
  $VE_A.Log(f, e);
}
);
$VE_A.LogAdsResponse = (function (i,k,j,m,n,h,g,d,c,b,f,a,e)
{
  if (h || b || a)
    {
      s.events = h;
      var o = $VE_A.PgName.Ads, l = "Ads Results";
      $VE_A.SetProperties(n, m, k, j);
      if (i != null)
        s.eVar8 = i;
      if (isFinite(parseInt(d)))
        s.eVar10 = d;
      if (isFinite(parseInt(c)))
        s.eVar16 = c;
      if (g != null)
        s.eVar12 = g;
      if (b != null)
        s.prop18 = b;
      if (f != null)
        s.prop25 = f;
      if (a != null)
        s.prop19 = a;
      if (e != null)
        s.prop26 = e;
      $VE_A.Log(o, l);
    }
}
);
$VE_A.LogUIPrint = (function (a)
{
  s.events = "Event11";
  s.eVar34 = a;
  $VE_A.Log($VE_A.PgName.Print, "Print page invoked.");
}
);
$VE_A.LogAdClick = (function (h,d,g,e,c,f)
{
  var a = "Ad Click", b;
  switch (d)
  {
    case 1:
      a += " - click on title";
      b = $VE_A.PgName.AdsListing;
      break ;
    case 2:
      a += " - click on Directions link";
      b = $VE_A.PgName.DD;
      break ;
    case 3:
      a += " - click on Website link";
      b = $VE_A.PgName.BusinessWebsite;
      break ;
    case 8:
      a += " - click on Phone link";
      b = $VE_A.PgName.AdsListing;
      break ;
    case 10:
      a += " - click on pushpin";
      b = $VE_A.PgName.ERO;
  }
  $VE_A.SetAdClickProperties(h, g, e, c, f);
  $VE_A.Log(b, a, $VE_A.PgName.AdsListing);
}
);
$VE_A.LogAdEROClick = (function (f,e,c,h,g,b,a,d)
{
  $VE_A.SetAdClickProperties(h, g, b, a, d);
  $VE_A.Log(f, e, c);
}
);
$VE_A.SetAdClickProperties = (function (e,d,b,a,c)
{
  s.events = "Event6";
  s.eVar12 = b;
  s.eVar11 = d;
  s.eVar30 = a;
  s.eVar29 = c;
  s.eVar8 = e;
}
);
$VE_A.SetProperties = (function (d,c,b,a)
{
  if (d != null)
    s.prop3 = d;
  if (c != null)
    s.prop4 = c;
  if (b != null && a != null)
    s.prop5 = $VE_A.FormatLatLong(b, a);
}
);
$VE_A.LogSearch = (function (f)
{
  var a = "", c = "", b = "";
  s.eVar13 = "Single Box";
  switch (f)
  {
    case "taskBar_searchbttn":
      b = "Business";
      if (Search_oneBox === "true")
        a = ($get("taskBar_qparam")).value;
      else
        {
          s.eVar13 = "Double Box";
          a = ($get("taskBar_what")).value;
          c = ($get("taskBar_where")).value;
        }
      break ;
    case "taskBar_peoplebttn":
      b = "People";
      a = ($get("taskBar_peoplesearch")).value;
      break ;
    case "taskBar_collbttn":
      b = "Collections";
      a = ($get("taskBar_collsearch")).value;
      break ;
    case "taskBar_placesbttn":
      b = "Places";
      a = ($get("taskBar_placessearch")).value;
  }
  var e = $get("taskBar_searchid");
  s.eVar15 = e.value;
  s.events = "Event8";
  s.pageName = $VE_A.PgName.SReq;
  s.prop6 = "Search Request - " + b;
  s.eVar24 = b;
  s.prop3 = window["map"] ? map.GetMapStyle() : "";
  s.prop4 = window["map"] ? map.GetZoomLevel() : "";
  s.prop5 = window["map"] ? $VE_A.FormatLatLong(map.GetCenterLatitude(), map.GetCenterLongitude()) : "";
  s.prop8 = a ? a : "";
  s.prop9 = c ? c : "";
  s.prop13 = window["map"] ? $VE_A.MapMode[(map.GetMode())] : "";
  s.prop36 = window.usertype == undefined ? 1 : usertype;
  var d = $ID("logging");
  if (d)
    d.innerHTML = s.t();
  $VE_A.ResetLogProps();
}
);
$VE_A.LogCollectionId = (function (c,b,a)
{
  if (a)
    s.prop39 = a;
  $VE_A.Log(c, b);
}
);
$VE_A.LogClick2Call = (function ()
{
  if (VE_SearchManager.searchId != null)
    s.eVar15 = VE_SearchManager.searchId;
  if (VE_SearchManager.activeEntityId != null)
    s.prop38 = VE_SearchManager.activeEntityId;
  if (VE_SearchManager.activeIndex != - 1)
    s.prop12 = VE_SearchManager.activeIndex;
  if (ero.isInUse())
    {
      s.prop17 = $VE_A.PgName.ERO;
      $VE_A.Log($VE_A.PgName.Call, "Search Result ERO - click on C2C");
    }
  else
    {
      s.prop17 = $VE_A.PgName.SRes;
      $VE_A.Log($VE_A.PgName.Call, "Result item: click on C2C");
    }
}
);
$VE_A.LogSend2Phone = (function ()
{
  if (VE_SearchManager.searchId != null)
    s.eVar15 = VE_SearchManager.searchId;
  if (VE_SearchManager.activeEntityId != null)
    s.prop38 = VE_SearchManager.activeEntityId;
  if (VE_SearchManager.activeIndex != - 1)
    s.prop12 = VE_SearchManager.activeIndex;
  if (ero.isInUse())
    {
      s.prop17 = $VE_A.PgName.ERO;
      $VE_A.Log($VE_A.PgName.Mobile, "Search Result ERO - click on S2M");
    }
  else
    {
      s.prop17 = $VE_A.PgName.SRes;
      $VE_A.Log($VE_A.PgName.Mobile, "Result item: click on S2M");
    }
}
);
$VE_A.FormatLatLong = (function (b,a)
{
  if (! b || ! a)
    {
      if (state && state.GetLatitude() && state.GetLongitude())
        return state.GetLatitude().toFixed(3) + "," + state.GetLongitude().toFixed(3);
      return "0.0,0.0";
    }
  return b.toFixed(3) + "," + a.toFixed(3);
}
);
$VE_A.LogDDEntryPoint = (function (a)
{
  s.prop17 = a;
  $VE_A.Log($VE_A.PgName.DD, "Open Directions");
}
);
$VE_A.LogTrafficActivation = (function (a)
{
  if (s.events == "undefined" || s.events == null || s.events == "")
    s.events = "Event12";
  else
    s.events += ",Event12";
  s.eVar1 = a;
  if (window["map"])
    s.eVar3 = map.GetCenterLatitude() + "," + map.GetCenterLongitude();
  $VE_A.Log($VE_A.PgName.Traffic, "Traffic activated", a);
}
);
$VE_A.LogDirections = (function (d,h,f,g,c,e,a,b,i)
{
  s.events = "Event3";
  s.eVar1 = d;
  s.eVar2 = h;
  s.eVar3 = f;
  s.eVar4 = g;
  s.eVar5 = c;
  s.eVar6 = e;
  s.eVar31 = a;
  s.eVar32 = b;
  s.eVar33 = i;
  $VE_A.Log($VE_A.PgName.DD, VE_Directions.NavigationAction.GetDirections);
}
);
$VE_A.LogTDEntryPoint = (function (a)
{
  s.prop17 = a;
  $VE_A.Log($VE_A.PgName.TD, "Open Transit Panel", a);
}
);
$VE_A.LogTDNavigationAction = (function (b,a)
{
  if (a != null)
    s.eVar36 = a + 1;
  $VE_A.Log($VE_A.PgName.TD, b);
}
);
$VE_A.LogTDirections = (function (g,h,i,d,e,f,b,a,c)
{
  s.events = "Event15";
  s.eVar2 = g;
  s.eVar3 = d + "/" + e;
  s.eVar4 = f;
  s.eVar5 = b;
  s.eVar6 = c;
  s.eVar7 = a;
  s.eVar26 = h + "/" + i;
  $VE_A.Log($VE_A.PgName.TD, VE_Transit.NavigationAction.GetDirections);
}
);
$VE_A.LogPartyMap = (function (b,d,c,a)
{
  s.events = "Event16";
  s.eVar1 = b;
  s.eVar2 = d;
  s.eVar3 = c;
  s.eVar6 = a;
  $VE_A.Log($VE_A.PgName.PartyMap, "Party Map Invoked");
}
);
$VE_A.Log3DTour = (function (c,b,a)
{
  if (typeof b == "string")
    s.prop17 = b;
  if (typeof a == "string")
    s.prop44 = a;
  $VE_A.Log($VE_A.PgName.Collection, "3DTour " + c);
}
);
$VE_A.Log3DOblique = (function (f,a,b,d,e,c)
{
  if ($VE_A.analyticsEnabled && typeof s != "undefined" && s != null)
    {
      if (a != null)
        s.prop46 = a;
      if (b != null)
        s.prop47 = b;
      if (d != null && e != null && c != null)
        s.prop49 = d + "," + e + "," + c;
      $VE_A.Log($VE_A.PgName.Map, f);
    }
}
);
$VE_A.LogPersonalLocation = (function (a,b,c)
{
  var d = a + " - " + TrimLocationName(b) + " " + c + " (Personal Location)";
  $VE_A.Log($VE_A.PgName.PersonalLocations, d);
}
);
$VE_A.LogDisambiguation = (function (g,f,e,h,c,d,i,a,b)
{
  if (i)
    s.events = "Event14";
  if (a && a != "")
    {
      s.eVar13 = "Disambiguation";
      s.eVar25 = a;
    }
  s.eVar15 = h;
  s.prop8 = f;
  s.prop9 = e;
  s.prop41 = c;
  s.prop42 = d;
  if (b)
    s.prop12 = b;
  $VE_A.Log($VE_A.PgName.SRes, "Search Results: Disambiguation - " + g, "Disambiguation");
}
);
$VE_A.Log = (function (f,d,c)
{
  if (window.s == "undefined" || window.s == null)
    return ;
  if (! $VE_A.analyticsEnabled)
    return ;
  s.pageName = f;
  if (s.events == "undefined" || s.events == null || s.events == "")
    s.events = "Event9";
  else
    s.events += ",Event9";
  if (s.prop3 == "")
    s.prop3 = window["map"] ? map.GetMapStyle() : "";
  if (s.prop4 == "")
    s.prop4 = window["map"] ? map.GetZoomLevel() : "";
  if (s.prop5 == "")
    s.prop5 = window["map"] ? $VE_A.FormatLatLong(map.GetCenterLatitude(), map.GetCenterLongitude()) : "";
  s.prop6 = d ? d : "";
  if (s.prop8 == "")
    s.prop8 = $ID("what") ? ($ID("what")).value == L_MainWhatHelp_Text ? "" : ($ID("what")).value : "";
  if (s.prop9 == "")
    s.prop9 = $ID("where") ? ($ID("where")).value == L_SearchUseCurrentViewText_Text ? state.GetStartWhere() : ($ID("where")).value : "";
  s.prop13 = window["map"] ? $VE_A.MapMode[(map.GetMode())] : "";
  s.prop36 = window.usertype == undefined ? 1 : usertype;
  s.charSet = "UTF-8";
  s.prop50 = g_omniFlightSuite;
  if (s.prop13 == Msn.VE.MapActionMode.Mode3D)
    {
      var a = map.GetCurrentMapView(), b = null;
      if (a.cameraLatlong != null && a.cameraLatlong != "undefined")
        b = a.cameraLatlong.latitude.toFixed(3) + "," + a.cameraLatlong.longitude.toFixed(3);
      else
        b = a.latlong.latitude.toFixed(3) + "," + a.latlong.longitude.toFixed(3);
      s.prop14 = b + "," + a.GetAltitude().toFixed(0) + "," + a.GetTilt().toFixed(1) + "," + a.GetDirection().toFixed(1);
    }
  else
    s.prop14 = "";
  if (! s.prop17 && c != null)
    s.prop17 = c;
  var e = $ID("logging");
  if (e)
    e.innerHTML = s.t();
  $VE_A.ResetLogProps();
}
);
$VE_A.ResetLogProps = (function ()
{
  s.prop3 = "";
  s.prop4 = "";
  s.prop5 = "";
  s.prop6 = "";
  s.prop7 = "";
  s.prop8 = "";
  s.prop10 = "";
  s.prop11 = "";
  s.prop12 = "";
  s.prop17 = "";
  s.prop18 = "";
  s.prop19 = "";
  s.prop21 = "";
  s.prop25 = "";
  s.prop26 = "";
  s.prop27 = "";
  s.prop28 = "";
  s.prop29 = "";
  s.prop30 = "";
  s.prop32 = "";
  s.prop33 = "";
  s.prop34 = "";
  s.prop35 = "";
  s.prop36 = "";
  s.prop38 = "";
  s.prop39 = "";
  s.prop41 = "";
  s.prop42 = "";
  s.prop45 = "";
  s.prop46 = "";
  s.prop47 = "";
  s.prop48 = "";
  s.prop49 = "";
  s.prop50 = "";
  s.events = "";
  s.eVar8 = "";
  s.eVar9 = "";
  s.eVar10 = "";
  s.eVar11 = "";
  s.eVar12 = "";
  s.eVar13 = "";
  s.eVar14 = "";
  s.eVar15 = "";
  s.eVar16 = "";
  s.eVar19 = "";
  s.eVar22 = "";
  s.eVar23 = "";
  s.eVar24 = "";
  s.eVar25 = "";
  s.eVar29 = "";
  s.eVar30 = "";
  s.campaign = "";
  s.eVar1 = "";
  s.eVar2 = "";
  s.eVar3 = "";
  s.eVar4 = "";
  s.eVar5 = "";
  s.eVar6 = "";
  s.eVar31 = "";
  s.eVar32 = "";
  s.eVar33 = "";
  s.eVar2 = "";
  s.eVar20 = "";
  s.eVar34 = "";
  s.eVar36 = "";
  s.eVar7 = "";
  s.eVar26 = "";
}
);
var VE_ModuleName = {APICORE : "__core__", APICONTROLS : "__controls__", APIBIRDSEYE : "__birdseye__", APILAYERS : "__layers__", APIFIND : "__find__", APIROUTING : "__routing__", APITRAFFIC : "__traffic__", API3D : "__3d__", APITILES : "__tiles__"}, _VE_ModuleStatus = {__core__ : "loaded", __layers__ : null, __controls__ : null, __find__ : null, __routing__ : null, __traffic__ : null, ___3d__ : null, __birdseye__ : null, __tiles__ : null};
VE_RequestUrl = Msn.VE.API.Globals.vecurrentdomain + "/veapi.ashx?VEAPI_DisableAtlasCompat=true&v=" + Msn.VE.API.Globals.vecurrentversion + "&__load__";
var _VEDownloadQueue = null;
_VERegisterNamespaces("Msn.VE");
Msn.VE.Animation = {Animation : (function (h,f)
{
  function c()
  {
    if (b)
      {
        e();
        a = setTimeout(c, d);
      }
    else
      a = null;
  }
  function g()
  {
    if (! b)
      {
        b = true;
        c();
        a = window.setTimeout(c, d);
      }
  }
  function i()
  {
    if (a != null)
      {
        window.clearTimeout(a);
        a = null;
      }
    b = false;
  }
  var b = false;
  this.Running = b;
  var e = h, d = f, a = null;
  this.Start = g;
  this.Stop = i;
}
), AccelerationFunction : (function (e)
{
  function c()
  {
    b = [];
    b[0] = 0;
    for (var c = 1;c <= a;c++)
      b[c] = b[(c - 1)] + d(c / a);
  }
  var b = null, a = 200, d = e;
  this.setSteps = (function (d)
{
  a = d;
  b = null;
  c();
}
);
  this.getSteps = (function ()
{
  return a;
}
);
  this.getValue = (function (e)
{
  if (! b)
    c();
  var d = parseInt(Math.round(e * a));
  if (d < 0)
    d = 0;
  if (d > a)
    d = a;
  return b[d];
}
);
  this.getTotal = (function ()
{
  return this.getValue(1);
}
);
}
), Movie : (function (b,g)
{
  function h()
  {
    c++;
    if (c > e.length - 1)
      {
        c = 0;
        if (! a.Repeat)
          {
            clearInterval(d);
            return ;
          }
        else
          a.clear();
      }
    f(c);
  }
  function f(c)
  {
    var a = e[c];
    if (a.append)
      b.innerHTML += a.data;
    else
      b.innerHTML = a.data;
  }
  var a = this;
  this.Repeat = true;
  this.AppendContent = true;
  var e = [], c = - 1, d = null;
  this.addFrame = (function (b,a)
{
  if (a == null)
    a = true;
  var c = {data : b, append : a};
  e.push(c);
}
);
  this.start = (function ()
{
  a.stop();
  a.show();
  a.clear();
  c = - 1;
  d = setInterval(h, g);
}
);
  this.stop = (function ()
{
  if (d)
    clearInterval(d);
}
);
  this.end = (function ()
{
  a.stop();
  f(e.length - 1);
}
);
  this.show = (function ()
{
  b.style.visibility = "visible";
}
);
  this.hide = (function ()
{
  b.style.visibility = "hidden";
}
);
  this.clear = (function ()
{
  b.innerHTML = "";
}
);
}
), RollDirection : {TopDown : 1, RightLeft : 2, BottomUp : 4, LeftRight : 8}, RollStyle : {In : 0, Out : 1}, Roller : (function (q)
{
  function k(u,k,t)
  {
    function v(i)
    {
      return (function ()
{
  var m = parseInt(Math.round(e.getValue(i) * C)) + q, n = parseInt(Math.round(e.getValue(i) * D)) + r, j = {top : 0, right : 0, bottom : 0, left : 0};
  if ((k & a.RollDirection.TopDown) == a.RollDirection.TopDown)
    {
      l.Functions.setClip(b, f.top, n + "px");
      j.top = n - r;
    }
  if ((k & a.RollDirection.RightLeft) == a.RollDirection.RightLeft)
    {
      l.Functions.setClip(b, f.right, y - m + "px");
      j.right = - m + q;
    }
  if ((k & a.RollDirection.BottomUp) == a.RollDirection.BottomUp)
    {
      l.Functions.setClip(b, f.bottom, w - n + "px");
      j.bottom = - n + r;
    }
  if ((k & a.RollDirection.LeftRight) == a.RollDirection.LeftRight)
    {
      l.Functions.setClip(b, f.left, m + "px");
      j.left = m - q;
    }
  if (d != null)
    {
      var p;
      for (p = 0;p < d.length;p++)
        {
          var o = d[p], t = j.top + j.bottom, x = o.origPos.y + t, s = j.left + j.right, v = o.origPos.x + s;
          if (s != 0)
            o.style.left = v + "px";
          if (t != 0)
            o.style.top = x + "px";
        }
    }
  if (i == 1)
    {
      g = false;
      if (u == a.RollStyle.In)
        c.executeEvent("afterrollin", c, new h.EventArgs("afterrollin", b));
      else
        {
          b.style.clip = "rect(auto auto auto auto)";
          c.executeEvent("afterrollout", c, new h.EventArgs("afterrollout", b));
        }
    }
  c.executeEvent("roll", c, new h.EventArgs("roll", b));
}
);
    }
    g = true;
    if (t !== false)
      t = true;
    n();
    var f = p, q = 0, r = 0;
    if (u == a.RollStyle.Out)
      {
        f = o;
        q = i;
        r = j;
      }
    var y = b.offsetWidth, w = b.offsetHeight, A = y - i, B = w - j, C = A / e.getTotal(), D = B / e.getTotal(), x = e.getSteps();
    if (! t)
      {
        v(1)();
        return ;
      }
    for (var s = 0;s <= x;s++)
      {
        var z = s / x;
        setTimeout(v(z), s * m);
      }
  }
  function n()
  {
    var b = Msn.VE.Css;
    if (d == null)
      return ;
    var c, i = d.length;
    for (c = 0;c < i;c++)
      {
        var a = d[c];
        a.origPos = {x : parseInt(b.Functions.getComputedStyle(a, "left")), y : parseInt(b.Functions.getComputedStyle(a, "top"))};
        if (isNaN(a.origPos.x))
          {
            var f = parseInt(b.Functions.getComputedStyle(a, "marginLeft"), 10), e = parseInt(b.Functions.getCoputedStyle(a, "paddingLeft"), 10);
            a.origPos.x = a.offsetLeft - (isNaN(f) ? 0 : f) - (isNaN(e) ? 0 : e);
          }
        if (isNaN(a.origPos.y))
          {
            var h = parseInt(b.Functions.getComputedStyle(a, "marginTop"), 10), g = parseInt(b.Functions.getComputedStyle(a, "paddingTop"), 10);
            a.origPos.y = a.offsetTop - (isNaN(h) ? 0 : h) - (isNaN(g) ? 0 : g);
          }
      }
    b = null;
  }
  var c = this;
  this.superclass = Msn.VE.OO.Eventable.EventableObject;
  this.superclass();
  var l = Msn.VE.Css, a = Msn.VE.Animation, h = Msn.VE.OO.Eventable, b = q, d = null, f = true, g = false, e = AccelerationFunctions.CrazyElevator, i = 10, j = 10, m = 5, p = {top : 1, right : 2, bottom : 3, left : 4}, o = {top : 3, right : 4, bottom : 1, left : 2};
  this.setAccelerationFunction = (function (a)
{
  if (a  instanceof  Msn.VE.Animation.AccelerationFunction)
    e = a;
}
);
  this.setXLeave = (function (a)
{
  if (typeof a == "number" && a >= 0)
    i = Math.floor(a, 10);
}
);
  this.setYLeave = (function (a)
{
  if (typeof a == "number" && a >= 0)
    j = Math.floor(a, 10);
}
);
  this.getLeave = (function ()
{
  return {x : i, y : j};
}
);
  this.setDelay = (function (a)
{
  if (typeof a == "number" && a > 0)
    m = Math.floor(a, 10);
}
);
  this.isExpanded = (function ()
{
  return f;
}
);
  this.isRolling = (function ()
{
  return g;
}
);
  this.isAssociated = (function ()
{
  if (d != null && d.length > 0)
    return true;
  return false;
}
);
  this.associate = (function (a)
{
  if (a  instanceof  Array)
    d = a;
}
);
  this.rollIn = (function (d)
{
  if (g)
    return ;
  c.executeEvent("beforerollin", c, new h.EventArgs("beforerollin", b));
  k(a.RollStyle.In, d);
  f = false;
}
);
  this.rollOut = (function (d)
{
  if (g)
    return ;
  c.executeEvent("beforerollout", c, new h.EventArgs("beforerollout", b));
  k(a.RollStyle.Out, d);
  f = true;
}
);
  this.expand = (function (b)
{
  k(a.RollStyle.Out, b, false);
  f = true;
}
);
  this.collapse = (function (b)
{
  k(a.RollStyle.In, b, false);
  f = false;
}
);
}
), Slider : (function ()
{
  var d = this, c = Msn.VE.Geometry, a = AccelerationFunctions.Linear, b = 5;
  this.setAccelerationFunction = (function (b)
{
  if (b  instanceof  Msn.VE.Animation.AccelerationFunction)
    a = b;
}
);
  this.setDelay = (function (a)
{
  if (typeof a == "number" && a > 0)
    b = a;
}
);
  this.slideToPoint = (function (e,i)
{
  function q(a,b)
  {
    return (function ()
{
  e.style.top = parseInt(Math.round(b)) + "px";
  e.style.left = parseInt(Math.round(a)) + "px";
}
);
  }
  var d = new c.Point(e.offsetLeft, e.offsetTop), n = d.getDistanceFrom(i);
  a.setSteps(Math.floor(n / 10));
  var p = n / a.getTotal(), o = i.y - d.y, l = i.x - d.x, f = Math.atan(o / l), m = a.getSteps();
  for (var h = 0;h <= m;h++)
    {
      sum = a.getValue(h / m);
      var g = sum * p, k, j;
      if (l < 0)
        {
          k = d.y - Math.sin(f) * g;
          j = d.x - Math.cos(f) * g;
        }
      else
        {
          k = d.y + Math.sin(f) * g;
          j = d.x + Math.cos(f) * g;
        }
      setTimeout(q(j, k), h * b);
    }
}
);
}
)};
var AccelerationFunctions = {Linear : new Msn.VE.Animation.AccelerationFunction((function ()
{
  return 1;
}
)), ExponentialAcc : new Msn.VE.Animation.AccelerationFunction((function (b)
{
  var a = 0, d = 1, c = d - a, f = a + b * c, e = Math.pow(f, 2);
  return e;
}
)), ExponentialDec : new Msn.VE.Animation.AccelerationFunction((function (b)
{
  var a = - 1, d = 0, c = d - a, f = a + b * c, e = Math.pow(f, 2);
  return e;
}
)), CosineWave : new Msn.VE.Animation.AccelerationFunction((function (b)
{
  var a = - Math.PI, d = Math.PI, c = d - a, f = a + b * c, e = Math.cos(f) + 1;
  return e;
}
)), CrazyElevator : new Msn.VE.Animation.AccelerationFunction((function (b)
{
  var a = - 5, d = 5, c = d - a, f = a + b * c, e = 2 / (Math.pow(Math.abs(f), 3) + 1);
  return e;
}
))};
_VERegisterNamespaces("Msn.VE.Geometry");
Msn.VE.Geometry.Point = (function (c,d)
{
  var a = this, b = Msn.VE.Geometry;
  this.x = c;
  this.y = d;
  this.add = (function (c,d)
{
  var e = new b.Point(a.x + c, a.y + d);
  return e;
}
);
  this.getDistanceFrom = (function (b)
{
  var c = Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2), d = Math.sqrt(c);
  return d;
}
);
}
);
Msn.VE.Geometry.Overlap = {Range : {GreaterThanX : 1, LessThanX : 2, GreaterThanY : 4, LessThanY : 8, InXRange : 16, InYRange : 32, InRange : 48}, getInstance : (function (f,g)
{
  function e()
  {
    if ((b.getP2()).x > (a.getP2()).x)
      c += d.Range.GreaterThanX;
    if ((b.getP1()).x < (a.getP1()).x)
      c += d.Range.LessThanX;
    if ((b.getP2()).y > (a.getP2()).y)
      c += d.Range.GreaterThanY;
    if ((b.getP1()).y < (a.getP1()).y)
      c += d.Range.LessThanY;
    if ((a.getP1()).x <= (b.getP1()).x && (b.getP2()).x <= (a.getP2()).x)
      c += d.Range.InXRange;
    if ((a.getP1()).y <= (b.getP1()).y && (b.getP2()).y <= (a.getP2()).y)
      c += d.Range.InYRange;
  }
  var d = Msn.VE.Geometry.Overlap, a = f, b = g, c = 0;
  e();
  this.getRange = (function ()
{
  return c;
}
);
  this.getLeftXBleed = (function ()
{
  if (c & d.Range.LessThanX)
    return Math.abs((a.getP1()).x - (b.getP1()).x);
  else
    return 0;
}
);
  this.getRightXBleed = (function ()
{
  if (c & d.Range.GreaterThanX)
    return (b.getP2()).x - (a.getP2()).x;
  else
    return 0;
}
);
  this.getTopYBleed = (function ()
{
  if (c & d.Range.LessThanY)
    return Math.abs((a.getP1()).y - (b.getP1()).y);
  else
    return 0;
}
);
  this.getBottomYBleed = (function ()
{
  if (c & d.Range.GreaterThanY)
    return (b.getP2()).y - (a.getP2()).y;
  else
    return 0;
}
);
}
)};
Msn.VE.Geometry.Rectangle = (function (h,i)
{
  function f()
  {
    c();
  }
  function c()
  {
    d = b.y - a.y;
    e = b.x - a.x;
  }
  var g = this, a = h, b = i, d, e;
  f();
  this.move = (function (c)
{
  a.x = c.x;
  a.y = c.y;
  b.x = c.x + e;
  b.y = c.y + d;
}
);
  this.getP1 = (function ()
{
  return a;
}
);
  this.getP2 = (function ()
{
  return b;
}
);
  this.setP1 = (function (b)
{
  a = b;
  c();
}
);
  this.setP2 = (function (a)
{
  b = a;
  c();
}
);
  this.getWidth = (function ()
{
  return e;
}
);
  this.getHeight = (function ()
{
  return d;
}
);
  this.containsPoint = (function (c)
{
  return c.x >= a.x && c.x <= b.x && c.y >= a.y && c.y <= b.y;
}
);
  this.scale = (function (d)
{
  a.x -= d;
  a.y -= d;
  b.x += d;
  b.y += d;
  c();
}
);
  this.getOverlap = (function (a)
{
  var b = Msn.VE.Geometry;
  return new b.Overlap.getInstance(g, a);
}
);
}
);
Msn.VE.Geometry.Functions = {getSlope : (function (a,b)
{
  return (b.y - a.y) / (b.x - a.x);
}
), getYIntercept : (function (b,a)
{
  return a.y - b * a.x;
}
), getBestBoundingPoint : (function (f,b,c)
{
  var a = Msn.VE.Geometry;
  if (! b)
    b = g(f).getScreenPosition();
  var e = new a.Rectangle(b, new a.Point(b.x + f.offsetWidth, b.y + f.offsetHeight)), j = c.getOverlap(e), d = j.getRange();
  if ((d & a.Overlap.Range.InRange) == a.Overlap.Range.InRange)
    return b;
  var h = b.x, i = b.y;
  if (d & a.Overlap.Range.GreaterThanX)
    h = (c.getP2()).x - e.getWidth();
  if (d & a.Overlap.Range.LessThanX)
    h = (c.getP1()).x;
  if (d & a.Overlap.Range.GreaterThanY)
    i = (c.getP2()).y - e.getHeight();
  if (d & a.Overlap.Range.LessThanY)
    i = (c.getP1()).y;
  return new a.Point(h, i);
}
)};
_VERegisterNamespaces("Msn.VE.OO.Eventable");
Msn.VE.OO.Eventable.EventArgs = (function (b,a)
{
  this.EventName = b;
  this.Recipient = a;
}
);
Msn.VE.OO.Eventable.EventableObject = (function ()
{
  function b(b)
  {
    var c = b, a = [];
    this.addEvent = (function (c)
{
  if (typeof c == "function")
    {
      var b;
      for (b = 0;b < a.length;b++)
        if (a[b] == c)
          return ;
      a.push(c);
    }
}
);
    this.removeEvent = (function (c)
{
  if (typeof c != "function")
    return ;
  var b;
  for (b = 0;b < a.length;b++)
    if (a[b] == c)
      {
        a[b] = null;
        delete a[b];
        a.splice(b, 1);
      }
}
);
    this.destroy = (function ()
{
  var b;
  for (b = 0;b < a.length;b++)
    {
      a[b] = null;
      delete a[b];
    }
}
);
    this.getEvents = (function ()
{
  return a;
}
);
  }
  function c()
  {
    var d;
    for (d in a)
      if (a[d]  instanceof  b)
        {
          a[d].destroy();
          a[d] = null;
        }
    a = null;
    window.detachEvent("onunload", c);
  }
  if (typeof window.attachEvent != "undefined")
    window.attachEvent("onunload", c);
  var a = [];
  this.getEventHash = (function ()
{
  return a;
}
);
  this.hookEvent = (function (d,e)
{
  var c = a[d];
  if (typeof c == "undefined" || c == null)
    {
      c = new b(d);
      a[d] = c;
    }
  c.addEvent(e);
}
);
  this.unhookEvent = (function (d,e)
{
  var c = a[d];
  if (c  instanceof  b)
    c.removeEvent(e);
}
);
  this.executeEvent = (function (g,h,f)
{
  var d = a[g];
  if (! (d  instanceof  b))
    return ;
  var e = d.getEvents(), c;
  for (c = 0;c < e.length;c++)
    e[c].call(h, f);
}
);
}
);
var ERO = {Classes : {ContainerNoBeak : "ero ero-noBeak", ContainerRightBeak : "ero ero-rightBeak", ContainerLeftBeak : "ero ero-leftBeak", Beak : "ero-beak", Shadow : "ero-shadow", Body : "ero-body", Actions : "ero-actions", ActionsBackground : "ero-actionsBackground", PreviewArea : "ero-previewArea", PaddingHack : "ero-paddingHack", ProgressAnimation : "ero-progressAnimation"}, DefaultClasses : null, BeakDirection : {Right : 0, Left : 1}, DockPosition : {Top : 0, Center : 1}, m_theEro : null, BeakHeight : 34, Glitz : (function (d,e,b,c)
{
  var a = this;
  this.useBeak = d;
  this.useFade = e;
  this.useProgressTimer = b;
  this.isTemporary = c;
  this.copy = (function ()
{
  return new ERO.Glitz(a.useBeak, a.useFade, a.useProgressTimer, a.isTemporary);
}
);
}
), EROEventArgs : (function (c,a,b)
{
  this.superclass = Msn.VE.OO.Eventable.EventArgs;
  this.superclass(c, a);
  this.Entity = b;
}
), getInstance : (function ()
{
  function b()
  {
    function E(b,a)
    {
      if (b == a)
        return false;
      while (a && a != b)
        a = a.parentNode;
      return a == b;
    }
    function w()
    {
      j = true;
    }
    function x(a)
    {
      var d = a.relatedTarget || a.toElement || a.srcElement;
      if (! E(b, d))
        c.hide();
    }
    function t()
    {
      if (b)
        {
          if (b.style.visibility != "visible")
            b.style.visibility = "visible";
          if (typeof b.style.opacity != "undefined")
            b.style.opacity = 1;
          c.executeEvent("aftershow", c, new ERO.EROEventArgs("aftershow", b, k));
          h = C.copy();
        }
    }
    function A()
    {
      if (! j && b)
        {
          c.executeEvent("beforehide", c, new ERO.EROEventArgs("beforehide", b, k));
          b.style.visibility = "hidden";
          e.hide();
          if (! Msn.VE.API)
            {
              d.style.left = b.style.left = "0";
              d.style.top = b.style.top = "0";
            }
          k = null;
          c.executeEvent("afterhide", c, new ERO.EROEventArgs("afterhide", b, k));
        }
      if (B)
        n = 0;
    }
    function F()
    {
      function a()
      {
        if (j && ++v <= 10)
          {
            var c = v * 0.09999999;
            b.style.opacity = c;
            setTimeout(a, 50);
          }
        else
          {
            t();
            v = 0;
          }
      }
      if (z || ! j || ! b)
        return ;
      if (b.style && typeof b.style.filter != "undefined")
        {
          b.style.filter = "progid:DXImageTransform.Microsoft.Fade(duration=.5)";
          b.filters[0].Apply();
          b.style.visibility = "visible";
          b.style.display = "block";
          b.filters[0].Play();
          var c = setInterval((function ()
{
  if (b.filters[0].status == 0)
    {
      clearInterval(c);
      t();
    }
}
), 10);
        }
      else
        {
          b.style.visibility = "visible";
          if (v === 0)
            a();
        }
    }
    function D()
    {
      b.className = ERO.Classes.Container;
      r.className = ERO.Classes.Shadow;
      i.className = ERO.Classes.Body;
      s.className = ERO.Classes.Beak;
      q.className = ERO.Classes.Actions;
      m.className = ERO.Classes.ActionsBackground;
      l.className = ERO.Classes.PreviewArea;
      u.className = ERO.Classes.PaddingHack;
      d.className = ERO.Classes.ProgressAnimation;
    }
    this.superclass = Msn.VE.OO.Eventable.EventableObject;
    this.superclass();
    var c = this, y = null, f = null, k = null, j = false, o = 500, n = 0, B = true, h = new ERO.Glitz(true, true, true, false), C = h.copy(), v = 0, z = false, b = document.createElement("div");
    b.className = ERO.Classes.ContainerLeftBeak;
    if (typeof b.addEventListener != "undefined")
      {
        b.addEventListener("mouseover", w, false);
        b.addEventListener("mouseout", x, false);
      }
    else
      {
        b.attachEvent("onmouseover", w);
        b.attachEvent("onmouseout", x);
      }
    var r = document.createElement("div");
    r.className = ERO.Classes.Shadow;
    var i = document.createElement("div");
    i.className = ERO.Classes.Body;
    var q = document.createElement("div");
    q.className = ERO.Classes.Actions;
    var p = document.createElement("ul"), m = document.createElement("div");
    m.className = ERO.Classes.ActionsBackground;
    var l = document.createElement("div");
    l.className = ERO.Classes.PreviewArea;
    var s = document.createElement("div");
    s.className = ERO.Classes.Beak;
    var u = document.createElement("div");
    u.className = ERO.Classes.PaddingHack;
    b.appendChild(r);
    b.appendChild(s);
    r.appendChild(i);
    i.appendChild(m);
    m.appendChild(l);
    m.appendChild(q);
    q.appendChild(p);
    m.appendChild(u);
    var d = document.createElement("div");
    d.className = ERO.Classes.ProgressAnimation;
    var e = new Msn.VE.Animation.Movie(d, 75);
    e.addFrame("<div class = \"frame1\"></div>");
    e.addFrame("<div class = \"frame2\"></div>");
    e.addFrame("<div class = \"frame3\"></div>");
    e.addFrame("");
    e.addFrame("");
    e.addFrame("<div class = \"frame2\"></div><div class = \"frame3\"></div>", false);
    e.addFrame("<div class = \"frame3\"></div>", false);
    e.Repeat = false;
    this.destroy = (function ()
{
  if (b)
    {
      if (typeof b.removeEventListener != "undefined")
        {
          b.removeEventListener("mouseover", w, false);
          b.removeEventListener("mouseout", x, false);
        }
      else
        {
          b.detachEvent("onmouseover", w);
          b.detachEvent("onmouseout", x);
        }
      if (i.shimElement)
        {
          i.shimElement.removeNode(true);
          i.shimElement = null;
        }
      b.parentNode.removeChild(b);
      d.parentNode.removeChild(d);
      b = null;
      r = null;
      i = null;
      q = null;
      p = null;
      m = null;
      l = null;
      s = null;
      u = null;
    }
  ERO.m_theEro = null;
  k = null;
}
);
    this.getElement = (function ()
{
  return b;
}
);
    this.getBody = (function ()
{
  return i;
}
);
    this.getAnimation = (function ()
{
  return e;
}
);
    this.getDelay = (function ()
{
  return o + n;
}
);
    this.setDelay = (function (a)
{
  o = a || o;
}
);
    this.getDelayDelta = (function ()
{
  return n;
}
);
    this.setDelayDelta = (function (a,b)
{
  B = b == false ? false : true;
  if (typeof a == "number")
    n = a;
}
);
    this.setClasses = (function (b,d)
{
  var a;
  if (ERO.DefaultClasses === null)
    {
      ERO.DefaultClasses = {};
      for (a in ERO.Classes)
        ERO.DefaultClasses[a] = ERO.Classes[a];
    }
  if (d !== false)
    c.setClasses(ERO.DefaultClasses, false);
  for (a in b)
    if (typeof ERO.Classes[a] != "undefined")
      ERO.Classes[a] = b[a];
  D();
}
);
    this.setBeak = (function (a)
{
  if (a == ERO.BeakDirection.Left)
    b.className = ERO.Classes.ContainerLeftBeak;
  else
    b.className = ERO.Classes.ContainerRightBeak;
}
);
    this.setContent = (function (c)
{
  var a = document.createElement("div");
  a.className = "firstChild";
  a.innerHTML = c;
  var b = l.firstChild;
  if (b)
    l.replaceChild(a, b);
  else
    l.appendChild(a);
  a = null;
  b = null;
}
);
    this.addAction = (function (b)
{
  var a = document.createElement("li");
  if (! b)
    return ;
  a.innerHTML = b;
  p.appendChild(a);
  a = null;
}
);
    this.clearActions = (function ()
{
  var a = p.getElementsByTagName("li"), c = a.length;
  for (var b = 0;b < c;b++)
    p.removeChild(a[0]);
}
);
    this.dockToText = (function (e,b,i)
{
  b = typeof b != "undefined" ? b : typeof window.event != "undefined" ? window.event : null;
  var k = g(e).getPagePosition(), h = (Gimme.Screen.getMousePosition(b)).x, j = new a.Point(h, k.y), f = new a.Point(0, parseInt(d.offsetHeight / 2, 10));
  c.dockToPoint(j, f, e, i);
}
);
    this.dockToElement = (function (b,e)
{
  var d = g(b).getPagePosition(), f = new a.Rectangle(d, new a.Point(d.x + b.offsetWidth, d.y + b.offsetHeight));
  c.dockToRect(f, null, b, e);
}
);
    this.dockToPoint = (function (b,d,f,e)
{
  c.dockToRect(new a.Rectangle(b, b), d, f, e);
}
);
    this.dockToRect = (function (m,q,I,C)
{
  if (k === I)
    {
      clearTimeout(y);
      if (j)
        return ;
    }
  else
    if (k !== null)
      {
        clearTimeout(y);
        A();
      }
  var u = "px";
  j = true;
  k = I;
  b.style.visibility = "hidden";
  c.setBeak(ERO.BeakDirection.Left);
  if (typeof q == "undefined" || q == null)
    q = {x : 0, y : 0};
  C = C || "";
  i.style.width = C;
  var g = l.offsetHeight - ERO.BeakHeight;
  d.style.top = (m.getP1()).y - d.offsetHeight + q.y + u;
  d.style.left = (m.getP2()).x - d.offsetWidth + q.x + u;
  var r = (m.getP2()).x, E = (m.getP2()).y - g - ERO.BeakHeight / 2 - m.getHeight() / 2, x = c.getSize(), G = (x.getP2()).y - (x.getP1()).y, B = (x.getP2()).x - (x.getP1()).x, J = new a.Rectangle(new a.Point(r, E), new a.Point(r + B, E + G)), D = f.getOverlap(J), p = D.getRange(), w, v;
  if (p & a.Overlap.Range.InXRange)
    v = r;
  if (p & a.Overlap.Range.InYRange)
    w = E;
  if (p & a.Overlap.Range.GreaterThanX)
    {
      c.setBeak(ERO.BeakDirection.Right);
      v = r > (f.getP2()).x ? (f.getP1()).x + f.getWidth() - B : r - B - m.getWidth();
    }
  if (p & a.Overlap.Range.LessThanX)
    {
      c.setBeak(ERO.BeakDirection.Left);
      v = (f.getP1()).x;
    }
  if (p & a.Overlap.Range.GreaterThanY)
    {
      w = (f.getP1()).y + f.getHeight() - G;
      var H = D.getBottomYBleed();
      g += H;
      if (g > b.offsetHeight - ERO.BeakHeight)
        g = b.offsetHeight - ERO.BeakHeight - 4;
    }
  if (p & a.Overlap.Range.LessThanY)
    {
      w = (f.getP1()).y;
      var H = D.getTopYBleed();
      g -= H;
      if (g < 0)
        g = 0;
    }
  b.style.top = w + u;
  b.style.left = v + u;
  s.style.top = g + "px";
  c.executeEvent("beforeshow", c, new ERO.EROEventArgs("beforeshow", b, k));
  if (! h.useBeak)
    b.className = ERO.Classes.ContainerNoBeak;
  z = false;
  if (h.useProgressTimer)
    {
      e.start();
      if (! h.useFade)
        {
          setTimeout(t, o + n);
          return ;
        }
    }
  if (h.useFade)
    setTimeout(F, o + n);
  else
    t();
}
);
    this.showImmediate = (function ()
{
  z = j = true;
  e.end();
  t();
}
);
    this.hide = (function (a)
{
  j = false;
  if (a === true)
    A();
  else
    {
      clearTimeout(y);
      y = setTimeout(A, o + n);
    }
}
);
    this.setGlitz = (function (c,d,a,b)
{
  if (c != null)
    h.useBeak = c;
  if (d != null)
    h.useFade = d;
  if (a != null)
    h.useProgressTimer = a;
  if (b === true)
    h.isTemporary = b;
  else
    C = h.copy();
}
);
    this.setBoundingArea = (function (e,g)
{
  if (e === null)
    {
      var b = Gimme.Screen.getScrollPosition(), c = Gimme.Screen.getViewportSize(), d = new a.Rectangle(new a.Point(0, 0), new a.Point(c.width, c.height));
      d.move(new a.Point(b.x, b.y));
      f = d;
    }
  else
    f = new a.Rectangle(e, g);
}
);
    this.getBoundingArea = (function ()
{
  return f;
}
);
    this.isInUse = (function ()
{
  return j;
}
);
    this.isVisible = (function ()
{
  return b.style.visibility == "visible";
}
);
    this.addToPage = (function ()
{
  b.style.visibility = "hidden";
  d.style.visibility = "hidden";
  document.body.appendChild(b);
  document.body.appendChild(d);
}
);
    this.getSize = (function ()
{
  var c = b.offsetLeft, d = b.offsetTop, f = c + b.offsetWidth, g = d + b.offsetHeight, e = new a.Rectangle(new a.Point(c, d), new a.Point(f, g));
  return e;
}
);
  }
  var a = Msn.VE.Geometry;
  if (! ERO.m_theEro)
    {
      ERO.m_theEro = new b();
      ERO.m_theEro.setBoundingArea(null);
    }
  ERO.m_theEro.addToPage();
  return ERO.m_theEro;
}
)};
VETime.FormatTime = (function (a)
{
  if (a == null || a == "" || a == "undefined")
    return "";
  var c = false, d = a.substr(0, 10), e = a.substr(11, 5), b = "";
  if (a.indexOf("AM") > - 1)
    {
      b = "AM";
      c = true;
    }
  else
    b = "PM";
  return d + " " + VETime.ConvertTo12HourFormat(e, c) + " " + b;
}
);
VETime.ConvertTo12HourFormat = (function (d,c)
{
  var a = d;
  try
    {
      var b = parseFloat(a.replace(":", "."));
      if (b > 12)
        if (b < 13 && c != true)
          {}
        else
          b = b - 12;
      a = b.toFixed(2);
      a = a.replace(".", ":");
    }
  catch (e)
    {
      a = "";
    }
  return a;
}
);
VETime.FormatPanelTime = (function (a,g)
{
  if (a == null || a == "" || a == "undefined")
    return "";
  try
    {
      var b = 0, d = false, i = a.substr(4, 8), h = a.indexOf(":"), f = a.substr(h - 2, 5), c = "";
      if (a.indexOf("AM") > - 1)
        {
          c = "AM";
          d = true;
          b = a.indexOf("AM");
        }
      else
        {
          c = "PM";
          b = a.indexOf("PM");
        }
      var e = "";
      if (b > 0)
        e = a.substr(b + 3, 3);
      if (g)
        return i + " " + VETime.ConvertTo12HourFormat(f, d) + " " + c + " " + e;
      else
        return VETime.ConvertTo12HourFormat(f, d) + " " + c + " " + e;
    }
  catch (j)
    {}
}
);
VETime.getMonth = (function (a)
{
  switch (a)
  {
    case "01":
      return " Jan";
    case "02":
      return " Feb";
    case "03":
      return " Mar";
    case "04":
      return " Apr";
    case "05":
      return " May";
    case "06":
      return " Jun";
    case "07":
      return " Jul";
    case "08":
      return " Aug";
    case "09":
      return " Sep";
    case "10":
      return " Oct";
    case "11":
      return " Nov";
    case "12":
      return " Dec";
  }
}
);
var customCursors = Msn.VE.Css.Cursors.CustomCursors;
if (customCursors != null)
    if (! (navigator.userAgent.indexOf("IE") >= 0) && (typeof VEAPI_DisableAtlasCompat == "undefined" || VEAPI_DisableAtlasCompat != true))
    VENetwork.AttachStyleSheet(Msn.VE.API.Constants.stylesheet);
if (navigator.userAgent.indexOf("MSIE") >= 0 && parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE") + 5)) == 6)
    document.namespaces.add("v", "urn:schemas-microsoft-com:vml");
VEMap._GetMapFromGUID = (function (a)
{
  if (Msn.VE.API.Globals.vemapinstances != null && Msn.VE.API.Globals.vemapinstances[a] == null || Msn.VE.API.Globals.vemapinstances[a] == "undefined")
    {
      throw new VEException("VEMap:_GetMapFromGUID", "err_notinitialized", L_notinitialized_text);
      return ;
    }
  return Msn.VE.API.Globals.vemapinstances[a];
}
);
VEMap.prototype.InitializeMap = (function ()
{
  _VERegisterNamespaces("Msn.VE");
  this.mapelement.innerHTML = "";
  this.mapelement.style.overflow = "hidden";
  if (this.mapelement.className == null || this.mapelement.className == "undefined" || this.mapelement.className == "")
    {
      if (this.mapelement.style == null || this.mapelement.style.height == null || this.mapelement.style.height == "undefined" || this.mapelement.style.height == "")
        this.mapelement.style.height = Msn.VE.API.Globals.vemapheight + "px";
      if (this.mapelement.style == null || this.mapelement.style.width == null || this.mapelement.style.width == "undefined" || this.mapelement.style.width == "")
        this.mapelement.style.width = Msn.VE.API.Globals.vemapwidth + "px";
    }
  var a = {};
  if (this.mapMode != null && this.mapMode != "undefined")
    a.mapMode = this.mapMode;
  else
    a.mapMode = Msn.VE.API.Globals.vemapmode;
  a.mapGUID = this.GUID;
  a.clientToken = this.ClientToken;
  if (this.initialLatitude != null && this.initialLatitude != "undefined")
    a.latitude = this.initialLatitude;
  else
    a.latitude = Msn.VE.API.Globals.vemaplatitude;
  if (this.initialLongitude != null && this.initialLongitude != "undefined")
    a.longitude = this.initialLongitude;
  else
    a.longitude = Msn.VE.API.Globals.vemaplongitude;
  if (this.initialZoomLevel != null && this.initialZoomLevel != "undefined")
    a.zoomlevel = this.initialZoomLevel;
  else
    a.zoomlevel = Msn.VE.API.Globals.vemapzoom;
  if (this.initialMapStyle != null && this.initialMapStyle != "undefined")
    a.mapstyle = this.initialMapStyle;
  else
    a.mapstyle = Msn.VE.API.Globals.vemapstyle;
  this.m_dashboardId = this.ID + "_dashboard";
  if (this.fixedMap != true)
    {
      a.showDashboard = VE_CheckModuleStatus(VE_ModuleName.APICONTROLS) == "loaded" && this._showDashboard;
      a.dashboardSize = this.dashboardSize;
      a.dashboardVersion = this.dashboardVersion;
      a.dashboardX = 5;
      a.dashboardY = 5;
      a.dashboardId = this.m_dashboardId;
      a.showScaleBar = true;
    }
  a.obliqueEnabled = true;
  a.obliqueUrl = Msn.VE.API.Constants.imageryurl;
  if (this.fixedMap == true)
    a.fixedView = true;
  a.disableLogo = false;
  if (this.showMapModeSwitch == false)
    a.showMapModeSwitch = false;
  else
    a.showMapModeSwitch = true;
  if (this.tileBuffer != null && typeof this.tileBuffer != "undefined")
    a.buffer = this.tileBuffer * Msn.VE.API.Globals.vetilesize;
  this.vemapcontrol = new Msn.VE.MapControl(this.mapelement, a, this);
  var d = this.preInitCustomEvents.length;
  for (var c = 0;c < d;++c)
    {
      var b = this.preInitCustomEvents.pop();
      this.vemapcontrol.AttachCustomEvent(b.Name, b.Callback);
    }
  this.vemapcontrol.Init();
  if (! this.fixedMap == true)
    this.vemapcontrol.AttachEvent("onchangeview", this._ClearView);
  this.vemapcontrol.AttachEvent("onendpan", this._RefreshLayers);
  this.vemapcontrol.AttachEvent("oninitmode", this._ResetQueueEvent);
  this.vemapcontrol.AttachEvent("oninitmode", this._EROHouseKeeping);
  _VERegisterNamespaces("Msn.Drawing");
  this.m_vegraphicsmanager = new VEGraphicsManager(this);
  this.m_vegraphicsmanager.Initialize();
  this.m_velayermanager = null;
  this._lm = this.m_velayermanager;
  this.m_vetilesourcemanager = null;
  this.m_vetrafficmanager = null;
  _VERegisterNamespaces("Msn.VE.UI");
  Msn.VE.UI.Color = {Red : "red", Orange : "orange", Yellow : "yellow"};
  if (($ID("help") == null || $ID("help") == "undefined") && ! Msn.VE.API.Globals.ishttpsenabled)
    VE_Help.CreateHelpPanel();
  this._InitializeModules(VE_GetLoadedAPIModules());
  if (this.veonmaploadevent)
    this.veonmaploadevent(this);
  this.controlzIndexes = [];
  this.controls = [];
  this.controltops = [];
  this.controllefts = [];
  this.vemapcontrol.AttachEvent("onresize", this._ReArrangeControls);
  if (window.ero == null || typeof window.ero == "undefined")
    window.ero = ERO.getInstance();
  this._EROHouseKeeping(this.GetMapMode());
  window.attachEvent("onunload", DisposeAllMaps);
}
);
VEMap.prototype.DeleteAllPushpins = (function ()
{
  VEPushpin.Hide();
  if (this.pushpins != null && this.pushpins != "undefined")
    if (this.GetMapMode() == Msn.VE.MapActionMode.Mode3D)
      {
        this.m_vegraphicsmanager.ClearAllPushpins(this.pushpins);
        return ;
      }
    else
      {
        var c = this.pushpins.length;
        for (var a = 0;a < c;a++)
          {
            var b = this.pushpins.pop();
            if (! b.IsInLayer)
              b.Dispose();
          }
      }
  return this.vemapcontrol.ClearPushpins();
}
);
VEMap.prototype.GetMapStyle = (function ()
{
  return this.vemapcontrol.GetMapStyle();
}
);
VEMap.prototype.GetZoomLevel = (function ()
{
  return this.vemapcontrol.GetZoomLevel();
}
);
VEMap.prototype.StartContinuousPan = (function (a,b)
{
  VEValidator.ValidateInt(a, "deltaX");
  VEValidator.ValidateInt(b, "deltaY");
  return this.vemapcontrol.ContinuousPan(parseInt(a), parseInt(b));
}
);
VEMap.prototype.EndContinuousPan = (function ()
{
  return this.vemapcontrol.StopContinuousPan();
}
);
VEMap.prototype.Pan = (function (a,b)
{
  VEValidator.ValidateInt(a, "deltaX");
  VEValidator.ValidateInt(b, "deltaY");
  if (this.GetMapMode() != Msn.VE.MapActionMode.Mode3D)
    return this.vemapcontrol.PanByPixel(new VEPixel(parseInt(a), parseInt(b)), false);
  else
    return false;
}
);
VEMap.prototype.DeletePushpin = (function (c)
{
  var d = 0;
  if (typeof this.pushpins == "object" && this.pushpins && this.pushpins.constructor == Array)
    d = this.pushpins.length;
  for (var a = 0;a < d;a++)
    {
      var b = this.pushpins[a];
      if (b != null && b.ID == c)
        {
          if (! b.IsInLayer)
            b.Dispose();
          this.pushpins.splice(a, 1);
          if (this.GetMapMode() == Msn.VE.MapActionMode.Mode3D)
            return this.m_vegraphicsmanager.Remove3DPushpin(c);
          else
            return this.vemapcontrol.RemovePushpin(c);
        }
    }
  throw new VEException("VEMap:DeletePushpin", "err_invalidpushpinid", L_invalidpushpinid_text);
}
);
VEMap.prototype.Resize = (function (a,b)
{
  if (a != null && typeof a != "undefined")
    {
      VEValidator.ValidateNonNegativeInt(a, "width");
      VEValidator.ValidateNonNegativeInt(b, "height");
    }
  return this.vemapcontrol.Resize(a, b);
}
);
VEMap.prototype.SetMapMode = (function (a)
{
  VEValidator.ValidateMapMode(a, "mapMode");
  this.vemapcontrol.EnableMode(a, this.GUID);
}
);
VEMap.prototype.GetMapMode = (function ()
{
  if (this.vemapcontrol.IsModeEnabled(Msn.VE.MapActionMode.Mode3D))
    return VEMapMode.Mode3D;
  return VEMapMode.Mode2D;
}
);
VEMap.prototype.SetMapStyle = (function (a)
{
  VEValidator.ValidateMapStyle(a, "mapStyle");
  if (this.GetMapMode() == Msn.VE.MapActionMode.Mode3D && a == VEMapStyle.Birdseye)
    return false;
  this.vemapcontrol.SetMapStyle(a);
}
);
VEMap.prototype.SetScaleBarDistanceUnit = (function (a)
{
  VEValidator.ValidateDistanceUnit(a, "distanceUnit");
  this.vemapcontrol.SetScaleBarDistanceUnit(a == VEDistanceUnit.Miles ? Msn.VE.DistanceUnit.Miles : Msn.VE.DistanceUnit.Kilometers);
}
);
VEMap.prototype.SetZoomLevel = (function (a)
{
  VEValidator.ValidateNonNegativeInt(a, "zoomLevel");
  this._QueueRequest(this.vemapcontrol.SetZoom, parseInt(a));
  return true;
}
);
VEMap.prototype.ZoomIn = (function ()
{
  this.vemapcontrol.ZoomIn();
}
);
VEMap.prototype.ZoomOut = (function ()
{
  this._QueueRequest(this.vemapcontrol.ZoomOut);
}
);
VEMap.prototype.AttachEvent = (function (b,a)
{
  VEValidator.ValidateNonNull(b, "eventname");
  VEValidator.ValidateNonNull(a, "eventhandler");
  if (this.vemapcontrol)
    this.vemapcontrol.AttachCustomEvent(b, a);
  else
    this.preInitCustomEvents.push(new VECustomEvent(b, a));
}
);
VEMap.prototype.DetachEvent = (function (b,a)
{
  VEValidator.ValidateNonNull(b, "eventname");
  VEValidator.ValidateNonNull(a, "eventhandler");
  this.vemapcontrol.DetachCustomEvent(b, a);
}
);
VEMap.prototype.FireEvent = (function (a)
{
  try
    {
      var b = window.event;
      return this.vemapcontrol.FireCustomEvent(a, b);
    }
  catch (c)
    {
      return false;
    }
}
);
VEMap.prototype.ShowMessage = (function (a)
{
  if (this.ShowMessageBox)
    this.m_vemessage.Show(a);
}
);
VEMap.prototype.GetHeight = (function ()
{
  var a = 0;
  if (this.mapelement.style.height.search(/px/) > 0)
    a = parseInt(this.mapelement.style.height.replace("px", ""));
  if (isNaN(a) || a == 0)
    a = this.mapelement.offsetHeight;
  return a;
}
);
VEMap.prototype.GetWidth = (function ()
{
  var a = 0;
  if (this.mapelement.style.width.search(/px/) > 0)
    a = parseInt(this.mapelement.style.width.replace("px", ""));
  if (isNaN(a) || a == 0)
    a = this.mapelement.offsetWidth;
  return a;
}
);
VEMap.prototype.GetLeft = (function ()
{
  return this.vemapcontrol.GetLeftPx();
}
);
VEMap.prototype.GetTop = (function ()
{
  return this.vemapcontrol.GetTopPx();
}
);
VEMap.prototype.SetFindResultsPanel = (function (a)
{
  if (a == null || a == "undefined")
    throw new VEException("VEMap:SetFindResultsPanel", "err_invalidelement", L_invalidelement_text);
  var b = $ID(a);
  if (b == null || b == "undefined")
    throw new VEException("VEMap:SetFindResultsPanel", "err_invalidelement", L_invalidelement_text);
  this.searchelement = a;
}
);
VEMap.prototype._AddControlInner = (function (a)
{
  a.style.position = "absolute";
  a.style.zIndex = 201;
  var e = this.GetTop(), d = this.GetLeft();
  if (! a.style.top)
    a.style.top = "0px";
  if (! a.style.left)
    a.style.left = "0px";
  var c = a.style.top, b = a.style.left;
  if (isNaN(c))
    c = c.toString().toLowerCase();
  if (isNaN(b))
    b = b.toString().toLowerCase();
  e += parseInt(c.replace("px"));
  d += parseInt(b.replace("px"));
  a.style.top = e + "px";
  a.style.left = d + "px";
  document.body.appendChild(a);
}
);
VEMap.prototype.AddControl = (function (a,b)
{
  if (a == null || a == "undefined")
    throw new VEException("VEMap:AddControl", "err_invalidelement", L_invalidelement_text);
  if (this.controls == null || this.controls == "undefined")
    throw new VEException("VEMap:AddControl", "err_notinitialized", L_notinitialized_text);
  this.controlzIndexes.push(b);
  this.controls.push(a);
  this.controltops.push(a.style.top);
  this.controllefts.push(a.style.left);
  this._AddControlInner(a, b);
}
);
VEMap.prototype.DeleteControl = (function (b)
{
  if (b == null || b == "undefined")
    throw new VEException("VEMap:DeleteControl", "err_invalidelement", L_invalidelement_text);
  if (this.controls == null || this.controls == "undefined")
    throw new VEException("VEMap:DeleteControl", "err_notinitialized", L_notinitialized_text);
  if (b.shimElement)
    {
      b.shimElement.removeNode(true);
      b.shimElement = null;
    }
  document.body.removeChild(b);
  var c = - 1;
  for (var a = 0;a < this.controls.length;a++)
    if (this.controls[a] == b)
      {
        c = a;
        break ;
      }
  if (c >= 0)
    {
      for (var a = c;a < this.controls.length - 1;a++)
        {
          this.controls[a] = this.controls[(a + 1)];
          this.controlzIndexes[a] = this.controlzIndexes[(a + 1)];
          this.controltops[a] = this.controltops[(a + 1)];
          this.controllefts[a] = this.controllefts[(a + 1)];
        }
      this.controls.pop();
      this.controlzIndexes.pop();
      this.controltops.pop();
      this.controllefts.pop();
    }
}
);
VEMap.prototype.ShowControl = (function (a)
{
  if (a != null && a != "undefined")
    {
      if (a.shimElement)
        a.shimElement.style.display = "block";
      a.style.visibility = "visible";
      mvcViewFacade.ShowShimIfSupported(a);
    }
}
);
VEMap.prototype.HideControl = (function (a)
{
  if (a != null && a != "undefined")
    {
      HideShim(a);
      a.style.visibility = "hidden";
    }
}
);
VEMap.prototype.Clear = (function ()
{
  this._ClearView();
  if (typeof VE_TrafficManager != "undefined")
    VE_TrafficManager.Destroy();
  this.DeleteAllPushpins();
  this.DeleteAllShapeLayers();
  if (this.m_vedirectionsmanager)
    this.m_vedirectionsmanager.RemoveRouteHighLight();
  this.m_vegraphicsmanager.Clear();
  this.m_veambiguouslist.Hide();
  this.m_vemessage.Hide();
}
);
VEMap.prototype._ShowLoading = (function ()
{
  if (! this.veloadingdiv)
    {
      this.veloadingdiv = document.createElement("div");
      this.veloadingdiv.className = "VE_Network_Loading";
      this.veloadingdiv.style.top = "75px";
      this.veloadingdiv.style.left = "80px";
      this.veloadingdiv.innerHTML = L_loading_text;
      this.AddControl(this.veloadingdiv, 202);
    }
  if (this.veloadingdiv.style.display != "block")
    this.veloadingdiv.style.display = "block";
  else
    this.veloadingdiv.style.display = "none";
}
);
VEMap.prototype.AddPolyline = (function (a)
{
  if (typeof a == "object" && ! (a  instanceof  VEPolyline))
    {
      var b = new VEShape(VEShapeType.Polyline, a);
      this.AddShape(b);
      return b;
    }
  this.m_vegraphicsmanager.DrawLine(a);
}
);
VEMap.prototype.DeletePolyline = (function (a)
{
  this.m_vegraphicsmanager.RemoveLinebyId(a);
}
);
VEMap.prototype.DeleteAllPolylines = (function ()
{
  this.m_vegraphicsmanager.RemoveAllLines();
}
);
VEMap.prototype.AddPolygon = (function (a)
{
  if (typeof a == "object" && ! (a  instanceof  VEPolygon))
    {
      var b = new VEShape(VEShapeType.Polygon, a);
      this.AddShape(b);
      return b;
    }
  this.m_vegraphicsmanager.DrawPolygon(a);
}
);
VEMap.prototype.DeletePolygon = (function (a)
{
  this.m_vegraphicsmanager.RemovePolygonbyId(a);
}
);
VEMap.prototype.DeleteAllPolygons = (function ()
{
  this.m_vegraphicsmanager.RemoveAllPolygons();
}
);
VEMap.prototype.LoadModules = (function (c,a,d)
{
  var b = null;
  b = VEOndemandJsDownloads(true, c, this, [this.LoadModules, c, a, d]);
  if (b)
    if (typeof a == "function" && a != null)
      a(d);
}
);
VEMap.prototype._InitializeModules = (function (b)
{
  var c = b.length;
  for (var a = 0;a < c;a++)
    switch (b[a])
    {
      case VE_ModuleName.APILAYERS:
        this.InitMapDrawing();
        break ;
      case VE_ModuleName.APIFIND:
        this.InitSearch();
        break ;
      case VE_ModuleName.APIROUTING:
        this.InitRouting();
        break ;
      case VE_ModuleName.APITRAFFIC:
        this.InitTraffic();
        break ;
      case VE_ModuleName.API3D:
        this.Init3D();
        break ;
      case VE_ModuleName.APICONTROLS:
        this.InitNavControl();
        break ;
      case VE_ModuleName.APIBIRDSEYE:
        this.InitBirdseye();
        break ;
      case VE_ModuleName.APITILES:
        this.InitTiles();
    }
}
);
VEMap.prototype._ResetQueueEvent = (function (a)
{
  if (a == Msn.VE.MapActionMode.Mode2D)
    this.queueEventInitialized = false;
}
);
VEMap.prototype._QueueRequest = (function (a,b,c,d)
{
  if (this.vemapcontrol.IsModeEnabled(Msn.VE.MapActionMode.Mode3D) && this.RequestQueueEnabled)
    {
      if (! this.queueEventInitialized)
        {
          this.vemapcontrol.Get3DControl().AttachEvent("OnCameraChanged", "ProcessQueuedRequest");
          this.queueEventInitialized = true;
        }
      if (this.vemapcontrol.IsCameraFlying() || this.requestQueue.length > 0)
        {
          this.requestQueue.push(new RequestQueueItem(a, b, c, d));
          return ;
        }
    }
  a(b, c, d);
}
);
VEMap.prototype._ProcessQueuedRequest = (function ()
{
  if (this.requestQueue.length > 0)
    {
      var a = this.requestQueue.shift();
      a.Call(a.Param1, a.Param2, a.Param3);
    }
}
);
VEMap.prototype.ShowMapModeSwitch = (function (a)
{
  if (this.fixedMap != true)
    {
      this.vemapcontrol.SetShowMapModeSwitch(a);
      this.showMapModeSwitch = a;
    }
}
);
VEMap.prototype.SetTileBuffer = (function (a)
{
  this.tileBuffer = a;
  if (this.vemapcontrol != null && this.vemapcontrol != "undefined")
    this.vemapcontrol.SetTilePixelBuffer(a * Msn.VE.API.Globals.vetilesize);
}
);
VEMap.prototype._EROHouseKeeping = (function (d)
{
  function c()
  {
    ShowShim(ero.getBody(), ero.getElement());
  }
  function b()
  {
    HideShim(ero.getBody());
  }
  function a(a)
  {
    if (a.Entity == - 1)
      ero.setGlitz(false, null, false, true);
  }
  if (d == Msn.VE.MapActionMode.Mode2D)
    {
      ero.setGlitz(true, false, true, false);
      ero.unhookEvent("aftershow", c);
      ero.unhookEvent("afterhide", b);
      ero.unhookEvent("beforeshow", a);
    }
  else
    {
      ero.setGlitz(true, false, true, false);
      ero.hookEvent("aftershow", c);
      ero.hookEvent("afterhide", b);
      ero.hookEvent("beforeshow", a);
    }
}
);
VEMap.prototype.AllTilesLoaded = (function ()
{
  if (this.vemapcontrol.IsModeEnabled(Msn.VE.MapActionMode.Mode3D))
    {
      var a = this.vemapcontrol.Get3DControl();
      return a ? a.AllTilesLoaded : false;
    }
  return true;
}
);
VEMap.prototype.SetClientToken = (function (a)
{
  this.ClientToken = a;
  if (this.vemapcontrol)
    this.vemapcontrol.SetClientToken(a);
}
);
VEMap.prototype.HasClientToken = (function ()
{
  return this.ClientToken != null && typeof this.ClientToken != "undefined" && this.ClientToken.length > 0;
}
);
VEMap.GetVersion = (function ()
{
  return Msn.VE.API.Globals.vecurrentversion;
}
);
VEMap.prototype.ShowDisambiguationDialog = (function (a)
{
  VEValidator.ValidateBoolean(a, "value");
  this.m_vedirectionsmanager.m_showDisambigousDialog = a;
}
);
VEMap.prototype.SetAnimationEnabled = (function (a)
{
  VEValidator.ValidateBoolean(a, "value");
  if (this.vemapcontrol)
    this.vemapcontrol.SetAnimationEnabled(a);
}
);
VEMap.prototype.InitNavControl = (function ()
{
  }
);
VEDashboardSize = Msn.VE.DashboardSize;
VEMap.prototype.SetDashboardSize = (function (a)
{
  if (typeof a != "undefined" && a != null)
    {
      VEValidator.ValidateDashboardSize(a, "VEDashboardSize");
      this.dashboardSize = a;
      this.dashboardVersion = 6;
      if (this.dashboardSize == VEDashboardSize.Small || this.dashboardSize == VEDashboardSize.Tiny)
        this.dashboardVersion = 5;
    }
}
);
VEMap.prototype.SetDashboardVersion = (function (a)
{
  this.dashboardVersion = a;
}
);
VEMap.prototype.ShowDashboard = (function ()
{
  if (this.vemapcontrol)
    {
      var a = this.vemapcontrol.GetDashboard();
      if (! a)
        this.vemapcontrol.CreateDashboard(5, 5, this.dashboardSize, this.m_dashboardId, this.showMapModeSwitch, this.dashboardVersion);
      else
        a.Show();
      this.Show3DNavigationControl();
    }
  this._showDashboard = true;
}
);
VEMap.prototype.HideDashboard = (function ()
{
  if (this.vemapcontrol)
    {
      var a = this.vemapcontrol.GetDashboard();
      if (a)
        a.Hide();
      this.Hide3DNavigationControl();
    }
  this._showDashboard = false;
}
);
VEMap.prototype.ShowMiniMap = (function (a,b,d)
{
  if (a != null && typeof a != "undefined" && b != null && typeof b != "undefined")
    {
      VEValidator.ValidateInt(a, "x");
      VEValidator.ValidateInt(b, "y");
    }
  if (d)
    VEValidator.ValidateMiniMapSize(d, "size");
  var c = this.vemapcontrol.GetMinimap();
  if (c)
    {
      if (a != null && typeof a != "undefined" && b != null && typeof b != "undefined")
        c.SetPosition(parseInt(a), parseInt(b));
      c.Show();
    }
  else
    c = this.vemapcontrol.CreateMinimap(a, b, null, true, false, null, this.ClientToken);
  if (d)
    c.SetSize(d);
}
);
VEMap.prototype.HideMiniMap = (function ()
{
  var a = this.vemapcontrol.GetMinimap();
  if (a)
    a.Hide();
}
);
VE_SetModuleStatus(VE_ModuleName.APICONTROLS, "loaded");
VEMap.prototype.InitBirdseye = (function ()
{
  }
);
VEMap.prototype.GetBirdseyeScene = (function ()
{
  if (this.GetMapMode() == Msn.VE.MapActionMode.Mode3D)
    return null;
  var a = null, b = this.vemapcontrol.GetObliqueScene();
  if (b != null && b != "undefined")
    {
      a = new VEBirdseyeScene(b);
      a.SetClientToken(this.ClientToken);
      a.SetGUID(this.GUID);
    }
  return a;
}
);
VEMap.prototype.IsBirdseyeAvailable = (function ()
{
  if (this.GetMapMode() == Msn.VE.MapActionMode.Mode3D)
    return false;
  return this.vemapcontrol.IsObliqueAvailable();
}
);
VEMap.prototype.SetBirdseyeOrientation = (function (a)
{
  if (this.GetMapMode() == Msn.VE.MapActionMode.Mode3D)
    return false;
  VEValidator.ValidateOrientation(a, "orientation");
  return this.vemapcontrol.SetObliqueOrientation(a);
}
);
VEMap.prototype.SetBirdseyeScene = (function (a,b,c,d)
{
  if (this.GetMapMode() == Msn.VE.MapActionMode.Mode3D)
    return false;
  if (VELatLong.prototype.isPrototypeOf(a) || a == null)
    return this.SetBirdseye(a, b, c, d);
  else
    return this.vemapcontrol.SetObliqueScene(a);
}
);
VEMap.prototype.SetBirdseye = (function (b,a,c,d)
{
  if (this.GetMapMode() == Msn.VE.MapActionMode.Mode3D)
    return false;
  if (b)
    VEValidator.ValidateObject(b, "veLatLong", VELatLong, "VELatLong");
  else
    b = this.GetCenter();
  if (a)
    VEValidator.ValidateOrientation(a, "orientation");
  else
    a = VEOrientation.North;
  if (c)
    VEValidator.ValidateNonNegativeInt(c, "zoomLevel");
  else
    c = 1;
  if (d)
    VEValidator.ValidateFunction(d, "callback");
  else
    d = null;
  var e = new _xy1().Decode(b);
  return this.vemapcontrol.SetObliqueLocation(new Msn.VE.LatLong(e.Latitude, e.Longitude), a, c, d);
}
);
VEMap.prototype.SetShapesAccuracy = (function (a)
{
  if (a != VEShapeAccuracy.None && a != VEShapeAccuracy.Pushpin && a != VEShapeAccuracy.All)
    throw new VEException("VEMap:SetShapesAccuracy", "err_invalidargument", L_invalidargument_text.replace("%1", "value").replace("%2", "VEShapeAccuracy"));
  this.m_vegraphicsmanager._useOffset = a;
}
);
VEMap.prototype.SetOverMaxPointsShapeRequest = (function (a)
{
  if (a != VEFailedShapeRequest.DoNotDraw && a != VEFailedShapeRequest.DrawInaccurately)
    throw new VEException("VEMap:SetOverMaxPointsShapeRequest", "err_invalidargument", L_invalidargument_text.replace("%1", "value").replace("%2", "VEFailedShapeRequest"));
  this.m_vegraphicsmanager._drawOverMaxShapes = a;
}
);
VEMap.prototype.SetFailedShapeRequest = (function (a)
{
  if (a != VEFailedShapeRequest.DoNotDraw && a != VEFailedShapeRequest.DrawInaccurately && a != VEFailedShapeRequest.QueueRequest)
    throw new VEException("VEMap:SetFailedShapeRequest", "err_invalidargument", L_invalidargument_text.replace("%1", "value").replace("%2", "VEFailedShapeRequest"));
  this.m_vegraphicsmanager._failRequest = a;
}
);
VEMap.prototype.SetShapesAccuracyRequestLimit = (function (a)
{
  VEValidator.ValidateNonNegativeInt(a, "value");
  Msn.VE.API.Constants.maxasynlatlongs = a;
}
);
VEShapeAccuracy = new (function ()
{
  this.None = 0;
  this.Pushpin = 1;
  this.All = 2;
}
)();
VEFailedShapeRequest = new (function ()
{
  this.DoNotDraw = 0;
  this.DrawInaccurately = 1;
  this.QueueRequest = 2;
}
)();
VE_SetModuleStatus(VE_ModuleName.APIBIRDSEYE, "loaded");
VEMap.prototype.SetDisplayThreshold = (function (a)
{
  var a = parseInt(a);
  if (isNaN(a))
    this.m_vegraphicsmanager.SetDisplayThreshold(a);
}
);
VEMap.prototype.EnableShapeDisplayThreshold = (function (a)
{
  VEValidator.ValidateBoolean(a, "value");
  VE_LatLongThreshold.UseThreshold = a;
}
);
VEMap.prototype.ImportShapeLayerData = (function (a,c,b)
{
  VEValidator.ValidateObject(a, "_spec", VEShapeSourceSpecification, "VEShapeSourceSpecification");
  if (typeof a.LayerSource != "string" || typeof a.Type != "string")
    throw new VEException("VEMap:AddLayer", "err_invalidlayertype", L_invalidlayertype_text);
  this.m_velayermanager.ImportLayer(a, c, b);
}
);
VEMap.prototype.SetInfoBoxStyles = (function (a)
{
  window.ero.setClasses(a);
}
);
VEMap.prototype.ClearInfoBoxStyles = (function ()
{
  window.ero.setClasses(_VECustomInfoBox);
}
);
VEMap.prototype.SetDefaultInfoBoxStyles = (function ()
{
  window.ero.setClasses(ERO.DefaultClasses);
}
);
VEMap.prototype.ShowInfoBox = (function (c,b,d)
{
  var k = typeof c == "object" && c  instanceof  VEShape;
  if (! k)
    return ;
  var j = c._shplayer == null || c._shplayer._mapGuid == null;
  if (j)
    return ;
  var h = null, e = null, g = null;
  if (typeof b == "object")
    if (b  instanceof  VELatLong)
      {
        e = b.Latitude;
        g = b.Longitude;
      }
    else
      if (b  instanceof  VEPixel)
        if (! isNaN(b.x) && ! isNaN(b.y))
          h = b;
  if (e == null && h == null)
    {
      var f = c.Primitives[0];
      if (f.type == VEShapeType.Pushpin)
        {
          e = f.points[1];
          g = f.points[0];
        }
      else
        {
          e = f.labelPosY;
          g = f.labelPosX;
        }
    }
  var l = Msn.Drawing.GetLabelUID(c.Primitives[0].iid), a = null;
  if (e != null)
    {
      a = this.vemapcontrol.LatLongToPixel(new Msn.VE.LatLong(e, g), this.vemapcontrol.GetZoomLevel());
      if (a == null)
        a = new VEPixel(0, 0);
    }
  else
    a = h;
  var i = typeof d == "object" && d  instanceof  VEPixel;
  if (i)
    if (! isNaN(d.x) && ! isNaN(d.y))
      {
        a.x += d.x;
        a.y += d.y;
      }
  if (a.x < 0 || a.x > this.GetWidth() || a.y < 0 || a.y > this.GetHeight())
    if (b  instanceof  VELatLong)
      throw new VEException("VEMap:ShowInfoBox", "L_invalidargument_text", L_invalidargument_text.replace("%1", "veAnchor").replace("%2", "VELatLong"));
    else
      if (b  instanceof  VEPixel)
        throw new VEException("VEMap:ShowInfoBox", "L_invalidargument_text", L_invalidargument_text.replace("%1", "veAnchor").replace("%2", "VEPixel"));
      else
        return ;
  a.x += this.GetLeft();
  a.y += this.GetTop();
  VEShowVEShapeERO(l, this.GUID, null, c, a.x, a.y);
}
);
VEMap.prototype.HideInfoBox = (function ()
{
  VEHideVEShapeERO(true);
}
);
VEMap.prototype.CloneShape = (function (a)
{
  VEValidator.ValidateObject(a, "_veshape", VEShape, "VEShape");
  var c = this.m_velayermanager.VE_LayerManager, b = c.CloneAnnotation(a);
  return b;
}
);
VEMap.prototype.AddShape = (function (b)
{
  var a = this.m_velayermanager.VE_LayerManager.GetCollectionByIndex(0);
  a._mapGuid = this.GUID;
  a.AddShape(b);
}
);
VEMap.prototype.DeleteShape = (function (a)
{
  VEValidator.ValidateObject(a, "_veshape", VEShape, "VEShape");
  if (a._shplayer)
    a._shplayer.DeleteShape(a);
}
);
VEMap.prototype.GetShapeByID = (function (a)
{
  if (typeof a == "undefined" || a == null || a == "")
    return null;
  var b = this.m_velayermanager.VE_LayerManager, c = b.GetAnnotationById(a);
  return c;
}
);
VEMap.prototype.AddShapeLayer = (function (a,c)
{
  VEValidator.ValidateObject(a, "shpLyr", VEShapeLayer, "VEShapeLayer");
  if (a._mapGuid != null)
    throw new VEException("VEMap:AddLayer", "err_invalidlayertype", L_invalidlayertype_text);
  a._mapGuid = this.GUID;
  var d = this.m_velayermanager.VE_LayerManager;
  d.AddCollection(null, a);
  if (! a.GetVisibility())
    return ;
  if (typeof c != "undefined" && c == true)
    {
      var b = a.GetBoundingBox(), e = [new Msn.VE.LatLong(b.y1, b.x1), new Msn.VE.LatLong(b.y2, b.x2)];
      this.vemapcontrol.SetBestMapView(e);
    }
  this.m_vegraphicsmanager.DrawLayer(a);
}
);
VEMap.prototype.DeleteShapeLayer = (function (a)
{
  VEValidator.ValidateObject(a, "shpLyr", VEShapeLayer, "VEShapeLayer");
  try
    {
      a.DeleteAllShapes();
      this.m_velayermanager.VE_LayerManager.RemoveCollection(a);
    }
  catch (b)
    {}
}
);
VEMap.prototype.DeleteAllShapeLayers = (function ()
{
  try
    {
      this.DeleteAllShapes();
      this.m_velayermanager.VE_LayerManager.DeleteAll();
    }
  catch (a)
    {}
}
);
VEMap.prototype.DeleteAllShapes = (function ()
{
  try
    {
      this.m_vegraphicsmanager.ClearAll();
      var b = this.m_velayermanager.VE_LayerManager, c = b.GetCollectionCount();
      for (var a = 0;a < c;a++)
        b.GetCollectionByIndex(a).DeleteAllShapes();
    }
  catch (d)
    {}
}
);
VEMap.prototype.ShowAllShapeLayers = (function ()
{
  this.m_velayermanager.ShowAllLayers();
}
);
VEMap.prototype.HideAllShapeLayers = (function ()
{
  this.m_vegraphicsmanager.ClearAll();
  this.m_velayermanager.VE_LayerManager.SetVisibility(false);
}
);
VEMap.prototype.GetShapeLayerByIndex = (function (b)
{
  if (typeof b == "undefined" || this.m_velayermanager == null)
    return null;
  var a = null;
  a = this.m_velayermanager.VE_LayerManager.GetCollectionByIndex(b);
  if (a)
    a._mapGuid = this.GUID;
  return a;
}
);
VEMap.prototype.GetShapeLayerCount = (function ()
{
  if (this.m_velayermanager == null)
    return 0;
  return this.m_velayermanager.VE_LayerManager.GetCollectionCount();
}
);
VEDataType = new (function ()
{
  this.VECollection = "c";
  this.GeoRSS = "g";
  this.VETileSource = "t";
  this.ImportXML = "i";
}
)();
VELayerManager.prototype.Dispose = (function ()
{
  this.m_vemap.m_vegraphicsmanager.ClearAll();
  this.VE_LayerManager.DeleteAll();
  this.m_vemapcontrol = null;
  this.m_vemap = null;
  this.m_veLatLongDecoder = null;
  this.m_spec = null;
  this.VE_LayerManager.Dispose();
  this.VE_LayerManager = null;
}
);
VELayerManager.prototype.ShowAllLayers = (function ()
{
  this.VE_LayerManager.SetVisibility(true);
  var b = [], e = this.VE_LayerManager.GetCollectionCount();
  for (var c = 0;c < e;++c)
    {
      var d = this.VE_LayerManager.GetCollectionByIndex(c);
      if (d.GetShapeCount() > 0)
        {
          var a = d.GetBoundingBox();
          if (a != null)
            {
              b.push(new Msn.VE.LatLong(a.y1, a.x1));
              b.push(new Msn.VE.LatLong(a.y2, a.x2));
            }
        }
    }
  if (b.length >= 2)
    this.m_vemapcontrol.SetBestMapView(b);
  this.m_vemap.m_vegraphicsmanager.DrawAll();
}
);
var _VECustomInfoBox = {ContainerNoBeak : "customInfoBox-noBeak", ContainerRightBeak : "customInfoBox-with-rightBeak", ContainerLeftBeak : "customInfoBox-with-leftBeak", Beak : "customInfoBox-beak", Shadow : "customInfoBox-shadow", Body : "customInfoBox-body", Actions : "customInfoBox-actions", ActionsBackground : "customInfoBox-actionsBackground", PreviewArea : "customInfoBox-previewArea", PaddingHack : "customInfoBox-paddingHack", ProgressAnimation : "customInfoBox-progressAnimation"};
var MC_GEOCOMMUNITY_SIZELIMIT = 204800, MC_GEOCOMMUNITY_SERVICEURL = "GeoCommunity.asjx", MC_VESHAPE_EMPTY = - 1777, MC_VIEW_BUFFER = 1, MC_STYLE_PINZIndex = 300, MC_IID_NAMESPACE = "msftve", MC_IID_CON_TOKEN = "_", MC_GEO_TYPE_MULTIGEOMETRY = "Multigeometry", MC_GEO_TYPE_FREEHAND = "Freehand", MC_STYLE_FILL_COLOR = "fillcolor", MC_STYLE_STROKE_COLOR = "strokecolor", MC_STYLE_STROKE_WEIGHT = "strokeweight", MC_STYLE_STROKE_STYLE = "stroke-style", MC_STYLE_STROKE_DASH = "stroke-dashstyle", MC_STYLE_FONT_COLOR = "font_color", MC_STYLE_STROKE_ARROW = "stroke_arrow", MC_STYLE_FONT_ITALIC = "font_italic", MC_STYLE_FONT_UNDERSCORE = "font_underscore", MC_STYLE_FONT_BOLD = "font_bold", STATE_DEFAULT = 0, STATE_DRAWING = 1, STATE_EDITING = 2, MC_DRAW_DEFAULT = 100, MC_DRAW_POINT = 101, MC_DRAW_POLYLINE = 102, MC_DRAW_POLYGON = 103, MC_DRAW_RECT = 104, MC_DRAW_CIRCLE = 105, MC_DRAW_TEXT = 1065, MC_DRAW_MODEL = 1066, MC_EDIT_ADDNODE = 107, MC_EDIT_DELNODE = 108, MC_EDIT_MOVENODE = 108, MC_EDIT_SELNODE = 109, MC_EDIT_SELEDGE = 110, MC_EDIT_CONTINUELINE = 111, MC_LABEL_VIEWER = "viewer", MC_PROPERTY_DEFAULT = 0, MC_PROPERTY_HIGHWAY = 1, MC_PROPERTY_ROAD = 2, MC_PROPERTY_LAKE = 3, MC_PROPERTY_PARK = 4, MC_PROPERTY_PARKINGLOT = 5, MC_PROPERTY_PUSHPIN = 6, MC_PROPERTY_TEMPDRAW = 7, MC_PROPERTY_TEMPEDIT = 8, MC_PROPERTY_EDITNODE = 10, MC_PROPERTY_EDITSELNODE = 11, MC_PROPERTY_GHOSTNODE = 12, MC_NUMBERFORMAT_NUMBEROFDIGITSAFTERDOT = 2, MC_NUMBERFORMAT_ZEROSTRING = "0", MC_DECIMALROUNDOFF_THRESHOLD = 100, MC_CML_ENTITY_NAME = "Entity", MC_CML_ENTITY_PRIMITIVES = "Primitives", MC_CML_ENTITY_PRIMITIVE = "Primitive", MC_CML_ENTITY_COORDINATES = "coordinates", MC_CML_DESCRIPTION = "Description", MC_CML_TAGS = "Tags", MC_CML_VIEWPORT = "ViewPort", MC_CML_TOUR = "Tour", MC_CML_PITCH = "pitch", MC_CML_HEADING = "heading", MC_CML_MAPSTYLE = "mapstyle", MC_CML_SCENEID = "sceneId", MC_CML_ACTIONS = "Actions", MC_CML_ACTION = "Action", MC_CML_MODELREP = "ModelRep", MC_CML_TRANSFORM = "transform", MC_CML_MODELREFID = "modelRefId", MC_CML_ENTITY_TYPE_PUSHPIN = "pushpin", MC_CML_PROPERTYS = "Properties", MC_CML_PROPERTY = "Property", MC_CML_MINBOUNDS = "minbounds", MC_CML_MAXBOUNDS = "maxbounds", MC_CML_R2EOFFSET = "r2eoffset", MC_CML_PHOTOS = "Photos", MC_CML_PHOTO = "Photo", MC_CML_PREAUTHURL = "PreAuthUrl", MC_CML_PROPERTY_ICONURL = "iconurl", MC_CML_PROPERTY_KEYWORDS = "keywords", MC_CML_PROPERTY_URL = "url", MC_CML_PROPERTY_PHOTOURL = "photourl", MC_CML_PROPERTY_USERDATE = "userdate", MC_CML_PROPERTY_DISPLAYORDER = "displayorder", MC_CML_PROPERTY_BUSINESSLISTINGID = "businesslistingid", MC_CML_PROPERTY_SOURCEURL = "sourceurl", MC_CML_PROPERTY_SOURCETYPE = "sourcetype", MC_CML_PROPERTY_TYPE = "type", MC_CML_LASTMODIFIED = "DateModified", MC_CML_DATECREATED = "DateCreated", MC_CML_ROOT = "CML", MC_CML_SEPERT = "/", MC_CML_TOKEN = ",", MC_CML_VERSION = "0.1", MC_CML_ID = "id", MC_CML_IID = "clientid", MC_CML_NAME = "name", MC_CML_CULTURE = "culture", MC_CML_SHARELEVEL = "Sharelevel", MC_CML_STATE = "State", MC_CML_STATE_PUBLIC_CAN_VIEW = 1, MC_CML_STATE_OWNER_CAN_VIEW = 2, MC_CML_STATE_OWNER_CAN_UPDATE = 4, MC_CML_STATE_OWNER_IS_VIEWING = 8, MC_CML_TYPE = "Type", MC_CML_Add = "Add", MC_CML_EXTRUSION = "Extrusion", MC_CML_VISIBILITY = "visibility", MC_CML_DISPLAYORDER = "displayorder", MC_CML_DEFAULTSTYLE = "DefaultStyle", MC_CML_LABELSTYLE = "LabelStyle", MC_CML_POSITION = "Position", MC_CML_STYLE = "Style", MC_CML_FILLSYMBOL = "Fill", MC_CML_SHAPESYMBOL = "Shape", MC_CML_STYLESYMBOL = "Style", MC_CML_STROKESYMBOL = "Stroke", MC_CML_SHADOWSYMBOL = "Shadow", MC_CML_IMAGEDATASYMBOL = "Imagedata", MC_CML_ZOOMLEVEL = "zoomlevel", MC_CML_ONSCRATCHPAD = "onScratchpad", MC_CML_TOKEN1 = ",", MC_CML_TOKEN2 = ":", MC_CML_TOKEN3 = ";", MC_CML_CONTENTS = "Contents", MC_CML_CONTENT = "Content", MC_CML_SIMPLEHTML = "SimpleHTML", MC_CML_GLINK = "glink", MC_CML_COLLECTIONS = "Collections", MC_CML_COLLECTION = "Collection", MC_CML_ENTITY = "Entity", MC_CML_MULTIGEOMETRY = "MultiGeometry", MC_CML_POLYGON = "Polygon", MC_CML_OUTLS = "outerBoundaryIs", MC_CML_ITLS = "interBoundaryIs", MC_CML_LINEARSTRING = "LinearRing", MC_CML_POLYLINE = "LineString", MC_CML_LENGTH = "length", MC_CML_AREA = "area", MC_CML_HREF = "href", MC_CML_POINT = "Point", MC_CML_COORDS = "coordinates", MC_CML_ALTITUDE = "altitudes", MC_CML_ALTITUDEMODE = "altitudemode", MC_CML_ALTGROUND = "Ground", MC_CML_ALTDATUM = "Datum", MC_CML_EXTRUDE = "extruded", MC_CML_KEY = "key", MC_CML_VALUE = "value", MC_CML_CLIENTDATA = "ClientData", MC_CML_EXCOL_PREFIX = "E*", MC_CML_IMPORT_DATAURL = "mapurl", MC_CML_IMPORT_SAVESTATUS = "saveimport", MC_CML_IMPORT_COLNAME = "colname", MC_CML_IMPORT_REPORT = "importreport", MC_CML_IMPORT_FILEUPLOAD = "fileupload", MC_CML_CID_LIST = "cids", MC_ACTION_IMPORT_COLLECTION = "ImportCol", MC_ACTION_IMPORT_ENTITY = "ImportEntity", MC_ACTION_CLONE_ENTITY = "CloneEntity", MC_ACTION_CREATE_COLLECTION = "CreateCollection", MC_ACTION_UPDATE_COLLECTION = "UpdateCollection", MC_ACTION_DELETE_COLLECTION = "DeleteCollection", MC_ACTION_CLEAR_COLLECTION = "ClearCollection", MC_ACTION_RETRIEVE_ALLCOLLECTIONS = "RetrieveAllCollections", MC_ACTION_RETRIEVE_ALLCOLLECTIONS_METADATA = "RetrieveAllCollectionsMetadata", MC_ACTION_RETRIEVE_COLLECTION = "RetrieveCollection", MC_ACTION_RETRIEVE_SHAREDCOLLECTION = "RetrieveSharedCollection", MC_ACTION_DELETE_ENTITY = "DeleteEntity", MC_ACTION_ADD_ENTITY = "AddEntity", MC_FCCALLBACK = "fncallback", MC_ACTION_REPAINT = "Repaint", MC_ACTION_CREATE_PHOTO = "CreatePhoto", MC_ACTION_DELETE_PHOTO = "DeletePhoto", MC_CHANGE_STATE_UPDATE = 1, MC_CHANGE_STATE_DELETE = 2, MC_CHANGE_STATE_CREATE = 3, MC_CHANGE_STATE_CLONE = 4, MC_CHANGE_STATE_MOVE = 5, MC_CHANGE_STATE_DEFAULT = 0, MC_CHANGE_TYPE_METADATA = 1, MC_CHANGE_TYPE_CHILDREN = 2, MC_CHANGE_TYPE_ALL = 3, MC_COLLECTION_SIGNIN_SIZE = 2048, MC_TIMER_KEEPTRYING = "keeptrying", MC_TIMER_MINDELAY = 0, MC_TIMER_DELAY = 3000, MC_TIMER_REPEAT_DELAY = 3000, MC_TIMER_NOW = 10, MC_TIMER_EXTENDDELAY = 5000, MC_REQUEST_QUEUE_MAXSIZE = 20, MC_TIMER_VALUE = "DELAYVALUE", MC_UPLOAD_TIMEOUT = 90000, MC_KVP_COLLIST = "COLLIST", MC_KVP_COL_MSNID = "COL_MSNID", MC_KVP_COL_MSNID2 = "COL_MSNID2", MC_KVP_COL = "COL", MC_KVP_COL_CLIENTDATA = "COL_CLIENTDATA", MC_KVP_ENTITY_MSNID = "ENTITY_MSNID", MC_KVP_ENTITYLIST = "ENTITYLIST", MC_KVP_ENTITY = "ENTITY", MC_KVP_SERVER_STATUS = "req_status", MC_KVP_SETBESTMAPVIEW = "set_best_view", MC_KVP_VIEWTOUR = "view_tour", MC_KVP_CML = "CML", MC_COLLECTIONLIST_UL_ID = "sp_collection_list", MC_SCRATCHPADITEM_LI_SUFFIX = "_li", MC_SCRATCHPADITEM_MEASURE_SUFFIX = "_m", MC_SIGNIN = "Signin", MC_SCRATCHPAD_DRAGCURSOR = "move", MC_SCRATCHPAD_DRAGGEDSTYLE = "DraggedLI", MC_SCRATCHPAD_COLLECTIONLISTDIV_ID = "scratchPadCollectionListWrapper", MC_SCRATCHPAD_WRAPLEN_TITLE = 22, MC_SCRATCHPAD_WRAPLEN_DESC = 26, MC_CV_WRAPLEN_COLLECTIONDESC = 28, MC_CV_WRAPLEN_TITLE = 22, MC_CV_WRAPLEN_DESC = 22, MC_ERO_WRAPLEN_TITLE = 22, MC_ERO_WRAPLEN_DESC = 28, MC_SERVER_STATUS_NO_ACCESS = "not authorized", MC_SERVER_STATUS_BUSY = "server busy", MC_SERVER_STATUS_OK = "200", MC_SERVER_STATUS_STORE_ERROR = "570", MC_SERVER_STATUS_NAMEEXIST_ERROR = "571", MC_SERVER_STATUS_QUOTA_ERROR = "572", MC_SERVER_STATUS_UNEXPECTED_ERROR = "500", MC_SERVER_STATUS_ACCESSDENIED_ERROR = "403", MC_COL_TYPE_FAVORITE = 1, MC_COL_TYPE_COLLECTION = 0, MC_COL_TYPE_RESULT = 2, MC_COL_TYPE_TRAFFIC = 3, MC_COL_TYPE_DRIVING = 4, MC_COL_TYPE_RSSFEED = 5, MC_COL_TYPE_TILEIMAGE = 6, MC_DS_MSN_CML = 0, MC_DS_FILE_CML = 1, MC_DS_MSN_VEML = 2, MC_MAX_LOADED_COLS = 2, MC_MAX_COL_SIZE = 200, cssCursors, MC_SA_NEWCOL = "newcol", MC_SA_IMPORT = "import", MC_SA_UPLOADPHOTO = "uploadphoto";
VE_MapStruct.PushpinType = {ViewerClass : "VE_Community_searchResult", PushpinClass : "VE_Pushpin", Token : " ", PushpinAn : "VE_Pushpin VE_Pushpin_aN", Polyline : "VE_Pushpin VE_Pushpin_Polyline", Polygon : "VE_Pushpin VE_Pushpin_Polygon", Model : "VE_Pushpin VE_Pushpin_Model", PushpinViewer : "VE_Pushpin_viewer", PolylineViewer : "VE_Pushpin_Polyline_viewer", PolygonViewer : "VE_Pushpin_Polygon_viewer", ModelViewer : "VE_Pushpin_Model_viewer", PushpinViewerTopMost : "VE_Pushpin_viewer topMost", PolylineViewerTopMost : "VE_Pushpin_Polyline_viewer polytopMost", PolygonViewerTopMost : "VE_Pushpin_Polyline_viewer polytopMost", ModelViewerTopMost : "VE_Pushpin_Model_viewer polytopMost", SearchResults : "searchResults"};
VE_MapStruct.PushpinSize = {WidthaN : 22, HeightaN : 17, WidthShp : 22, HeightShp : - 17, WidthLbl : - 29, HeightLbl : - 17, WidthView : 25, HeightView : 29, WidthShpView : 25, HeightShpView : - 29};
_VERegisterNamespaces("Msn.VE.Core");
Msn.VE.Core.Layer = (function ()
{
  this.iid = null;
  this.MsnId = null;
  this.Name = "unsaved collection";
  this.Type = 0;
  this.Visibility = true;
  this.Boundingbox = null;
  this.MaxScale = 21;
  this.MinScale = 1;
  this.Spec = null;
}
);
Msn.VE.Core.Layer.prototype.SetMsnId = (function (a)
{
  this.MsnId = a;
}
);
Msn.VE.Core.Layer.prototype.GetMsnId = (function ()
{
  return this.MsnId;
}
);
Msn.VE.Core.Layer.prototype.SetId = (function (a)
{
  this.iid = a;
}
);
Msn.VE.Core.Layer.prototype.GetId = (function ()
{
  return this.iid;
}
);
Msn.VE.Core.Layer.prototype.SetName = (function (a)
{
  this.Name = a;
}
);
Msn.VE.Core.Layer.prototype.GetName = (function ()
{
  return this.Name;
}
);
Msn.VE.Core.Layer.prototype.SetType = (function (a)
{
  this.Type = a;
}
);
Msn.VE.Core.Layer.prototype.GetType = (function ()
{
  return this.Type;
}
);
Msn.VE.Core.Layer.prototype.SetVisibility = (function (a)
{
  this.Visibility = a;
}
);
Msn.VE.Core.Layer.prototype.GetVisibility = (function ()
{
  return this.Visibility;
}
);
Msn.VE.Core.Layer.prototype.SetMaxZoomLevel = (function (a)
{
  this.MaxScale = a;
}
);
Msn.VE.Core.Layer.prototype.GetMaxZoomLevel = (function ()
{
  return this.MaxScale;
}
);
Msn.VE.Core.Layer.prototype.SetMinZoomLevel = (function (a)
{
  this.MinScale = a;
}
);
Msn.VE.Core.Layer.prototype.GetMinZoomLevel = (function ()
{
  return this.MinScale;
}
);
Msn.VE.Core.Layer.prototype.SetBoundingBox = (function (f,e,c,d,a,b)
{
  if (! this.Boundingbox)
    {
      if (c == null || d == null || a == null || b == null)
        return null;
      this.Boundingbox = new Msn.VE.Bounds(f, e, c, d, a, b);
    }
  else
    {
      this.Boundingbox.x1 = c;
      this.Boundingbox.y1 = d;
      this.Boundingbox.z1 = f;
      this.Boundingbox.x2 = a;
      this.Boundingbox.y2 = b;
      this.Boundingbox.z2 = e;
    }
  return this.Boundingbox;
}
);
Msn.VE.Core.Layer.prototype.GetBoundingBox = (function ()
{
  if (typeof this.Boundingbox == "undefined" || ! this.Boundingbox)
    this.Boundingbox = new Msn.VE.Bounds(0, 0, Infinity, Infinity, - Infinity, - Infinity);
  return this.Boundingbox;
}
);
Msn.VE.Core.VectorLayer = (function ()
{
  }
);
Msn.VE.Core.VectorLayer.prototype = new Msn.VE.Core.Layer();
Msn.VE.Core.RasterLayer = (function ()
{
  }
);
Msn.VE.Core.RasterLayer.prototype = new Msn.VE.Core.Layer();
_VERegisterNamespaces("Msn.VE.Core");
Msn.VE.Core.EventRegistry = (function ()
{
  var a = new VE_MapHashtable();
  this.AddListener = (function (c,b)
{
  a.put(c, b);
}
);
  this.RemoveListener = (function (e,d)
{
  var b = a.get(e);
  if (b == "undefined" || b == null || b.length < 1)
    return null;
  for (var c = 0;c < b.length;c++)
    if (b[c] == d)
      b.splice(c, 1);
}
);
  this.Fire = (function (e,d)
{
  if (e == "undefined" || e == null)
    return ;
  var b = a.get(e);
  if (b == "undefined" || b == null || b.length < 1)
    return null;
  for (var c = 0;c < b.length;c++)
    {
      if (b[c] == "undefined" || b[c] == null)
        continue ;
      if (d == "undefined" || d == null)
        b[c]();
      else
        b[c](d);
    }
  d = null;
}
);
}
);
VE_MapHashtable.prototype.hash = null;
VE_MapHashtable.prototype.keys = null;
VE_MapHashtable.prototype.get = (function (a)
{
  return this.hash[a];
}
);
VE_MapHashtable.prototype.put = (function (b,c)
{
  if (c == null)
    return null;
  var a = null;
  a = this.hash[b];
  if (a == null || a == "undefined")
    {
      this.keys[this.keys.length] = b;
      a = [];
    }
  a.push(c);
  this.hash[b] = a;
}
);
_VERegisterNamespaces("Msn.Drawing");
Msn.Drawing.MapGeoRssReader = (function ()
{
  }
);
Msn.Drawing.MapGeoRssReader.prototype.ReadGeoRSS = (function (z,q)
{
  var C = false, r = null, p = null, u = null, m = null, g = null, f = null, c = null, l = z.getElementsByTagName("item");
  if (l.length < 1)
    l = z.getElementsByTagName("entry");
  var k = VEShapeType.Pushpin;
  if (l.length > 0)
    {
      var j, o, A, F = l.length;
      for (j = 0;j < F;j++)
        {
          g = null;
          f = null;
          c = null;
          k = VEShapeType.Pushpin;
          r = "";
          p = "";
          u = "";
          m = "";
          A = l[j].childNodes.length;
          for (o = 0;o < A;o++)
            {
              if (l[j].childNodes[o].nodeType != 1)
                continue ;
              var a = l[j].childNodes[o].nodeName, b = l[j].childNodes[o];
              if (a == "title")
                if (b.firstChild)
                  r = b.firstChild.nodeValue;
                else
                  r = "";
              else
                if (a == "description" || a == "summary" || a == "content")
                  if (b.firstChild)
                    p = b.firstChild.nodeValue;
                  else
                    p = "";
                else
                  if (a == "link")
                    if (b.firstChild)
                      u = b.firstChild.nodeValue;
                    else
                      u = b.getAttribute("href");
                  else
                    if (a == "icon")
                      m = b.firstChild.nodeValue;
                    else
                      if (a == "virtualearth:icon")
                        m = b.firstChild.nodeValue;
                      else
                        if (a == "geo:lat")
                          g = b.firstChild.nodeValue;
                        else
                          if (a == "geo:lon")
                            f = b.firstChild.nodeValue;
                          else
                            if (a == "geo:long")
                              f = b.firstChild.nodeValue;
                            else
                              if (a == "geo:Point" || a == "geo:point")
                                for (d = 0;d < b.childNodes.length;d++)
                                  {
                                    var e = b.childNodes[d];
                                    if (e.nodeName == "geo:lat")
                                      g = e.firstChild.nodeValue;
                                    else
                                      if (e.nodeName == "geo:lon" || e.nodeName == "geo:long")
                                        f = e.firstChild.nodeValue;
                                  }
                              else
                                if (a == "georss:point" || a == "georss:line" || a == "georss:polygon")
                                  {
                                    if (b.firstChild)
                                      {
                                        var n = b.firstChild.nodeValue;
                                        if (n.length == 4096 && typeof b.textContent != "undefined" && b.textContent != null)
                                          n = b.textContent;
                                        c = this.ExtractLatLonPairFromXMLList(n);
                                        if (c && c.length > 1)
                                          {
                                            g = c[1];
                                            f = c[0];
                                            if (a == "georss:line")
                                              k = VEShapeType.Polyline;
                                            else
                                              if (a == "georss:polygon")
                                                k = VEShapeType.Polygon;
                                          }
                                      }
                                  }
                                else
                                  if (a == "gml:name")
                                    if (b.firstChild)
                                      r = b.firstChild.nodeValue;
                                    else
                                      r = "";
                                  else
                                    if (a == "gml:description")
                                      if (b.firstChild)
                                        p = b.firstChild.nodeValue;
                                      else
                                        p = "";
                                    else
                                      if (a == "gml:Point" || a == "gml:point" || a == "georss:where" && b.firstChild.nodeName == "gml:Point")
                                        {
                                          var i = null;
                                          if (a == "gml:Point" || a == "gml:point")
                                            i = b.childNodes;
                                          else
                                            i = b.firstChild.childNodes;
                                          for (d = 0;d < i.length;d++)
                                            {
                                              var e = i[d];
                                              if (e.nodeName == "gml:pos")
                                                if (e.firstChild)
                                                  {
                                                    var n = e.firstChild.nodeValue;
                                                    c = this.ExtractLatLonPairFromXMLList(n);
                                                    if (c && c.length > 1)
                                                      {
                                                        g = c[1];
                                                        f = c[0];
                                                      }
                                                  }
                                            }
                                        }
                                      else
                                        if (a == "gml:pos" || a == "gml:posList")
                                          {
                                            if (l[j].childNodes[o].firstChild)
                                              {
                                                var n = l[j].childNodes[o].firstChild.nodeValue;
                                                c = this.ExtractLatLonPairFromXMLList(n);
                                                if (c && c.length > 1)
                                                  {
                                                    g = c[1];
                                                    f = c[0];
                                                    if (a == "gml:posList")
                                                      k = VEShapeType.Polyline;
                                                  }
                                              }
                                          }
                                        else
                                          if (a == "gml:LineString" || a == "georss:where" && b.firstChild.nodeName == "gml:LineString")
                                            {
                                              var i = null;
                                              if (a == "gml:LineString")
                                                i = b.childNodes;
                                              else
                                                i = b.firstChild.childNodes;
                                              k = VEShapeType.Polyline;
                                              var x = i.length;
                                              for (d = 0;d < x;d++)
                                                {
                                                  var e = i[d];
                                                  if (e.nodeName == "gml:posList")
                                                    if (e.firstChild)
                                                      {
                                                        var n = e.firstChild.nodeValue;
                                                        c = this.ExtractLatLonPairFromXMLList(n);
                                                        if (c && c.length > 1)
                                                          {
                                                            g = c[1];
                                                            f = c[0];
                                                          }
                                                      }
                                                }
                                            }
                                          else
                                            if (a == "gml:Polygon" || a == "georss:where" && b.firstChild.nodeName == "gml:Polygon")
                                              {
                                                var i = null;
                                                if (a == "gml:Polygon")
                                                  i = b.childNodes;
                                                else
                                                  i = b.firstChild.childNodes;
                                                k = VEShapeType.Polygon;
                                                var x = i.length;
                                                for (d = 0;d < x;d++)
                                                  {
                                                    var v = i[d];
                                                    if (v.nodeName == "gml:exterior" || v.nodeName == "gml:interior")
                                                      {
                                                        var e = null;
                                                        e = v.childNodes;
                                                        var E = e.length;
                                                        for (var t = 0;t < E;t++)
                                                          if (e[t].nodeName == "gml:LinearRing" && e[t].firstChild)
                                                            {
                                                              var n = null, y = e[t].firstChild;
                                                              if (y.nodeName == "gml:posList" && y.firstChild)
                                                                {
                                                                  n = y.firstChild.nodeValue;
                                                                  c = this.ExtractLatLonPairFromXMLList(n);
                                                                  if (c && c.length > 1)
                                                                    {
                                                                      g = c[1];
                                                                      f = c[0];
                                                                    }
                                                                }
                                                            }
                                                      }
                                                  }
                                              }
            }
          if (g == null || g == "undefined" || g.length <= 0 || f == null || f == "undefined" || f.length <= 0)
            continue ;
          if (q.Spec.IconUrl != null && q.Spec.IconUrl != "undefined")
            m = q.Spec.IconUrl;
          if (m == null || m == "undefined" || m.length <= 0)
            m = Msn.VE.API.Constants.iconurl;
          var D = p;
          try
            {
              var s = null;
              if (k == VEShapeType.Pushpin)
                if (g != null && f != null)
                  s = new Msn.Drawing.Point(f, g);
                else
                  continue ;
              else
                if (k == VEShapeType.Polyline)
                  {
                    if (c.length < 4)
                      continue ;
                    s = new Msn.Drawing.PolyLine(c);
                  }
                else
                  if (k == VEShapeType.Polygon)
                    {
                      if (c.length < 8)
                        continue ;
                      s = new Msn.Drawing.Polygon(c);
                    }
              var h;
              if (Msn.VE.API != null)
                {
                  var w = s.points, x = w.length, B = [];
                  for (var d = 0;d < x - 1;d = d + 2)
                    B.push(new VELatLong(w[(d + 1)], w[d]));
                  h = new VEShape(k, B);
                }
              else
                {
                  h = new VEShape(MC_VESHAPE_EMPTY);
                  h.AddPrimitive(s);
                }
              h.Latitude = g;
              h.Longitude = f;
              h.Url = u;
              h.IconId = m;
              h.Notes = D;
              h.SetDisplayOrder(j);
              h.SetIndex(j);
              h.Title = r;
              if (Msn.VE.API != null)
                q.AddShape(h);
              else
                q.AddEntityAnnotation(h);
            }
          catch (H)
            {
              throw new VEException("VEMap:AddGeoRSSLayerPushpins", "err_invalidLatLong", H.message);
            }
        }
    }
  if (q.GetShapeCount() > 0)
    C = true;
  return C;
}
);
Msn.Drawing.MapGeoRssReader.prototype.ExtractLatLonPairFromXMLList = (function (a)
{
  a = a.replace(/^\s+/g, "");
  a = a.replace(/\s+$/g, "");
  var b = [];
  if (a.indexOf(",") > 0)
    b = a.split(",");
  else
    {
      a = a.replace(/\s+/g, " ");
      b = a.split(" ");
    }
  var d = b.length;
  if (d / 2 != Math.round(d / 2))
    return null;
  for (var c = 0;c < d - 1;c = c + 2)
    {
      var e = parseFloat(b[c]), f = parseFloat(b[(c + 1)]);
      if (isNaN(e) || isNaN(f))
        throw new VEException("VEMap:ExtractLatLonPairFromXMLList", "err_invalidLatLong", L_GeoRssInvalidFormatError_Text);
      b[c] = f;
      b[c + 1] = e;
    }
  return b;
}
);
_VERegisterNamespaces("VE_MapCmlReader");
VE_MapCmlReader = (function ()
{
  }
);
VE_MapCmlReader.ReadCMLDom = (function (c,b,a)
{
  return VE_MapCmlReader.ExtractCollections(c, b, a);
}
);
VE_MapCmlReader.ExtractCollections = (function (g,q,j)
{
  var t = null, c = q.getElementsByTagName(MC_CML_COLLECTION);
  if (! c)
    return null;
  var l = c.length;
  if (l < 1)
    return null;
  var o = [], n = g.action;
  for (var d = 0;d < l;d++)
    {
      var s = c[d].getAttribute(MC_CML_ID), r = c[d].getAttribute(MC_CML_IID), i = unescape(c[d].getAttribute(MC_CML_NAME)), k = c[d].getAttribute(MC_CML_CULTURE), p = c[d].getAttribute(MC_CML_VISIBILITY), h = c[d].getAttribute(MC_CML_TYPE), a = j.GetCollectionByMsnId(g, s, r);
      if (! a)
        continue ;
      if (n == MC_ACTION_IMPORT_ENTITY || n == MC_ACTION_CLONE_ENTITY)
        {
          var m = c[d].childNodes.length;
          for (var f = 0;f < m;f++)
            {
              var b = c[d].childNodes.item(f);
              if (b.nodeName == MC_CML_ENTITY)
                VE_MapCmlReader.ExtractEntity(g, b, a, j);
            }
        }
      else
        {
          if (p != null && p == "false")
            a.SetVisibility(false);
          if (h && h != "" && h != "undefined")
            a.SetType(h);
          if (i && i != "" && i != "undefined")
            a.SetName(i);
          if (k && k != "")
            a.Culture = k;
          var m = c[d].childNodes.length;
          for (var f = 0;f < m;f++)
            {
              var b = c[d].childNodes.item(f);
              switch (b.nodeName)
              {
                case MC_CML_SHARELEVEL:
                  if (b.text == "public")
                    {
                      a.IsPublic = true;
                      a.IsIndexed = false;
                    }
                  else
                    if (b.text == "indexed")
                      {
                        a.IsPublic = true;
                        a.IsIndexed = true;
                      }
                    else
                      {
                        a.IsPublic = false;
                        a.IsIndexed = false;
                      }
                  break ;
                case MC_CML_PROPERTYS:
                  a._properties = VE_MapCmlReader.ExtractProperties(b);
                  break ;
                case MC_CML_DESCRIPTION:
                  a.Notes = unescape(b.text);
                  break ;
                case MC_CML_TAGS:
                  a.Tags = unescape(b.text);
                  break ;
                case MC_CML_LASTMODIFIED:
                  var e = new Date(b.text);
                  if (e == "NaN")
                    a.DateModified = Date();
                  else
                    a.DateModified = b.text;
                  break ;
                case MC_CML_DATECREATED:
                  var e = new Date(b.text);
                  if (e == "NaN")
                    a.DateCreated = Date();
                  else
                    a.DateCreated = b.text;
                  break ;
                case MC_CML_ENTITY:
                  VE_MapCmlReader.ExtractEntity(g, b, a, j);
                  break ;
                case MC_CML_STATE:
                  var e = parseInt(b.text);
                  if ((e & MC_CML_STATE_OWNER_CAN_VIEW) == MC_CML_STATE_OWNER_CAN_VIEW && (e & MC_CML_STATE_PUBLIC_CAN_VIEW) != MC_CML_STATE_PUBLIC_CAN_VIEW)
                    a.ViewableByOwnerOnly = true;
                  else
                    a.ViewableByOwnerOnly = false;
                  if ((e & MC_CML_STATE_OWNER_CAN_UPDATE) == MC_CML_STATE_OWNER_CAN_UPDATE)
                    a.EditableByOwner = true;
                  else
                    a.EditableByOwner = false;
                  if ((e & MC_CML_STATE_OWNER_IS_VIEWING) == MC_CML_STATE_OWNER_IS_VIEWING)
                    a.OwnerIsViewing = true;
                  else
                    a.OwnerIsViewing = false;
              }
            }
        }
      o.push(a);
    }
  return o;
}
);
VE_MapCmlReader.ExtractEntity = (function (o,s,d,n)
{
  var c = s, l = c.getAttribute(MC_CML_ID), q = c.getAttribute(MC_CML_IID), k = c.getAttribute(MC_CML_TYPE), j = unescape(c.getAttribute(MC_CML_NAME)), r = c.getAttribute(MC_CML_VISIBILITY), g = o.action;
  if (g == MC_ACTION_ADD_ENTITY)
    {
      var e = o.GetParameters(MC_KVP_ENTITYLIST);
      if (typeof e == "undefined" || e == null)
        return ;
      for (var i = 0;i < e.length;i++)
        {
          var h = e[i];
          if (typeof h == "undefined" || h == null)
            continue ;
          if (h.GetId() == q)
            {
              h.SetMsnId(l);
              e.splice(i, 1);
              return ;
            }
        }
      return ;
    }
  var f;
  if (g == MC_ACTION_CREATE_COLLECTION || g == MC_ACTION_IMPORT_ENTITY || g == MC_ACTION_IMPORT_COLLECTION)
    f = n.GetAnnotationByMsnId(d, l, q);
  else
    f = n.GetAnnotationByMsnId(d, l);
  var a = f[1];
  if (f[0])
    return ;
  if (k && k != "")
    a.SetType(k);
  if (j && j != "")
    a.Title = j;
  if (r && r != "")
    a.SetVisibility(false);
  var b = null, v = null, u = c.childNodes.length;
  for (var m = 0;m < u;m++)
    {
      b = c.childNodes[m];
      if (b.nodeType == 1)
        {
          var t = b.nodeName;
          switch (t)
          {
            case MC_CML_PROPERTYS:
              VE_MapCmlReader.ExtractEntityProperties(b, a);
              break ;
            case MC_CML_DESCRIPTION:
              a.Notes = VE_SanitizeHTML(unescape(b.text).replace(/<BR\/?>/gi, "\n"));
              break ;
            case MC_CML_ENTITY_PRIMITIVES:
              var p = VE_MapCmlReader.ExtractPrimitives(b);
              if (p)
                {
                  a.ClearAllPrimitives();
                  a.SetPrimitives(p);
                }
              break ;
            case MC_CML_VIEWPORT:
              a.ViewPort = VE_MapCmlReader.ExtractViewPort(b);
              break ;
            case MC_CML_TOUR:
              a.Tour = VE_MapCmlReader.ExtractTour(b);
              break ;
            case MC_CML_MODELREP:
              a.ModelRep = VE_MapCmlReader.ExtractModelRep(b);
              break ;
            case MC_CML_PHOTOS:
              a.Photos = VE_MapCmlReader.ExtractPhotos(b);
          }
        }
    }
  if (a.GetPrimitiveCount() == 0)
    VE_MapManager.GetLayerManager().DeleteAnnotationFromCollection(d, a);
  else
    if (! f[0])
      if (Msn.VE.API != null)
        d.AddShape(a);
      else
        d.AddEntityAnnotation(a);
    else
      d.UpdateEntityAnnotation(a);
  return d;
}
);
VE_MapCmlReader.ExtractViewPort = (function (f)
{
  var a = new VE_3DViewPort(), e = true, g = f.childNodes.length;
  for (var d = 0;d < g;d++)
    {
      var b = f.childNodes[d];
      switch (b.nodeName)
      {
        case MC_CML_ENTITY_COORDINATES:
          var c = b.text.split(MC_CML_TOKEN1);
          if (c.length == 2)
            {
              a.Longitude = parseFloat(c[0]);
              a.Latitude = parseFloat(c[1]);
            }
          else
            e = false;
          break ;
        case MC_CML_ALTITUDE:
          a.Altitude = parseFloat(b.text);
          break ;
        case MC_CML_ALTITUDEMODE:
          a.Altitudemode = b.text;
          break ;
        case MC_CML_PITCH:
          a.Pitch = parseFloat(b.text);
          break ;
        case MC_CML_HEADING:
          a.Heading = parseFloat(b.text);
          break ;
        case MC_CML_MAPSTYLE:
          a.Mapstyle = b.text;
          break ;
        case MC_CML_SCENEID:
          a.SceneId = parseInt(b.text);
          break ;
        case MC_CML_PROPERTYS:
          a.Properties = VE_MapCmlReader.ExtractProperties(b);
      }
    }
  if (! e || isNaN(a.Longitude) || isNaN(a.Latitude) || isNaN(a.Latitude) || isNaN(a.Pitch) || isNaN(a.Heading))
    a = null;
  return a;
}
);
VE_MapCmlReader.ExtractTour = (function (el)
{
  var Tour = new VE_3DTour();
  Tour.Actions = [];
  var actionKey = null, actionValue = null, actions = el.selectSingleNode(MC_CML_ACTIONS), childNodesLen = actions.childNodes.length;
  for (var i = 0;i < childNodesLen;i++)
    {
      var actionNode = null;
      actionNode = actions.childNodes[i].selectSingleNode(MC_CML_PROPERTYS);
      var action = null, actionStr = "{", actionLen = actionNode.childNodes.length;
      if (actionLen > 0)
        {
          for (var j = 0;j < actionLen;j++)
            {
              var node = actionNode.childNodes[j];
              if (node.nodeName == MC_CML_PROPERTY)
                {
                  actionKey = node.getAttribute(MC_CML_KEY);
                  actionValue = node.getAttribute(MC_CML_VALUE);
                  if (typeof actionKey != "undefined" && actionKey != null && typeof actionValue != "undefined" && actionValue != null)
                    actionStr = actionStr.concat("'", actionKey, "':'", actionValue, "',");
                }
            }
          actionStr = actionStr.substring(0, actionStr.length - 1);
          actionStr = actionStr.concat("}");
          action = eval("(" + actionStr + ")");
        }
      if (typeof action != "undefined" && action != null)
        Tour.Actions.push(action);
    }
  if (Tour.Actions.length < 1)
    Tour = null;
  return Tour;
}
);
VE_MapCmlReader.ExtractModelRep = (function (d)
{
  var a = new VE_3DModelRep(), e = d.childNodes.length;
  for (var c = 0;c < e;c++)
    {
      var b = d.childNodes[c];
      switch (b.nodeName)
      {
        case MC_CML_TRANSFORM:
          a.Transform = b.text.split(MC_CML_TOKEN1);
          break ;
        case MC_CML_MODELREFID:
          a.ModelRefId = b.text;
          break ;
        case MC_CML_PROPERTYS:
          a.Properties = VE_MapCmlReader.ExtractProperties(b);
          break ;
        case MC_CML_MINBOUNDS:
          a.MinBounds = b.text;
          break ;
        case MC_CML_MAXBOUNDS:
          a.MaxBounds = b.text;
          break ;
        case MC_CML_R2EOFFSET:
          a.R2eoffset = b.text;
      }
    }
  if (typeof a.Transform != "object" || a.Transform.length != 16)
    a = null;
  return a;
}
);
VE_MapCmlReader.ExtractEntityProperties = (function (h,a)
{
  var i = h.childNodes.length;
  for (var g = 0;g < i;g++)
    {
      var d = h.childNodes.item(g);
      if (d.nodeName == MC_CML_PROPERTY)
        {
          var b = d.getAttribute(MC_CML_VALUE);
          switch (d.getAttribute(MC_CML_KEY))
          {
            case MC_CML_PROPERTY_URL:
              var c = null;
              c = unescape(b);
              if (c != "undefined" && c)
                a.Url = c;
              break ;
            case MC_CML_PROPERTY_ICONURL:
              var f = null;
              f = unescape(b);
              if (f)
                a.SetIconUrl(f);
              break ;
            case MC_CML_PROPERTY_KEYWORDS:
              a.Keywords = unescape(b);
              break ;
            case MC_CML_PROPERTY_PHOTOURL:
              var e = null;
              e = unescape(b);
              if (e)
                a.PhotoUrl = e;
              break ;
            case MC_CML_PROPERTY_USERDATE:
              a.UserDate = b;
              break ;
            case MC_CML_PROPERTY_DISPLAYORDER:
              a.DisplayOrder = b;
              break ;
            case MC_CML_PROPERTY_BUSINESSLISTINGID:
              a.SetBusinessListingId(b);
              break ;
            case MC_CML_LASTMODIFIED:
              a.LastModified = b;
              break ;
            case MC_CML_DISPLAYORDER:
              a.SetDisplayOrder(b);
              break ;
            case MC_CML_ZOOMLEVEL:
              a.SetZoomLevel(b);
              break ;
            case MC_CML_ONSCRATCHPAD:
              a.SetOnScratchpad(b);
              break ;
            case MC_CML_PROPERTY_SOURCEURL:
              a.SourceUrl = unescape(b);
              break ;
            case MC_CML_PROPERTY_SOURCETYPE:
              a.SourceType = b;
          }
        }
    }
  return a;
}
);
VE_MapCmlReader.ExtractPhotos = (function (l)
{
  var n = [], j = l.childNodes.length;
  if (j == 0)
    return null;
  for (var g = 0;g < j;g++)
    {
      var a = l.childNodes.item(g);
      if (a.nodeName == MC_CML_PHOTO)
        {
          var c = new VE_Photo();
          c.Id = a.getAttribute(MC_CML_ID);
          var k = {}, m = true, o = a.childNodes.length;
          for (var h = 0;h < o;h++)
            {
              var e = a.childNodes.item(h);
              if (e.nodeName == MC_CML_PROPERTYS)
                {
                  var p = e.childNodes.length;
                  for (var i = 0;i < p;i++)
                    {
                      var f = e.childNodes.item(i);
                      if (f.nodeName == MC_CML_PROPERTY)
                        {
                          var b = f.getAttribute(MC_CML_VALUE), d = f.getAttribute(MC_CML_KEY);
                          if (d != "undefined" && d != null && b != "undefined" && b != null)
                            if (d == MC_CML_PROPERTY_URL)
                              {
                                var q = unescape(b);
                                c.Url = q;
                              }
                            else
                              {
                                k[d] = b;
                                m = false;
                              }
                        }
                    }
                }
            }
          if (! m)
            c.Properties = k;
          n.push(c);
        }
    }
  return n;
}
);
VE_MapCmlReader.ExtractProperties = (function (a)
{
  if (typeof a == "undefined" || a == null || a.childNodes.length < 1)
    return null;
  var h = a.childNodes.length, d = {}, e = true;
  for (var c = 0;c < h;c++)
    {
      var b = a.childNodes.item(c);
      if (b.nodeName == MC_CML_PROPERTY)
        {
          var f = b.getAttribute(MC_CML_VALUE), g = b.getAttribute(MC_CML_KEY);
          if (g != null && f != null)
            {
              d[g] = f;
              e = false;
            }
        }
    }
  if (e)
    return null;
  else
    return d;
}
);
VE_MapCmlReader.ExtractPrimitives = (function (l)
{
  var g = [], o = l.childNodes.length;
  for (var k = 0;k < o;k++)
    {
      var f = l.childNodes.item(k);
      if (f.nodeName == MC_CML_ENTITY_PRIMITIVE)
        {
          var d = true, a = null, c = null, n = null, p = f.childNodes.length;
          for (var j = 0;j < p;j++)
            {
              var b = f.childNodes[j];
              if (d)
                {
                  var e = b.getAttribute(MC_CML_LENGTH), m = b.getAttribute(MC_CML_AREA);
                  switch (b.nodeName)
                  {
                    case MC_CML_POLYGON:
                      d = false;
                      a = VE_MapCmlReader.ExtractPolygon(b);
                      if (e)
                        a.SetLength(e * 1);
                      if (m)
                        a.SetArea(m * 1);
                      break ;
                    case MC_CML_POLYLINE:
                      d = false;
                      a = VE_MapCmlReader.ExtractPolyLine(b);
                      if (e)
                        a.SetLength(e * 1);
                      break ;
                    case MC_CML_POINT:
                      n = VEShapeType.Pushpin;
                      d = false;
                      a = VE_MapCmlReader.ExtractPoint(b);
                  }
                }
              else
                if (b.nodeName == MC_CML_DEFAULTSTYLE)
                  {
                    var i = VE_MapCmlReader.ExtractStyle(b, n);
                    c = i[0];
                    if (i.length > 1)
                      {
                        var h = i[1];
                        if (h)
                          {
                            a.labelPosX = h.longitude;
                            a.labelPosY = h.latitude;
                          }
                      }
                  }
            }
          if (a != null)
            {
              if (Msn.VE.API)
                {
                  if (! c)
                    c = VE_GetDefaultAPISymbol(a.type);
                  a.symbol = c;
                }
              else
                if (a.type != VEShapeType.Pushpin)
                  a.symbol = c;
              g.push(a);
            }
        }
    }
  if (g.length < 1)
    return null;
  return g;
}
);
VE_MapCmlReader.ExtractPolygon = (function (c)
{
  var a = c.selectSingleNode(MC_CML_OUTLS).selectSingleNode(MC_CML_LINEARSTRING), b = a.selectSingleNode(MC_CML_COORDS);
  return VE_MapCmlReader.BuildShape(VEShapeType.Polygon, b.text, a);
}
);
VE_MapCmlReader.ExtractPolyLine = (function (a)
{
  var b = a.selectSingleNode(MC_CML_COORDS);
  return VE_MapCmlReader.BuildShape(VEShapeType.Polyline, b.text, a);
}
);
VE_MapCmlReader.BuildShape = (function (c,i,d)
{
  var h = null, g = d.selectSingleNode(MC_CML_ALTITUDE);
  if (g != null)
    h = g.text;
  var b = VE_GetLatLongPairsFromString(i, h);
  if (b == null || b.LonLats == null)
    return null;
  var a = null;
  if (VEShapeType.Polyline == c)
    {
      a = new Msn.Drawing.PolyLine(b.LonLats);
      a.iid = Msn.Drawing.GetGeoUID(VEShapeType.Polyline);
    }
  else
    if (VEShapeType.Polygon == c)
      {
        a = new Msn.Drawing.Polygon(b.LonLats);
        a.iid = Msn.Drawing.GetGeoUID(VEShapeType.Polygon);
      }
    else
      if (VEShapeType.Point == c)
        {
          a = new Msn.Drawing.Point(b.LonLats[0], b.LonLats[1]);
          a.iid = Msn.Drawing.GetGeoUID(VEShapeType.Point);
        }
  if (b.Altitudes)
    {
      var e = d.selectSingleNode(MC_CML_ALTITUDEMODE);
      if (e != null)
        a.altitudeMode = e.text;
      if (VEShapeType.Point == c)
        {
          a.altitudes = b.Altitudes;
          return a;
        }
      else
        {
          a.altitudes = b.Altitudes;
          var f = d.selectSingleNode(MC_CML_EXTRUDE);
          if (f != null)
            if (f.text.toLowerCase() == "true")
              a.extruded = true;
          a.minZ = b.minZ;
          a.maxZ = b.maxZ;
          a.labelPosZ = a.maxZ;
        }
    }
  if (VEShapeType.Point != c)
    {
      a.minX = b.minX;
      a.minY = b.minY;
      a.maxX = b.maxX;
      a.maxY = b.maxY;
    }
  return a;
}
);
VE_MapCmlReader.ExtractPoint = (function (a)
{
  var b = a.selectSingleNode(MC_CML_COORDS);
  return VE_MapCmlReader.BuildShape(VEShapeType.Point, b.text, a);
}
);
VE_MapCmlReader.ExtractStyle = (function (i,n)
{
  var e = [], a;
  if (Msn.VE.API)
    a = VE_GetDefaultAPISymbol(n);
  else
    a = VE_MapDispatch_SymbolLib.GetCurrentDefaultSymbol();
  a = a.Clone();
  var k = i.childNodes.length, d = null;
  for (var f = 0;f < k;f++)
    {
      var c = i.childNodes.item(f);
      if (c.nodeName == MC_CML_STYLE)
        {
          var l = c.text, j = l.split(MC_CML_TOKEN3), b = null, m = j.length;
          for (var g = 0;g < m;g++)
            {
              b = j[g].split(MC_CML_TOKEN2);
              if (b != null || b.length == 2)
                switch (b[0])
                {
                  case MC_STYLE_STROKE_COLOR:
                    a.stroke_color = b[1];
                    break ;
                  case MC_STYLE_FILL_COLOR:
                    a.fill_color = b[1];
                    break ;
                  case MC_STYLE_STROKE_WEIGHT:
                    a.stroke_weight = b[1];
                    break ;
                  case MC_STYLE_STROKE_STYLE:
                    a.stroke_style = b[1];
                    break ;
                  case MC_STYLE_STROKE_DASH:
                    a.stroke_dashstyle = b[1];
                }
              b = null;
            }
        }
      else
        if (c.nodeName == MC_CML_LABELSTYLE)
          {
            var h = c.selectSingleNode(MC_CML_POSITION);
            if (h != null)
              d = VE_GetLatLongFromString(h.text);
          }
    }
  e.push(a);
  if (d)
    e.push(d);
  return e;
}
);
VEShapeStyleLibrary = (function ()
{
  var a = [];
  this.AddMapSymbol = (function (b)
{
  if (b.stroke_color2 == null || b.stroke_color2 == "")
    if (b.stroke_color == "red")
      b.stroke_color2 = "blue";
    else
      b.stroke_color2 = "red";
  if (b.fill_color2 == null || b.fill_color2 == "")
    if (b.fill_color == "blue")
      b.fill_color2 = "red";
    else
      b.fill_color2 = "blue";
  a.push(b);
}
);
  var b = null;
  this.GetCurrentDefaultSymbol = (function ()
{
  if (b == null)
    b = this.GetMapSymbolByID(MC_PROPERTY_PARK);
  return b;
}
);
  this.GetMapSymbolByID = (function (c)
{
  if (a.length > 0)
    {
      for (var d = 0;d < a.length;d++)
        if (a[d].id == c)
          return a[d];
    }
  else
    {
      var e = new VEShapeStyle();
      e.id = MC_PROPERTY_DEFAULT;
      this.AddMapSymbol(e);
    }
  var b = null;
  if (typeof c == "undefined" || c == 0)
    return a[0];
  b = new VEShapeStyle();
  switch (c)
  {
    case MC_PROPERTY_HIGHWAY:
      b.id = c;
      break ;
    case MC_PROPERTY_ROAD:
      b.id = c;
      b.stroke_color = "yellow";
      b.stroke_style = "thickbetweenthin";
      b.stroke_weight = 6;
      break ;
    case MC_PROPERTY_LAKE:
      b.id = c;
      break ;
    case MC_PROPERTY_PARK:
      b.id = c;
      b.stroke_opacity = "50%";
      b.stroke_endcap = "square";
      b.stroke_joinstyle = "bevel";
      break ;
    case MC_PROPERTY_PARKINGLOT:
      b.id = c;
      break ;
    case MC_PROPERTY_PUSHPIN:
      b.id = c;
      break ;
    case MC_PROPERTY_TEMPDRAW:
      b.id = c;
      b.stroke_weight = 1;
      b.stroke_dashstyle = "dashdot";
      break ;
    case MC_PROPERTY_TEMPEDIT:
      b.id = c;
      b.stroke_weight = 1;
      b.stroke_color = "#0F0F0F";
      b.stroke_dashstyle = "longdashdot";
      break ;
    case MC_PROPERTY_EDITNODE:
      b.id = c;
      b.shape_drawtype = "v:rect";
      b.style_filter = "100%";
      b.stroke_color = "#000000";
      b.fill_color = "yellow";
      break ;
    case MC_PROPERTY_EDITSELNODE:
      b.id = c;
      b.shape_drawtype = "v:rect";
      b.style_filter = "100%";
      b.stroke_color = "red";
      b.fill_color = "yellow";
      break ;
    case MC_PROPERTY_GHOSTNODE:
      b.id = c;
      b.shape_drawtype = "v:rect";
      b.style_filter = "100%";
      b.stroke_opacity = "100%";
      b.fill_opacity = "100%";
      b.stroke_color = "#666666";
      b.fill_color = "#dddd88";
      break ;
    default:
      return a[0];
  }
  this.AddMapSymbol(b);
  return b;
}
);
  this.GetLocalMapSymbol = (function (b)
{
  var a = VE_MapManager.GetEntityPrimitiveByElmt(b);
  if (a == null)
    return null;
  geometry = a[2];
  if (typeof geometry == "undefined" || geometry == null)
    return null;
  return geometry.symbol;
}
);
}
);
_VERegisterNamespaces("Msn.Drawing");
Msn.Drawing.GetTextUID = (function (a)
{
  return a + MC_IID_CON_TOKEN + "t";
}
);
Msn.Drawing.GetLabelUID = (function (a)
{
  return a + MC_IID_CON_TOKEN + "l";
}
);
Msn.Drawing.GetShpElementUIDByLabelUID = (function (c)
{
  var b = "", a = c.split(MC_IID_CON_TOKEN);
  if (! a || a[0] != MC_IID_NAMESPACE)
    return null;
  b = b.concat(a[0], MC_IID_CON_TOKEN, a[1], MC_IID_CON_TOKEN, a[2], MC_IID_CON_TOKEN, a[3]);
  return b;
}
);
Msn.Drawing.CreatePointPushpin = (function (k,a,m,q,i,f,e,j)
{
  var g = null, c = m;
  Msn.Drawing.CalculateLabelPosition(a, false);
  var p = a.labelPosX ? a.labelPosX : a.points[0], o = a.labelPosY ? a.labelPosY : a.points[1], n = f ? f : 22, l = e ? e : 17, h = a.iid, b = i;
  if (a.type == VEShapeType.Pushpin)
    {
      if (typeof b == "undefined" || ! b)
        b = VE_MapStruct.PushpinType.PushpinAn;
    }
  else
    {
      h = Msn.Drawing.GetLabelUID(a.iid);
      if (typeof b == "undefined" || ! b)
        b = VE_MapStruct.PushpinType.Polyline;
    }
  var d = c + "";
  if (j)
    if (b == "VE_Pushpin VE_Pushpin_aN")
      d = "<div style=\"position:absolute;width:25px;height:25px;\"><img src=\"i/bin/" + window.buildVersion + "/pins/poi_usergenerated.gif\" /></div><div style=\"position:absolute;top:5px;width:25px;height:25px;\"><font color=\"white\">" + c + "</font></div>";
    else
      if (b == "VE_Pushpin VE_Pushpin_Polyline")
        d = "<div style=\"position:absolute;width:25px;height:25px;\"><img src=\"i/bin/" + window.buildVersion + "/pins/poi_title_search3.gif\" /></div><div style=\"position:absolute;top:5px;width:25px;height:25px;\"><font color=\"white\">" + c + "</font></div>";
  g = k.AddPushpin(h, o, p, n, l, b, d, MC_STYLE_PINZIndex, Msn.VE.PushPinTypes.Annotation, true);
  return g;
}
);
_VERegisterNamespaces("Msn.Drawing");
Msn.Drawing.CalculateLabelPosition = (function (a,g)
{
  if (a.type == VEShapeType.Pushpin)
    return null;
  if (typeof g != "undefined" && g == true)
    {
      a.labelPosX = null;
      a.labelPosY = null;
      a.labelPosZ = null;
    }
  if (a.labelPosX == null && a.labelPosY == null)
    if (a.type == VEShapeType.Polyline)
      {
        var b = Math.round((a.points.length / 2 - 1) / 2 - 1);
        b = b > - 1 ? b : 0;
        a.labelPosX = (a.points[(2 * b)] + a.points[(2 * b + 2)]) / 2;
        a.labelPosY = (a.points[(2 * b + 1)] + a.points[(2 * b + 3)]) / 2;
        if (a.altitudes)
          a.labelPosZ = Math.max(a.altitudes[b], a.altitudes[(b + 1)]);
      }
    else
      if (a.type == VEShapeType.Polygon)
        {
          var c = a.points.length, d = 0, e = 0, f = null;
          if (a.altitudes)
            f = a.altitudes[0];
          if (c >= 4 && a.points[0] == a.points[(c - 2)] && a.points[1] == a.points[(c - 1)])
            c -= 2;
          for (var b = 0;b < c;b = b + 2)
            {
              d = d + a.points[b];
              e = e + a.points[(b + 1)];
              if (a.altitudes)
                f = Math.max(f, a.altitudes[(b / 2)]);
            }
          d = d * 2 / c;
          e = e * 2 / c;
          a.labelPosX = d;
          a.labelPosY = e;
          a.labelPosZ = f;
        }
}
);
_VERegisterNamespaces("Msn.VE.Core");
Msn.VE.Core.LayerManager = (function ()
{
  function GetCollectionListDiv()
  {
    if (layerListDiv == null)
      {
        layerListDiv = document.createElement("div");
        layerListDiv.id = "VELayerListDiv";
        Init();
      }
    return layerListDiv;
  }
  function Init()
  {
    CreateCollection(0, 0, "Unsaved Collection");
  }
  function AddCollection(b,a)
  {
    if (b == 0)
      cols.unshift(a);
    else
      cols.push(a);
    return a;
  }
  function IsCollectionExist(c)
  {
    if (cols.length > 0)
      for (var a = 0;a < cols.length;a++)
        {
          var b = cols[a];
          if (b.GetMsnId() && b.GetMsnId() == c)
            return true;
        }
    return false;
  }
  function SaveCollection(b)
  {
    var a = cols[0];
    if (a.GetMsnId() == 0)
      {
        a = cols.shift();
        cols.push(a);
        CreateCollection(0, 0, "Unsaved Collection");
        a.SetMsnId(b);
        return a;
      }
  }
  function GetCollectionIndexByMsnId(c)
  {
    if (cols.length > 0)
      for (var a = 0;a < cols.length;a++)
        {
          var d = cols[a], b = d.GetMsnId();
          if (b && b == c)
            return a;
        }
    return 0;
  }
  function GetCollectionByMsnId(b,a)
  {
    if (! b)
      return null;
    switch (b.action)
    {
      case MC_ACTION_RETRIEVE_ALLCOLLECTIONS_METADATA:
        return this.RetrieveCollection(a);
        break ;
      case MC_ACTION_IMPORT_COLLECTION:
        return CreateCollection(cols.length - 1, a, "Unsaved Collection");
      case MC_ACTION_CREATE_COLLECTION:
        return this.SaveCollection(a);
        break ;
      case MC_ACTION_CLONE_ENTITY:
      case MC_ACTION_UPDATE_COLLECTION:
        return this.RetrieveCollection(a);
        break ;
      case MC_ACTION_IMPORT_ENTITY:
      case MC_ACTION_ADD_ENTITY:
        return this.RetrieveCollection(a);
        break ;
      case MC_ACTION_RETRIEVE_SHAREDCOLLECTION:
      case MC_ACTION_RETRIEVE_COLLECTION:
        return this.RetrieveCollection(a);
    }
  }
  function RetrieveCollection(c)
  {
    var d = false;
    if (cols.length > 0)
      for (var b = 0;b < cols.length;b++)
        {
          var a = cols[b];
          if (a.GetMsnId() && a.GetMsnId() == c)
            {
              d = true;
              return a;
            }
        }
    if (! d)
      return CreateCollection(- 1, c, "Unsaved Collection");
  }
  function SetVisibility(b)
  {
    if (cols.length > 0)
      for (var a = 0;a < cols.length;a++)
        cols[a].SetVisibility(b);
  }
  function RetrieveCollectionById(c)
  {
    if (cols.length > 0)
      for (var a = 0;a < cols.length;a++)
        {
          var b = cols[a];
          if (b.GetId() == c)
            return b;
        }
    return null;
  }
  function CreateCollection(b,c,d)
  {
    var a = new VEShapeLayer();
    a.SetMsnId(c);
    a.SetName(d);
    a = AddCollection(b, a);
    return a;
  }
  function CreateNewCollection(b)
  {
    var a = null;
    if (b == MC_COL_TYPE_TILEIMAGE)
      a = new Msn.VE.Core.RasterLayer();
    else
      a = new VEShapeLayer();
    a.SetType(b);
    a.SetMsnId(0);
    a = AddCollection(cols.length, a);
    return a;
  }
  function GetSelectedCollection()
  {
    if (cols.length > 0)
      for (var a = 0;a < cols.length;a++)
        {
          var b = cols[a];
          if (self.GetSelectedCollectionMsnId() == cols[a].GetMsnId())
            return cols[a];
        }
    return CreateCollection(0, 0, "Unsaved Collection");
  }
  function GetCollection(c)
  {
    var a = [];
    a[0] = false;
    a[1] = false;
    if (cols.length > 0)
      for (var b = 0;b < cols.length;b++)
        if (cols[b].GetMsnId() == c)
          {
            a[0] = true;
            var e = cols[b].Annotations.length;
            if (! cols[b].Annotations || e < 1)
              a[1] = false;
            else
              a[1] = true;
            a[2] = cols[b];
            return a;
          }
    var d = CreateCollection(0, c, "Unsaved Collection");
    a[2] = d;
    return a;
  }
  function GetCollectionCount()
  {
    if (! cols)
      return 0;
    return cols.length;
  }
  function GetCollectionByIndex(a)
  {
    if (cols == null || cols.length < a || a < 0)
      return null;
    return cols[a];
  }
  function Dispose()
  {
    DeleteAll();
    cols = [];
    loadedColIds = [];
  }
  function DeleteAll()
  {
    var a = null;
    while (cols.length > 1)
      {
        a = cols.pop();
        EmptyCollection(a);
      }
    if (cols.length == 1)
      EmptyCollection(cols[0]);
  }
  function RemoveCollection(a)
  {
    EmptyCollection(a);
    DeleteCollection(a);
  }
  function EmptyCollection(a)
  {
    var c = null;
    if (a.Annotations.length > 0)
      for (var b = 0;b < a.Annotations.length;b++)
        {
          c = a.Annotations[b];
          ClearEntity(c);
        }
    a.Annotations = [];
    a.SetBoundingBox(0, 0, Infinity, Infinity, - Infinity, - Infinity);
  }
  function DeleteCollection(c)
  {
    var b = 0;
    if (cols.length == 1)
      {
        cols.pop();
        b = 0;
        CreateCollection(0, 0, "Unsaved Collection");
      }
    else
      for (var a = 0;a < cols.length;a++)
        if (cols[a].iid == c.iid)
          {
            b = a;
            cols.splice(a, 1);
            break ;
          }
    c = null;
    selecteColMsnId = 0;
  }
  function GetSelectedCollectionAnnotationCount()
  {
    var a = self.GetSelectedCollection();
    return a.GetShapeCount();
  }
  function GetAnnotationByMsnId(a,d,f)
  {
    var b = [];
    if (a && a.Annotations && a.GetShapeCount() > 0)
      for (var c = 0;c < a.Annotations.length;c++)
        if (d && a.Annotations[c].GetMsnId() == d || f && a.Annotations[c].GetId() == f)
          {
            b[0] = true;
            a.Annotations[c].SetMsnId(d);
            b[1] = a.Annotations[c];
            return b;
          }
    var e = new VEShape(MC_VESHAPE_EMPTY);
    e.SetMsnId(d);
    b[0] = false;
    b[1] = e;
    return b;
  }
  function GetAnnotationById(e)
  {
    if (cols.length < 1)
      return null;
    var d = e, a = d.split(MC_IID_CON_TOKEN);
    if (a[0] != MC_IID_NAMESPACE)
      return null;
    a[1] = a[0] + MC_IID_CON_TOKEN + a[1];
    a[2] = a[1] + MC_IID_CON_TOKEN + a[2];
    for (var b = 0;b < cols.length;b++)
      if (cols[b].iid == a[1])
        {
          var f = cols[b].Annotations.length;
          for (var c = 0;c < f;c++)
            if (cols[b].Annotations[c].GetId() == a[2])
              {
                return cols[b].Annotations[c];
                break ;
              }
          break ;
        }
    return null;
  }
  function GetCollectionByAnId(d)
  {
    if (cols.length < 1)
      return null;
    var c = d, a = c.split(MC_IID_CON_TOKEN);
    if (a[0] != MC_IID_NAMESPACE)
      return null;
    a[1] = a[0] + MC_IID_CON_TOKEN + a[1];
    a[2] = a[1] + MC_IID_CON_TOKEN + a[2];
    for (var b = 0;b < cols.length;b++)
      if (cols[b].iid == a[1])
        {
          cols[b]._index = b;
          return cols[b];
        }
    return null;
  }
  function DeleteAnnotationById(c)
  {
    if (cols.length < 1)
      return null;
    for (var a = 0;a < cols.length;a++)
      if (cols[a].GetMsnId() == selecteColMsnId)
        {
          var d = cols[a].Annotations.length;
          for (var b = 0;b < d;b++)
            if (cols[a].Annotations[b].GetId() == c)
              {
                ClearEntity(cols[a].Annotations[b]);
                cols[a].Annotations.splice(b, 1);
                cols[a].UpdateBoundingBox();
                break ;
              }
          break ;
        }
  }
  function SwapAnnotations(j,k)
  {
    var a = null, b = null, c = null;
    if (cols.length < 1)
      return null;
    for (var d = 0;d < cols.length;d++)
      if (cols[d].GetMsnId() == selecteColMsnId)
        {
          a = d;
          var m = cols[d].Annotations.length;
          for (var e = 0;e < m;e++)
            {
              if (b == null && cols[d].Annotations[e].GetId() == j)
                b = e;
              else
                if (c == null && cols[d].Annotations[e].GetId() == k)
                  c = e;
              if (b != null && c != null)
                break ;
            }
          break ;
        }
    if (a == null || b == null || c == null)
      return null;
    var l = cols[a].Annotations[b];
    cols[a].Annotations[b] = cols[a].Annotations[c];
    cols[a].Annotations[c] = l;
    var f = cols[a].Annotations[b].GetDisplayOrder(), g = cols[a].Annotations[c].GetDisplayOrder();
    cols[a].Annotations[b].SetDisplayOrder(g);
    cols[a].Annotations[c].SetDisplayOrder(f);
    var h = cols[a].Annotations[b].GetIndex(), i = cols[a].Annotations[c].GetIndex();
    cols[a].Annotations[b].SetIndex(i);
    cols[a].Annotations[c].SetIndex(h);
    cols[a].Annotations[b].SetChangeState(MC_CHANGE_STATE_UPDATE);
    cols[a].Annotations[c].SetChangeState(MC_CHANGE_STATE_UPDATE);
    mvcViewFacade.OnEntityRepaint(cols[a].Annotations[b]);
    mvcViewFacade.OnEntityRepaint(cols[a].Annotations[c]);
    return null;
  }
  function DeleteAnnotation(c)
  {
    if (! c)
      return null;
    if (cols.length < 1)
      return null;
    var e = c.GetId(), a = e.split(MC_IID_CON_TOKEN);
    if (a[0] != MC_IID_NAMESPACE)
      return null;
    a[1] = a[0] + MC_IID_CON_TOKEN + a[1];
    var d = null;
    for (var b = 0;b < cols.length;b++)
      if (cols[b].iid == a[1])
        {
          d = cols[b];
          break ;
        }
    if (d == null)
      return null;
    DeleteAnnotationFromCollection(d, c);
  }
  function UpdateBoundingBox(c)
  {
    if (c == null || c.Annotations.length < 1)
      return null;
    var b = null, a = null, e = null;
    for (var d = 0;d < c.Annotations.length;d++)
      {
        e = c.Annotations[d];
        b = e.GetBoundingBox();
        if (b == null)
          return null;
        if (a != null)
          {
            a.x1 = Math.min(a.x1, b.x1);
            a.y1 = Math.min(a.y1, b.y1);
            a.x2 = Math.max(a.x2, b.x2);
            a.y2 = Math.max(a.y2, b.y2);
          }
        else
          a = new Msn.VE.Bounds(0, 0, b.x1, b.y1, b.x2, b.y2);
        b = null;
      }
    if (a)
      c.SetBoundingBox(0, 0, a.x1, a.y1, a.x2, a.y2);
  }
  function DeleteAnnotationFromCollection(a,c)
  {
    ClearEntity(c);
    if (a.Annotations.length == 1)
      a.Annotations.pop();
    else
      for (var b = 0;b < a.Annotations.length;b++)
        if (a.Annotations[b].GetId() == c.GetId())
          {
            a.Annotations.splice(b, 1);
            break ;
          }
    c = null;
    a.UpdateBoundingBox();
    if (a == GetSelectedCollection())
      if (typeof mvcViewFacade != "undefined" && typeof mvcViewFacade.OnCollectionLayerRepaint == "function")
        mvcViewFacade.OnCollectionLayerRepaint(a);
  }
  function CloneCollection(a)
  {
    if (typeof a == "undefined" || a == null)
      return null;
    var g = a.Annotations.length, b = new VEShapeLayer();
    b.SetName(name);
    b.SetName(a.GetName());
    b.SetType(a.GetType());
    b.SetVisibility(a.GetVisibility());
    b.SetMaxZoomLevel(a.GetMaxZoomLevel());
    b.SetMinZoomLevel(a.GetMinZoomLevel());
    var c = a.GetBoundingBox();
    if (c)
      b.SetBoundingBox(c.z1, c.z2, c.x1, c.y1, c.x2, c.y2);
    b.Tags = a.Tags;
    b.SetChangeType(a.GetChangeType());
    b.SetChangeState(a.GetChangeState());
    b.Notes = a.Notes;
    b.IsPublic = a.IsPublic;
    b.IsIndexed = a.IsIndexed;
    b.DateCreated = a.DateCreated;
    b.DateModified = a.DateModified;
    b._properties = CloneProperties(a._properties);
    if (g > 0)
      {
        var e = null, f = null;
        for (var d = 0;d < g;d++)
          {
            e = a.Annotations[d];
            f = CloneAnnotationById(e.GetId());
            b.AddEntityAnnotation(f);
          }
      }
    return b;
  }
  function CloneAnnotationById(b)
  {
    var a = self.GetAnnotationById(b);
    return CloneAnnotation(a);
  }
  function CloneAnnotation(an)
  {
    var annotation = an;
    if (typeof annotation == "undefined" || annotation == null)
      return ;
    var primitive = annotation.GetPrimitive(0);
    if (primitive.points == null || primitive.points.length < 1)
      return null;
    var copypoints = new Array(primitive.points.length), copyprimitive = null;
    for (var j = 0;j < primitive.points.length;j = j + 2)
      {
        copypoints[j] = primitive.points[j];
        copypoints[j + 1] = primitive.points[(j + 1)];
      }
    switch (primitive.type)
    {
      case VEShapeType.Polygon:
      case VEShapeType.Polyline:
        if (primitive.type == VEShapeType.Polyline)
          {
            copyprimitive = new Msn.Drawing.PolyLine(copypoints);
            copyprimitive.iid = Msn.Drawing.GetGeoUID(VEShapeType.Polyline);
          }
        else
          copyprimitive = new Msn.Drawing.Polygon(copypoints);
        copyprimitive.minX = primitive.minX;
        copyprimitive.minY = primitive.minY;
        copyprimitive.maxX = primitive.maxX;
        copyprimitive.maxY = primitive.maxY;
        copyprimitive.minZ = primitive.minZ;
        copyprimitive.maxZ = primitive.maxZ;
        copyprimitive.labelPosX = primitive.labelPosX;
        copyprimitive.labelPosY = primitive.labelPosY;
        copyprimitive.labelPosZ = primitive.labelPosZ;
        copyprimitive.extruded = primitive.extruded;
        copyprimitive.isLabel = primitive.isLabel;
        if (primitive.altitudes)
          {
            var altitudeLen = primitive.altitudes.length;
            copyprimitive.altitudes = [];
            for (var j = 0;j < altitudeLen;j++)
              copyprimitive.altitudes[j] = primitive.altitudes[j];
          }
        break ;
      case VEShapeType.Pushpin:
        copyprimitive = new Msn.Drawing.Point(copypoints[0], copypoints[1]);
        copyprimitive.altitudes = [];
        if (primitive.altitudes)
          copyprimitive.altitudes[0] = primitive.altitudes[0];
    }
    copyprimitive.altitudeMode = primitive.altitudeMode;
    copyprimitive.symbol = primitive.symbol;
    var copyannotation = new VEShape(MC_VESHAPE_EMPTY);
    copyannotation.AddPrimitive(copyprimitive);
    copyannotation.SetProperties(null, annotation.Title, annotation.Url, annotation.PhotoUrl, annotation.UserDate, annotation.Notes, annotation.Latitude, annotation.Longitude, annotation.BusinessListingId, annotation.IconId, annotation.LastModified, annotation.Keywords);
    copyannotation.SetDisplayOrder(annotation.GetDisplayOrder());
    copyannotation.SetZoomLevel(annotation.GetZoomLevel());
    var bbox = annotation.GetBoundingBox();
    if (bbox)
      copyannotation.SetBoundingBox(bbox.z1, bbox.z2, bbox.x1, bbox.y1, bbox.x2, bbox.y2);
    if (annotation.ViewPort)
      {
        copyannotation.ViewPort = new VE_3DViewPort();
        copyannotation.ViewPort.Latitude = annotation.ViewPort.Latitude;
        copyannotation.ViewPort.Longitude = annotation.ViewPort.Longitude;
        copyannotation.ViewPort.Altitude = annotation.ViewPort.Altitude;
        copyannotation.ViewPort.Altitudemode = annotation.ViewPort.Altitudemode;
        copyannotation.ViewPort.Pitch = annotation.ViewPort.Pitch;
        copyannotation.ViewPort.Heading = annotation.ViewPort.Heading;
        copyannotation.ViewPort.Mapstyle = annotation.ViewPort.Mapstyle;
        copyannotation.ViewPort.SceneId = annotation.ViewPort.SceneId;
        copyannotation.ViewPort.Properties = CloneProperties(annotation.ViewPort.Properties);
      }
    copyannotation.SourceUrl = annotation.SourceUrl;
    copyannotation.SourceType = annotation.SourceType;
    if (annotation.ModelRep)
      {
        copyannotation.ModelRep = new VE_3DModelRep();
        copyannotation.ModelRep.Transform = annotation.ModelRep.Transform;
        copyannotation.ModelRep.ModelRefId = annotation.ModelRep.ModelRefId;
        copyannotation.ModelRep.MinBounds = annotation.ModelRep.MinBounds;
        copyannotation.ModelRep.MaxBounds = annotation.ModelRep.MaxBounds;
        copyannotation.ModelRep.Properties = CloneProperties(annotation.ModelRep.Properties);
      }
    if (annotation.Photos)
      {
        var length = annotation.Photos.length;
        copyannotation.Photos = [];
        var copyphoto = null, photo = null;
        for (var i = 0;i < length;i++)
          {
            photo = annotation.Photos[i];
            copyphoto = new VE_Photo();
            copyphoto.Id = photo.Id;
            copyphoto.Url = photo.Url;
            copyphoto.Properties = CloneProperties(photo.Properties);
            copyannotation.Photos.push(copyphoto);
          }
      }
    if (annotation.Tour && typeof annotation.Tour.Actions == "object")
      {
        copyannotation.Tour = new VE_3DTour();
        copyannotation.Tour.Actions = [];
        var tourLen = annotation.Tour.Actions.length;
        for (var i = 0;i < tourLen;i++)
          {
            var actionStr = "{", touraction = annotation.Tour.Actions[i];
            for (tourkey in touraction)
              actionStr = actionStr.concat("'", tourkey, "':'", touraction[tourkey], "',");
            actionStr = actionStr.substring(0, actionStr.length - 1);
            actionStr = actionStr.concat("}");
            var targetAction = eval("(" + actionStr + ")");
            if (typeof targetAction != "undefined" && targetAction != null)
              copyannotation.Tour.Actions.push(targetAction);
          }
      }
    return copyannotation;
  }
  function CloneProperties(a)
  {
    if (typeof a != "object" || a == null)
      return null;
    var c = {};
    for (b in a)
      c[b] = a[b];
    return c;
  }
  function AddAnnotationToCollection(a,b)
  {
    if (typeof b == "undefined" || b == null)
      {
        var c = self.GetSelectedCollection();
        c.AddEntityAnnotation(a);
      }
    else
      b.AddEntityAnnotation(a);
    if (typeof mvcViewFacade != "undefined" && typeof mvcViewFacade.OnEntityRepaint == "function")
      mvcViewFacade.OnEntityRepaint(a);
  }
  function DeleteAllPrimitivesFromAnnotation(a)
  {
    if (typeof a != "undefined" && a.GetPrimitiveCount() > 0)
      {
        var c = a.GetPrimitiveCount();
        if (c < 1)
          return null;
        for (var b = 0;b < c;b++)
          DeletePrimitiveFromAnnotation(a.GetPrimitive(b), a);
      }
    return a;
  }
  function DeletePrimitiveFromAnnotation(b,a)
  {
    a.DeletePrimitive(b.iid);
    if (a.GetPrimitiveCount() == 0)
      {
        DeleteAnnotation(a);
        a = null;
      }
    return a;
  }
  function ClearEntity(a)
  {
    if (typeof a == "undefined" && a == null)
      return null;
    a.ClearAllPrimitives();
  }
  function ParseInternalID(b)
  {
    var a = b.split(MC_IID_CON_TOKEN);
    if (! a || a[0] != MC_IID_NAMESPACE)
      return null;
    a[1] = a[0] + MC_IID_CON_TOKEN + a[1];
    a[2] = a[1] + MC_IID_CON_TOKEN + a[2];
    a[3] = a[2] + MC_IID_CON_TOKEN + a[3];
    return a;
  }
  function GetEntityPrimitiveById(i)
  {
    if (cols.length < 1)
      return null;
    var a = i.split(MC_IID_CON_TOKEN);
    if (a[0] != MC_IID_NAMESPACE)
      return null;
    a[1] = a[0] + MC_IID_CON_TOKEN + a[1];
    a[2] = a[1] + MC_IID_CON_TOKEN + a[2];
    a[3] = a[2] + MC_IID_CON_TOKEN + a[3];
    var b = null, e = null, d = null;
    for (var g = 0;g < cols.length;g++)
      {
        b = cols[g];
        if (b.iid == a[1])
          {
            var j = null;
            for (var c = 0;c < b.Annotations.length;c++)
              if (b.Annotations[c].GetId() == a[2])
                {
                  e = b.Annotations[c];
                  for (var h = 0;h < b.Annotations[c].GetPrimitiveCount();h++)
                    {
                      d = b.Annotations[c].GetPrimitive(h);
                      if (d.iid == a[3])
                        {
                          var f = [];
                          f[0] = b;
                          f[1] = e;
                          f[2] = d;
                          return f;
                        }
                      d = null;
                    }
                  e = null;
                }
          }
      }
    if (b == null || e == null || d == null)
      return null;
  }
  function SavedLayerCount()
  {
    var c = 0, d = cols.length;
    if (cols.length > 0)
      for (var b = 0;b < d;b++)
        {
          var a = cols[b], e = a.GetMsnId();
          if (e != 0 && a.GetType() == MC_COL_TYPE_COLLECTION && ! a.IsExSource())
            c++;
        }
    return c;
  }
  var register = new Msn.VE.Core.EventRegistry(), self = this, cols = [], loadedColIds = [], layerListDiv = null, CopyPasteBoard = null, CountPastes = 0, UndoPrimitives = null;
  var visibleBounds = null;
  this.SetBoundingBox = (function (e,f,a,c,b,d)
{
  if (visibleBounds)
    visibleBounds = new Msn.VE.Bounds(0, 0, a, c, b, d);
  else
    {
      visibleBounds.z1 = e;
      visibleBounds.z2 = f;
      visibleBounds.x1 = a;
      visibleBounds.x2 = b;
      visibleBounds.y1 = c;
      visibleBounds.y2 = d;
    }
}
);
  this.GetBoundingBox = (function ()
{
  if (visibleBounds == null)
    {
      var a = GetSelectedCollection();
      if (a)
        return a.GetBoundingBox();
    }
  return visibleBounds;
}
);
  var selecteColMsnId = 0;
  this.GetSelectedCollectionMsnId = (function ()
{
  return selecteColMsnId;
}
);
  var selectedAnnotation = null;
  this.SetSelectedAnnotation = (function (a)
{
  selectedAnnotation = a;
}
);
  this.ClearSelectedAnnotation = (function ()
{
  selectedAnnotation = null;
}
);
  this.GetSelectedAnnotation = (function ()
{
  return selectedAnnotation;
}
);
  this.IsSelectedCollectionUnsaved = (function ()
{
  if (selecteColMsnId == 0)
    return true;
  else
    return false;
}
);
  this.SetSelectedCollectionMsnId = (function (a)
{
  selecteColMsnId = a;
  if (a != 0)
    {
      for (var d = 0;d < loadedColIds.length;d++)
        if (loadedColIds[d] == a)
          return a;
      loadedColIds.push(a);
      if (loadedColIds.length > MC_MAX_LOADED_COLS)
        {
          var c = loadedColIds.shift();
          c = GetCollectionIndexByMsnId(c);
          if (c > 0)
            {
              var b = GetCollectionByIndex(c);
              if (b && b.GetType() == MC_COL_TYPE_COLLECTION)
                {
                  mvcViewFacade.OnCollectionLayerClear(b);
                  EmptyCollection(b);
                }
            }
        }
    }
}
);
  this.AddListener = (function (b,a)
{
  register.AddListener(b, a);
}
);
  this.RemoveListener = (function (b,a)
{
  register.RemoveListener(b, a);
}
);
  this.Fire = (function (b,a)
{
  register.Fire(b, a);
}
);
  this.GetCollectionListDiv = GetCollectionListDiv;
  this.Init = Init;
  this.IsCollectionExist = IsCollectionExist;
  this.GetCollectionIndexByMsnId = GetCollectionIndexByMsnId;
  this.GetAnnotationByMsnId = GetAnnotationByMsnId;
  this.GetSelectedCollection = GetSelectedCollection;
  this.GetCollection = GetCollection;
  this.RetrieveCollection = RetrieveCollection;
  this.RetrieveCollectionById = RetrieveCollectionById;
  this.CreateNewCollection = CreateNewCollection;
  this.SaveCollection = SaveCollection;
  this.GetCollectionCount = GetCollectionCount;
  this.GetSelectedCollectionAnnotationCount = GetSelectedCollectionAnnotationCount;
  this.GetCollectionByIndex = GetCollectionByIndex;
  this.GetCollectionByMsnId = GetCollectionByMsnId;
  this.RemoveCollection = RemoveCollection;
  this.EmptyCollection = EmptyCollection;
  this.GetAnnotationById = GetAnnotationById;
  this.GetCollectionByAnId = GetCollectionByAnId;
  this.DeleteAnnotationById = DeleteAnnotationById;
  this.SwapAnnotations = SwapAnnotations;
  this.DeleteAnnotation = DeleteAnnotation;
  this.DeleteAnnotationFromCollection = DeleteAnnotationFromCollection;
  this.CloneAnnotationById = CloneAnnotationById;
  this.CloneAnnotation = CloneAnnotation;
  this.AddAnnotationToCollection = AddAnnotationToCollection;
  this.DeleteAllPrimitivesFromAnnotation = DeleteAllPrimitivesFromAnnotation;
  this.ParseInternalID = ParseInternalID;
  this.GetEntityPrimitiveById = GetEntityPrimitiveById;
  this.CloneCollection = CloneCollection;
  this.AddCollection = AddCollection;
  this.DeleteAll = DeleteAll;
  this.SetVisibility = SetVisibility;
  this.SavedLayerCount = SavedLayerCount;
  this.Dispose = Dispose;
}
);
VE_CollectionActions = (function ()
{
  }
);
VE_CollectionActions.Create = "CreateCollection";
VE_CollectionActions.Update = "UpdateCollection";
VE_CollectionActions.RetrieveAll = "RetrieveAllCollections";
VE_CollectionActions.RetrieveDetails = "RetrieveCollectionDetails";
VE_CollectionActions.Delete = "DeleteCollection";
VE_CollectionActions.DeleteAll = "DeleteAllCollections";
VE_CollectionActions.DeleteAllAnnotations = "DeleteAllAnnotations";
VE_AnnotationActions = (function ()
{
  }
);
VE_AnnotationActions.Create = "CreateAnnotation";
VE_AnnotationActions.Delete = "DeleteAnnotation";
VE_AnnotationActions.Update = "UpdateAnnotation";
VE_AnnotationActions.RetrieveAll = "RetrieveAllAnnotations";
VE_AnnotationState = (function ()
{
  }
);
VE_AnnotationState.None = "None";
VE_AnnotationState.Added = "Added";
VE_AnnotationState.Updated = "Updated";
VE_AnnotationState.Deleted = "Deleted";
VE_CollectionsManagerConstants = (function ()
{
  }
);
VE_CollectionsManagerConstants.Handler = "UserCollections.aspx?action=";
VE_CollectionsManagerConstants.Market = "mkt=";
VE_CollectionsManagerConstants.Random = "rand=";
VE_CollectionsManagerConstants.A_Id = "aid";
VE_CollectionsManagerConstants.A_Title = "atitle";
VE_CollectionsManagerConstants.A_Latitude = "alatitude";
VE_CollectionsManagerConstants.A_Longitude = "alongitude";
VE_CollectionsManagerConstants.A_Notes = "anotes";
VE_CollectionsManagerConstants.A_Keywords = "akeywords";
VE_CollectionsManagerConstants.A_IconId = "aiconid";
VE_CollectionsManagerConstants.A_InfoUrl = "aurl";
VE_CollectionsManagerConstants.A_PhotoUrl = "aphotourl";
VE_CollectionsManagerConstants.A_UserDate = "auserdate";
VE_CollectionsManagerConstants.A_DisplayOrder = "adisplayorder";
VE_CollectionsManagerConstants.A_BusinessId = "abusinesslistingid";
VE_CollectionsManagerConstants.A_CreationId = "acreationid";
VE_CollectionsManagerConstants.A_State = "astate";
VE_CollectionsManagerConstants.C_Id = "cid";
VE_CollectionsManagerConstants.C_Name = "cname";
VE_CollectionsManagerConstants.C_IsPublic = "cispublic";
VE_CollectionsManagerConstants.C_Length = "cannotationcount";
VE_CollectionsManagerConstants.C_Keywords = "ckeywords";
VE_CollectionsManagerConstants.ViewerDefaultTitle = L_CollectionManagerViewerDefaultTitle_Text;
VE_CollectionsManagerConstants.MinimizedTimerDelay = 1;
VE_CollectionsManagerConstants.TimerDelay = 2000;
VE_CollectionsManagerConstants.ExtendedTimerDelay = 5000;
VE_CollectionsManagerConstants.MAX_COLLECTION_SIZE = 200;
VE_CollectionsManagerConstants.HELP_FILE_PATH = "/cPublicPrivate.htm";
VE_CollectionsManagerConstants.TourMode = "tour";
VELayerProperties = {CopyAllowed : "copyallowed"};
VEShapeLayer = (function ()
{
  this._mapGuid = null;
  this.Name = "";
  this.MsnId = "";
  this.IsPublic = false;
  this.Culture = "en-us";
  this.IsIndexed = false;
  this.SourceUrl = null;
  this.DateCreated = Date();
  this.DateModified = Date();
  this.Tags = "";
  this.Notes = "";
  this.Annotations = [];
  this.Dirty = false;
  this.ViewableByOwnerOnly = false;
  this.EditableByOwner = true;
  this.OwnerIsViewing = false;
  this._properties = null;
  this.iid = MC_IID_NAMESPACE + MC_IID_CON_TOKEN + Msn.Drawing.GetGeoUID(MC_GEO_TYPE_COL);
  this._index = 0;
  this.GetShapeCount = (function ()
{
  if (this.Annotations)
    return this.Annotations.length;
  else
    return 0;
}
);
  this.ClearAnnotations = (function ()
{
  while (this.Annotations.length)
    {
      var a = this.Annotations.pop();
      a = null;
    }
}
);
  this.AddAnnotation = (function (a,b)
{
  if (a && this.Annotations)
    if (typeof b == "number" && b >= 0 && b < this.Annotations.length)
      {
        this.Annotations.splice(b, 0, a);
        return this.Annotations.length;
      }
    else
      {
        a.SetIndex(this.Annotations.length);
        a.SetDisplayOrder(this.Annotations.length);
        return this.Annotations.push(a);
      }
}
);
  this.RetrieveAnnotationById = (function (b)
{
  if (this.Annotations.length > 0 && b)
    {
      var a = 0;
      while (a < this.Annotations.length)
        {
          if (b == this.Annotations[a].Id)
            return a;
          a++;
        }
    }
  return null;
}
);
  this.ResetOrder = (function ()
{
  if (this.Annotations && this.Annotations != "" && this.Annotations != "undefined" && this.Annotations.length > 0)
    {
      for (var a = 0;a < this.Annotations.length;a++)
        if (this.Annotations[a]  instanceof  VEShape)
          {
            this.Annotations[a].DisplayOrder = a;
            this.Annotations[a].Delta = 0;
          }
      this.Dirty = false;
    }
}
);
  this.ReOrder = (function ()
{
  this.Annotations.sort(this.sortByIndex);
  this.Dirty = false;
}
);
  this.sortByIndex = (function (a,b)
{
  if (a  instanceof  VEShape && b  instanceof  VEShape)
    {
      a.DisplayOrder = a.DisplayOrder + a.Delta;
      b.DisplayOrder = b.DisplayOrder + b.Delta;
      a.Delta = 0;
      b.Delta = 0;
      return a.DisplayOrder - b.DisplayOrder;
    }
}
);
}
);
VEShapeLayer.prototype = new Msn.VE.Core.VectorLayer();
VEShapeLayer.prototype.isEmptyOnServerSide = false;
VEShapeLayer.prototype.IsUpdateCollection = true;
VEShapeLayer.prototype.AddEntityAnnotation = (function (a)
{
  this.UpdateEntityAnnotation(a);
  this.AddAnnotation(a);
}
);
VEShapeLayer.prototype.SetChangeState = (function (a)
{
  this.ChangeState = a;
}
);
VEShapeLayer.prototype.GetChangeState = (function ()
{
  if (typeof this.ChangeState == "undefined")
    this.ChangeState = MC_CHANGE_STATE_DEFAULT;
  return this.ChangeState;
}
);
VEShapeLayer.prototype.SetChangeType = (function (a)
{
  this.ChangeType = a;
}
);
VEShapeLayer.prototype.GetChangeType = (function ()
{
  if (typeof this.ChangeType == "undefined")
    this.ChangeType = MC_CHANGE_TYPE_ALL;
  return this.ChangeType;
}
);
VEShapeLayer.prototype.UpdateEntityAnnotation = (function (c)
{
  if (this.Annotations.length < 1)
    this.SetBoundingBox(0, 0, Infinity, Infinity, - Infinity, - Infinity);
  var d = true, a = this.GetBoundingBox(), b = null;
  b = c.GetBoundingBox();
  var e = a.x1 <= a.x2 && a.y1 <= a.y2, f = b.x1 <= b.x2 && b.y1 <= b.y2;
  if (e && f)
    d = a.x1 < b.x1 && a.y1 < b.y1 && a.x2 > b.x2 && a.y2 > b.y2;
  c.Update(true, this.iid);
  if (a)
    if (d)
      {
        a.x1 = Math.min(b.x1, a.x1);
        a.y1 = Math.min(b.y1, a.y1);
        a.x2 = Math.max(b.x2, a.x2);
        a.y2 = Math.max(b.y2, a.y2);
      }
    else
      a = this.UpdateBoundingBox();
  else
    a = new Msn.VE.Bounds(0, 0, b.x1, b.y1, b.x2, b.y2);
  this.SetBoundingBox(0, 0, a.x1, a.y1, a.x2, a.y2);
  a = null;
  return c;
}
);
VEShapeLayer.prototype.UpdateBoundingBox = (function ()
{
  var h = this.Annotations.length, g = null, a = null, b = Infinity, d = Infinity, c = - Infinity, e = - Infinity;
  for (var f = 0;f < h;f++)
    {
      g = this.Annotations[f];
      a = g.GetBoundingBox();
      b = Math.min(a.x1, b);
      d = Math.min(a.y1, d);
      c = Math.max(a.x2, c);
      e = Math.max(a.y2, e);
    }
  this.SetBoundingBox(0, 0, b, d, c, e);
  return this.GetBoundingBox();
}
);
VEShapeLayer.prototype.IsExSource = (function ()
{
  if (this.MsnId != 0 && this.MsnId.indexOf(MC_CML_EXCOL_PREFIX) == 0)
    return true;
  else
    return false;
}
);
VEShapeLayer.prototype.IsFromMsnStorage = (function ()
{
  if (this.MsnId == 0 || this.IsExSource())
    return false;
  else
    return true;
}
);
VEShapeLayer.prototype.GetProperty = (function (b)
{
  if (this._properties == null)
    return null;
  var a = this._properties[b];
  return typeof a == "undefined" ? null : a;
}
);
VEShapeLayer.prototype.SetProperty = (function (b,a)
{
  if (typeof b != "string" && typeof b != "number" || typeof a != "string" && typeof a != "number" && typeof a != "boolean")
    return null;
  if (this._properties == null)
    this._properties = {};
  this._properties[b] = a;
}
);
VEShapeLayer.prototype.IsDuplicate = (function (b)
{
  var i = this.Annotations.length, e = b.GetPrimitive(0);
  if (i < 1 || e == null)
    return false;
  var n = e.type, a = null, d = 0, c = 0, l = b.ToString(), m = b.GetId(), h = b.GetMsnId(), g = b.GetBusinessListingId();
  for (var f = 0;f < i;f++)
    {
      a = this.Annotations[f];
      primitive2 = a.GetPrimitive(0);
      if (primitive2 == null || e.type != primitive2.type)
        continue ;
      d = a.GetMsnId();
      c = a.GetBusinessListingId();
      if (m != a.GetId())
        {
          var k = h != 0 && d != 0 && h == d;
          if (k)
            return true;
          var j = g != 0 && c != 0 && g == c;
          if (j)
            return true;
          if (l == a.ToString())
            return true;
        }
      d = 0;
      c = 0;
    }
  return false;
}
);
VEShapeLayer.prototype.GetBoundingRectangle = (function ()
{
  var a = this.GetBoundingBox();
  return new VELatLongRectangle(new VELatLong(a.y2, a.x1), new VELatLong(a.y1, a.x2));
}
);
VEShapeLayer.prototype.GetShapeByIndex = (function (a)
{
  var b = this.Annotations.length;
  if (typeof a != "number" && a > 0 && a < b - 1)
    return null;
  return this.Annotations[a];
}
);
VEShapeLayer.prototype.GetShapeByID = (function (b)
{
  var c = this.Annotations.length;
  for (var a = 0;a < c;a++)
    if (this.Annotations[a].GetId() == b)
      return this.Annotations[a];
  return null;
}
);
VEShapeLayer.prototype.DeleteAllShapes = (function ()
{
  if (this._mapGuid != null)
    {
      var b = GetVEMapInstance(this._mapGuid);
      if (b != null)
        b.m_vegraphicsmanager.ClearLayerDom(this);
    }
  var c = this.Annotations.length;
  for (var a = 0;a < c;a++)
    this.Annotations[a].DisposeEx();
  this.Annotations = [];
  this.Boundingbox = new Msn.VE.Bounds(0, 0, Infinity, Infinity, - Infinity, - Infinity);
}
);
VEShapeLayer.prototype.SwapShapes = (function (a,b)
{
  var a = parseInt(a), b = parseInt(b);
  VEValidator.ValidateInt(a, "idx1");
  VEValidator.ValidateInt(b, "idx2");
  if (a == b)
    return false;
  var c = this.Annotations.length;
  VEValidator.ValidateBetween(a, "idx1", 0, c - 1);
  VEValidator.ValidateBetween(b, "idx2", 0, c - 1);
  var h = this.Annotations[a];
  this.Annotations[a] = this.Annotations[b];
  this.Annotations[b] = h;
  var d = this.Annotations[a].GetDisplayOrder(), e = this.Annotations[b].GetDisplayOrder();
  this.Annotations[a].SetDisplayOrder(e);
  this.Annotations[b].SetDisplayOrder(d);
  var f = this.Annotations[a].GetIndex(), g = this.Annotations[b].GetIndex();
  this.Annotations[a].SetIndex(g);
  this.Annotations[b].SetIndex(f);
  if (this.Annotations[a].GetVisibility())
    this.Annotations[a].Show();
  if (this.Annotations[b].GetVisibility())
    this.Annotations[b].Show();
  return true;
}
);
VEShapeLayer.prototype.AddShape = (function (a,b)
{
  if (a && typeof a.length != "undefined")
    this.AddShapes(a, b);
  else
    {
      VEValidator.ValidateObject(a, "_veshape", VEShape, "VEShape");
      if (a._shplayer != null || a.Primitives[0] == null)
        throw new VEException("AddShape", "err_invalidargument", L_ShpExist_text);
      a._shplayer = this;
      this.UpdateEntityAnnotation(a);
      this.AddAnnotation(a, b);
      if (a.GetVisibility())
        a.Show();
    }
}
);
VEShapeLayer.prototype.AddShapes = (function (c)
{
  VEValidator.ValidateObjectArray(c, "_veshapeArray", VEShape, "VEShape Array");
  var g = c.length, f = GetVEMapInstance(this._mapGuid);
  if (f && f.GetMapMode() == Msn.VE.MapActionMode.Mode3D)
    for (var a = 0;a < g;++a)
      this.AddShape(c[a]);
  else
    {
      if (this._index == 0 && this.GetShapeCount() == 0)
        this.Show();
      var h = this.Annotations.length;
      for (var a = 0;a < h;a++)
        this.Annotations[a].ClearDomElements();
      var d = [];
      for (var a = 0;a < g;++a)
        {
          var b = c[a];
          b._shplayer = this;
          this.UpdateEntityAnnotation(b);
          this.AddAnnotation(b);
          if (b.IconUrl == null)
            b.IconUrl = Msn.VE.API.Constants.iconurl;
          d.push(b.ToHtml());
          b._isDrawn = true;
        }
      var e = $ID(this.GetId());
      if (e)
        e.innerHTML += d.join("");
    }
}
);
VEShapeLayer.prototype.DeleteShape = (function (b)
{
  VEValidator.ValidateObject(b, "_veshape", VEShape, "VEShape");
  var d = this.Annotations.length;
  for (var a = 0;a < d;a++)
    if (this.Annotations[a].GetId() == b.GetId())
      {
        if (this._mapGuid != null)
          {
            var c = GetVEMapInstance(this._mapGuid);
            if (c != null)
              c.m_vegraphicsmanager.ClearEntityDom(this.Annotations[a]);
          }
        this.Annotations[a].DisposeEx();
        this.Annotations.splice(a, 1);
        this.UpdateBoundingBox();
        break ;
      }
}
);
VEShapeLayer.prototype.Show = (function ()
{
  this.SetVisibility(true);
  if (this._mapGuid == null)
    return null;
  vmap = GetVEMapInstance(this._mapGuid);
  if (vmap == null)
    return null;
  vmap.m_vegraphicsmanager.DrawLayer(this);
}
);
VEShapeLayer.prototype.Hide = (function ()
{
  this.SetVisibility(false);
  if (this._mapGuid == null)
    return null;
  vmap = GetVEMapInstance(this._mapGuid);
  if (vmap == null)
    return null;
  vmap.m_vegraphicsmanager.ClearLayerDom(this);
}
);
VEShapeLayer.prototype.SetTitle = (function (a)
{
  if (typeof a != "undefined" && a != null)
    this.Name = a.replace(/%0D%0A/g, "\r\n").replace(/%0A/g, "\n");
}
);
VEShapeLayer.prototype.GetTitle = (function ()
{
  if (typeof this.Name == "undefined")
    this.Name = "my collection";
  return this.Name;
}
);
VEShapeLayer.prototype.SetDescription = (function (a)
{
  if (typeof a != "undefined" && a != null)
    this.Notes = a.replace(/%0D%0A/g, "\r\n").replace(/%0A/g, "\n");
}
);
VEShapeLayer.prototype.GetDescription = (function ()
{
  if (typeof this.Notes == "undefined")
    this.Notes = "";
  return this.Notes;
}
);
VEShapeLayer.prototype.SetMaxZoomLevel = (function (a)
{
  a = parseInt(a);
  if (isNaN(a) || a > 21 || a < 1)
    throw new VEException("VEShapeLayer.SetMaxZoomLevel", "err_incorrectzoomlevel", L_Shp_IncorrectZoomLevel);
  else
    if (a < this.MinScale)
      throw new VEException("VEShapeLayer.SetMaxZoomLevel", "err_incorrectzoomlevel", L_Shp_IncorrectZoomLevel2);
  this.MaxScale = a;
  if (this.GetVisibility())
    this.Show();
}
);
VEShapeLayer.prototype.GetMaxZoomLevel = (function ()
{
  return this.MaxScale;
}
);
VEShapeLayer.prototype.SetMinZoomLevel = (function (a)
{
  a = parseInt(a);
  if (isNaN(a) || a < 1 || a > 21)
    throw new VEException("VEShapeLayer.SetMinZoomLevel", "err_incorrectzoomlevel", L_Shp_IncorrectZoomLevel);
  else
    if (a > this.MaxScale)
      throw new VEException("VEShapeLayer.SetMinZoomLevel", "err_incorrectzoomlevel", L_Shp_IncorrectZoomLevel2);
  this.MinScale = a;
  if (this.GetVisibility())
    this.Show();
}
);
VEShapeLayer.prototype.GetMinZoomLevel = (function ()
{
  return this.MinScale;
}
);
VEShapeLayer.prototype.IsVisible = (function ()
{
  return this.GetVisibility();
}
);
VEShape.prototype.GetCacheOfSerializationLength = (function ()
{
  if (this._cacheOfSerializationLength <= 0)
    {
      var a = VE_CookieSerializer.SerializeAnnotation(this);
      if (a != null)
        this._cacheOfSerializationLength = a.length;
    }
  return this._cacheOfSerializationLength;
}
);
VEShape.prototype.InvalidateCacheOfSerializationLength = (function ()
{
  this._cacheOfSerializationLength = 0;
}
);
VEShape.prototype.index = 0;
VEShape.prototype.SetIndex = (function (a)
{
  this.index = a;
}
);
VEShape.prototype.GetIndex = (function ()
{
  return this.index;
}
);
VEShape.prototype.SetDisplayOrder = (function (a)
{
  this.DisplayOrder = a;
}
);
VEShape.prototype.GetDisplayOrder = (function ()
{
  return this.DisplayOrder;
}
);
VEShape.prototype.SetProperties = (function (b,i,j,e,f,h,l,k,c,g,d,a)
{
  if (b)
    this.Id = b;
  this.Title = i.replace(/%0D%0A/g, "\r\n").replace(/%0A/g, "\n");
  this.Notes = h.replace(/%0D%0A/g, "\r\n").replace(/%0A/g, "\n");
  if (a != null && a.length > 0 && a[0] != null)
    {
      this.Keywords = a;
      this.Keywords[0] = this.Keywords[0].replace(/%0D%0A/g, "\r\n").replace(/%0A/g, "\n");
    }
  else
    this.Keywords = a;
  this.Url = j;
  this.PhotoUrl = e;
  this.UserDate = f;
  this.BusinessListingId = c;
  this.IconId = g;
  this.LastModified = d;
}
);
VEShape.prototype.symbolUrl = "samplesymbol";
VEShape.prototype.GetMsnId = (function ()
{
  return this.Id;
}
);
VEShape.prototype.SetMsnId = (function (a)
{
  this.Id = a;
}
);
VEShape.prototype.SetBoundingBox = (function (f,e,c,d,a,b)
{
  if (typeof this.Boundingbox == "undefined" || this.Boundingbox == null)
    {
      if (c == null || d == null || a == null || b == null)
        return null;
      this.Boundingbox = new Msn.VE.Bounds(f, e, c, d, a, b);
    }
  else
    {
      this.Boundingbox.x1 = c;
      this.Boundingbox.y1 = d;
      this.Boundingbox.z1 = f;
      this.Boundingbox.x2 = a;
      this.Boundingbox.y2 = b;
      this.Boundingbox.z2 = e;
    }
  return this.Boundingbox;
}
);
VEShape.prototype.GetBoundingBox = (function ()
{
  if (typeof this.Boundingbox == "undefined" || ! this.Boundingbox)
    this.Boundingbox = new Msn.VE.Bounds(0, 0, Infinity, Infinity, - Infinity, - Infinity);
  return this.Boundingbox;
}
);
VEShape.prototype.GetCenterPoint = (function ()
{
  if (! this.GetBoundingBox())
    return ;
  var a = new Array(2);
  a[0] = ((this.GetBoundingBox()).x1 + (this.GetBoundingBox()).x2) / 2;
  a[1] = ((this.GetBoundingBox()).y1 + (this.GetBoundingBox()).y2) / 2;
  return a;
}
);
VEShape.prototype.SetId = (function (a)
{
  this.iid = a;
}
);
VEShape.prototype.GetId = (function ()
{
  if (typeof this.iid == "undefined" || this.iid == 0 || this.iid == null)
    this.iid = Msn.Drawing.GetGeoUID(MC_GEO_TYPE_ENTITY);
  return this.iid;
}
);
VEShape.prototype.SetVisibility = (function (a)
{
  this.Visibility = a;
}
);
VEShape.prototype.GetVisibility = (function ()
{
  if (typeof this.Visibility == "undefined" || typeof this.Visibility == "null")
    this.Visibility = true;
  return this.Visibility;
}
);
VEShape.prototype.SetBusinessListingId = (function (a)
{
  if (typeof a == "undefined" || a == "null")
    this.BusinessListingId = 0;
  else
    this.BusinessListingId = a;
}
);
VEShape.prototype.GetBusinessListingId = (function ()
{
  if (typeof this.BusinessListingId == "undefined" || this.BusinessListingId == null || this.BusinessListingId == "null")
    this.BusinessListingId = 0;
  return this.BusinessListingId;
}
);
VEShape.prototype.SetType = (function (a)
{
  this.Type = a;
}
);
VEShape.prototype.GetType = (function ()
{
  if (typeof this.Type == "undefined")
    this.Type = "aN";
  return this.Type;
}
);
VEShape.prototype.SetSaveStatus = (function (a)
{
  this.SaveStatus = a;
}
);
VEShape.prototype.IsSaved = (function ()
{
  if (typeof this.SaveStatus == "undefined")
    this.SaveStatus = true;
  return this.SaveStatus;
}
);
VEShape.prototype.SetOnScratchpad = (function (a)
{
  this.OnScratchpad = a;
}
);
VEShape.prototype.IsOnScratchpad = (function ()
{
  if (typeof this.OnScratchpad == "undefined")
    this.OnScratchpad = true;
  return this.OnScratchpad;
}
);
VEShape.prototype.SetZoomLevel = (function (a)
{
  this.ZoomLevel = a;
}
);
VEShape.prototype.GetZoomLevel = (function ()
{
  if (typeof this.ZoomLevel == "undefined")
    this.ZoomLevel = 12;
  return this.ZoomLevel;
}
);
VEShape.prototype.SetChangeState = (function (a)
{
  this.ChangeState = a;
}
);
VEShape.prototype.GetChangeState = (function ()
{
  if (typeof this.ChangeState == "undefined")
    this.ChangeState = MC_CHANGE_STATE_DEFAULT;
  return this.ChangeState;
}
);
VEShape.prototype.SetChangeType = (function (a)
{
  this.ChangeType = a;
}
);
VEShape.prototype.GetChangeType = (function ()
{
  if (typeof this.ChangeType == "undefined")
    this.ChangeType = MC_CHANGE_TYPE_ALL;
  return this.ChangeType;
}
);
VEShape.prototype.HasAltitude = (function ()
{
  var a = this.Primitives;
  if (typeof a == "undefined" || a == null)
    return false;
  if (a[0].altitudes == null)
    return false;
  else
    return true;
}
);
VEShape.prototype.GetPrimitiveCount = (function ()
{
  if (typeof this.Primitives == "undefined" || this.Primitives == null)
    {
      this.Primitives = [];
      return 0;
    }
  return this.Primitives.length;
}
);
VEShape.prototype.SetPrimitives = (function (a)
{
  this.Primitives = a;
  this.SetType(a[0].type);
}
);
VEShape.prototype.GetPrimitives = (function ()
{
  if (typeof this.Primitives == "undefined" || this.Primitives == null)
    this.Primitives = [];
  return this.Primitives;
}
);
VEShape.prototype.GetPrimitive = (function (a)
{
  if (typeof this.Primitives == "undefined" || this.Primitives == null || this.Primitives.length == 0)
    {
      this.Primitives = [];
      return null;
    }
  if (a < this.Primitives.length)
    return this.Primitives[a];
  else
    return this.Primitives[0];
}
);
VEShape.prototype.AddPrimitive = (function (a)
{
  if (typeof this.Primitives == "undefined" || this.Primitives == null)
    this.Primitives = [];
  this.Primitives.push(a);
  this.SetType(a.type);
}
);
VEShape.prototype.UpdateUI = (function ()
{
  }
);
VEShape.prototype.DeletePrimitive = (function (c)
{
  if (typeof this.Primitives == "undefined" || this.Primitives == null)
    {
      this.Primitives = [];
      return null;
    }
  if (this.Primitives.length == 1)
    {
      this.Primitives[0].Destroy();
      this.Primitives.pop();
      this.Primitives = [];
      return null;
    }
  var b = null;
  for (var a = 0;a < this.Primitives.length;a++)
    {
      b = this.Primitives[a];
      if (b.iid == c)
        {
          this.Primitives[a].splice(a, 1);
          break ;
        }
    }
  if (b)
    b.Destroy();
}
);
VEShape.prototype.ClearAllPrimitives = (function ()
{
  if (typeof this.Primitives == "undefined" || this.Primitives == null)
    {
      this.Primitives = [];
      return ;
    }
  for (var a = 0;a < this.Primitives.length;a++)
    this.Primitives[a].Destroy();
  this.Primitives = [];
}
);
VEShape.prototype.Update = (function (j,h)
{
  var b = false, l = this.GetId().split(MC_IID_CON_TOKEN);
  if (l[0] == MC_IID_NAMESPACE)
    b = true;
  else
    {
      b = false;
      if (! h)
        return false;
      var k = h.split(MC_IID_CON_TOKEN);
      if (k[0] != MC_IID_NAMESPACE)
        return false;
    }
  var m = this.Primitives.length, a = null, d = Infinity, f = Infinity, e = - Infinity, g = - Infinity;
  for (var i = 0;i < m;i++)
    {
      a = this.Primitives[i];
      if (a.type != VEShapeType.Pushpin)
        {
          if (! b || j || a.minX == null || a.minY == null || a.maxX == null || a.maxY == null)
            {
              var c = Msn.Drawing.ComputeBoundingBox(a.points);
              if (c)
                {
                  a.minX = c[0];
                  a.minY = c[1];
                  a.maxX = c[2];
                  a.maxY = c[3];
                }
            }
          d = Math.min(a.minX, d);
          f = Math.min(a.minY, f);
          e = Math.max(a.maxX, e);
          g = Math.max(a.maxY, g);
          Msn.Drawing.CalculateLabelPosition(a);
          this.Longitude = a.labelPosX;
          this.Latitude = a.labelPosY;
          this.Altitude = a.labelPosZ;
        }
      else
        {
          d = Math.min(a.points[0], d);
          f = Math.min(a.points[1], f);
          e = Math.max(a.points[0], e);
          g = Math.max(a.points[1], g);
          this.Longitude = a.points[0];
          this.Latitude = a.points[1];
        }
      if (! b)
        a.iid = h + MC_IID_CON_TOKEN + this.GetId() + MC_IID_CON_TOKEN + a.iid;
      a.title = this.Title;
      if (a.shape != null)
        a.shape.id = a.iid;
    }
  this.SetBoundingBox(0, 0, d, f, e, g);
  if (! b)
    this.SetId(h + MC_IID_CON_TOKEN + this.GetId());
  this.guid = this.GetId();
  return this.GetBoundingBox();
}
);
VEShape.prototype.SetIconUrl = (function (a)
{
  this.IconUrl = a;
}
);
VEShape.prototype.GetIconUrl = (function ()
{
  return this.IconUrl;
}
);
VEShape.prototype.IsModel = (function ()
{
  return this.ModelRep == null ? false : true;
}
);
VEShape.prototype.MovePrimitive = (function (d,c)
{
  var d = parseFloat(d), c = parseFloat(c);
  if (isNaN(d) || isNaN(c))
    return ;
  var f = null;
  for (var e = 0;e < this.Primitives.length;e++)
    {
      f = this.Primitives[e];
      var b = f.points, g = b.length;
      for (var a = 0;a < g - 1;a = a + 2)
        {
          b[a] = b[a] + d;
          b[a + 1] = b[(a + 1)] + c;
        }
    }
}
);
VEShape.prototype.Dispose = (function ()
{
  this.ClearAllPrimitives();
  this.Boundingbox = null;
  this._customIcon = null;
  this._IconContent = null;
  this._eroContent = null;
  this._shplayer = null;
  this.IconUrl = null;
  this.Id = null;
  this.Title = null;
  this.Latitude = null;
  this.Longitude = null;
  this.Notes = null;
  this.Keywords = null;
  this.Url = null;
  this.PhotoUrl = null;
  this.UserDate = null;
  this.DisplayOrder = null;
  this.BusinessListingId = null;
  this.IconId = null;
  this.LastModified = null;
  this.ViewPort = null;
  this.Tour = null;
  this.ModelRep = null;
  this.SourceUrl = null;
  this.SourceType = null;
  this.Photos = null;
}
);
VEShape.prototype.ToString = (function ()
{
  var a = "<e>", f = this.Primitives.length, d = null;
  for (var e = 0;e < f;e++)
    {
      d = this.Primitives[e];
      if (d.type == VEShapeType.Pushpin)
        a = a.concat("<coords>", d.points.join(","), "</coords>");
    }
  var b = "<a>", c = "</a>";
  a = a.concat("<as>");
  a = a.concat(b, this.GetBusinessListingId(), c, b, this.Url, c, b, this.PhotoUrl, c, b, this.Title, c, b, this.Type, c);
  a = a.concat("</as>");
  a = a.concat("</e>");
  return a;
}
);
VEShape.prototype.SetPhotos = (function (a)
{
  this.Photos = a;
}
);
VEShape.Decoder = new _xy1();
VEShape.LatLongFactory = new VELatLongFactory(new VELatLongFactoryAlwaysEncodeSpec());
VEShape.prototype._Construct = (function (j,g,e)
{
  var a = [], d = [], k = false, f = null;
  if (typeof g != "undefined")
    {
      if (g == MC_VESHAPE_EMPTY && j)
        {
          this.maxZoomLevel = 21;
          this.minZoomLevel = 1;
          this._eroContent = null;
          this._shplayer = null;
          return ;
        }
    }
  else
    throw new VEException("VEShape", "err_invalidargument", L_invalidargument_text.replace("%1", "type").replace("%2", "VEShapeType"));
  if (typeof e == "object")
    if (typeof e.length == "number")
      {
        var l = e.length;
        for (var h = 0;h < l;h++)
          if (VELatLong.prototype.isPrototypeOf(e[h]))
            {
              var c = VEShape.Decoder.Decode(e[h]);
              if (e[h]._reserved)
                this.SetEncrypted();
              a.push(c.Longitude);
              a.push(c.Latitude);
              if (c.Altitude != null)
                {
                  if (c.AltitudeMode != null)
                    if (f != null && f != c.AltitudeMode)
                      throw new VEException("VEShape", "err_altitudemodemismatch", L_altitudemodemismatch);
                    else
                      f = c.AltitudeMode;
                  k = true;
                  d.push(c.Altitude);
                }
              else
                d.push(0);
            }
          else
            throw new VEException("VEShape", "err_invalidargument", L_invalidargument_text.replace("%1", "points[" + h + "]").replace("%2", "VELatLong"));
      }
    else
      if (VELatLong.prototype.isPrototypeOf(e))
        {
          var c = VEShape.Decoder.Decode(e);
          if (e._reserved)
            this.SetEncrypted();
          a.push(c.Longitude);
          a.push(c.Latitude);
          if (c.Altitude != null)
            {
              k = true;
              f = c.AltitudeMode;
              d.push(c.Altitude);
            }
        }
      else
        throw new VEException("VEShape", "err_invalidargument", L_invalidargument_text.replace("%1", "points").replace("%2", "VELatLong"));
  else
    throw new VEException("VEShape", "err_invalidargument", L_invalidargument_text.replace("%1", "points").replace("%2", "VELatLong[]"));
  var b = null, i = a.length;
  if (g == VEShapeType.Pushpin)
    {
      if (i < 2)
        throw new VEException("VEShape", "err_incorrectpoints", L_Shp_IncorrectPoints);
      if (j)
        b = new Msn.Drawing.Point(a[0], a[1]);
    }
  else
    if (g == VEShapeType.Polyline)
      {
        if (i < 3)
          throw new VEException("VEShape", "err_incorrectpoints", L_Shp_IncorrectPoints);
        if (j)
          b = new Msn.Drawing.PolyLine(a);
      }
    else
      if (g == VEShapeType.Polygon)
        {
          if (i < 5)
            throw new VEException("VEShape", "err_incorrectpoints", L_Shp_IncorrectPoints);
          if (a[0] != a[(i - 2)] || a[1] != a[(i - 1)] || k && d[0] != d[(i / 2 - 1)])
            {
              a.push(a[0]);
              a.push(a[1]);
              d.push(d[0]);
            }
          if (j)
            b = new Msn.Drawing.Polygon(a);
        }
      else
        throw new VEException("VEShape", "err_invalidargument", L_invalidargument_text.replace("%1", "type").replace("%2", "VEShapeType"));
  if (j)
    {
      this.maxZoomLevel = 21;
      this.minZoomLevel = 1;
      this._eroContent = null;
      this._shplayer = null;
      this._shapeElement = null;
      this._iconElement = null;
      this._isClipped = false;
      if (k)
        {
          b.altitudes = d;
          if (f)
            b.altitudeMode = f;
          else
            b.altitudeMode = VEAltitudeMode.Default;
        }
      else
        {
          b.altitudes = null;
          b.altitudeMode = VEAltitudeMode.Default;
        }
      if (typeof VE_MapDispatch_SymbolLib != "undefined")
        {
          if (g == VEShapeType.Pushpin)
            b.symbol = VE_MapDispatch_SymbolLib.GetMapSymbolByID(MC_PROPERTY_PUSHPIN);
          else
            b.symbol = VE_MapDispatch_SymbolLib.GetCurrentDefaultSymbol();
          b.symbol.imagedata_src = Msn.VE.API.Constants.iconurl;
          b.symbol.style_zIndex = Msn.VE.API.Globals.veshapeiconzindex;
          b.symbol.style_zIndex_polyshape = Msn.VE.API.Globals.veshapepolyshapezindex;
          this.AddPrimitive(b);
        }
      else
        throw new VEException("VEShape:new VEShape", "err_notinitialized", L_shp_Notinitialized_text);
    }
  else
    {
      this.Primitives[0].points = a;
      if (k)
        {
          this.Primitives[0].altitudes = d;
          if (f)
            this.Primitives[0].altitudeMode = f;
          else
            this.Primitives[0].altitudeMode = VEAltitudeMode.Default;
        }
      else
        {
          this.Primitives[0].altitudes = null;
          this.Primitives[0].altitudeMode = VEAltitudeMode.Default;
        }
    }
}
);
VEShape.prototype.GetShapeType = (function ()
{
  return this.Primitives[0].type;
}
);
VEShape.prototype.GetShapeLayer = (function ()
{
  return this._shplayer;
}
);
VEShape.prototype.GetID = (function ()
{
  if (this._shplayer == null)
    return null;
  return this.GetId();
}
);
VEShape.prototype.Show = (function ()
{
  this.SetVisibility(true);
  if (this._shplayer == null || this._shplayer._mapGuid == null)
    return ;
  vmap = GetVEMapInstance(this._shplayer._mapGuid);
  if (vmap == null)
    return ;
  if (this._shplayer.GetVisibility())
    {
      vmap.m_vegraphicsmanager.ClearEntityDom(this);
      vmap.m_vegraphicsmanager.DrawEntity(this);
      vmap.m_vegraphicsmanager.PushOffsetRequest();
    }
}
);
VEShape.prototype.Redraw = (function (c,d,e,f,b)
{
  if (this.GetVisibility() && this._shplayer && this._shplayer._mapGuid && this._shplayer.GetVisibility())
    {
      var a = GetVEMapInstance(this._shplayer._mapGuid);
      if (a == null)
        return ;
      if (a.GetMapMode() == Msn.VE.MapActionMode.Mode3D || ! this._isDrawn)
        this.Show();
      else
        {
          if (c)
            a.m_vegraphicsmanager.UpdatePoints(this, true);
          if (d)
            a.m_vegraphicsmanager.UpdateIconPoints(this);
          if (e)
            a.m_vegraphicsmanager.UpdateStyle(this);
          if (f)
            a.m_vegraphicsmanager.UpdateIconStyle(this);
          if (b)
            if (this.GetIconVisibility())
              a.m_vegraphicsmanager.ShowIcon(this);
            else
              a.m_vegraphicsmanager.HideIcon(this);
        }
    }
}
);
VEShape.prototype.Hide = (function ()
{
  this.SetVisibility(false);
  if (this._shplayer == null || this._shplayer._mapGuid == null)
    return ;
  vmap = GetVEMapInstance(this._shplayer._mapGuid);
  if (vmap == null)
    return ;
  vmap.m_vegraphicsmanager.ClearEntityDom(this);
}
);
VEShape.prototype.SetIconVisibility = (function (a)
{
  if (this.Primitives[0].type != VEShapeType.Pushpin)
    this.Primitives[0].isLabel = a;
}
);
VEShape.prototype.HideIcon = (function ()
{
  if (this.Primitives[0].type != VEShapeType.Pushpin)
    this.Primitives[0].isLabel = false;
  if (this._shplayer == null || this._shplayer._mapGuid == null)
    return ;
  this.Redraw(false, false, false, false, true);
}
);
VEShape.prototype.ShowIcon = (function ()
{
  if (this.Primitives[0].type != VEShapeType.Pushpin)
    this.Primitives[0].isLabel = true;
  if (this._shplayer == null || this._shplayer._mapGuid == null)
    return ;
  this.Redraw(false, false, false, false, true);
}
);
VEShape.prototype.GetIconVisibility = (function ()
{
  if (this.Primitives[0].type != VEShapeType.Pushpin)
    return this.Primitives[0].isLabel;
  else
    return true;
}
);
VEShape.prototype.GetPoints = (function ()
{
  var d = [], b = this.Primitives[0].points, e = this.Primitives[0].altitudes, f = b.length;
  for (var a = 0;a < f - 1;a = a + 2)
    {
      var c = null;
      if (this.IsEncrypted())
        c = VEShape.LatLongFactory.CreateVELatLong(b[(a + 1)], b[a]);
      else
        c = new VELatLong(b[(a + 1)], b[a]);
      if (e)
        c.SetAltitude(e[(a / 2)], this.Primitives[0].altitudeMode);
      d.push(c);
    }
  return d;
}
);
VEShape.prototype.SetPoints = (function (b)
{
  if (this.IsModel())
    return false;
  this._Construct(false, this.Primitives[0].type, b);
  if (this._shplayer != null)
    this._shplayer.UpdateEntityAnnotation(this);
  var a = this.Primitives[0];
  Msn.Drawing.CalculateLabelPosition(a, true);
  if (this.Primitives[0].type != VEShapeType.Pushpin)
    {
      this.Latitude = a.labelPosY;
      this.Longitude = a.labelPosX;
      this.Altitude = a.labelPosZ;
    }
  this.Redraw(true, true);
}
);
VEShape.prototype.SetTitle = (function (a)
{
  if (typeof a != "undefined" && a != null)
    {
      this._eroContent = null;
      this.Title = a.replace(/%0D%0A/g, "\r\n").replace(/%0A/g, "\n");
    }
}
);
VEShape.prototype.GetTitle = (function ()
{
  if (typeof this.Title == "undefined")
    this.Title = L_AnnotationConfDefaultTitle_Text;
  return this.Title;
}
);
VEShape.prototype.SetDescription = (function (a)
{
  if (typeof a != "undefined" && a != null)
    {
      this._eroContent = null;
      this.Notes = a.replace(/%0D%0A/g, "\r\n").replace(/%0A/g, "\n");
    }
}
);
VEShape.prototype.GetDescription = (function ()
{
  if (typeof this.Notes == "undefined")
    this.Notes = "";
  return this.Notes;
}
);
VEShape.prototype.SetMaxZoomLevel = (function (a)
{
  a = parseInt(a);
  if (isNaN(a) || a > 21)
    throw new VEException("VEShape.SetMaxZoomLevel", "err_incorrectzoomlevel", L_Shp_IncorrectZoomLevel);
  else
    if (a < this.minZoomLevel)
      throw new VEException("VEShape.SetMaxZoomLevel", "err_incorrectzoomlevel", L_Shp_IncorrectZoomLevel2);
  this.maxZoomLevel = a;
  if (this.GetVisibility())
    this.Show();
}
);
VEShape.prototype.GetMaxZoomLevel = (function ()
{
  return this.maxZoomLevel;
}
);
VEShape.prototype.SetMinZoomLevel = (function (a)
{
  a = parseInt(a);
  if (isNaN(a) || a < 1)
    throw new VEException("VEShape.SetMinZoomLevel", "err_incorrectzoomlevel", L_Shp_IncorrectZoomLevel);
  else
    if (a > this.maxZoomLevel)
      throw new VEException("VEShape.SetMinZoomLevel", "err_incorrectzoomlevel", L_invalidminmaxzoom_text);
  this.minZoomLevel = a;
  if (this.GetVisibility())
    this.Show();
}
);
VEShape.prototype.GetMinZoomLevel = (function ()
{
  return this.minZoomLevel;
}
);
VEShape.prototype.GetCustomIcon = (function ()
{
  var a = null, b = this.Primitives[0].symbol;
  if (typeof b == "object" && b.isOn == true)
    {
      a = new VECustomIconSpecification();
      a.Image = b.imagedata_src;
      a.TextBold = b.textbox_bold;
      a.TextItalics = b.textbox_italic;
      a.TextUnderline = b.textbox_underscore;
      a.TextFont = b.textbox_font;
      a.TextSize = b.textbox_size;
      a.TextOffset = new VEPixel(b.textbox_OffsetX, b.textbox_OffsetY);
      a.ImageOffset = new VEPixel(b.img_offsetX, b.img_offsetY);
      a.CustomHTML = this._customIcon;
      a.TextContent = this.Primitives[0].name;
      a.ImageWidth = b.img_width;
      a.ImageHeight = b.img_height;
      var e = new VEHexStringToColor(), d = b.textbox_color;
      if (d.indexOf("#") == 0)
        d = d.substring(1);
      a.ForeColor = e.Convert(d);
      a.ForeColor.A = b.textbox_color_opacity;
      var c = b.textbox_backcolor;
      if (c.indexOf("#") == 0)
        c = c.substring(1);
      a.BackColor = e.Convert(c);
      a.BackColor.A = b.textbox_backcolor_opacity;
    }
  else
    a = this._customIcon;
  return a;
}
);
VEShape.prototype.SetCustomIcon = (function (b)
{
  if (typeof b == "undefined" || b == null)
    return null;
  if (typeof b == "object")
    {
      VEValidator.ValidateObject(b, "_content_", VECustomIconSpecification, "VECustomIconSpecification");
      if (typeof b.TextContent == "string" && b.TextContent != null)
        this.Primitives[0].name = b.TextContent;
      var a = this.Primitives[0].symbol;
      if (a.id == MC_PROPERTY_PARK || a.id == MC_PROPERTY_PUSHPIN)
        a = a.Clone();
      if (typeof b.Image == "string" && b.Image != null)
        a.imagedata_src = GetImageFullUrl(b.Image);
      else
        a.imagedata_src = Msn.VE.API.Constants.iconurl;
      var e = b.ForeColor;
      if (typeof e == "object" && e != null)
        {
          VEValidator.ValidateObject(e, "fC", VEColor, "VEColor");
          a.textbox_color = VEColorToHexString(e.R, e.G, e.B, e.A);
          a.textbox_color_opacity = e.A;
        }
      var d = b.BackColor;
      if (typeof d == "object" && d != null)
        {
          VEValidator.ValidateObject(d, "bC", VEColor, "VEColor");
          a.textbox_backcolor = VEColorToHexString(d.R, d.G, d.B, d.A);
          a.textbox_backcolor_opacity = d.A;
        }
      var g = b.TextOffset;
      if (typeof g == "object" && g != null)
        {
          VEValidator.ValidateObject(g, "tO", VEPixel, "VEPixel");
          a.textbox_OffsetX = b.TextOffset.x;
          a.textbox_OffsetY = b.TextOffset.y;
        }
      var f = b.ImageOffset;
      if (typeof f == "object" && f != null)
        {
          VEValidator.ValidateObject(f, "iO", VEPixel, "VEPixel");
          a.img_offsetX = f.x;
          a.img_offsetY = f.y;
        }
      if (b.TextBold)
        a.textbox_bold = true;
      if (b.TextItalics)
        a.textbox_italic = true;
      if (b.TextUnderline)
        a.textbox_underscore = true;
      var k = parseInt(b.ImageWidth);
      if (! isNaN(k))
        a.img_width = k;
      var j = parseInt(b.ImageHeight);
      if (! isNaN(j))
        a.img_height = j;
      a.textbox_font = b.TextFont;
      a.imagedata_on = true;
      var h = parseInt(b.TextSize);
      if (! isNaN(h))
        a.textbox_size = h;
      a.isOn = true;
      this.Primitives[0].symbol = a;
      if (b.CustomHTML != null)
        this._customIcon = b.CustomHTML;
      else
        if (this.Primitives[0].name)
          {
            var c = [];
            c.push("<div style='position:relative'>");
            c.push(" <div style='position:absolute;left:" + a.textbox_OffsetX + "px;top:" + a.textbox_OffsetY + "px;");
            c.push("font-size:" + a.textbox_size + "pt;font-family:" + a.textbox_font + ";");
            c.push("color:" + a.textbox_color + ";");
            if (a.textbox_italic)
              c.push("font-style:italic;");
            if (a.textbox_bold)
              c.push("font-weight:bold;");
            if (a.textbox_underscore)
              c.push("text-decoration:underline;");
            c.push("'>");
            if (this.Primitives[0].name)
              c.push(this.Primitives[0].name);
            c.push("</div>");
            c.push(" <img style='position:relative;top:" + a.img_offsetY + ";left:" + a.img_offsetX + "' src='" + a.imagedata_src + "'' ");
            var i = Msn.VE.Environment.BrowserInfo;
            if (i.Type == Msn.VE.BrowserType.MSIE && parseFloat(i.MajorVersion) < 7 && a.imagedata_src != null && a.imagedata_src.search(/.gif$/) < 0)
              c.push(" onload='this.onload=\"\";if(this.fileSize!=-1){this.style.width=this.width;this.style.height=this.height;this.src=\"" + Msn.VE.API.Constants.spacerurl + "\";this.style.filter=\"progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\\\"" + a.imagedata_src + "\\\", sizingMethod=\\\"scale\\\")\";}' />");
            else
              c.push("/>");
            c.push("</div>");
            this._customIcon = c.join("");
          }
        else
          this._customIcon = a.imagedata_src;
    }
  else
    if (typeof b == "string")
      {
        this._customIcon = b;
        if (b.indexOf("<") < 0)
          {
            var a = this.Primitives[0].symbol;
            if (a.id == MC_PROPERTY_PARK || a.id == MC_PROPERTY_PUSHPIN)
              a = a.Clone();
            a.imagedata_src = GetImageFullUrl(b);
            a.isOn = true;
            this.Primitives[0].symbol = a;
          }
      }
  this._IconContent = null;
  this.Redraw(false, false, false, true);
}
);
VEShape.prototype.GetIconAnchor = (function ()
{
  if (this.Altitude)
    return new VELatLong(this.Latitude, this.Longitude, this.Altitude, this.Primitives[0].altitudeMode);
  else
    return new VELatLong(this.Latitude, this.Longitude);
}
);
VEShape.prototype.SetIconAnchor = (function (a)
{
  if (this.IsModel())
    return false;
  if (a != null && a != "undefined")
    {
      VEValidator.ValidateObject(a, "veLatlong", VELatLong, "VELatLong");
      if (a.HasAltitude() && a.AltitudeMode != this.Primitives[0].altitudeMode)
        throw new VEException("VEShape", "err_altitudemodemismatch", L_altitudemodemismatch);
      var b = this.Primitives[0];
      if (b.type != VEShapeType.Pushpin)
        {
          this.Latitude = a.Latitude;
          this.Longitude = a.Longitude;
          b.labelPosX = this.Longitude;
          b.labelPosY = this.Latitude;
          if (a.HasAltitude())
            {
              this.Altitude = a.Altitude;
              b.labelPosZ = a.Altitude;
            }
          else
            {
              this.Altitude = null;
              b.labelPosZ = null;
            }
        }
    }
  this.Redraw(false, true);
}
);
VEShape.prototype.GetCustomInfoBox = (function ()
{
  return this._eroContent;
}
);
VEShape.prototype.SetCustomInfoBox = (function (a)
{
  if (typeof a != "undefined" && a != null)
    this._eroContent = a.replace(/%0D%0A/g, "\r\n").replace(/%0A/g, "\n");
}
);
VEShape.prototype.SetZIndex = (function (c,b)
{
  if (c != null)
    VEValidator.ValidateInt(c, "icon");
  if (b != null)
    VEValidator.ValidateInt(b, "polyshape");
  if (c == null && b == null)
    throw new VEException("VEShape.SetZIndex", "L_invalidzindex_text", L_invalidzindex_text);
  var a = this.Primitives[0].symbol;
  if (a.id == MC_PROPERTY_PARK || a.id == MC_PROPERTY_PUSHPIN)
    a = a.Clone();
  if (c != null)
    a.style_zIndex = parseInt(c);
  if (b != null)
    a.style_zIndex_polyshape = parseInt(b);
  this.Primitives[0].symbol = a;
  this.Redraw(false, false, true, true);
}
);
VEShape.prototype.GetZIndex = (function ()
{
  if (this.Primitives[0].symbol != null && this.Primitives[0].symbol.style_zIndex != null)
    return this.Primitives[0].symbol.style_zIndex;
  else
    return Msn.VE.API.Globals.veshapeiconzindex;
}
);
VEShape.prototype.GetZIndexPolyShape = (function ()
{
  if (this.Primitives[0].symbol != null && this.Primitives[0].symbol.style_zIndex_polyshape != null)
    return this.Primitives[0].symbol.style_zIndex_polyshape;
  else
    return Msn.VE.API.Globals.veshapepolyshapezindex;
}
);
VEShape.prototype.SetLineColor = (function (a)
{
  if (this.Primitives[0].type == VEShapeType.Pushpin)
    return false;
  if (typeof a == "object" && a != null)
    {
      VEValidator.ValidateObject(a, "_color", VEColor, "VEColor");
      var b = this.Primitives[0].symbol;
      if (b.id == MC_PROPERTY_PARK || b.id == MC_PROPERTY_PUSHPIN)
        b = b.Clone();
      b.stroke_color = VEColorToHexString(a.R, a.G, a.B, a.A);
      b.stroke_opacity = a.A;
      this.Primitives[0].symbol = b;
      this.Redraw(false, false, true, false);
    }
  else
    if (typeof a != "undefined")
      throw new VEException("SetLineColor", "err_invalidargument", L_invalidargument_text.replace("%1", "color").replace("%2", "VEColor"));
}
);
VEShape.prototype.GetLineColor = (function ()
{
  if (this.Primitives[0].type == VEShapeType.Pushpin)
    return null;
  var c = this.Primitives[0].symbol, e = new VEHexStringToColor(), a = c.stroke_color;
  if (a.indexOf("#") == 0)
    a = a.substring(1);
  var b = e.Convert(a), d = c.stroke_opacity.toString();
  if (d.indexOf("%") > 0)
    b.A = parseInt(d) / 100;
  else
    b.A = c.stroke_opacity;
  return b;
}
);
VEShape.prototype.SetFillColor = (function (a)
{
  if (this.Primitives[0].type == VEShapeType.Pushpin)
    return false;
  if (typeof a == "object" && a != null)
    {
      VEValidator.ValidateObject(a, "_color", VEColor, "VEColor");
      var b = this.Primitives[0].symbol;
      if (b.id == MC_PROPERTY_PARK || b.id == MC_PROPERTY_PUSHPIN)
        b = b.Clone();
      b.fill_color = VEColorToHexString(a.R, a.G, a.B, a.A);
      b.fill_opacity = a.A;
      this.Primitives[0].symbol = b;
      this.Redraw(false, false, true, false);
    }
  else
    if (typeof a != "undefined")
      throw new VEException("SetFillColor", "err_invalidargument", L_invalidargument_text.replace("%1", "color").replace("%2", "VEColor"));
}
);
VEShape.prototype.GetFillColor = (function ()
{
  if (this.Primitives[0].type == VEShapeType.Pushpin)
    return null;
  var c = this.Primitives[0].symbol, e = new VEHexStringToColor(), a = c.fill_color;
  if (a.indexOf("#") == 0)
    a = a.substring(1);
  var b = e.Convert(a), d = c.fill_opacity.toString();
  if (d.indexOf("%") > 0)
    b.A = parseInt(d) / 100;
  else
    b.A = c.fill_opacity;
  return b;
}
);
VEShape.prototype.SetLineWidth = (function (c)
{
  if (this.Primitives[0].type == VEShapeType.Pushpin)
    throw new VEException("VEShape.SetLineWidth", "err_invalidlinewidth", L_Shp_IncorrectLineWidth);
  var b = parseInt(c);
  if (isNaN(b) || b < 1)
    throw new VEException("VEShape.SetLineWidth", "err_invalidlinewidth", L_Shp_IncorrectLineWidth);
  var a = this.Primitives[0].symbol;
  if (a.id == MC_PROPERTY_PARK || a.id == MC_PROPERTY_PUSHPIN)
    a = a.Clone();
  a.stroke_weight = b;
  this.Primitives[0].symbol = a;
  this.Redraw(false, false, true, false);
}
);
VEShape.prototype.GetLineWidth = (function ()
{
  if (this.Primitives[0].type == VEShapeType.Pushpin)
    return null;
  var a = parseInt(this.Primitives[0].symbol.stroke_weight);
  if (isNaN(a))
    return 0;
  else
    return a;
}
);
VEShape.prototype.SetPhotoURL = (function (a)
{
  this._eroContent = null;
  this.PhotoUrl = a;
}
);
VEShape.prototype.GetPhotoURL = (function ()
{
  return this.PhotoUrl;
}
);
VEShape.prototype.SetMoreInfoURL = (function (a)
{
  this._eroContent = null;
  this.Url = a;
}
);
VEShape.prototype.GetMoreInfoURL = (function ()
{
  return this.Url;
}
);
VEShapeLayer.prototype.GetBoundingRectangle = (function ()
{
  var a = this.GetBoundingBox();
  return new VELatLongRectangle(new VELatLong(a.y2, a.x1), new VELatLong(a.y1, a.x2));
}
);
VEShape.prototype._OffsetScene = null;
VEShape.prototype._OffsetLatLong = null;
VEShape.prototype._OffsetPoints = null;
VEShape.prototype._OriginalPoints = null;
VEShape.prototype._UsingOffset = false;
VEShape.prototype.SetUseOffset = (function (b)
{
  if (this._UsingOffset != b)
    {
      this._UsingOffset = b;
      if (b)
        {
          if (this._OffsetPoints != null)
            {
              var a = [];
              for (var c = 0;c < this._OffsetPoints.length;c++)
                {
                  var d = VEShape.Decoder.Decode(this._OffsetPoints[c]);
                  a.push(d.Longitude);
                  a.push(d.Latitude);
                }
              this._OriginalPoints = this.Primitives[0].points;
              this.Primitives[0].points = a;
            }
        }
      else
        if (this._OriginalPoints != null)
          {
            this.Primitives[0].points = this._OriginalPoints;
            this._OriginalPoints = null;
          }
    }
}
);
VEShape.prototype.GetUseOffset = (function ()
{
  return this._UsingOffset;
}
);
VEAltitudeMode = new (function ()
{
  this.Default = "Ground";
  this.Absolute = "Datum";
  this.RelativeToGround = "Ground";
}
)();
VEShape.prototype.SetAltitude = (function (a,f)
{
  if (this.IsModel())
    return false;
  var b = this.Primitives[0], d = b.points.length / 2, e = [];
  if (typeof a == "number")
    {
      VEValidator.ValidateFloat(a, "altitude");
      a = parseFloat(a);
      for (var c = 0;c < d;c++)
        e.push(a);
    }
  else
    if (Array.prototype.isPrototypeOf(a))
      if (a.length == d && (a[0] == a[(d - 1)] || this.Primitives[0].type != VEShapeType.Polygon) || a.length == d - 1 && this.Primitives[0].type == VEShapeType.Polygon)
        {
          for (var c = 0;c < a.length;c++)
            {
              VEValidator.ValidateFloat(a[c], "altitude[" + c + "]");
              e.push(parseFloat(a[c]));
            }
          if (a.length == d - 1)
            e.push(parseFloat(a[0]));
        }
      else
        throw new VEException("VEShape", "err_incorrectpoints", L_Shp_IncorrectPoints);
    else
      throw new VEException("VEShape:SetAltitude", "err_invalidargument", L_invalidargument_text.replace("%1", "altitude").replace("%2", "float"));
  if (f != null)
    {
      VEValidator.ValidateAltitudeMode(f, "altitudeMode");
      b.altitudeMode = f;
    }
  b.altitudes = e;
  Msn.Drawing.CalculateLabelPosition(b, true);
  if (b.type != VEShapeType.Pushpin)
    {
      this.Latitude = b.labelPosY;
      this.Longitude = b.labelPosX;
      this.Altitude = b.labelPosZ;
    }
  this.Redraw(false, true);
}
);
VEShape.prototype.GetAltitude = (function ()
{
  return this.Primitives[0].altitudes;
}
);
VEShape.prototype.SetAltitudeMode = (function (b)
{
  if (this.IsModel())
    return false;
  VEValidator.ValidateAltitudeMode(b, "value");
  var a = this.Primitives[0];
  a.altitudeMode = b;
  if (! a.altitudes)
    this.SetAltitude(0);
  this.Redraw(true, true);
}
);
VEShape.prototype.GetAltitudeMode = (function ()
{
  return this.Primitives[0].altitudeMode;
}
);
VEShape.prototype.SetLineToGround = (function (a)
{
  if (this.IsModel())
    return false;
  VEValidator.ValidateBoolean(a, "value");
  if (this.Primitives[0].type != VEShapeType.Pushpin)
    {
      this.Primitives[0].extruded = a;
      this.Redraw(true, true);
    }
}
);
VEShape.prototype.GetLineToGround = (function ()
{
  if (this.Primitives[0].extruded != null)
    return this.Primitives[0].extruded;
  else
    return null;
}
);
VEShape.prototype.ToHtml = (function ()
{
  var a = [];
  if (this.Primitives[0].type == VEShapeType.Pushpin)
    {
      var b = GetVEMapInstance(this._shplayer._mapGuid);
      if (b && b.vemapcontrol)
        {
          var c = b.vemapcontrol.GetPushpinMapPixel(new Msn.VE.LatLong(this.Latitude, this.Longitude), b.vemapcontrol.GetZoomLevel());
          a.push("<a href='javascript://pushpin hover' class=VEAPI_Pushpin id=");
          a.push(this.Primitives[0].iid);
          a.push(" style=\"z-index=");
          a.push(this.GetZIndex());
          a.push(";position:absolute;left:");
          a.push(c.x - 25 / 2);
          a.push("px;top:");
          a.push(c.y - 25 / 2);
          a.push("px;\">");
          a.push(VECreateVEShapeERO(this, this._shplayer._mapGuid));
          a.push("</a>");
        }
    }
  return a.join("");
}
);
VEShape.prototype._isDrawn = false;
VEShape.prototype._isHiddenForZoom = false;
VEShape.prototype.GetShapeElement = (function ()
{
  var a = this.Primitives[0];
  if (this._isDrawn && a && a.type != VEShapeType.Pushpin)
    {
      if (a._shapeElement == null)
        a._shapeElement = $ID(a.iid);
      return a._shapeElement;
    }
  return null;
}
);
VEShape.prototype.GetIconElement = (function ()
{
  var a = this.Primitives[0];
  if (this._isDrawn && a)
    {
      if (a._iconElement == null)
        if (a.type == VEShapeType.Pushpin)
          a._iconElement = $ID(a.iid);
        else
          a._iconElement = $ID(Msn.Drawing.GetLabelUID(a.iid));
      return a._iconElement;
    }
  return null;
}
);
VEShape.prototype.ClearDomElements = (function ()
{
  var a = this.Primitives[0];
  if (a)
    {
      a._shapeElement = null;
      a._iconElement = null;
    }
}
);
VEShape.prototype.DisposeEx = (function ()
{
  this.ClearDomElements();
  this.Dispose();
}
);
VE_SetModuleStatus(VE_ModuleName.APILAYERS, "loaded");
VEMap.prototype.InitMapDrawing = (function ()
{
  cssCursors = Msn.VE.Css.Cursors;
  if (VE_MapDispatch_SymbolLib == null)
    {
      VE_MapDispatch_SymbolLib = new VEShapeStyleLibrary();
      VEShapeStyle.prototype.imagedata_src = Msn.VE.API.Constants.iconurl;
    }
  if (this.m_velayermanager == null)
    {
      this.m_velayermanager = new VELayerManager(this);
      this._lm = this.m_velayermanager;
    }
}
);
VEMap.prototype.InitTiles = (function ()
{
  if (! this.m_vetilesourcemanager)
    this.m_vetilesourcemanager = new VETileSourceManager(this);
}
);
VEMap.prototype.AddTileLayer = (function (a,b,c)
{
  VEValidator.ValidateObject(a, "tileSourceSpec", VETileSourceSpecification, "VETileSourceSpecification");
  this.m_vetilesourcemanager.AddTileSource(a, c, b);
}
);
VEMap.prototype.ShowTileLayer = (function (a)
{
  this.m_vetilesourcemanager.ShowTileLayer(a);
}
);
VEMap.prototype.ShowAllTileLayers = (function ()
{
  this.m_vetilesourcemanager.ShowAllTileLayers();
}
);
VEMap.prototype.HideTileLayer = (function (a)
{
  this.m_vetilesourcemanager.HideTileLayer(a);
}
);
VEMap.prototype.ShowBaseTileLayer = (function ()
{
  this.m_vetilesourcemanager.ShowBaseTileLayer();
}
);
VEMap.prototype.HideBaseTileLayer = (function ()
{
  this.m_vetilesourcemanager.HideBaseTileLayer();
}
);
VEMap.prototype.HideAllTileLayers = (function ()
{
  this.m_vetilesourcemanager.HideAllTileLayers();
}
);
VEMap.prototype.DeleteTileLayer = (function (a)
{
  this.m_vetilesourcemanager.DeleteSourceById(a);
}
);
VEMap.prototype.DeleteAllTileLayers = (function ()
{
  this.m_vetilesourcemanager.DeleteAllSources();
}
);
VEMap.prototype.GetTileLayerCount = (function ()
{
  return this.m_vetilesourcemanager.GetSourceCount();
}
);
VEMap.prototype.GetTileLayerByID = (function (a)
{
  return this.m_vetilesourcemanager.GetSourceById(a);
}
);
VEMap.prototype.GetTileLayerByIndex = (function (a)
{
  return this.m_vetilesourcemanager.GetSourceByIndex(a);
}
);
VE_SetModuleStatus(VE_ModuleName.APITILES, "loaded");
VEMap.prototype.InitSearch = (function ()
{
  if (! this.m_vesearchmanager)
    {
      this.m_vesearchmanager = new VE_SearchManager(this);
      this.m_vesearchmanager.Initialize();
      this._sm = this.m_vesearchmanager;
    }
}
);
VEMap.prototype.Find = (function (l,j,i,f,g,b,e,d,a,c,h)
{
  this.InitSearch();
  var k = new VEFindSpec(l, j, i, f, g, b, e, d, a, c, h);
  this.m_vesearchmanager.Find(k);
}
);
VEMap.prototype.CreateFindControl = (function (b)
{
  function a(a)
  {
    a = a ? a : window.event;
    a.cancelBubble = true;
    a.returnValue = false;
    return false;
  }
  VEValidator.ValidateNonNull(b, "findControlId");
  el = document.createElement("div");
  el.className = "VE_FindControl";
  el.id = b;
  el.style.zIndex = 199;
  el.style.position = "absolute";
  el.style.padding = "5px";
  el.attachEvent("onmousedown", a);
  el.attachEvent("onmouseup", a);
  el.attachEvent("onmousemove", a);
  el.attachEvent("onmousewheel", a);
  el.attachEvent("ondblclick", a);
  el.attachEvent("oncontextmenu", a);
  el.attachEvent("onclick", a);
  var c = this.ID + "_vewhatinputcontainer", e = this.ID + "_vewhatinput", d = this.ID + "_vewhereinput";
  el.innerHTML = "<div class=VE_WhatControl id='" + c + "'>" + L_what_text + " " + "<input id=\"" + e + "\" type=\"text\" name=\"vewhatinput\" size=\"25\" onfocus=\"this.select()\" onblur=\"this.value = this.value\" />" + "</div>" + "<div class=VE_WhereControl>" + L_where_text + " " + "<input id=\"" + d + "\" type=\"text\" name=\"vewhereinput\" size=\"25\" style=\"color: #333333\"" + "ondrop=\"this.value='';this.style.color='black';SelectText(this,0,0);\" />" + "</div>" + "<div class=VE_FindButton>" + "<button id=\"searchbttn\" onclick=\"VEMap._GetMapFromGUID(" + this.GUID + ")._DoFind();\" type=\"submit\" name=\"submit\" value=\"Local Search\">" + L_find_text + "</button>" + "</div>";
  this.mapelement.appendChild(el);
  addIFrameShim(el);
  return el;
}
);
VEMap.prototype.ShowFindControl = (function (c,b)
{
  if (typeof c != "undefined" || typeof b != "undefined")
    {
      VEValidator.ValidateInt(c, "top");
      VEValidator.ValidateInt(b, "left");
    }
  var d = this.ID + "_vefindcontrolinput", a = $ID(d);
  if (typeof a == "undefined" || a == null)
    a = this.CreateFindControl(d);
  if (isNaN(c))
    a.style.top = "35px";
  else
    a.style.top = c + "px";
  if (isNaN(b))
    a.style.left = "195px";
  else
    a.style.left = b + "px";
  a.style.display = "block";
  ShowShim(a);
}
);
VEMap.prototype.HideFindControl = (function ()
{
  var a = $ID(this.ID + "_vefindcontrolinput");
  if (a != null && a != "undefined")
    {
      a.style.display = "none";
      HideShim(a);
    }
}
);
VEMap.prototype.SetFindResultsPanel = (function (a)
{
  if (a == null || a == "undefined")
    throw new VEException("VEMap:SetFindResultsPanel", "err_invalidelement", L_invalidelement_text);
  var b = $ID(a);
  if (b == null || b == "undefined")
    throw new VEException("VEMap:SetFindResultsPanel", "err_invalidelement", L_invalidelement_text);
  this.searchelement = a;
}
);
VEMatchCode.None = 0;
VEMatchCode.Good = 1;
VEMatchCode.Ambiguous = 2;
VEMatchCode.UpHierarchy = 4;
VEMatchCode.Modified = 8;
VEMatchConfidence.High = 0;
VEMatchConfidence.Medium = 1;
VEMatchConfidence.Low = 2;
VELocationPrecision.Interpolated = 0;
VELocationPrecision.Rooftop = 1;
VEFindType = new (function ()
{
  this.Businesses = "YellowPageSearch";
}
)();
Msn.VE.Search = {};
Msn.VE.Search.strLastWhere = "";
VE_SearchResult.prototype.Equals = (function (a)
{
  if (a == null || a == "undefined")
    return false;
  try
    {
      var b = this.name == a.name && this.description == a.description && this.phone == a.phone && this.rating == a.rating && this.type == a.type && this.latitude == a.latitude && this.longitude == a.longitude;
      return b;
    }
  catch (c)
    {
      return false;
    }
}
);
VE_WebSearchResult.prototype.Equals = (function (a)
{
  if (a  instanceof  VE_WebSearchResult)
    {
      var b = this.GetCaptionUrl() == a.GetCaptionUrl() && this.GetDescription() == a.GetDescription() && this.GetTitle() == a.GetTitle() && this.GetDisplayUrl() == a.GetDisplayUrl() && this.GetUrl() == a.GetUrl();
      return b;
    }
  return false;
}
);
VE_SearchResult.prototype.GetSerializedId = (function ()
{
  switch (this.type)
  {
    case "al":
      return "";
    case "adr":
      return "adr" + "." + this.name;
    case "aN":
      return VE_AnnotationData.SerializeAnnotation(this.pinId);
    default:
      return this.type + "." + this.id.toString();
  }
}
);
VE_SetModuleStatus(VE_ModuleName.APIFIND, "loaded");
VEMap.prototype.InitRouting = (function ()
{
  if (! this.m_vedirectionsmanager)
    {
      this.m_vedirectionsmanager = new VEDirectionsManager(this);
      this.m_vedirectionsmanager.Initialize();
      this._dm = this.m_vedirectionsmanager;
    }
  if (! this.m_routemanager)
    this.m_routemanager = new VERouteManager(this);
}
);
VEMap.prototype.GetRoute = (function (d,e,b,c,a)
{
  this.InitRouting();
  this.m_vedirectionsmanager.GetDrivingDirections(d, e, b, c, a);
}
);
VEMap.prototype.DeleteRoute = (function ()
{
  this.InitRouting();
  this.m_vedirectionsmanager.ClearRoute();
  this.m_routemanager.ClearRoute();
}
);
VERouteDistanceUnit.Mile = "Mile";
VERouteDistanceUnit.Kilometer = "Kilometer";
VERouteDistanceUnit.Default = VERouteDistanceUnit.Mile;
VERouteOptimize.MinimizeTime = "MinimizeTime";
VERouteOptimize.MinimizeDistance = "MinimizeDistance";
VERouteOptimize.Default = "Default";
VEMap.prototype.GetDirections = (function (b,a)
{
  this.m_routemanager.GetRoute(b, a);
}
);
var L_cannotrenderroute_text = "The route could not be drawn because this web browser does not support SVG and VML.";
VEDistanceUnit = new (function ()
{
  this.Miles = "m";
  this.Kilometers = "k";
}
)();
VERouteType = new (function ()
{
  this.Shortest = "s";
  this.Quickest = "q";
}
)();
VE_SetModuleStatus(VE_ModuleName.APIROUTING, "loaded");
VEMap.prototype.InitTraffic = (function ()
{
  if (! this.m_vetrafficmanager)
    this.m_vetrafficmanager = new VE_TrafficManager(this);
}
);
VEMap.prototype.LoadTraffic = (function (c,b,a)
{
  this.InitTraffic();
  VE_TrafficManager.m_vemap = this;
  VE_TrafficManager.turnedOn = true;
  VE_TrafficManager.showTrafficFlow = c;
  VE_TrafficManager.showIncidents = b;
  VE_TrafficManager.showConstructionIncidents = a;
  VE_TrafficManager.markets = [];
  VE_TrafficManager.incidents = [];
  if (this.vemapcontrol)
    this.vemapcontrol.UpdateCopyright();
  window.setTimeout(VE_TrafficManager.GetMarkets, 100);
}
);
VEMap.prototype.ClearTraffic = (function ()
{
  if (VE_TrafficManager.markets[0] != null)
    VE_TrafficManager.ClearTraffic();
  if (this.vemapcontrol)
    this.vemapcontrol.UpdateCopyright();
}
);
VEMap.prototype.ShowTrafficLegend = (function (a,b)
{
  if (VE_TrafficManager && VE_TrafficManager.turnedOn)
    VE_TrafficManager.ShowTrafficLegend(a, b);
}
);
VEMap.prototype.HideTrafficLegend = (function ()
{
  if (VE_TrafficManager)
    VE_TrafficManager.HideTrafficLegend();
}
);
VEMap.prototype.SetTrafficLegendText = (function (a)
{
  if (VE_TrafficManager)
    VE_TrafficManager.SetTrafficLegendText(a);
}
);
VE_TrafficManager.m_vemap = null;
VE_TrafficManager.markets = [];
VE_TrafficManager.incidents = [];
VE_TrafficManager.incidentJSFiles = [];
VE_TrafficManager.showingMarkets = [];
VE_TrafficManager.showConstructionIncidents = false;
VE_TrafficManager.incidentsAvailable = false;
VE_TrafficManager.flowAvailable = false;
VE_TrafficManager.turnedOn = false;
VE_TrafficManager.showIncidents = false;
VE_TrafficManager.showTrafficFlow = false;
VE_TrafficManager.prevZoomLevel = 0;
VE_TrafficManager.prevMapStyle = "";
VE_TrafficManager.isViewDirty = false;
VE_TrafficManager.masterTimer = null;
VE_TrafficManager.slaveTimer = null;
VE_TrafficManager.Severity = {Serious : L_TrafficManagerSerious_Text, Moderate : L_TrafficManagerModerate_Text, Minor : L_TrafficManagerMinor_Text};
VE_TrafficManager.GetMarkets = (function ()
{
  try
    {
      VENetwork.DownloadScript(VE_TrafficManager.m_vemap.vemapcontrol.GetMarketsFile(), VE_TrafficManager.GetTrafficInfo);
    }
  catch (a)
    {}
}
);
VE_TrafficManager._ProcessMarkets = (function (a)
{
  if (VE_TrafficManager.markets[0] == null)
    VE_TrafficManager.markets[0] = [];
  if (a != null && a.length > 0)
    {
      var c = a.length;
      for (var b = 0;b < c;b++)
        if (a[b] != null)
          VE_TrafficManager.markets[0].push(a[b]);
    }
}
);
VE_TrafficManager._GetIncidents = (function (b)
{
  VE_TrafficManager.showingMarkets = VE_TrafficManager._GetIncidentMarkets();
  if (b)
    if (VE_TrafficManager.showingMarkets.length > 0)
      {
        VE_TrafficManager.incidentsAvailable = true;
        for (var a = 0;a < VE_TrafficManager.showingMarkets.length;a++)
          try
            {
              var c = VENetwork.DownloadScript(VE_TrafficManager.m_vemap.vemapcontrol.GetIncidentsFile() + "-" + VE_TrafficManager.showingMarkets[a] + ".js", null);
              VE_TrafficManager.incidentJSFiles.push(c);
            }
          catch (d)
            {}
      }
}
);
VE_TrafficManager._ProcessIncidents = (function (a)
{
  if (a == null || a.length <= 0)
    return ;
  var b = a[0].MarketId;
  if (VE_TrafficManager.incidents[b] == null)
    VE_TrafficManager.incidents[b] = [];
  else
    {
      VE_TrafficManager._ClearPins(b);
      var d = VE_TrafficManager.incidents[b].length;
      for (var c = 0;c < d;c++)
        VE_TrafficManager.incidents[b].pop();
    }
  if (a != null && a.length > 0)
    {
      var d = a.length;
      for (var c = 0;c < d;c++)
        if (a[c] != null)
          VE_TrafficManager.incidents[b].push(a[c]);
    }
  VE_TrafficManager._DisplayIncidents();
}
);
VE_TrafficManager._GetIncidentMarkets = (function ()
{
  var b = [], h = VE_TrafficManager.m_vemap.vemapcontrol.PixelToLatLong(new VEPixel(0, 0)), g = VE_TrafficManager.m_vemap.vemapcontrol.PixelToLatLong(new VEPixel(VE_TrafficManager.m_vemap.GetWidth(), VE_TrafficManager.m_vemap.GetHeight()));
  if (h == null || g == null)
    return b;
  var c = h.latitude, d = g.longitude, e = g.latitude, f = h.longitude;
  if (c < e)
    {
      var i = c;
      c = e;
      e = i;
    }
  if (d < f)
    {
      var i = d;
      d = f;
      f = i;
    }
  if (VE_TrafficManager.markets.length == 0)
    return b;
  var k = new VELatLongRectangle(new VELatLong(c, f), new VELatLong(e, d)), l = VE_TrafficManager.markets[0].length;
  for (var a = 0;a < l;a++)
    {
      var j = new VELatLongRectangle(new VELatLong(VE_TrafficManager.markets[0][a].NELatitude, VE_TrafficManager.markets[0][a].SWLongitude), new VELatLong(VE_TrafficManager.markets[0][a].SWLatitude, VE_TrafficManager.markets[0][a].NELongitude));
      if (VE_TrafficManager._isBBOverlap(k, j))
        {
          if (VE_TrafficManager.markets[0][a].Incident == "Incidents")
            b.push(VE_TrafficManager.markets[0][a].Id);
          if (VE_TrafficManager.markets[0][a].Flow == "Flow")
            VE_TrafficManager.flowAvailable = true;
        }
    }
  return b;
}
);
VE_TrafficManager._isBBOverlap = (function (b,a)
{
  return VE_TrafficManager._IsRectInBoundingBox(b, a) || VE_TrafficManager._IsRectInBoundingBox(a, b);
}
);
VE_TrafficManager._IsRectInBoundingBox = (function (a,b)
{
  return ! (a.BottomRightLatLong.Latitude > b.TopLeftLatLong.Latitude || a.BottomRightLatLong.Longitude < b.TopLeftLatLong.Longitude || a.TopLeftLatLong.Latitude < b.BottomRightLatLong.Latitude || a.TopLeftLatLong.Longitude > b.BottomRightLatLong.Longitude);
}
);
VE_TrafficManager.GetTrafficInfo = (function ()
{
  if (! VE_TrafficManager.turnedOn)
    return ;
  try
    {
      if (VE_TrafficManager.m_vemap.vemapcontrol.IsModeEnabled(Msn.VE.MapActionMode.Mode3D))
        if (VE_TrafficManager.showTrafficFlow)
          VE_TrafficManager.m_vemap.vemapcontrol.Show3DTraffic(false);
        else
          VE_TrafficManager.m_vemap.vemapcontrol.Remove3DTraffic();
      var a = VE_TrafficManager.m_vemap.GetZoomLevel();
      if (VE_TrafficManager.m_vemap.GetMapStyle() == Msn.VE.MapStyle.Oblique)
        return ;
      VE_TrafficManager.prevZoomLevel = a;
      VE_TrafficManager.prevMapStyle = VE_TrafficManager.m_vemap.GetMapStyle();
      VE_TrafficManager.incidentsAvailable = false;
      VE_TrafficManager.flowAvailable = false;
      VE_TrafficManager._ClearPins();
      if (a >= 9)
        {
          VE_TrafficManager._GetIncidents(VE_TrafficManager.showIncidents);
          if (VE_TrafficManager.showTrafficFlow && VE_TrafficManager.flowAvailable && a <= 15)
            {
              VE_TrafficManager.m_vemap.vemapcontrol.ClearTileLayer("Traffic");
              VE_TrafficManager.m_vemap.vemapcontrol.SetTrafficView();
            }
        }
      VE_TrafficManager.RenewAutoRefresh();
    }
  catch (b)
    {}
}
);
VE_TrafficManager._DisplayIncidents = (function ()
{
  if (VE_TrafficManager.showingMarkets != null && VE_TrafficManager.showingMarkets.length > 0)
    {
      var e = VE_TrafficManager.showingMarkets.length;
      for (var b = 0;b < e;b++)
        {
          var a = VE_TrafficManager.showingMarkets[b];
          if (VE_TrafficManager.incidents[a] != null && VE_TrafficManager.incidents[a].length > 0)
            {
              VE_TrafficManager._RemoveDuplicates(a);
              VE_TrafficManager._RenderTrafficInfo(a);
            }
        }
      var d = "", a = VE_TrafficManager.showingMarkets[0];
      if (VE_TrafficManager.incidents[a] != null && VE_TrafficManager.incidents[a].length > 0)
        d = VETime.FormatPanelTime(VE_TrafficManager.incidents[a][0].Timestamp, false);
      VE_TrafficManager.ShowTrafficLegend();
      if (VE_TrafficManager.m_vemap)
        {
          var c = VE_TrafficManager.m_vemap.GetDashboardSize();
          if (c == VEDashboardSize.Small || c == VEDashboardSize.Tiny)
            VE_TrafficManager.ShowTrafficLegend(41, 37);
        }
      VE_TrafficManager.SetTrafficLegendText(d);
    }
}
);
VE_TrafficManager._RenderTrafficInfo = (function (c)
{
  if (c)
    VE_TrafficManager._ClearPins(c);
  else
    VE_TrafficManager._ClearPins();
  var e = VE_TrafficManager.m_vemap.GetZoomLevel();
  if (e > 8)
    {
      if (c == null)
        return ;
      if (VE_TrafficManager.incidents[c] != null)
        {
          var b = VE_TrafficManager.incidents[c], f = VE_TrafficManager.incidents[c].length;
          for (var a = 0;a < f;a++)
            if (b[a].Type != VE_TrafficIncidentType.Weather && b[a].Type != VE_TrafficIncidentType.MassTransit)
              {
                if (! VE_TrafficManager.showConstructionIncidents)
                  if (b[a].Type == VE_TrafficIncidentType.UnscheduledConstruction || b[a].Type == VE_TrafficIncidentType.ScheduledConstruction)
                    continue ;
                if (VE_TrafficManager.flowAvailable && b[a].Type == VE_TrafficIncidentType.Congestion)
                  continue ;
                var d = new VEPushpin("pin_traffic_incident_" + c + "_" + b[a].Id, new VELatLong(b[a].Latitude, b[a].Longitude), Msn.VE.API.Constants.trafficiconurl.replace("%1", VE_TrafficManager.GetColor(b[a].Criticality)), "", VE_TrafficManager.CreatePopupContent(b[a]));
                b[a].pushPin = d;
                VE_TrafficManager.m_vemap.AddPushpin(d);
              }
        }
    }
}
);
VE_TrafficManager.GetColor = (function (a)
{
  switch (a)
  {
    case 0:
      return Msn.VE.UI.Color.Red;
      break ;
    case 1:
      return Msn.VE.UI.Color.Orange;
      break ;
    case 2:
      return Msn.VE.UI.Color.Yellow;
      break ;
    default:
      return Msn.VE.UI.Color.Yellow;
  }
}
);
VE_TrafficManager.CreatePopupContent = (function (a)
{
  var b = "<div class = \"traffictitle\">" + (a.Type ? IOSec.EncodeHtml(a.Type.replace(/&amp;/gi, "&")) : "") + "</div>" + "<div class = \"trafficheader\">" + L_TrafficPopupSeverity_Text + ":</div> " + "<div class = \"trafficdata\">" + VE_TrafficManager._GetSeverity(a.Criticality) + "</div>" + "<div class = \"trafficheader\">" + L_TrafficPopupLocation_Text + ":</div> " + "<div class = \"trafficdata\">" + (a.Location ? IOSec.EncodeHtml(a.Location.replace(/&amp;/gi, "&")) : "") + "</div>" + "<div class = \"trafficheader\">" + L_TrafficPopupDescription_Text + ":</div> " + "<div class = \"trafficdata\">" + (a.Description ? IOSec.EncodeHtml(a.Description.replace(/&amp;/gi, "&")) : "") + "</div>" + "<BR><div>" + "<div class = \"trafficlabel\">" + L_TrafficPopupStartTime_Text + ":</div>" + "<div class = \"trafficdata\">" + (a.Starttime ? IOSec.EncodeHtml(VETime.FormatTime(a.Starttime, true)) : "") + "</div>" + "</div>" + "<div>" + "<div class = \"trafficlabel\">" + L_TrafficPopupEstEndTime_Text + ":</div>" + "<div class = \"trafficdata\">" + (a.Endtime ? IOSec.EncodeHtml(VETime.FormatTime(a.Endtime, true)) : "") + "</div>" + "</div>";
  return b;
}
);
VE_TrafficManager._GetSeverity = (function (a)
{
  switch (a)
  {
    case 0:
      return VE_TrafficManager.Severity.Serious;
      break ;
    case 1:
      return VE_TrafficManager.Severity.Moderate;
      break ;
    case 2:
      return VE_TrafficManager.Severity.Minor;
      break ;
    default:
      return VE_TrafficManager.Severity.Minor;
  }
}
);
VE_TrafficManager._RemoveDuplicates = (function (c)
{
  if (c == null || c == "undefined")
    return ;
  var a = VE_TrafficManager.incidents[c];
  if (a == null)
    return ;
  for (var b = 0;b < a.length;b++)
    for (var d = b + 1;d < a.length;d++)
      if (a[b].Id == a[d].Id)
        a.splice(b, 1);
}
);
VE_TrafficManager.ClearTraffic = (function ()
{
  VE_TrafficManager._ClearPins();
  if (VE_TrafficManager.m_vemap != null && VE_TrafficManager.m_vemap.vemapcontrol != null)
    {
      VE_TrafficManager.m_vemap.vemapcontrol.ClearTileLayer("Traffic");
      VE_TrafficManager.HideTrafficLegend();
      if (VE_TrafficManager.m_vemap.vemapcontrol.IsModeEnabled(Msn.VE.MapActionMode.Mode3D))
        VE_TrafficManager.m_vemap.vemapcontrol.Remove3DTraffic();
    }
  VE_TrafficManager.turnedOn = false;
  VE_TrafficManager.ExpireAutoRefresh();
}
);
VE_TrafficManager.Destroy = (function ()
{
  VE_TrafficManager.ClearTraffic();
  VE_TrafficManager.incidentsAvailable = false;
  VE_TrafficManager.flowAvailable = false;
  if (VE_TrafficManager.incidents != null)
    {
      if (VE_TrafficManager.markets[0] != null)
        for (var c = 0;c < VE_TrafficManager.markets[0].length;c++)
          {
            var b = VE_TrafficManager.markets[0][c].Id, i = VE_TrafficManager.incidents[b];
            if (i == null)
              continue ;
            var a = VE_TrafficManager.incidents[b].pop();
            if (a == null)
              continue ;
            for (var e = 0;e < a.length;e++)
              {
                var f = a.pop();
                f = null;
              }
            a = null;
          }
      VE_TrafficManager.incidents[b] = null;
    }
  if (VE_TrafficManager.markets != null && VE_TrafficManager.markets[0] != null && VE_TrafficManager.markets[0].length > 0)
    {
      var h = VE_TrafficManager.markets[0].length;
      for (var d = 0;d < h;d++)
        {
          var g = VE_TrafficManager.markets[0].pop();
          g = null;
        }
      VE_TrafficManager.markets[0] = null;
    }
}
);
VE_TrafficManager._ClearPins = (function (e)
{
  if (VE_TrafficManager.markets == null || VE_TrafficManager.markets.length <= 0)
    return ;
  var c = VE_TrafficManager.markets[0];
  if (c != null && c.length > 0)
    for (var a = 0;a < c.length;a++)
      if (c[a].pushPin)
        {
          VE_TrafficManager.m_vemap.DeletePushpin(c[a].pushPin.ID);
          c[a].pushPin = null;
        }
  if (VE_TrafficManager.incidents == null || VE_TrafficManager.incidents.length <= 0)
    return ;
  if (e)
    {
      var b = VE_TrafficManager.incidents[e];
      if (b == null)
        return ;
      for (var a = 0;a < b.length;a++)
        if (b[a].pushPin)
          {
            VE_TrafficManager.m_vemap.DeletePushpin(b[a].pushPin.ID);
            b[a].pushPin = null;
          }
    }
  else
    if (c != null && c.length > 0)
      for (var d = 0;d < VE_TrafficManager.markets[0].length;d++)
        {
          var f = VE_TrafficManager.markets[0][d].Id, b = VE_TrafficManager.incidents[f];
          if (b == null)
            continue ;
          for (var a = 0;a < b.length;a++)
            if (b[a].pushPin)
              {
                VE_TrafficManager.m_vemap.DeletePushpin(b[a].pushPin.ID);
                b[a].pushPin = null;
              }
          b = null;
        }
}
);
VE_TrafficManager._ViewChangeNotification = (function ()
{
  if (VE_TrafficManager.m_vemap.GetMapStyle() == Msn.VE.MapStyle.Oblique)
    return ;
  if (! VE_TrafficManager.turnedOn)
    return ;
  var a = VE_TrafficManager.m_vemap.GetZoomLevel();
  if (VE_TrafficManager.prevZoomLevel <= 8 && a > 8)
    VE_TrafficManager.isViewDirty = true;
  else
    if (VE_TrafficManager.prevZoomLevel > 8 && a <= 8)
      VE_TrafficManager.isViewDirty = true;
    else
      if (VE_TrafficManager.prevZoomLevel <= 15 && a > 15)
        VE_TrafficManager.isViewDirty = true;
      else
        if (VE_TrafficManager.prevZoomLevel > 15 && a <= 15)
          VE_TrafficManager.isViewDirty = true;
        else
          if (VE_TrafficManager.prevMapStyle == Msn.VE.MapStyle.Oblique)
            VE_TrafficManager.isViewDirty = true;
          else
            {
              var b = VE_TrafficManager._GetIncidentMarkets();
              if (b != null && b.length > 0)
                for (var c = 0;c < b.length;c++)
                  {
                    var e = false;
                    for (var d = 0;d < VE_TrafficManager.showingMarkets.length;d++)
                      if (b[c] == VE_TrafficManager.showingMarkets[d])
                        {
                          e = true;
                          break ;
                        }
                    if (! e)
                      {
                        VE_TrafficManager.isViewDirty = true;
                        break ;
                      }
                    else
                      VE_TrafficManager.isViewDirty = false;
                  }
              else
                VE_TrafficManager.isViewDirty = true;
            }
  VE_TrafficManager.prevZoomLevel = a;
  VE_TrafficManager.prevMapStyle = VE_TrafficManager.m_vemap.GetMapStyle();
  if (VE_TrafficManager.isViewDirty)
    window.setTimeout("VE_TrafficManager.GetTrafficInfo()", 1);
  VE_TrafficManager.RenewAutoRefresh();
}
);
VE_TrafficManager.ExpireAutoRefresh = (function ()
{
  if (VE_TrafficManager.masterTimer != null)
    window.clearInterval(VE_TrafficManager.masterTimer);
  if (VE_TrafficManager.slaveTimer != null)
    window.clearInterval(VE_TrafficManager.slaveTimer);
}
);
VE_TrafficManager.RenewAutoRefresh = (function ()
{
  if (! VE_TrafficManager.turnedOn)
    return ;
  VE_TrafficManager.ExpireAutoRefresh();
  VE_TrafficManager.masterTimer = window.setInterval("VE_TrafficManager.ExpireAutoRefresh()", VE_TrafficManager.m_vemap.vemapcontrol.GetSlidingExpirationForAutoRefresh());
  VE_TrafficManager.slaveTimer = window.setInterval(VE_TrafficManager.AutoRefresh, VE_TrafficManager.m_vemap.vemapcontrol.GetAutoRefreshRate());
}
);
VE_TrafficManager.AutoRefresh = (function ()
{
  try
    {
      var a = VE_TrafficManager.m_vemap.GetZoomLevel();
      if (a >= 9)
        VE_TrafficManager.GetTrafficInfo();
    }
  catch (b)
    {}
}
);
VE_TrafficIncidentType = new (function ()
{
  this.ScheduledConstruction = "SCHEDULED CONSTRUCTION";
  this.OtherNews = "OTHER NEWS";
  this.Congestion = "CONGESTION";
  this.Accident = "ACCIDENT";
  this.DisabledVehicle = "DISABLED VEHICILE";
  this.RoadHazard = "ROAD HAZARD";
  this.UnscheduledConstruction = "UNSCHEDULED CONSTRUCTION";
  this.PlannedEvent = "PLANNED EVENT";
  this.MassTransit = "MASS TRANSIT";
  this.Weather = "WEATHER";
  this.Miscellaneous = "MISCELLANEOUS";
}
)();
VE_TrafficManager.ShowTrafficLegend = (function (a,b)
{
  if (VE_TrafficManager.turnedOn)
    {
      if (VE_TrafficManager.legend == null)
        {
          VE_TrafficManager.legend = VE_TrafficManager.m_vemap.vemapcontrol.CreateLegend();
          if (VE_TrafficManager.legend != null)
            VE_TrafficManager.legend.ShowTrafficLegend(true);
        }
      if (VE_TrafficManager.legend && typeof a != "undefined" && a != null && typeof b != "undefined" && b != null)
        {
          VE_TrafficManager.legend.UnPin();
          VE_TrafficManager.legend.MoveTo(a, b);
        }
    }
}
);
VE_TrafficManager.HideTrafficLegend = (function ()
{
  if (VE_TrafficManager.legend != null)
    {
      VE_TrafficManager.legend.ShowTrafficLegend(false);
      VE_TrafficManager.legend = null;
    }
}
);
VE_TrafficManager.SetTrafficLegendText = (function (a)
{
  if (VE_TrafficManager.legend != null)
    {
      if (typeof a == "undefined" || a == null)
        a = "";
      VE_TrafficManager.legend.SetTrafficLegendMsg(a);
    }
}
);
VETime.FormatTime = (function (a)
{
  if (a == null || a == "" || a == "undefined")
    return "";
  var c = false, d = a.substr(0, 10), e = a.substr(11, 5), b = "";
  if (a.indexOf("AM") > - 1)
    {
      b = "AM";
      c = true;
    }
  else
    b = "PM";
  return d + " " + VETime.ConvertTo12HourFormat(e, c) + " " + b;
}
);
VETime.ConvertTo12HourFormat = (function (d,c)
{
  var a = d;
  try
    {
      var b = parseFloat(a.replace(":", "."));
      if (b > 12)
        if (b < 13 && c != true)
          {}
        else
          b = b - 12;
      a = b.toFixed(2);
      a = a.replace(".", ":");
    }
  catch (e)
    {
      a = "";
    }
  return a;
}
);
VETime.FormatPanelTime = (function (a,g)
{
  if (a == null || a == "" || a == "undefined")
    return "";
  try
    {
      var b = 0, d = false, i = a.substr(4, 8), h = a.indexOf(":"), f = a.substr(h - 2, 5), c = "";
      if (a.indexOf("AM") > - 1)
        {
          c = "AM";
          d = true;
          b = a.indexOf("AM");
        }
      else
        {
          c = "PM";
          b = a.indexOf("PM");
        }
      var e = "";
      if (b > 0)
        e = a.substr(b + 3, 3);
      if (g)
        return i + " " + VETime.ConvertTo12HourFormat(f, d) + " " + c + " " + e;
      else
        return VETime.ConvertTo12HourFormat(f, d) + " " + c + " " + e;
    }
  catch (j)
    {}
}
);
VETime.getMonth = (function (a)
{
  switch (a)
  {
    case "01":
      return " Jan";
    case "02":
      return " Feb";
    case "03":
      return " Mar";
    case "04":
      return " Apr";
    case "05":
      return " May";
    case "06":
      return " Jun";
    case "07":
      return " Jul";
    case "08":
      return " Aug";
    case "09":
      return " Sep";
    case "10":
      return " Oct";
    case "11":
      return " Nov";
    case "12":
      return " Dec";
  }
}
);
VE_SetModuleStatus(VE_ModuleName.APITRAFFIC, "loaded");
VEMap.prototype.SetAltitude = (function (a)
{
  try
    {
      VEValidator.ValidateFloat(a, "level");
      var b = parseFloat(a);
      this._QueueRequest(this.vemapcontrol.SetAltitude, b);
    }
  catch (c)
    {
      throw c;
      return ;
    }
}
);
VEMap.prototype.SetPitch = (function (b)
{
  try
    {
      VEValidator.ValidateFloat(b, "pitch");
      var a = parseFloat(b);
      a = a % 360;
      if (a > 0)
        a = a < 1 ? 0 : - 90;
      if (a < - 90)
        a = - 90;
      this._QueueRequest(this.vemapcontrol.SetTilt, a);
    }
  catch (c)
    {
      throw c;
      return ;
    }
}
);
VEMap.prototype.SetHeading = (function (b)
{
  try
    {
      VEValidator.ValidateFloat(b, "heading");
      var a = parseFloat(b);
      a = a % 360;
      if (a < 0)
        a = 360 + a;
      this._QueueRequest(this.vemapcontrol.SetDirection, a);
    }
  catch (c)
    {
      throw c;
      return ;
    }
}
);
VEMap.prototype.GetAltitude = (function ()
{
  return this.vemapcontrol.GetAltitude();
}
);
VEMap.prototype.GetPitch = (function ()
{
  return this.vemapcontrol.GetTilt();
}
);
VEMap.prototype.GetHeading = (function ()
{
  return this.vemapcontrol.GetDirection();
}
);
VEMap.prototype._Toggle3DNavigationControl = (function (b)
{
  if (this.GetMapMode() == VEMapMode.Mode3D)
    {
      var a = this.vemapcontrol.Get3DControl();
      if (a != null)
        a.ShowNavigationControl = b;
    }
}
);
VEMap.prototype.Show3DNavigationControl = (function ()
{
  this._Toggle3DNavigationControl(true);
}
);
VEMap.prototype.Hide3DNavigationControl = (function ()
{
  this._Toggle3DNavigationControl(false);
}
);
VE_SetModuleStatus(VE_ModuleName.API3D, "loaded");
VEMap.prototype.Init3D = (function ()
{
  MVC_Init_AbstractView_Shared();
  MVC_Init_ViewFacade_Shared();
  MVC_Init_View3D_Shared();
  MVC_Init_AbstractView_Drawing();
  MVC_Init_ViewFacade_Drawing();
  MVC_Init_FlatlandView_Drawing();
  MVC_Init_View3D_Drawing();
}
);
if (typeof closeDependency != "undefined")
    
JavaScript - http://localhost:8080/virtualEarth-sample/
Event thread: load
Error:
name: TypeError
message: Statement on line 1: Could not convert undefined or null to object
Backtrace:
  Line 1 of linked script http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6
    var a = this;
this.ID = e;
this.GUID = VENetwork.GetExecutionID();
this.ClientToken = null;
if (Msn.VE.API.Globals.vemapinstances == null || Msn.VE.API.Globals.vemapinstances == "undefined")
    Msn.VE.API.Globals.vemapinstances[this.GUID] = a;
this.requestQueue = [];
this.preInitCustomEvents = [];
this.network = new VENetwork();
this.mapelement = $ID(e);
this.pushpins = [];
this.DisambiguationCallback = null;
this.ShowMessageBox = true;
if (this.mapelement == null)
    this.m_vedirectionsmanager = null;
this._dm = this.m_vedirectionsmanager;
this.m_routemanager = null;
this.m_vesearchmanager = null;
this._sm = this.m_vesearchmanager;
this.m_vemessage = new VEMessage(this);
this.m_veambiguouslist = new VEAmbiguouslist(this);
var c = new VELatLongFactory(new VELatLongFactorySpecFromMap(this)), b = new _xy1();
this.queueEventInitialized = false;
this.RequestQueueEnabled = true;
this.queueEventInitialized = false;
windowWidth = GetWindowWidth();
windowHeight = GetWindowHeight();
scrollbarWidth = GetScrollbarWidth();
this.dashboardSize = Msn.VE.DashboardSize.Normal;
this.dashboardVersion = 6;
this._showDashboard = true;
this.LoadMap = (function (c,h,j,i,d,g,e)
{
  if (! a)
    throw new VEException("VEMap:LoadMap", "err_notinitializedmap", L_notinitialized_text);
  if (typeof d != "undefined" && d != null)
    {
      VEValidator.ValidateMapMode(d, "mapMode");
      this.mapMode = d;
    }
  if (c != null && c != "undefined")
    {
      VEValidator.ValidateObject(c, "veLatLong", VELatLong, "VELatLong");
      var f = b.Decode(c);
      this.initialLatitude = f.Latitude;
      this.initialLongitude = f.Longitude;
    }
  this.fixedMap = i;
  this.initialZoomLevel = h;
  this.initialMapStyle = j;
  this.showMapModeSwitch = g;
  if (e != null && typeof e != "undefined")
    this.tileBuffer = e;
  this.veonmaploadevent = this.onLoadMap;
  this.mapelement.innerHTML = "";
  this.mapelement.innerHTML = "<table width=100% height=100%><tr valign=middle><td align=center valign=middle><h3>" + L_loading_text + "</h3></td></tr></table>";
  this.InitializeMap();
  this.vemapcontrol.AttachEvent("onstartpan", (function ()
{
  if (window.ero)
    window.ero.hide(true);
}
));
}
);
this._ReArrangeControls = (function ()
{
  if (a.controlzIndexes != null && a.controls != null && a.controlzIndexes.length == a.controls.length)
    {
      var d = a.controls.length;
      for (var b = 0;b < d;b++)
        {
          document.body.removeChild(a.controls[b]);
          var c = a.controls[b];
          c.style.top = a.controltops[b];
          c.style.left = a.controllefts[b];
          a._AddControlInner(c, a.controlzIndexes[b]);
        }
    }
}
);
this._ClearView = (function ()
{
  VEPushpin.Hide();
  a.m_vemessage.Hide();
  if (typeof VE_TrafficManager != "undefined" && VE_TrafficManager.turnedOn == true)
    VE_TrafficManager._ViewChangeNotification();
}
);
this._RefreshLayers = (function ()
{
  if (a.vemapcontrol.GetMapMode() != 2)
    a.vemapcontrol.PanView();
  if (typeof VE_TrafficManager != "undefined" && VE_TrafficManager.turnedOn == true)
    VE_TrafficManager._ViewChangeNotification();
}
);
this.SetViewport = (function (a,c,b,d)
{
  return this.vemapcontrol.SetViewport(a, c, b, d);
}
);
this.GetCenter = (function ()
{
  var b = this.vemapcontrol.GetCenterLatitude(), d = this.vemapcontrol.GetCenterLongitude(), a = c.CreateVELatLong(b, d);
  return a;
}
);
this.GetMapView = (function ()
{
  var e;
  if (this.vemapcontrol.IsModeEnabled(Msn.VE.MapActionMode.Mode3D))
    {
      var d = this.vemapcontrol.Get3DVisibleArea(true);
      if (d == null)
        return null;
      var b = d[0], g = d[1], a = d[2], f = d[3];
      e = new VELatLongRectangle(c.CreateVELatLong(b.latitude, b.longitude), c.CreateVELatLong(a.latitude, a.longitude), c.CreateVELatLong(g.latitude, g.longitude), c.CreateVELatLong(f.latitude, f.longitude));
    }
  else
    {
      var b = this.vemapcontrol.PixelToLatLong(new VEPixel(0, 0)), a = this.vemapcontrol.PixelToLatLong(new VEPixel(this.GetWidth(), this.GetHeight()));
      if (b == null || a == null)
        return null;
      e = new VELatLongRectangle(c.CreateVELatLong(this.vemapcontrol.ClipLatitude(b.latitude), this.vemapcontrol.ClipLongitude(b.longitude)), c.CreateVELatLong(this.vemapcontrol.ClipLatitude(a.latitude), this.vemapcontrol.ClipLongitude(a.longitude)));
    }
  return e;
}
);
this.PixelToLatLong = (function (b,a,d)
{
  if (a != null)
    {
      VEValidator.ValidateNonNegativeInt(a, "zoomLevel");
      a = parseInt(a);
    }
  if (d)
    {
      VEValidator.ValidateObjectArray(b, "pixelArray", VEPixel, "VEPixel array");
      VEValidator.ValidateFunction(d, "callback");
      if (typeof b.length != "undefined" && b.length > 0)
        this.PixelToLatLongAsync(b, a, d);
    }
  else
    {
      VEValidator.ValidateObject(b, "pixel", VEPixel, "VEPixel");
      var e = this.vemapcontrol.PixelToLatLong(b, a), f = c.CreateVELatLong(e.latitude, e.longitude);
      return f;
    }
}
);
this.PixelToLatLongAsync = (function (a,b,c)
{
  this.vemapcontrol.PixelToLatLongAsync(a, b, c);
}
);
this.SetCenter = (function (c)
{
  VEValidator.ValidateObject(c, "veLatLong", VELatLong, "VELatLong");
  var a = b.Decode(c), d = "%0dev.virtualearth.net/legacyService/ElevatedLoc.ashx";
  if (d.length > 0)
    this._QueueRequest(this.vemapcontrol.SetCenterAccurate, a.Latitude, a.Longitude);
  else
    this._QueueRequest(this.vemapcontrol.SetCenter, a.Latitude, a.Longitude);
}
);
this.SetCenterClassic = (function (c)
{
  VEValidator.ValidateObject(c, "veLatLong", VELatLong, "VELatLong");
  var a = b.Decode(c);
  this._QueueRequest(this.vemapcontrol.SetCenter, a.Latitude, a.Longitude);
}
);
this.SetCenterAndZoom = (function (c,d)
{
  VEValidator.ValidateObject(c, "veLatLong", VELatLong, "VELatLong");
  VEValidator.ValidateNonNegativeInt(d, "zoomLevel");
  var a = b.Decode(c);
  this._QueueRequest(this.vemapcontrol.SetCenterAndZoom, a.Latitude, a.Longitude, d);
  return true;
}
);
this.GetMouseWheelZoomToCenter = (function ()
{
  return a.vemapcontrol.GetMouseWheelZoomToCenter();
}
);
this.SetMouseWheelZoomToCenter = (function (b)
{
  return a.vemapcontrol.SetMouseWheelZoomToCenter(b);
}
);
this.IncludePointInView = (function (c)
{
  VEValidator.ValidateObject(c, "veLatLong", VELatLong, "VELatLong");
  var a = b.Decode(c);
  return this.vemapcontrol.IncludePointInViewport(a.Latitude, a.Longitude);
}
);
this.GetOffsetX = (function ()
{
  return a.vemapcontrol.GetOffsetX();
}
);
this.GetOffsetY = (function ()
{
  return a.vemapcontrol.GetOffsetY();
}
);
this.getSvgLayer = (function ()
{
  return a.vemapcontrol.getSvgLayer();
}
);
this.resizeSVG = (function ()
{
  return a.vemapcontrol.resizeSVG();
}
);
this.GetsvgDiv = (function ()
{
  return a.vemapcontrol.GetsvgDiv();
}
);
this.LatLongToPixel = (function (c,a,d)
{
  if (a != null)
    {
      VEValidator.ValidateNonNegativeInt(a, "zoomLevel");
      a = parseInt(a);
    }
  if (d)
    {
      VEValidator.ValidateObjectArray(c, "veLatLongArray", VELatLong, "VELatLong array");
      VEValidator.ValidateFunction(d, "callback");
      this.LatLongToPixelAsync(c, a, d);
    }
  else
    {
      VEValidator.ValidateObject(c, "veLatLong", VELatLong, "VELatLong");
      var e = b.Decode(c), f = new Msn.VE.LatLong(e.Latitude, e.Longitude);
      return this.vemapcontrol.LatLongToPixel(f, a);
    }
}
);
this.LatLongToPixelAsync = (function (d,f,g)
{
  var e = [];
  for (var a = 0;a < d.length;++a)
    {
      var c = b.Decode(d[a]);
      e[a] = new Msn.VE.LatLong(c.Latitude, c.Longitude);
    }
  this.vemapcontrol.LatLongToPixelAsync(e, f, g);
}
);
this.PanToLatLong = (function (c)
{
  VEValidator.ValidateObject(c, "veLatLong", VELatLong, "VELatLong");
  var a = b.Decode(c);
  if (this.GetMapMode() == Msn.VE.MapActionMode.Mode2D)
    {
      a.Latitude = this.vemapcontrol.ClipLatitude(a.Latitude);
      a.Longitude = this.vemapcontrol.ClipLongitude(a.Longitude);
    }
  this._QueueRequest(this.vemapcontrol.PanToLatLong, a.Latitude, a.Longitude);
  return true;
}
);
this.SetMapView = (function (a)
{
  VEValidator.ValidateNonNull(a, "arrObject");
  if (VEMapViewSpecification.prototype.isPrototypeOf(a))
    {
      var h = b.Decode(a.LatLong);
      view = new Msn.VE.MapView(this.vemapcontrol);
      view.SetCenterLatLong(new Msn.VE.LatLong(h.Latitude, h.Longitude));
      view.SetMapStyle(this.vemapcontrol.GetMapStyle());
      if (a.ZoomLevel != null)
        view.SetZoomLevel(a.ZoomLevel);
      else
        view.SetZoomLevel(this.vemapcontrol.GetZoomLevel());
      if (a.Altitude != null)
        view.SetAltitude(a.Altitude);
      if (a.Heading != null)
        view.SetDirection(a.Heading);
      if (a.Pitch != null)
        view.SetTilt(a.Pitch);
      this._QueueRequest(this.vemapcontrol.SetView, view);
    }
  else
    if (VELatLongRectangle.prototype.isPrototypeOf(a))
      {
        var f = b.Decode(a.TopLeftLatLong), g = b.Decode(a.BottomRightLatLong);
        this.vemapcontrol.SetViewport(f.Latitude, f.Longitude, g.Latitude, g.Longitude);
      }
    else
      {
        var e = [];
        for (var c = 0;c < a.length;c++)
          {
            VEValidator.ValidateNonNull(a[c], "arrObject[" + c + "]");
            if (VELatLong.prototype.isPrototypeOf(a[c]))
              d([a[c]], e);
            else
              if (VEShape.prototype.isPrototypeOf(a[c]))
                d(a[c].GetPoints(), e);
              else
                if (VEPolyline.prototype.isPrototypeOf(a[c]))
                  d(a[c].GetLatLongs(), e);
                else
                  if (VEPolygon.prototype.isPrototypeOf(a[c]))
                    d(a[c].GetLatLongs(), e);
                  else
                    if (VELatLongRectangle.prototype.isPrototypeOf(a[c]))
                      d([a[c].TopLeftLatLong, a[c].BottomRightLatLong], e);
                    else
                      throw new VEException("VEMap:SetMapView", "err_invalidargument", L_invalidargument_text.replace("%1", "arrObject").replace("%2", "object"));
          }
        this._QueueRequest(this.vemapcontrol.SetBestMapView, e);
      }
  return true;
}
);
this.AddPushpin = (function (a)
{
  if (typeof a == "object" && ! (a  instanceof  VEPushpin))
    {
      var e = new VEShape(VEShapeType.Pushpin, a);
      this.AddShape(e);
      return e;
    }
  VEValidator.ValidateObject(a, "vePushpin", VEPushpin, "VEPushpin");
  var f = this.pushpins.length;
  for (var d = 0;d < f;d++)
    {
      var g = this.pushpins[d];
      if (g.ID == a.ID)
        throw new VEException("VEMap:AddPushpin", "err_invalidpushpinid", L_invalidpushpinid_text);
    }
  this.pushpins.push(a);
  a._SetMapInstance(this);
  var c = b.Decode(a.LatLong);
  if (this.GetMapMode() == Msn.VE.MapActionMode.Mode3D)
    this.m_vegraphicsmanager.Add3DPushpin(a.ID, c.Latitude, c.Longitude, 25, 25, "VEAPI_Pushpin", a, Msn.VE.API.Globals.vepushpinpanelzIndex - 1);
  else
    this.vemapcontrol.AddPushpin(a.ID, c.Latitude, c.Longitude, 25, 25, "VEAPI_Pushpin", a.GetContent(), Msn.VE.API.Globals.vepushpinpanelzIndex - 1);
}
);
this._DisambiguateCallback = "VEMap._GetMapFromGUID(" + this.GUID + ")._sm.FindAmbiguousListCallBack";
this._Disambiguate = (function (f,b,d,c,e)
{
  var a = $ID(this.ID + "_vewhereinput");
  if (a)
    a.value = unescape(f);
  this.vemapcontrol.SetViewport(b, d, c, e);
  if (this.m_vesearchmanager != null && this.lastwhatsearch != null && this.lastwhatsearch.length > 0)
    this.Find(this.lastwhatsearch, null, 1, this.m_vesearchmanager.vesearchcallback);
}
);
this._DoFind = (function ()
{
  try
    {
      this.lastwhatsearch = ($ID(this.ID + "_vewhatinput")).value;
      this.lastwheresearch = ($ID(this.ID + "_vewhereinput")).value;
      this.Find(this.lastwhatsearch, this.lastwheresearch);
    }
  catch (a)
    {
      this.ShowMessage(a.message);
    }
}
);
this.UpdateAmbiguousList = (function (a)
{
  if (this.m_vesearchmanager)
    this.m_vesearchmanager.UpdateAmbiguousList(a);
}
);
this.Dispose = (function ()
{
  try
    {
      if (a.vemapcontrol != null)
        {
          a.vemapcontrol.DetachEvent("onchangeview", a._ClearView);
          a.vemapcontrol.DetachEvent("onresize", a._ReArrangeControls);
          a.vemapcontrol.DetachEvent("onendpan", a._RefreshLayers);
          a.vemapcontrol.DetachEvent("oninitmode", a._EROHouseKeeping);
        }
      a.vemapcontrol.DetachEvent("onclick", VEPushpin.Hide);
      var c = a.controlzIndexes.length;
      for (var b = 0;b < c;b++)
        a.controlzIndexes.pop();
      var c = a.controls.length;
      for (var b = 0;b < c;b++)
        {
          try
            {
              document.body.removeChild(a.controls[b]);
            }
          catch (g)
            {}
          a.controls[b] = null;
          a.controltops[b] = null;
          a.controllefts[b] = null;
        }
      a.controls = null;
      a.controlzIndexes = null;
      if (a.m_velayermanager)
        a.m_velayermanager.Dispose();
      if (a.m_vesearchmanager)
        {
          a.m_vesearchmanager.Dispose();
          a.m_vesearchmanager = null;
          a._sm = null;
        }
      if (a.m_routemanager)
        {
          a.m_routemanager.Dispose();
          a.m_routemanager = null;
        }
      for (var b = 0;b < a.pushpins.length;++b)
        if (a.pushpins[b] != null && a.pushpins[b] != "undefined")
          {
            if (a.GetMapMode() == Msn.VE.MapActionMode.Mode3D)
              a.m_vegraphicsmanager.Remove3DPushpin(a.pushpins[b].ID);
            a.pushpins[b].Dispose();
            a.pushpins[b] = null;
          }
      a.pushpins = null;
      if (a.m_vegraphicsmanager)
        a.m_vegraphicsmanager.Dispose();
      if (a.m_vetilesourcemanager)
        a.m_vetilesourcemanager.Dispose();
      a.m_vemessage.Dispose();
      a.m_veambiguouslist.Dispose();
      try
        {
          if (typeof VE_TrafficManager != "undefined")
            VE_TrafficManager.Destroy();
        }
      catch (g)
        {}
      Msn.VE.API.Globals.vemapinstances[a.GUID] = null;
      a.veonmaploadevent = null;
      a.veloadingdiv = null;
      a.vemapcontrol.Destroy();
      try
        {
          var f = $ID(a.ID);
          f.innerHTML = "";
        }
      catch (g)
        {}
      a.ClientToken = null;
      a.ID = null;
      a.vemapcontrol = null;
      var e = 0;
      for (d in Msn.VE.API.Globals.vemapinstances)
        if (typeof Msn.VE.API.Globals.vemapinstances[d] != "function" && Msn.VE.API.Globals.vemapinstances[d] != null)
          ++e;
      if (e == 0)
        {
          VE_Help.Destroy();
          VEPushpin.DisposeERO();
          Msn.VE.API.Globals.Dispose();
        }
      Msn.VE.API.Globals.vemapinstances[this.GUID] = null;
      var c = a.preInitCustomEvents.length;
      for (var b = 0;b < c;++b)
        a.preInitCustomEvents.pop();
      a.preInitCustomEvents = null;
      a.requestQueue = null;
      a.network = null;
      a.mapelement = null;
      a.pushpins = null;
      a = null;
    }
  catch (g)
    {}
}
);
this.GetDashboardSize = (function ()
{
  return this.dashboardSize;
}
);
  Line 7 of linked script http://localhost:8080/virtualEarth-sample/a4j_3_2_0-SNAPSHOTscript/virtualEarth.js.jsf
    window[mapVar] = new VEMap(clid);
  Line 3 of inline#1 script in http://localhost:8080/virtualEarth-sample/
    __initVirtualEarthdiv("map", "gm");
  Line 3888 of linked script http://localhost:8080/virtualEarth-sample/a4j_3_2_0-SNAPSHOTorg.ajax4jsf.javascript.PrototypeScript.jsf
    handler.call(element, event);
  At unknown location
    [statement source code not available]


> virtualEarth: is not displayed in opera
> ---------------------------------------
>
>                 Key: RF-2670
>                 URL: http://jira.jboss.com/jira/browse/RF-2670
>             Project: RichFaces
>          Issue Type: Bug
>    Affects Versions: 3.2.0
>            Reporter: Aleksej Yanul
>         Assigned To: Pavel Yaschenko
>            Priority: Minor
>             Fix For: 3.2.0
>
>


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       




More information about the richfaces-issues mailing list