﻿var map; //complex object of type OpenLayers.Map

function success(results, context, method) {
    map = new OpenLayers.Map("map", {
        controls: [
                    new OpenLayers.Control.Navigation(),
                    new OpenLayers.Control.PanZoomBar(),
                    new OpenLayers.Control.Attribution()],
        maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34),
        maxResolution: 156543.0399,
        numZoomLevels: 19,
        units: 'm',
        projection: new OpenLayers.Projection("EPSG:900913"),
        displayProjection: new OpenLayers.Projection("EPSG:4326")
    });

    // Define the map layer
    // Note that we use a predefined layer that will be
    // kept up to date with URL changes
    // Here we define just one layer, but providing a choice
    // of several layers is also quite simple
    // Other defined layers are OpenLayers.Layer.OSM.Mapnik, OpenLayers.Layer.OSM.Maplint and OpenLayers.Layer.OSM.CycleMap
    tiles = new OpenLayers.Layer.OSM.Mapnik("Mapnik");
    map.addLayer(tiles);

    markers = new OpenLayers.Layer.Markers("Markers");
    map.addLayer(markers);

    lat = results.Center.Latitude;
    lon = results.Center.Longitude;
    zoom = 6;

    if (!map.getCenter()) {
        var lonLat = new OpenLayers.LonLat(lon, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
        map.setCenter(lonLat, zoom);
    }

    for (var i = 0; i < results.Data.length; i++) {
        if (results.Data[i].Location != null) {
            lon = results.Data[i].Location.Longitude;
            lat = results.Data[i].Location.Latitude;
            var lonLat = new OpenLayers.LonLat(lon, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());

            var size = new OpenLayers.Size(21, 25);
            var offset = new OpenLayers.Pixel(-(size.w / 2), -size.h);
            var marker;
            if (results.Thresholds != null && results.Thresholds.length == 6) {
                if (results.Data[i].Values < results.Thresholds[1])
                    marker = 'images/bluemarker.png';
                else if (results.Data[i].Values < results.Thresholds[2])
                    marker = 'images/greenmarker.png';
                else if (results.Data[i].Values < results.Thresholds[3])
                    marker = 'images/yellowmarker.png';
                else if (results.Data[i].Values < results.Thresholds[4])
                    marker = 'images/orangemarker.png';
                else
                    marker = 'images/redmarker.png';
            } else {
                marker = 'images/redmarker.png';
            }

            var icon = new OpenLayers.Icon(marker, size, offset);
            feature1 = new OpenLayers.Feature(tiles, lonLat, { icon: icon });
            if (results.Data[i].Values.length > 0) {
                feature1.tooltip = results.Data[i].Location.PlaceName + " - " + results.Data[i].Values;
            }
            else {
                feature1.tooltip = results.Data[i].Location.PlaceName;
            }
            marker1 = feature1.createMarker();

            markers.addMarker(marker1);
            marker1.events.register("mouseover", { 'feature': feature1, 'fontColor': 'gray' }, toolTips);
            marker1.events.register("mouseout", feature1, eraseToolTips);
        }
    }
    if ($get("legend") != null) {
        $get("legend").style.display = "block";
        if (results.Thresholds != null && results.Thresholds.length == 6) {
            $get("bluelegend").innerHTML = results.Thresholds[0] + " - " + results.Thresholds[1];
            $get("greenlegend").innerHTML = results.Thresholds[1] + " - " + results.Thresholds[2];
            $get("yellowlegend").innerHTML = results.Thresholds[2] + " - " + results.Thresholds[3];
            $get("orangelegend").innerHTML = results.Thresholds[3] + " - " + results.Thresholds[4];
            $get("redlegend").innerHTML = results.Thresholds[4] + " ou plus";
        }
        else {
            $get("spanLegend").style.visibility = "hidden";
        }
    }
}
