Microsoft Copyright Javascript

(Extracted and modified from http://sc1.local.live.com/mapcontrol.asjx?mkt=en-US)

var L_MapControlNavteq_Text = "© 2006 NAVTEQ";
var L_MapControlImageCourtesyOfNASA_Text = "Image courtesy of NASA";
var L_MapControlHarrisCorp_Text = "© Harris Corp, Earthstar Geographics LLC";
var L_MapControlImageCourtesyOfUSGS_Text = "Image courtesy of USGS";
var L_MapControlImageCourtesyOfPictometry_Text = "© 2005 Pictometry International Corp.";
var L_MapControlImageCourtesyOfEarthData_Text = "© EarthData";
var L_MapControlImageCourtesyOfGetmapping_Text = "© Getmapping plc";
var L_MapControlImageCourtesyOfAND_Text = "© AND";
var L_MapControlImageCourtesyOfBlom_Text = "© 2006 Blom";
var L_MapCopyrightMicrosoft = "© 2006 Microsoft Corporation";
var L_MapControlPlatformName_Text = "Virtual Earth";
var L_MapControlImageCourtesyOfGeoEye_Text = "© 2006 GeoEye";
var L_MapControlImageCourtesyOfMapDataSciences_Text = "© 2006 MapData Sciences Pty Ltd";
var L_MapControlImageCourtesyOfZenrin_Text = "© 2006 Zenrin";
var L_MapControlImageCourtesyOfPasco_Text = "© 2005 Pasco";

function VECopyrightTableEntry(minZoom, maxZoom, minLat, minLon, maxLat, maxLon)
{
    this.MinZoomLevel = minZoom;
    this.MaxZoomLevel = maxZoom;
    this.MinLatitude = minLat;
    this.MinLongitude = minLon;
    this.MaxLatitude = maxLat;
    this.MaxLongitude = maxLon
}

VECopyrightTableEntry.prototype.IsMatch = function(zoomLevel, latitude, longitude)
{
    var d = false;
    if(zoomLevel >= this.MinZoomLevel && zoomLevel <= this.MaxZoomLevel && (latitude >= this.MinLatitude && latitude <= this.MaxLatitude) && (longitude >= this.MinLongitude && longitude <= this.MaxLongitude))
        d = true;
    return d
};

function VECopyrightTable()
{
    var crIndex = [];
    crIndex[Msn.VE.MapStyle.Oblique] = [L_MapControlImageCourtesyOfPictometry_Text, L_MapControlImageCourtesyOfBlom_Text];
    crIndex[Msn.VE.MapStyle.Road] = [L_MapControlNavteq_Text, L_MapControlImageCourtesyOfAND_Text, L_MapControlImageCourtesyOfMapDataSciences_Text, L_MapControlImageCourtesyOfZenrin_Text];
    crIndex[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];
    var crEntries = [];
    crEntries[Msn.VE.MapStyle.Oblique] = [];
    crEntries[Msn.VE.MapStyle.Oblique][L_MapControlImageCourtesyOfPictometry_Text] = [];
    crEntries[Msn.VE.MapStyle.Oblique][L_MapControlImageCourtesyOfBlom_Text] = [];
    crEntries[Msn.VE.MapStyle.Road] = [];
    crEntries[Msn.VE.MapStyle.Road][L_MapControlNavteq_Text] = [];
    crEntries[Msn.VE.MapStyle.Road][L_MapControlImageCourtesyOfAND_Text] = [];
    crEntries[Msn.VE.MapStyle.Road][L_MapControlImageCourtesyOfMapDataSciences_Text] = [];
    crEntries[Msn.VE.MapStyle.Road][L_MapControlImageCourtesyOfZenrin_Text] = [];
    crEntries[Msn.VE.MapStyle.Aerial] = [];
    crEntries[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfNASA_Text] = [];
    crEntries[Msn.VE.MapStyle.Aerial][L_MapControlHarrisCorp_Text] = [];
    crEntries[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfUSGS_Text] = [];
    crEntries[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfEarthData_Text] = [];
    crEntries[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfGetmapping_Text] = [];
    crEntries[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfGeoEye_Text] = [];
    crEntries[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfPasco_Text] = [];
    crEntries[Msn.VE.MapStyle.Oblique][L_MapControlImageCourtesyOfPictometry_Text].push(new VECopyrightTableEntry(1, 20, 24, -125, 49, -66));
    crEntries[Msn.VE.MapStyle.Oblique][L_MapControlImageCourtesyOfBlom_Text].push(new VECopyrightTableEntry(1, 20, 49, -11, 60, 2));
    crEntries[Msn.VE.MapStyle.Road][L_MapControlNavteq_Text].push(new VECopyrightTableEntry(1, 9, -90, -180, 90, 180));
    crEntries[Msn.VE.MapStyle.Road][L_MapControlNavteq_Text].push(new VECopyrightTableEntry(10, 19, 16, -180, 90, -50));
    crEntries[Msn.VE.MapStyle.Road][L_MapControlNavteq_Text].push(new VECopyrightTableEntry(10, 19, 27, -32, 40, -13));
    crEntries[Msn.VE.MapStyle.Road][L_MapControlNavteq_Text].push(new VECopyrightTableEntry(10, 19, 35, -11, 72, 20));
    crEntries[Msn.VE.MapStyle.Road][L_MapControlNavteq_Text].push(new VECopyrightTableEntry(10, 19, 21, 20, 72, 32));
    crEntries[Msn.VE.MapStyle.Road][L_MapControlNavteq_Text].push(new VECopyrightTableEntry(10, 17, 21.92, 113.14, 22.79, 114.52));
    crEntries[Msn.VE.MapStyle.Road][L_MapControlNavteq_Text].push(new VECopyrightTableEntry(10, 17, 21.73, 119.7, 25.65, 122.39));
    crEntries[Msn.VE.MapStyle.Road][L_MapControlNavteq_Text].push(new VECopyrightTableEntry(10, 17, 0, 98.7, 8, 120.17));
    crEntries[Msn.VE.MapStyle.Road][L_MapControlNavteq_Text].push(new VECopyrightTableEntry(10, 17, 0.86, 103.2, 1.92, 104.45));
    crEntries[Msn.VE.MapStyle.Road][L_MapControlImageCourtesyOfAND_Text].push(new VECopyrightTableEntry(10, 19, -90, -180, 90, 180));
    crEntries[Msn.VE.MapStyle.Road][L_MapControlImageCourtesyOfMapDataSciences_Text].push(new VECopyrightTableEntry(5, 17, -45, 111, -9, 156));
    crEntries[Msn.VE.MapStyle.Road][L_MapControlImageCourtesyOfMapDataSciences_Text].push(new VECopyrightTableEntry(5, 17, -49.7, 164.42, -30.82, 180));
    crEntries[Msn.VE.MapStyle.Road][L_MapControlImageCourtesyOfZenrin_Text].push(new VECopyrightTableEntry(4, 18, 23.5, 122.5, 46.65, 151.66));
    crEntries[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfNASA_Text].push(new VECopyrightTableEntry(1, 8, -90, -180, 90, 180));
    crEntries[Msn.VE.MapStyle.Aerial][L_MapControlHarrisCorp_Text].push(new VECopyrightTableEntry(9, 13, -90, -180, 90, 180));
    crEntries[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfUSGS_Text].push(new VECopyrightTableEntry(14, 19, 17.99, -150.11, 61.39, -65.57));
    crEntries[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfEarthData_Text].push(new VECopyrightTableEntry(14, 19, 21.25, -158.3, 21.72, -157.64));
    crEntries[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfEarthData_Text].push(new VECopyrightTableEntry(14, 19, 39.99, -80.53, 40.87, -79.43));
    crEntries[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfEarthData_Text].push(new VECopyrightTableEntry(14, 19, 34.86, -90.27, 35.39, -89.6));
    crEntries[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfGetmapping_Text].push(new VECopyrightTableEntry(14, 19, 49.94, -6.35, 58.71, 1.78));
    crEntries[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfGeoEye_Text].push(new VECopyrightTableEntry(14, 17, 44.43, -63.75, 45.06, -63.45));
    crEntries[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfGeoEye_Text].push(new VECopyrightTableEntry(14, 17, 45.39, -73.78, 45.66, -73.4));
    crEntries[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfGeoEye_Text].push(new VECopyrightTableEntry(14, 17, 45.2, -75.92, 45.59, -75.55));
    crEntries[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfGeoEye_Text].push(new VECopyrightTableEntry(14, 17, 42.95, -79.81, 44.06, -79.42));
    crEntries[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfGeoEye_Text].push(new VECopyrightTableEntry(14, 17, 50.35, -114.26, 51.25, -113.82));
    crEntries[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfGeoEye_Text].push(new VECopyrightTableEntry(14, 17, 48.96, -123.33, 49.54, -122.97));
    crEntries[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfGeoEye_Text].push(new VECopyrightTableEntry(14, 17, -35.42, 138.32, -34.47, 139.07));
    crEntries[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfGeoEye_Text].push(new VECopyrightTableEntry(14, 17, -32.64, 115.58, -32.38, 115.85));
    crEntries[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfGeoEye_Text].push(new VECopyrightTableEntry(14, 17, -34.44, 150.17, -33.27, 151.49));
    crEntries[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfGeoEye_Text].push(new VECopyrightTableEntry(14, 17, -28.3, 152.62, -26.94, 153.64));
    crEntries[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfEarthData_Text].push(new VECopyrightTableEntry(14, 19, 40.6, -74.18, 41.37, -73.51));
    crEntries[Msn.VE.MapStyle.Aerial][L_MapControlImageCourtesyOfPasco_Text].push(new VECopyrightTableEntry(14, 17, 23.5, 122.5, 46.65, 151.66));

    this.CreditsFor = function(viewStyle, zoomLevel, latitude, longitude)
    {
        var matches = [];
        if(viewStyle != "undefined" && viewStyle != null && typeof crIndex[viewStyle] != "undefined" && crIndex[viewStyle] != null) {
            var m = crIndex[viewStyle].length;
            for(var e = 0; e < m; ++e) {
                var h = crIndex[viewStyle][e], f = crEntries[viewStyle][h], i = f.length;
                for(var d = 0; d < i; ++d)
                    if(f[d].IsMatch(zoomLevel, latitude, longitude)) {
                        matches.push(h);
                        break
                    }
            }
        }
        return matches
    };
    this.CreditsForView =function(mapView)
    {
        var matches = [];
        matches.push(L_MapCopyrightMicrosoft);
        if(mapView.mapStyle == Msn.VE.MapStyle.Hybrid) {
            matches = matches.concat(this.CreditsFor(Msn.VE.MapStyle.Road, mapView.zoomLevel, mapView.latlong.latitude, mapView.latlong.longitude));
            matches = matches.concat(this.CreditsFor(Msn.VE.MapStyle.Aerial, mapView.zoomLevel, mapView.latlong.latitude, mapView.latlong.longitude))
        } else matches = matches.concat(this.CreditsFor(mapView.mapStyle, mapView.zoomLevel, mapView.latlong.latitude, mapView.latlong.longitude));
        return matches
    }
}