﻿function LoadWeatherEvents() {
    PageMethods.GetWeatherEvents(ProcessGetWeatherEventsResponse);
    ShowLoading();
}

function GetWeatherPoints(stream) {
    var weatherPoints = new Array();
    if (stream.length == 0)
        return parameters;

    var groups = stream.split("-*-");
    for (i = 0; i < groups.length; i++) {
        var weatherPoint = groups[i].split("*.*");
        var parameters = {};
        for (var j = 0; j < weatherPoint.length; j++) {
            var nameValue = weatherPoint[j].split("^^");
            parameters[nameValue[0]] = nameValue[1];
        }
        weatherPoints[i] = parameters;
    }
    return weatherPoints;
}

function GoWeather() {
    if (!_weatherLayer.visible) {
        dojo.removeClass("btnWeather", "btnWeather");
        dojo.addClass("btnWeather", "btnWeather_over");
        _weatherLayer.show();

        if(_map.getLevel()>8)
            _map.centerAndZoom(_map.extent.getCenter(), 7);
    }
    else {
        dojo.removeClass("btnWeather", "btnWeather_over");
        dojo.addClass("btnWeather", "btnWeather");
        _weatherLayer.hide();
    }
}

function ProcessGetWeatherEventsResponse(results) {
    _weatherLayer.clear();
    var parameters = GetJSParameters(results);
    FillAndShowWeatherLayer(parameters);
}

function FillAndShowWeatherLayer(parameters) {    

    var wpois = GetWeatherPoints(parameters.results);
    var pColl = new esri.geometry.Multipoint(_map.spatialReference);    

    for (var k = 0; k < wpois.length; k++) {
        pColl.addPoint(new esri.geometry.Point(parseFloat(wpois[k].Longitude), parseFloat(wpois[k].Latitude), _map.spatialReference));
        var info = new esri.InfoTemplate(wpois[k].CityName, wpois[k].Weather);
        var myAttributes = { pID: wpois[k].ID, pLong: wpois[k].Longitude, pLat: wpois[k].Latitude };
        var point = new esri.geometry.Point(pColl.points[k][0], pColl.points[k][1], _map.spatialReference);

        point = GetConvertedPoint(point);
        
        _weatherLayer.add(new esri.Graphic(point, new esri.symbol.PictureMarkerSymbol(wpois[k].Icon, 42, 42))
        .setInfoTemplate(info).setAttributes(myAttributes));
    }

    dojo.connect(_weatherLayer, "onMouseMove", OnMouseOverWeatherEvent);
    dojo.connect(_weatherLayer, "onMouseOut", OnMouseOutWeatherEvent);

    HideLoading();

}

function OnMouseOutWeatherEvent(event) {
    dojo.style("infoWeatherEvent", {
        "display": "none"
    });
}

function OnMouseOverWeatherEvent(event) {
    if (!_map.infoWindow.isShowing) {
        var g = event.graphic;
        var infoWeatherEvent = dojo.byId("infoWeatherEvent");
        infoWeatherEvent.innerHTML = g.infoTemplate.content;
        dojo.style("infoWeatherEvent", {
            "display": "block",
            "position": "absolute",
            "top": event.clientY + 10 + "px",
            "left": event.clientX - 190 + "px"
        });
    }
}

