﻿//**********************************//
// Copyright 2010, Kanal8 Inc.
// Autor Ronny Poller
// Development Kanal8.Wetter.com.jQuery API 
//**********************************//
(function($) {
    $.fn.weatherCurrentAjax = function(options) {
        var defaults = {
            username: null,
            userpass: null,
            citycode: null
        };
        var checksum = "", ajaxUrl = "", html = "";
        var options = $.extend({}, defaults, options);

        return this.each(function() {
            var $this = $(this);
            var code = $.trim(options.citycode);
            if (code) {
                checksum = $.md5(options.username + options.userpass + code);
                ajaxUrl = '/scripts/ContentProxy.aspx?url=http://rwds2.wetter.com/forecast/current/city/' + code + '/user/' + options.username + '/cs/' + checksum;
                $.get(ajaxUrl, function(input) {
                    try {
                        html += "<div class='weatherCity'>";
                        html += "<a class='xml current' href='" + ajaxUrl + "' target='_blank'>Current XML</a>";
                        var data = $.xml2json(input);
                        html += "<h3 class='headline'>Wetter in " + data.name + "</h3>";
                        var temp = data.forecast.t2;
                        var temptxt = data.forecast.w_txt;
                        var windIcon = data.forecast.pc;
                        var windKmh = data.forecast.ws;
                        var windTxt = data.forecast.wd_txt;
                        var windTxtLong = GetWindTxtLong(data.forecast.wd_txt);
                        html += "<div class='weatherCurrent'>";
                        html += "<div class='date'>Das aktuelle Wetter</div>";
                        html += "<div class='weatherIcon'><img class='" + $.trim(data.forecast.w_txt) + "' src='/Layout/common/wetterCom/icons/" + GetWetterIcon(data.forecast.w) + "' alt='" + data.forecast.w_txt + "' title='" + data.forecast.w_txt + "'/></div>";
                        html += "<div class='temp'>" + temp + " &deg;C</span> <span class='tempTxt'>" + temptxt + "</span></div>";
                        html += "<div class='wind'><img class='" + $.trim(data.forecast.w_txt) + "' src='/Layout/common/wetterCom/icons/" + windTxt + ".png' alt='" + windTxt + "' title='" + windTxt + "'/> <span class='kmh'>" + windKmh + " km/h</span> <span class='txt'>" + windTxtLong + "</span></div>";
                        html += "</div>";
                        html += "</div>";
                    } catch (ex) {
                        html = "<div class='error'><b>Current Weather:</b> City:" + code + " Error:" + ex + "</div>";
                    }
                    $this.append(html);
                });
            }
        });
    }
})(jQuery);

(function($) {
$.fn.weatherForecastAjax = function(options) {
        var defaults = {
            username: null,
            userpass: null,
            citycode: null
        };
        var checksum = "", ajaxUrl = "", html = "";
        var options = $.extend({}, defaults, options);

        return this.each(function() {
            var $this = $(this);
            var code = $.trim(options.citycode);
            if (code) {
                checksum = $.md5(options.username + options.userpass + code);
                ajaxForecastUrl = '/scripts/ContentProxy.aspx?url=http://rwds2.wetter.com/forecast/weather/city/' + code + '/user/' + options.username + '/cs/' + checksum;
                $.get(ajaxForecastUrl, function(input) {
                    try {
                        html += "<div class='forecastCity'>";
                        html += "<a class='xml forecast' href='" + ajaxForecastUrl + "' target='_blank'>Forecast XML</a>";
                        var data = $.xml2json(input);

                        html += "<h3 class='headline'>Wetter in " + data.name + "</h3>";
                        $.each(data.forecast.date, function(index, item) {
                            var currentDate = new Date(Date.parse(item.value.replace(/\-/ig, '/')));
                            var minTemp = item.tn;
                            var maxtemp = item.tx;
                            var chanceOfRain = item.pc;
                            html += "<div class='forecast index" + index + "'>";
                            html += "<div class='date'>" + GetDay(currentDate) + "</div>";
                            html += "<div class='weatherIcon'><img class='" + $.trim(item.w_txt) + "' src='/Layout/common/wetterCom/icons/" + GetWetterIcon(item.w) + "' alt='" + item.w_txt + "' title='" + item.w_txt + "'/></div>";
                            html += "<div class='temp'><span class='minTemp'>" + minTemp + "</span><span class='spacer'> / </span><span class='maxTemp'>" + maxtemp + "</span><span class='deg'> &deg;C</span></div>";
                            html += "<div class='rainfall'><img class='icon " + GetRainIcon(chanceOfRain) + "' src='/Layout/common/wetterCom/icons/" + GetRainIcon(chanceOfRain) + ".png' alt='" + chanceOfRain + "% Wahrschl.' title='" + chanceOfRain + "% Wahrschl.'/><span class='rain'>" + chanceOfRain + "% Wahrschl.</span></div>";
                            html += "</div>";
                        });
                        html += "</div>";
                    } catch (ex) {
                        html = "<div class='error'><b>Forecast Weather:</b> City:" + code + " Error:" + ex + "</div>";
                    }
                    $this.append(html);
                });
            }
        });
    }
})(jQuery);


