﻿/// <reference path="jquery/jquery126.js" />
/// <reference path="jquery/JQuery.Intellisense.js" />

var _code = "";
var _cityname = "";
var _time = "";  //"2009-1-15";
var _isquery = false;
var _enbalesk = false;
$(function() {
    if (logined()) {
        $("#hours").show();
        _enbalesk = true;
    }
    $("#hours .date").hide();

    $("#weathertown .mainsite li a").each(function() {
        var _this = this;
        $(this).click(function() {
            showssites.json("Weather/GetSCityChilds", "code=" + $(_this).attr("name"));
            loadWeather($(_this).attr("name"), $(_this).text(), $("#weathertown li a").index(_this));

        });
    });


    $("#cityname").focus(function() {
        var val = $(this).val();
        if (val.indexOf("名称") > -1) { $(this).val("") }
    });
    $("#qdate").focus(function() {
        var val = $(this).val();
        if (val.indexOf("日期") > -1) { $(this).val("") }
    });
    $("#cityname").autocomplete('api/?mod=Weather&action=SeachWeatherCity&top=10');
    $("#cityname").result(function(event, data, formatted) { queryWeather(); });

    $("#hours .chart").hide();
    $("#hours .weathernav li a").eq(0).addClass("selected");
    $("#hours .weathernav li a").click(function() {
        $("#hours .weathernav li a").removeClass("selected");
        $(this).addClass("selected");
        changechart($("#hours .weathernav li a").index($(this)));
    });

    var code = $("#weathertown li a").eq(0).attr("name");
    _cityname = "市区"

    showssites.json("Weather/GetSCityChilds", "code=" + code);

    loadWeather(code, _cityname, 0);
    checklogin.json("User/CheckLogin");
});

function checklogin(json) {
    if (json.Result == "1" && logined()) {
        $("#hours .date").show();
    }
}


function queryWeather() {
    var name = $("#cityname").val();
    if (name.indexOf("名称") == -1) {
        loadWeather("", name, -1);
    }
}

function showssites(json) {
    $("#seachweahter .ssite").html('<img src="images/wait.gif" />');
    var sb = new Array();
    $.each(json, function(i, item) {
        sb.push('<li><a href="javascript:;" name="' + item.Code + '">');
        sb.push(item.CityName + '</a></li>');
    });
    if (sb.length > 0) $("#seachweahter .ssite").html(sb.join(""));

    $("#weathertown .ssite li a").each(function() {
        var _this = this;
        $(this).click(function() {
            loadWeather($(_this).attr("name"), $(_this).text(), $("#weathertown li a").index(_this));
        });
    });
}

function loadWeather(code, name, index) {
    if (!window.oldtopvalue) { window.oldtopvalue = $("#weather .shikuang .wdvalue").css("top"); }
    $("#weather .shikuang .wdvalue").css("top", window.oldtopvalue);
    //$("#weather .shikuang .fx .image").css("background-image", "none").html('<img src="images/wait.gif" />');
    $("#weather .skleft").hide();
    $("#weather .skright").hide();
    $("#skwaiting").show().html('<img src="images/wait.gif" />');

    window.setTimeout(function() {
        var qname = "";
        if (name != "市区") {
            qname = name;
            _cityname = qname;
        }
        _code = code;
        _isquery = false;
        $("#wcaption").html(_cityname + " 当前实况");
        $("#wcaption2").html(_cityname + " 二十四小时天气实况");
        if(_enbalesk)getsk();
        showSk.json("Weather/GetLastSk", "code=" + code + "&cityname=" + escape(qname), name);
    }, 300);
    $("#weathertown li a").removeClass("selected");
    $("#weathertown li a").eq(index).addClass("selected");
    //$("#tweathertown li a").eq(window.lastwIndex).removeClass("selected");
    //window.lastwIndex = index;
}
function querysk() {
    _isquery = true;
    getsk();
}
function getsk() {
    $("#flash").html('<div id="charwd"><img src="images/wait.gif" /></div><div id="charsd"><img src="images/wait.gif" /></div><div id="charshidu"><img src="images/wait.gif" /></div><div id="charyl"><img src="images/wait.gif" /></div>');
    var date = $("#qdate").val();
    if (date.indexOf("日期") == -1) _time = date;
    if (date == "" || date.indexOf("日期") > -1) _time = "";
    changechart();
}


