//Robert Aspinall
//robert.aspinall@noaa.gov
// Modified by Charles Sun (05/11/2008)

var markers = null;
var popups;

// Open the info box for the specified marker.
function popup( i ) {
    markers[i].openInfoWindowHtml(popups[i]);
}

function makePopupCaller( i )
    {
    return function() { popup( i ); };
    }

// Center the map on the West Coast region
var map = new GMap2(document.getElementById("map"));

map.addControl(new GLargeMapControl());
//map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
map.addControl(new GScaleControl());
map.addMapType(G_PHYSICAL_MAP);
//map.addMapType(G_HYBIRD_MAP);
//map.addMapType(mtTerCross);
//map.setMapType(G_SATELLITE_MAP);
//map.enableScrollWheelZoom();

GEvent.addListener(map, 'zoomend', function (fromZoom, toZoom) {
    if (markers != null) {
        for (var j=0; j < markers.length; j++) {
            markers[j].showTooltip();
        }
    }
});

function initPoints() {
   map.clearOverlays();
   for (var j = 0; j < markers.length; j++) {
      map.addOverlay(markers[j]);
   }
}

function mapit(region) {
    switch (region) {
    case "all":
    map.setCenter(new GLatLng(45.00,-120.00), 3);
    break;
    case "natl":
    map.setCenter(new GLatLng(43.10, -70.50), 7);
    break;
    case "catl":
    map.setCenter(new GLatLng(39.50, -75.00), 7);
    break;
    case "satl":
    map.setCenter(new GLatLng(33.50, -76.00), 6);
    break;
    case "egof":
    map.setCenter(new GLatLng(28.00, -85.00), 6);
    break;
    case "wgof":
    map.setCenter(new GLatLng(28.00, -95.00), 7);
    break;
    case "npac":
    map.setCenter(new GLatLng(46.5, -124.0), 6);
    break;
    case "cpac":
    map.setCenter(new GLatLng(38.00, -122.00), 8);
    break;
    case "spac":
    map.setCenter(new GLatLng(33.25, -118.00), 8);
    break;
    case "opac":
    map.setCenter(new GLatLng(08.00, 175.00), 3);
    break;
    case "glakes":
    map.setCenter(new GLatLng(44.00, -82.00), 6);
    break;
    case "alaska":
    map.setCenter(new GLatLng(58.00, -158.00), 4);
    break;
    case "hawaii":
    map.setCenter(new GLatLng(20.5, -157.0), 7);
    break;
    case "cwtg":
    map.setCenter(new GLatLng(45.00,-120.00), 3);
    }
    var d = new Date();
    var m_names = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");

    var curr_month = d.getMonth();
    var this_month = m_names[curr_month];

    map.clearOverlays();
    
    var request = GXmlHttp.create();
    var regionname = "/dsdt/cwtg/rss/cwtg.xml";
    request.open("GET", regionname, true);
    request.onreadystatechange = function() {

    if (request.readyState == 4) {
        var xmlDoc = request.responseXML;
        var locations = xmlDoc.documentElement.getElementsByTagName("location");
        markers = new Array(locations.length);
        popups = new Array(locations.length);
        for (var i = 0; i < locations.length; i++) {
            var lng = parseFloat(locations[i].getAttribute("lng"));
            var lat = parseFloat(locations[i].getAttribute("lat"));
            var point = new GLatLng(lat, lng);
            var commonname = locations[i].getAttribute("name");
            var stnid = locations[i].getAttribute("id");
            var StnInfo = locations[i].getAttribute("url");
            var WTempF = locations[i].getAttribute("tempf");
            var WTempC = locations[i].getAttribute("tempc");
            var WTempM = locations[i].getAttribute("tempm");
            if (WTempM != "NA") {
               var WTempM_C = (WTempM-32.0)*5.0/9.0;
               WTempM_C = WTempM_C.toFixed(1);
               WTempM = WTempM + "&deg;F (" + WTempM_C + "&deg;C)";
            } else {
               WTempM = "Not Available";
            }
            var LastUpdated = locations[i].getAttribute("time");
            var html = "<div id='infowindowframe'>";
            html += "<div id='infowindowtitle'>" + commonname + "<br />";
            html += "Station ID: " + stnid + "</div>";
            html += "<div id='infowindowleftpane'>";
            if (WTempF) {
            var WaterTemp = WTempF + "&deg;F (" + WTempC + "&deg;C)";
            var WTemp = Math.round(parseFloat(WTempF));
            html += "<br /><strong>Recent Water Temperature:</strong><br /> " + WaterTemp + "<br />"; 
            html += "<strong>Observation Date and Time:</strong><br /> " + LastUpdated + "<br /><br />";
            html += "<strong>" + this_month + " Monthly Mean Temperature:</strong> <br />" + WTempM+ "<br /><br />";
             html += "<a href=\"" + StnInfo + "\" target=\"_blank\">Station Information</a><br />";
            } else {
            var WTemp = 'NA';
            html += "<br /><strong>Recent Water Temperature:</strong>"+ "<br />Not Reporting<br /><br />";
            html += "<strong>" + this_month + " Monthly Mean Temperature:</strong> <br />" + WTempM+ "<br /><br />";
            }
            html += "</div>";
            popups[i] = html;
            markers[i] = new GxMarker(point, null, WTemp, "static");
            GEvent.addListener(markers[i], "click", makePopupCaller(i));
        }
    initPoints();
    }
}
request.send(null);
}