(function($) {
    $.fn.weatherForecastXML = function(options) {
        var defaults = {
            xml: null,
            take: null
        };
        var options = $.extend({}, defaults, options);
        var html = "";
        return this.each(function() {
            var $this = $(this);
            try {
                var data = $.xml2json(options.xml);
                $.each(data.city, function(index, city) {
                    var take = options.take == null ? 3 : options.take;
                    html += "<div class='forecast city'>";
                    html += "<h3 class='headline'>Wetter in " + city.name + "</h3>";
                    $.each(city.forecast.date, function(index, item) {
                        if ((take > (index))) {
                            var currentDate = new Date(Date.parse(item.value.replace(/\-/ig, '/')));
                            var minTemp = item.tn;
                            var maxtemp = item.tx;
                            var chanceOfRain = item.pc;
                            html += "<div class='day index" + index + "'>";
                            html += "<span class='date'>" + GetDay(currentDate) + "</span>";
                            html += "<span class='description'>" + item.w_txt + "</span>";
                            html += "<div class='weatherIcon'><img class='" + $.trim(item.w_txt) + "' src='/Layout/common/wetterCom/icons/" + GetWetterIcon(item.w) + "' alt='" + item.w_txt + "' title='" + item.w_txt + "'/></div>";
                            html += "<div class='temp'><span class='minTemp'>" + minTemp + "</span><span class='spacer'> / </span><span class='maxTemp'>" + maxtemp + "</span><span class='deg'> &deg;C</span></div>";
                            html += "<div class='rainfall'><img class='icon " + GetRainIcon(chanceOfRain) + "' src='/Layout/common/wetterCom/icons/" + GetRainIcon(chanceOfRain) + ".png' alt='" + chanceOfRain + "% Niederschlagswahrscheinlichkeit' title='" + chanceOfRain + "% Niederschlagswahrscheinlichkeit'/><span class='rain'>" + chanceOfRain + "% Regenw.</span></div>";
                            html += "<div class='wind'><img class='icon " + $.trim(item.w_txt) + "' src='/Layout/common/wetterCom/icons/" + item.wd_txt + ".png' alt='" + item.wd_txt + " " + item.wd + "&deg;' title='" + item.wd_txt + " " + item.wd + "&deg;'/><span class='windspeed'>" + item.ws + " km/h</span></div>";
                            html += "</div>";
                        }
                    });
                    html += "</div>";
                });
            } catch (ex) {
                html = "<div class='error'><b>Forecast Weather:</b>Error:" + ex + "</div>";
            }
            $this.append(html);
        });
    }
})(jQuery);

(function($) {
    $.fn.weatherForecastXMLTable = function(options) {
        var defaults = {
            xml: null,
            take: null
        };
        var options = $.extend({}, defaults, options);
        var html = "";
        return this.each(function() {
            var $this = $(this);
            try {
                var data = $.xml2json(options.xml);
                html += "<tr>";
                html += "<th>Region</th>";
                html += "<th>Temperatur</th>";
                html += "<th>Regen wahrsch.</th>";
                html += "<th>Rel. Feuchte</th>";
                html += "<th>Windrichtung</th>";
                html += "</tr>";
                $.each(data.city, function(index, city) {
                    var modulo = index % 2;
                    var take = options.take == null ? 3 : options.take;
                    html += "<tr class='forecast city" + index + " modulo" + modulo + "'>";
                    html += "<td class='name'>" + city.name + "</td>";
                    var item = city.forecast.date[0];
                    var currentDate = new Date(Date.parse(item.value.replace(/\-/ig, '/')));
                    var minTemp = item.tn;
                    var maxtemp = item.tx;
                    var airMoisture = item.rh;
                    var chanceOfRain = item.pc;
                    html += "<td class='weatherIcon'><img class='" + $.trim(item.w_txt) + "' src='/Layout/common/wetterCom/icons/" + GetWetterIcon(item.w) + "' alt='" + item.w_txt + "' title='" + item.w_txt + "'/>";
                    html += "<span class='temp'><span class='minTemp'>" + minTemp + "</span><span class='spacer'> / </span><span class='maxTemp'>" + maxtemp + "</span><span class='deg'> &deg;C</span></span></td>";
                    html += "<td class='rainfall'><img class='icon " + GetRainIcon(chanceOfRain) + "' src='/Layout/common/wetterCom/icons/" + GetRainIcon(chanceOfRain) + ".png' alt='" + chanceOfRain + "% Niederschlagswahrscheinlichkeit' title='" + chanceOfRain + "% Niederschlagswahrscheinlichkeit'/><span class='rain'>" + chanceOfRain + "%</span></td>";
                    html += "<td class='airMoisture'>" + airMoisture + "%</td>";
                    html += "<td class='wind'><img class='icon " + $.trim(item.w_txt) + "' src='/Layout/common/wetterCom/icons/" + item.wd_txt + ".png' alt='" + item.wd_txt + " " + item.wd + "&deg;' title='" + item.wd_txt + " " + item.wd + "&deg;'/><span class='windspeed'>" + item.ws + " km/h</span></td>";
                    html += "</tr>";
                });
            } catch (ex) {
                html = "<div class='error'><b>Forecast Weather:</b>Error:" + ex + "</div>";
            }
            $this.append(html);
        });
    }
})(jQuery);

function GetDay(date) {
    var now = new Date();
    var currentDate = new Date(date);
    var DayArray = new Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
    var output = now.getDay() == currentDate.getDay() ? "Heute" : DayArray[currentDate.getDay()];
    return output;
}

function GetWetterIcon(state) {
    var output = "", token = "";
    var now = new Date();
    token = now.getHours() < 20 ? "d" : "n";
    output = token + "_" + state.toString().slice(0, 1) + ".png";
    return output;
}

function GetRainIcon(input) {
    var output = "";
    output = input < 40 ? "niederschlag" : "niederschlag_wet";
    return output;
}

function GetWindTxtLong(input) {
    var output = "";
    var wind = new Array();
    wind["N"] = "Nordwind";
    wind["NO"] = "Nordostwind";
    wind["O"] = "Ostwind";
    wind["SO"] = "Südostwind";
    wind["S"] = "Südwind";
    wind["SW"] = "Südwestwind";
    wind["W"] = "Westwind";
    wind["NW"] = "Nordwestwind";
    output = wind[input];
    return output;
}