function showSk(json, cityname) {

    if (json.wd) {
        $("#skwaiting").hide();
        $("#weather .skleft").show();
        $("#weather .skright").show();
    } else {
        $("#skwaiting").html('无数据');
        return;
    }

    var wd = parseFloat(json.wd);
    var top = parseFloat($("#weather .shikuang .wdvalue").css("top"));
    var tmp = -1.8;
    if (json.wd < 0) { tmp = -2.6; }
    wd = json.wd - top - (wd / 10.0) * (tmp);
    $("#weather .shikuang .wdvalue").css("top", -wd);
    if (json.wd.substring(0, 1) == ".") json.wd = "0" + json.wd;
    if (json.wd.substring(0, 2) == "-.") json.wd = json.wd.replace(".", "0.");
    $("#weather .shikuang .shiduwendu .wendu").html('温度 <div class="value">' + json.wd + '℃</div>');
    $("#weather .shikuang .shiduwendu .shidu").html('湿度 <div class="value">' + json.shidu + '</div>');

    if (json.fx.substring(0, 1) == ".") json.fx = "0" + json.fx;
    $("#weather .shikuang .fx .image").html(json.fx + "m/s");
    $("#weather .shikuang .fx .image").css("background-image", "url(images/weatherangle/" + json.fxcode + ".gif)");
    $("#weather .shikuang .fx .info").html(json.fsname + ' 小于<span class="value">' + json.fs + '</span> 级');
    $("#weather .shikuang .jyl").html('1小时降雨量 <span class="value">' + json.yl + '</span> 毫米');
    $("#weather .shikuang .updateinfo").html(cityname + " " + json.sj + " 实况");


    var sb = new Array();
    sb.push('<table>');
    sb.push('<tr><th>站点</th><td>' + cityname + '</td></tr>');
    sb.push('<tr><th>当前温度</th><td>' + json.wd + '℃</td></tr>');
    sb.push('<tr><th>当前湿度</th><td>' + json.shidu + '</td></tr>');
    sb.push('<tr><th>当前风向</th><td>' + json.fxname + '</td></tr>');
    sb.push('<tr><th>当前风速</th><td>' + json.fsname + ' ' + json.fx + 'm/s</td></tr>');
    sb.push('<tr><th>当前降雨量</th><td>' + json.yl + ' 毫米</td></tr>');
    sb.push('</table>');
    $("#skyb .skright").html(sb.join(""));
}

var data = "";
var charts = ['charwd', 'charsd', 'charshidu', 'charyl'];
var chartfns = ['showchart', 'showwind', 'showshidu', 'showyl'];
function changechart(index) {
    if (!index) {
        $("#hours .weathernav a").each(function() {
            if ($(this).hasClass("selected")) {
                index = $("#hours .weathernav a").index($(this));
                return false;
            }
        });
    }
    if (!index) index = 0;

    for (var i = 0; i < charts.length; i++)
        if (index != i) $("#" + charts[i]).hide();
    $("#" + charts[index]).show();
    //window.setTimeout(function(){$("#flash").show();},200);
    var html = $("#" + charts[index]).html();
    if (html.toLowerCase().indexOf("chart.swf") == -1) {
        var action = "GetSkAfter24";
        if (_isquery) action = "GetSk24";
        eval(chartfns[index] + '.json("Weather/' + action + '", "code=' + _code + '&time=' + _time + '&cityname=' + escape(_cityname) + '")');
    }

}

