﻿var gmscale = 10;
var items = {};
function load(lat, lon) {
    if (!GBrowserIsCompatible()) {
        alert('Sorry, your browser is not compatible with the weather map.');
    } else {
        var point = new GLatLng(lat, lon);
        var map = new GMap2(document.getElementById("gmap"), { draggableCursor: 'pointer' });
        map.addOverlay(new GScreenOverlay('images/weather/shadowedgeleft.png', new GScreenPoint(0, 0, 'pixels', 'pixels'), new GScreenPoint(0, 0, 'pixels', 'pixels'), new GScreenSize(10, 720, 'pixels', 'pixels')));
        map.addOverlay(new GScreenOverlay('images/weather/shadowedgetop.png', new GScreenPoint(0, 1, 'fraction', 'fraction'), new GScreenPoint(0, 10, 'pixels', 'pixels'), new GScreenSize(720, 10, 'pixels', 'pixels')));
        var mapTypeControl = new GHierarchicalMapTypeControl();
        var topRight = new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(5, 5));
        map.addControl(mapTypeControl, topRight);
        map.addMapType(G_PHYSICAL_MAP);
        map.addMapType(G_NORMAL_MAP);
        map.addMapType(G_SATELLITE_MAP);
        map.addControl(new GSmallMapControl());
        map.enableContinuousZoom();
        map.enableScrollWheelZoom();
        map.setCenter(point, gmscale, G_PHYSICAL_MAP);
        var item;
        GEvent.addListener(map, 'click', function(overlay, point, overlayPoint) {
            var href = 'weather.aspx';
            var pt = point || overlayPoint;
            href += '?x=' + pt.x + '&y=' + pt.y;
            if (overlay) {
                var item = items[overlay.tag];
                if (item) {
                    href += '&a=' + item.a + '&id=' + escape(item.id);
                    if (item.tide) {
                        href += '&tide=' + item.tide;
                    }
                    if (item.s) {
                        href += '&s=' + item.s;
                    }
                    if (item.t) {
                        href += '&t=' + item.t;
                    }
                    if (item.f) {
                        href += '&f=' + item.f;
                    }
                } else {
		    alert('Unrecognized icon');
		}
		
            }
            document.location.href = href;
        });                                       //end addListener function
        var iconWnoaa = MapIconMaker.createMarkerIcon({ width: 32, height: 33, primaryColor: '#FFFF00', cornerColor: '#FFFFFF', strokeColor: '#555555' });
        var iconTnoaa = MapIconMaker.createMarkerIcon({ width: 32, height: 33, primaryColor: '#FFFF00', cornerColor: '#0000FF', strokeColor: '#555555' });
        var iconTide = MapIconMaker.createMarkerIcon({ width: 32, height: 33, primaryColor: '#0000FF', cornerColor: '#FFFFFF', strokeColor: '#555555' });
        var iconCdec = MapIconMaker.createMarkerIcon({ width: 32, height: 33, primaryColor: '#00FF00', cornerColor: '#FFFFFF', strokeColor: '#555555' });
        var mgr = new MarkerManager(map);
        GDownloadUrl('./include/weather.xml', function(data) {
            var xml = GXml.parse(data);
            var nodes = xml.documentElement.getElementsByTagName('noaa');
            for (var i = 0; i < nodes.length; i++) {
                var noaa = nodes[i];
                var latlng = new GLatLng(parseFloat(noaa.getAttribute('lat')), parseFloat(noaa.getAttribute('lon')));
                var icon;
                var title = 'Weather: ' + noaa.getAttribute('location');
                var tide = noaa.getAttribute('tide');
                var item = { a: 'noaa', id: noaa.getAttribute('id') };
                if (tide) {
                    icon = iconTnoaa;
                    title = 'Tide/' + title;
                    item.tide = tide;
                } else {
                    icon = iconWnoaa;
                }
                var marker = new GMarker(latlng, { icon: icon, title: title });
		marker.tag = 'n' + i;
                items[marker.tag] = item;
                map.addOverlay(marker);
            }
            var nodes = xml.documentElement.getElementsByTagName('tide');
            for (var i = 0; i < nodes.length; i++) {
                var tide = nodes[i];
                var latlng = new GLatLng(parseFloat(tide.getAttribute('lat')), parseFloat(tide.getAttribute('lon')));
                var marker = new GMarker(latlng, { icon: iconTide, title: 'Tide: ' + tide.getAttribute('title') });
		marker.tag = 't' + i;
                items[marker.tag] = { a: 'tide', id: tide.getAttribute('name') };
                var isRef = tide.getAttribute('type') == 'Ref';
                mgr.addMarker(marker, isRef ? gmscale - 3 : gmscale);
            }
            //CDEC
            var nodes = xml.documentElement.getElementsByTagName('cdec');
            for (var i = 0; i < nodes.length; i++) {
                var cdec = nodes[i];
                var latlng = new GLatLng(parseFloat(cdec.getAttribute('lat')), parseFloat(cdec.getAttribute('lon')));
                var marker = new GMarker(latlng, { icon: iconCdec, title: 'River: ' + cdec.getAttribute('name') });
		marker.tag = 'c' + i;
                items[marker.tag] = { a: 'cdec', id: cdec.getAttribute('id'), s: cdec.getAttribute('stage'), t: cdec.getAttribute('temp'), f: cdec.getAttribute('flow') };
                map.addOverlay(marker);
            }
        });
        // Legend
        $('#ltnoaa').attr('src', iconTnoaa.image);
        $('#lwnoaa').attr('src', iconWnoaa.image);
        $('#ltide').attr('src', iconTide.image);
        $('#lcdec').attr('src', iconCdec.image);
        
    }
}
