﻿deptHealth = {
    gotItCovered: {
        map: {
            vars: { gmap: null, jsonData: null },
            initialize: function() {
                if (GBrowserIsCompatible()) {
                    if (document.getElementById("map_canvas")) {

                        G_PHYSICAL_MAP.getMinimumResolution = function() { return 6 };
                        G_NORMAL_MAP.getMinimumResolution = function() { return 6 };
                        G_SATELLITE_MAP.getMinimumResolution = function() { return 6 };
                        G_HYBRID_MAP.getMinimumResolution = function() { return 6 };
                        G_PHYSICAL_MAP.getMaximumResolution = function() { return 16 };
                        G_NORMAL_MAP.getMaximumResolution = function() { return 16 };
                        G_SATELLITE_MAP.getMaximumResolution = function() { return 16 };
                        G_HYBRID_MAP.getMaximumResolution = function() { return 16 };

                        deptHealth.gotItCovered.map.vars.gmap = new GMap2(document.getElementById("map_canvas"));
                        deptHealth.gotItCovered.map.vars.gmap.setCenter(new GLatLng(51.460425, -2.5914), 16);
                        deptHealth.gotItCovered.map.vars.gmap.setUIToDefault();

                        GDownloadUrl("GMHandler.ashx", function(data, responseCode) { deptHealth.gotItCovered.map.buildJson(data); });
                    }
                }
            },
            createMarker: function(mdata, baseurl) {
                var imgpath = baseurl + "assets/images/pagespecific/google-maps/";

                var mIcon = new GIcon();
                mIcon.image = imgpath + "map-icon-" + mdata.image;
                mIcon.iconSize = new GSize(80, 87);
                mIcon.iconAnchor = new GPoint(40, 87);
                mIcon.infoWindowAnchor = new GPoint(39, 63);

                MarkerOptions = { icon: mIcon };
                var marker = new GMarker(mdata.point, MarkerOptions);

                GEvent.addListener(marker, "click", function() {
                    var addy = mdata.address.replace(/,/g, "<br/>");
                    deptHealth.gotItCovered.map.vars.gmap.setCenter(marker.getLatLng());
                    marker.openInfoWindowHtml("<div class=\"info-window\"><div>" + mdata.name + "<br/>" + addy + "<br/>" + mdata.city + "<br/>" + mdata.url + "</div><img src=\"" + imgpath + mdata.image.replace(".png", ".jpg") + "\" /></div>");
                });

                return marker;
            },
            buildJson: function(doc) {
                jsonData = eval("(" + doc + ")");
                deptHealth.gotItCovered.map.parseJson(null);
            },
            parseJson: function(eventtype) {
                var latlngBounds = new GLatLngBounds();

                for (var i = 0; i < jsonData.markers.length; i++) {
                    
                    if (eventtype == null || jsonData.markers[i].image == eventtype) {
                        latlngBounds.extend(jsonData.markers[i].point);

                        var marker = deptHealth.gotItCovered.map.createMarker(jsonData.markers[i], jsonData.baseurl);
                        deptHealth.gotItCovered.map.vars.gmap.addOverlay(marker);
                    }
                }

                deptHealth.gotItCovered.map.vars.gmap.setCenter(latlngBounds.getCenter(), deptHealth.gotItCovered.map.vars.gmap.getBoundsZoomLevel(latlngBounds) - 1);
            },
            selectEvent: function(eventtype) {
                deptHealth.gotItCovered.map.vars.gmap.clearOverlays();
                deptHealth.gotItCovered.map.parseJson(eventtype);
            }
        }
    }
};



window.onload = deptHealth.gotItCovered.map.initialize;
window.onunload = GUnload;