function getchardata(config) {
    var title = config.title;
    var xvalues = config.xvalues;
    var step = config.step;
    var ymin = config.ymin;
    var ymax = config.ymax;
    var points = config.points;
    var type = config.type;
    var tmp = {
        "bg_colour": "#ffffff",
        "inner_background": "#E3F0FD,#CBD7E6,90",
        "title": { "text": title, "style": "{font-size: 12px; color:#0000ff; font-family: Verdana; text-align: center;}" },
        "x_legend": { "text": "时间（小时）", "style": "{font-size: 12px; color:#736AFF;text-align: right;}" },
        "x_axis": { "offset": 2, "steps": 1, "max": 24, "grid-colour": "#deefff", "colour": "#80B5DF", "labels": { "steps": 1, "labels": xvalues} },
        "y_axis": { "tick-length": 5, "offset": 0, "steps": step, "min": ymin, "max": ymax, "grid-colour": "#deefff", "colour": "#80B5DF" },
        "elements": [{ "width": 2, "dot-size": 5, "halo-size": 0, "values": points, "colour": "#005AAB", "font-size": 12, "fillalpha": 0.35, "type": type, "tip": "#val#℃"}]
    };
    return tmp;
}
function getxvalues(json) {
    var xvalues = new Array();
    var zeroed = false;
    var tmp = new Array();
    var now = new Date();
    xmin = now.getHours();
    if (xmin < 23)
        xmin += 1;
    else {
        xmin = 0;
        zeroed = true;
    }

    xmin = 0;
    zeroed = true;

    if (_isquery) {
        for (var i = xmin; i < 24; i++) xvalues.push(i.toString());
        if (!zeroed) {
            xvalues.push("0");
            for (var i = 1; i < xmin; i++) xvalues.push(i.toString());
        }
    } else {
        $.each(json, function(i, item) {
            xvalues.push(item.sj);
        });
    }
    return xvalues;
}
function getpointvalues(json, filed, xvalues) {
    var points = new Array();
    if (_isquery) {
        for (var i = 0; i < xvalues.length; i++) {
            var found = false;
            $.each(json, function(j, item) {
                if (item.sj == xvalues[i].toString()) {
                    points.push(parseFloat(eval("item." + filed)));
                    found = true;
                    return false;
                }
            });
            if (!found) points.push(null);
        }
    } else {
        $.each(json, function(j, item) {
            points.push(parseFloat(eval("item." + filed)));
        });
    }
    return points;
}
function showchart(jsonobj) {
    if (jsonobj.length == 0) {
        $("#charwd").html("<br><br><br>无数据");
        return;
    }
    var info = jsonobj[0];
    var json = jsonobj[1];
    $("#qdate").val(info.date);
    if (json.length == 0) {
        $("#charwd").html("<br><br><br>无数据");
        return;
    }

    var wdmax = -1000, wdmin = 1000;
    var xmin = 0;
    var ymax = 0, ymin = 0, step = 1, ycount = 6;

    $.each(json, function(i, item) {
        if (parseFloat(item.wd) > wdmax) wdmax = item.wd;
        if (parseFloat(item.wd) < wdmin) wdmin = item.wd;
    });
    if (wdmax == -1000 && wdmin == 1000) {
        $("#charwd").html("<br><br><br>无数据");
        return;
    }
    ymax = parseInt(wdmax) + 3;
    ymin = parseInt(wdmin) - 2;
    step = ymax / ycount;
    step = parseInt(step);

    var xvalues = getxvalues(json);
    var points = getpointvalues(json, "wd", xvalues);


    var title = "最高温度：" + wdmax + "℃ 最低温度：" + wdmin + "℃";
    var config = { type: "line_hollow", title: title, xvalues: xvalues, points: points, step: step, ymin: ymin, ymax: ymax };
    data = getchardata(config);
    data.elements[0].colour = "#FF6600";
    var pras = { menu: false, wmode: "opaque" };
    swfobject.embedSWF("images/chart.swf", "charwd", "100%", "250", "9.0.0", "", pras);
}

function showwind(jsonobj) {
    if (jsonobj.length == 0) {
        $("#charsd").html("<br><br><br>无数据");
        return;
    }
    var info = jsonobj[0];
    var json = jsonobj[1];
    $("#qdate").val(info.date);
    if (json.length == 0) {
        $("#charsd").html("<br><br><br>无数据");
        return;
    }

    var wdmax = -1000, wdmin = 1000;
    var xmin = 0, xvalues = new Array();
    var ymax = 0, ymin = 0, step = 1, ycount = 6;
    var points = new Array();
    $.each(json, function(i, item) {
        if (parseFloat(item.fs) > wdmax) wdmax = item.fs;
        if (parseFloat(item.fs) < wdmin) wdmin = item.fs;
    });
    if (wdmax == -1000 && wdmin == 1000) {
        $("#charsd").html("<br><br><br>无数据");
        return;
    }
    ymax = parseInt(wdmax) + 3;
    ymin = parseInt(wdmin) - 2;
    step = ymax / ycount;
    //if (ymax % ycount != 0) step += 2;
    step = parseInt(step);


    var xvalues = getxvalues(json);
    var points = getpointvalues(json, "fs", xvalues);

    for (var i = 0; i < points.length; i++) {
        // var found = false;
        $.each(json, function(j, item) {
            if (points[i] != null && item.fs == points[i].toString()) {
                points[i] = { "value": points[i], "tip": "风向：" + item.fxname + "<br>风速：#val#m/s" };
                return false;
            }
        });

    }

    var title = "最高风速：" + wdmax + "m/s 最低风速：" + wdmin + "m/s";
    var config = { type: "line_hollow", title: title, xvalues: xvalues, points: points, step: step, ymin: ymin, ymax: ymax };
    data = getchardata(config);    
    var pras = { menu: false, wmode: "opaque" };
    swfobject.embedSWF("images/chart.swf", "charsd", "100%", "250", "9.0.0", "", pras);
}

