(function() {
    
    var cities = [
        { address: 'Saint Paul, MN', lat: '44.944636', lng: '-93.102657', stop: true },
        { address: 'New Port, MN', lat: '44.876648', lng: '-93.002166', stop: false },
        { address: 'St Paul Park, MN', lat: '44.840399', lng: '-92.997906', stop: false },
        { address: 'Cottage Grove, MN', lat: '44.81933', lng: '-92.930353', stop: false },
        { address: 'Hastings, MN', lat: '44.731291', lng: '-92.852462', stop: false },
        { address: 'Red Wing, MN', lat: '44.572913', lng: '-92.607162', stop: true },
        { address: 'Wacouta, MN', lat: '44.5482565', lng: '-92.4159308', stop: false },
        { address: 'Frontenac, MN', lat: '44.511013', lng: '-92.356841', stop: false },
        { address: 'Lake City, MN', lat: '44.442494', lng: '-92.275258', stop: false },
        { address: 'Maple Springs, MN', lat: '44.410514', lng: '-92.162121', stop: false },
        { address: 'Reads Landing, MN', lat: '44.402215', lng: '-92.079048', stop: false },
        { address: 'Wabasha, MN', lat: '44.372091', lng: '-92.040195', stop: false },
        { address: 'Kellogg, MN', lat: '44.31039', lng: '-92.004161', stop: false },
        { address: 'Weaver, MN', lat: '44.215244', lng: '-91.927719', stop: false },
        { address: 'Minneiska, MN', lat: '44.199862', lng: '-91.878602', stop: false },
        { address: 'Whitman, MN', lat: '44.153391', lng: '-91.80588', stop: false },
        { address: 'Minnesota City, MN', lat: '44.092647', lng: '-91.747882', stop: false },
        { address: 'Winona, MN', lat: '44.053086', lng: '-91.667374', stop: true },
        { address: 'Homer, MN', lat: '44.014608', lng: '-91.544952', stop: false },
        { address: 'Lamoille, MN', lat: '44.002048', lng: '-91.472527', stop: false },
        { address: 'Donehower, MN', lat: '43.961459', lng: '-91.40618', stop: false },
        { address: 'Dakota, MN', lat: '43.913213', lng: '-91.360091', stop: false },
        { address: 'Dresbach, MN', lat: '43.893888', lng: '-91.34277', stop: false },
        { address: 'La Cresent, MN', lat: '43.82958', lng: '-91.301929', stop: false },
        { address: 'La Crosse, WI', lat: '43.811718', lng: '-91.235875', stop: true },
        { address: 'West Salem, WI', lat: '43.899078', lng: '-91.082709', stop: false },
        { address: 'Bangor, WI', lat: '43.892953', lng: '-90.990506', stop: false },
        { address: 'Rockland, WI', lat: '43.900533', lng: '-90.914865', stop: false },
        { address: 'Sparta, WI', lat: '43.93923', lng: '-90.810727', stop: false },
        { address: 'Tunnel City, WI', lat: '44.008319', lng: '-90.566169', stop: false },
        { address: 'Tomah, WI', lat: '43.987985', lng: '-90.504581', stop: true },
        { address: 'Oakdale, WI', lat: '43.962475', lng: '-90.377964', stop: false },
        { address: 'Camp Douglas, WI', lat: '43.92231', lng: '-90.265639', stop: false },
        { address: 'Orange Mill, WI', lat: '43.902385', lng: '-90.23095', stop: false },
        { address: 'New Lisbon, WI', lat: '43.879454', lng: '-90.166305', stop: false },
        { address: 'Mauston, WI', lat: '43.797469', lng: '-90.076922', stop: false },
        { address: 'Lemonweir, WI', lat: '43.765206', lng: '-90.002489', stop: false },
        { address: 'Lyndon Station , WI', lat: '43.709672', lng: '-89.89848', stop: false },
        { address: 'Wisconsin Dells, WI', lat: '43.627282', lng: '-89.766209', stop: true },
        { address: 'Lewiston, WI', lat: '43.5791041', lng: '-89.5686271', stop: false },
        { address: 'Portage, WI', lat: '43.547184', lng: '-89.465058', stop: true },
        { address: 'Poynette, WI', lat: '43.391657', lng: '-89.402779', stop: false },
        { address: 'Morrisonville, WI', lat: '43.275505', lng: '-89.363012', stop: false },
        { address: 'De Forest, WI', lat: '43.252664', lng: '-89.349394', stop: false },
        { address: 'Windsor, WI', lat: '43.212012', lng: '-89.343154', stop: false },
        { address: 'Madison, WI', lat: '43.103991', lng: '-89.350433', stop: true },
        { address: 'Sun Prairie, WI', lat: '43.181466', lng: '-89.241819', stop: false },
        { address: 'Marshall, WI', lat: '43.167505', lng: '-89.064115', stop: false },
        { address: 'Waterloo, WI', lat: '43.183817', lng: '-88.99043', stop: false },
        { address: 'Hubbleton, WI', lat: '43.194247', lng: '-88.880916', stop: false },
        { address: 'Watertown, WI', lat: '43.18297', lng: '-88.727016', stop: false },
        { address: 'Oconomowoc, WI', lat: '43.106625', lng: '-88.493867',stop: true },
        { address: 'Hartland, WI', lat: '43.104757', lng: '-88.343354', stop: false },
        { address: 'Pewaukee, WI', lat: '43.083467', lng: '-88.251393', stop: false },
        { address: 'Brookfield, WI', lat: '43.060929', lng: '-88.126168', stop: true },
        { address: 'Milwaukee, WI', lat: '43.040182', lng: '-87.91448', stop: true },
        { address: 'New Coeln, WI', lat: '42.9337227', lng: '-87.9150931', stop: false },
        { address: 'Caledonia, WI', lat: '42.807146', lng: '-87.925215', stop: false },
        { address: 'Franksville, WI', lat: '42.759928', lng: '-87.913582', stop: false },
        { address: 'Sturtevant, WI', lat: '42.697983', lng: '-87.894715', stop: true },
        { address: 'Pleasant Prairie, WI', lat: '42.523086', lng: '-87.89202', stop: false },
        { address: 'Park City, IL', lat: '42.352979', lng: '-87.894537', stop: false },
        { address: 'Lake Forest, IL', lat: '42.239895', lng: '-87.862363', stop: false },
        { address: 'DeerField, IL', lat: '42.1673', lng: '-87.844389', stop: false },
        { address: 'Glenview, IL', lat: '42.078657', lng: '-87.816541',stop: true },
        { address: 'Chicago, IL', lat: '41.879535', lng: '-87.624333', stop: true }
    ];
    
    var OnboardMap = function() {
        var map = new google.maps.Map2(document.getElementById('map'));
        map.setCenter(new google.maps.LatLng(43.487985, -90.44), 7);

        var baseIcon = new GIcon('/images/map-icon.png');
        baseIcon.image = '/images/map-icon.png';
        baseIcon.shadow = '/images/map-icon-shadow.png';
        baseIcon.iconSize = new GSize(33, 48);
        baseIcon.shadowSize = new GSize(63, 48);
        baseIcon.iconAnchor = new GPoint(30, 45);
        baseIcon.infoWindowAnchor = new GPoint(23, 4);
        
        var latlngPoints = [];
        var stopCities = [];
        var i = cities.length;
        while(i--) {
            latlngPoints.push(new GLatLng(cities[i].lat, cities[i].lng));
            if(cities[i].stop) {
                (function() {
                    var point = new GLatLng(cities[i].lat, cities[i].lng);
                    var marker = new GMarker(point, { icon: baseIcon });
                    map.addOverlay(marker);
                    
                    var text = '<h2 style="text-align: center; padding-top: 20px"><span style="color: #999; display: block; font-size: 12px;">Proposed Stop:</span>' + cities[i].address + '</h2>';
                    
                    GEvent.addListener(marker, 'click', function() {
                        marker.openInfoWindowHtml(text);
                    });
                    stopCities.push(cities[i]);
                })();
            }
        }
        
        map.addControl(new GLargeMapControl());
        
        G_NORMAL_MAP.getMinimumResolution = function () { return 6; }; 
        G_NORMAL_MAP.getMaximumResolution = function () { return 10; }; 
        
        var polyline = new GPolyline(latlngPoints, "#8CC63E", 5, 0.8, {});
        map.addOverlay(polyline);
    }
    
    google.load('maps', '2');

    google.setOnLoadCallback(OnboardMap)
})();