function showshidu(jsonobj) {
    if (jsonobj.length == 0) {
        $("#charshidu").html("<br><br><br>无数据");
        return;
    }
    var info = jsonobj[0];
    var json = jsonobj[1];
    $("#qdate").val(info.date);
    if (json.length == 0) {
        $("#charshidu").html("<br><br><br>无数据");
        return;
    }

    var wdmax = -1000, wdmin = 1000;
    var xmin = 0, xvalues = new Array();
    var ymax = 0, ymin = 0, step = 1, ycount = 8;
    var points = new Array();
    $.each(json, function(i, item) {
        if (parseFloat(item.shidu) > wdmax) wdmax = item.shidu;
        if (parseFloat(item.shidu) < wdmin) wdmin = item.shidu;
    });
    if (wdmax == -1000 && wdmin == 1000) {
        $("#charshidu").html("<br><br><br>无数据");
        return;
    }
    ymax = parseInt(wdmax) + 20;
    ymin = parseInt(wdmin) - 20;
    //if (ymax > 100) ymax = 100;
    //if (ymin < 0) ymin = 0;
    step = ymax / ycount;
    //if (ymax % ycount != 0) step += 2;
    step = parseInt(step);



    var xvalues = getxvalues(json);
    var points = getpointvalues(json, "shidu", xvalues);

    for (var i = 0; i < points.length; i++) {
        // var found = false;
        $.each(json, function(j, item) {
            if (points[i] != null && item.shidu == points[i].toString()) {
                points[i] = { "value": points[i], "tip": "#val#%" };
                return false;
            }
        });

    }

    var title = "最高相对湿度：" + wdmax + "% 最低相对湿度：" + wdmin + "%";
    var config = { type: "line_hollow", title: title, xvalues: xvalues, points: points, step: step, ymin: ymin, ymax: ymax };
    data = getchardata(config);
    var pras = { menu: false, wmode: "opaque" };
    swfobject.embedSWF("images/chart.swf", "charshidu", "100%", "250", "9.0.0", "", pras);
}


function showyl(jsonobj) {
    if (jsonobj.length == 0) {
        $("#charyl").html("<br><br><br>无数据");
        return;
    }
    var info = jsonobj[0];
    var json = jsonobj[1];
    $("#qdate").val(info.date);
    if (json.length == 0) {
        $("#charyl").html("<br><br><br>无数据");
        return;
    }

    var wdmax = -1000, wdmin = 1000;
    var xmin = 0, xvalues = new Array();
    var ymax = 0, ymin = 0, step = 1, ycount = 6;
    var points = new Array();
    $.each(json, function(i, item) {
        if (parseFloat(item.yl) > wdmax) wdmax = item.yl;
        if (parseFloat(item.yl) < wdmin) wdmin = item.yl;
    });
    if (wdmax == -1000 && wdmin == 1000) {
        $("#charyl").html("<br><br><br>无数据");
        return;
    }
    ymax = parseInt(wdmax) + 30;
    ymin = parseInt(wdmin) - 20;
    if (ymax > 100) ymax = 100;
    if (ymin < 0) ymin = 0;
    step = ymax / ycount;
    //if (ymax % ycount != 0) step += 2;
    step = parseInt(step);


    var xvalues = getxvalues(json);
    var points = getpointvalues(json, "yl", xvalues);


    var title = "最高降雨量：" + wdmax + " 毫米 最低降雨量：" + wdmin + " 毫米";
    if (wdmax == 0 && wdmin == 0) title = "无降雨量";
    var config = { type: "bar_glass", title: title, xvalues: xvalues, points: points, step: step, ymin: ymin, ymax: ymax };

    data = getchardata(config);
    data.elements[0].colour = "#015BA7";
    data.elements[0].fillalpha = 0.5;
    data.elements[0].tip = "#val#";

    var pras = { menu: false, wmode: "opaque" };
    swfobject.embedSWF("images/chart.swf", "charyl", "100%", "250", "9.0.0", "", pras);
}


function open_flash_chart_data(obj) {
    return JSON.stringify(data);

}
              