function get_nav_language() {
    var nav_lng;
    if(navigator.userlanguage) nav_lng = navigator.userlanguage;
    if(navigator.browserLanguage) nav_lng = navigator.browserLanguage;
    if(navigator.systemLanguage) nav_lng = navigator.systemLanguage;
    if(navigator.language) nav_lng = navigator.language;
    return new String(nav_lng).toLowerCase();
}

var coolweather_nav_lng = get_nav_language();
var coolweather_nav_language = "en, ca, de, es, fr, it, ja, nl, pt, ro, zh-cn, zh-tw";
if (coolweather_nav_language.indexOf(coolweather_nav_lng) == -1) coolweather_nav_lng = 'en';

var coolweather_lang = [];

coolweather_lang['en'] = [];
coolweather_lang['en']['currentconditions'] = "Current Conditions";
coolweather_lang['en']['changecity'] = "Change the city";
coolweather_lang['en']['temperature'] = "Temperature: ";
coolweather_lang['en']['hightemperature'] = "High Temperature: ";
coolweather_lang['en']['lowtemperature'] = "Low Temperature: ";
coolweather_lang['en']['realfeel'] = "Realfeel<sup>&reg;</sup>: ";
coolweather_lang['en']['realfeelhigh'] = "Realfeel<sup>&reg;</sup> High: ";
coolweather_lang['en']['realfeellow'] = "Realfeel<sup>&reg;</sup> Low: ";
coolweather_lang['en']['windspeed'] = "Wind Speed: ";
coolweather_lang['en']['windforce'] = "Wind Force: ";
coolweather_lang['en']['scale'] = "scale";
coolweather_lang['en']['winddirection'] = "Wind Direction: ";
coolweather_lang['en']['today'] = "Today: ";
coolweather_lang['en']['tomorrow'] = "Tomorrow: ";
coolweather_lang['en']['daytime'] = "daytime";
coolweather_lang['en']['nighttime'] = "nighttime";
coolweather_lang['en']['loading'] = "Loading...";
coolweather_lang['en']['city'] = "City: (Example: New York)";
coolweather_lang['en']['firstseehint'] = "Maybe you use this browser to see me for the first time, so you need set your city first which you want to see the weather report.";
coolweather_lang['en']['location'] = "Location: ";
coolweather_lang['en']['nocitymatched'] = "There is no city matched your input!";
coolweather_lang['en']['morecitymatched'] = "There are more than one city matched your input, select which you want.";
coolweather_lang['en']['back'] = "back";
coolweather_lang['en']['choosecity'] = 'choose your city';
coolweather_lang['en']['unit'] = 'Unit of Measure: ';
coolweather_lang['en']['unita'] = 'American';
coolweather_lang['en']['unitm'] = 'Metric';
coolweather_lang['en']['N'] = 'N';
coolweather_lang['en']['S'] = 'S';
coolweather_lang['en']['W'] = 'W';
coolweather_lang['en']['E'] = 'E';
coolweather_lang['en']['NE'] = 'NE';
coolweather_lang['en']['SE'] = 'SE';
coolweather_lang['en']['NW'] = 'NW';
coolweather_lang['en']['SW'] = 'SW';
coolweather_lang['en']['ENE'] = 'ENE';
coolweather_lang['en']['ESE'] = 'ESE';
coolweather_lang['en']['WNW'] = 'WNW';
coolweather_lang['en']['WSW'] = 'WSW';
coolweather_lang['en']['NNE'] = 'NNE';
coolweather_lang['en']['NNW'] = 'NNW';
coolweather_lang['en']['SSE'] = 'SSE';
coolweather_lang['en']['SSW'] = 'SSW';


coolweather_lang['pl'] = [];
coolweather_lang['pl']['rpcnotready'] = "RPC nie jest gotowe.";
coolweather_lang['pl']['currentconditions'] = "Aktualna pogoda";
coolweather_lang['pl']['changecity'] = "Zmień miasto";
coolweather_lang['pl']['temperature'] = "Temperatura: ";
coolweather_lang['pl']['hightemperature'] = "Maksymalna temperatura: ";
coolweather_lang['pl']['lowtemperature'] = "Minimalna temperatura: ";
coolweather_lang['pl']['realfeel'] = "Odczuwalna: ";
coolweather_lang['pl']['realfeelhigh'] = "Maksymalna odczuwalna: ";
coolweather_lang['pl']['realfeellow'] = "Minimalna odczuwalna: ";
coolweather_lang['pl']['windspeed'] = "Predkość wiatru: ";
coolweather_lang['pl']['windforce'] = "Siła wiatru: ";
coolweather_lang['pl']['scale'] = "scale";
coolweather_lang['pl']['winddirection'] = "Kierunek wiatru: ";
coolweather_lang['pl']['today'] = "Dzisiaj: ";
coolweather_lang['pl']['tomorrow'] = "Jutro: ";
coolweather_lang['pl']['daytime'] = "dzień";
coolweather_lang['pl']['nighttime'] = "noc";
coolweather_lang['pl']['loading'] = "Trwa ładowanie...";
coolweather_lang['pl']['city'] = "Miasto: (np. Warszawa)";
coolweather_lang['pl']['firstseehint'] = "";
coolweather_lang['pl']['location'] = "Location: ";
coolweather_lang['pl']['nocitymatched'] = "Żadne miasto nie spełnia warunków wyszukiwania!";
coolweather_lang['pl']['morecitymatched'] = "Wybierz miasto.";
coolweather_lang['pl']['back'] = "powrót";
coolweather_lang['pl']['choosecity'] = 'wybierz miasto';
coolweather_lang['pl']['unit'] = 'System: ';
coolweather_lang['pl']['unita'] = '';
coolweather_lang['pl']['unitm'] = 'Metryczny';
coolweather_lang['pl']['N'] = 'N';
coolweather_lang['pl']['S'] = 'S';
coolweather_lang['pl']['W'] = 'W';
coolweather_lang['pl']['E'] = 'E';
coolweather_lang['pl']['NE'] = 'NE';
coolweather_lang['pl']['SE'] = 'SE';
coolweather_lang['pl']['NW'] = 'NW';
coolweather_lang['pl']['SW'] = 'SW';
coolweather_lang['pl']['ENE'] = 'ENE';
coolweather_lang['pl']['ESE'] = 'ESE';
coolweather_lang['pl']['WNW'] = 'WNW';
coolweather_lang['pl']['WSW'] = 'WSW';
coolweather_lang['pl']['NNE'] = 'NNE';
coolweather_lang['pl']['NNW'] = 'NNW';
coolweather_lang['pl']['SSE'] = 'SSE';
coolweather_lang['pl']['SSW'] = 'SSW';


coolweather_unit = [];
coolweather_unit[0] = [];
coolweather_unit[0]['temp'] = '&deg;F';
coolweather_unit[0]['speed'] = ' mph';
coolweather_unit[1] = [];
coolweather_unit[1]['temp'] = '&deg;C';
coolweather_unit[1]['speed'] = ' m/s';

function get_cookie(name) {
    function get_cookie_val(offset) {
        var endstr = document.cookie.indexOf(";", offset);
        if (endstr == -1) endstr = document.cookie.length;
        return unescape(document.cookie.substring(offset, endstr));
    }
    var arg = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i = 0;
    while (i < clen) {
        var j = i + alen;
        if (document.cookie.substring(i, j) == arg) return get_cookie_val(j);
        i = document.cookie.indexOf(" ", i) + 1;
        if (i == 0) break;
    }
    return null;
}

function set_cookie(name, value, expires) {
    var exp = new Date();
    if (expires) {
        exp.setTime(exp.getTime() + expires);
    }
    else {
        exp.setTime(exp.getTime() + 315360000000);
    }
    document.cookie = [name, "=", escape(value), "; expires=", exp.toGMTString(), ";"].join('');
}

function delete_cookie(name) {
    var exp = new Date();
    exp.setTime(exp.getTime() - 60000);
    document.cookie = [name, "=; expires=", exp.toGMTString(), ";"].join('');
}

function coolweather_get_windforce(windspeed) {
    var scales = [0.2, 1.5, 3.3, 5.4, 7.9, 10.7, 13.8, 17.1, 20.7, 24.4, 28.4, 32.6];
    for (var i = 0; i < scales.length; i++) {
        if (windspeed <= scales[i]) {
            return i;
        }
    }
    return 12;
}

var coolweather_rpc = new PHPRPC_Client('http://rpc.brynski.pl/cool-weather/rpc.php', ['get_location', 'get_weather']);

var coolweather_report = null;

function coolweather_set_weather(number, day_or_night) {
    var weather = PHPSerializer.unserialize(coolweather_report);
    var locid = weather['locid'];
    var metric = weather['metric'];
    var coolweather_hint = document.getElementById('coolweather_hint');
    var unit = "";
    if (number == 0) {
        if (metric == 1) {
            var windforce = [coolweather_lang[coolweather_nav_lng]['windforce'],
                coolweather_get_windforce(weather['windspeed']), ' ',
                coolweather_lang[coolweather_nav_lng]['scale'], '<br />'].join('');
        }
        else {
            var windforce = '';
        }
        coolweather_hint.innerHTML = ['<div style="margin-bottom: 0.5em; display: block;"><strong>',
            coolweather_lang[coolweather_nav_lng]['currentconditions'],
            '</strong><br /><br /><img src="', coolweather_iconspath,
            weather['weathericon'], '.gif" alt="', weather['weathertext'],
            '" align="left" valign="absmiddle" width="64" height="40" style="margin-right: 0.5em" />',
            '<a href="javascript:void(0)" onclick="coolweather_input_city();" title="',
            coolweather_lang[coolweather_nav_lng]['changecity'],
            '" style="display: inline; padding: 0; margin: 0">', weather['city'], '</a><br />',
            weather['state'], '</div><br />', weather['weathertext'], '<br />',
            coolweather_lang[coolweather_nav_lng]['temperature'],
            weather['temperature'], coolweather_unit[metric]['temp'], '<br />',
            coolweather_lang[coolweather_nav_lng]['realfeel'],
            weather['realfeel'], coolweather_unit[metric]['temp'], '<br />',
            coolweather_lang[coolweather_nav_lng]['windspeed'],
            weather['windspeed'], coolweather_unit[metric]['speed'], '<br />',
            windforce,
            coolweather_lang[coolweather_nav_lng]['winddirection'],
            coolweather_lang[coolweather_nav_lng][weather['winddirection']], '<br />',
            coolweather_lang[coolweather_nav_lng]['today'],
            '<a href="javascript:void(0)" onclick="coolweather_set_weather(1, 0);" ',
            'style="display: inline; padding: 0; margin: 0">',
            coolweather_lang[coolweather_nav_lng]['daytime'],
            '</a> <a href="javascript:void(0)" onclick="coolweather_set_weather(1, 1);" ',
            'style="display: inline; padding: 0; margin: 0">',
            coolweather_lang[coolweather_nav_lng]['nighttime'], '</a><br />',
            coolweather_lang[coolweather_nav_lng]['tomorrow'],
            '<a href="javascript:void(0)" onclick="coolweather_set_weather(2, 0);" ',
            'style="display: inline; padding: 0; margin: 0">',
            coolweather_lang[coolweather_nav_lng]['daytime'],
            '</a> <a href="javascript:void(0)" onclick="coolweather_set_weather(2, 1);" ',
            'style="display: inline; padding: 0; margin: 0">',
            coolweather_lang[coolweather_nav_lng]['nighttime'], '</a><br />', unit].join('');
    }
    else {
        if (metric == 1) {
            var windforce = [coolweather_lang[coolweather_nav_lng]['windforce'],
            coolweather_get_windforce(weather[number][day_or_night]['windspeed']), ' ',
            coolweather_lang[coolweather_nav_lng]['scale'], '<br />'].join('');
        }
        else {
            var windforce = '';
        }
        coolweather_hint.innerHTML = ['<div style="margin-bottom: 0.5em; display: block;"><strong>',
            ((number == 1) ? coolweather_lang[coolweather_nav_lng]['today'] : coolweather_lang[coolweather_nav_lng]['tomorrow']),
            ((day_or_night == 0) ? coolweather_lang[coolweather_nav_lng]['daytime'] : coolweather_lang[coolweather_nav_lng]['nighttime']),
            '</strong><br /><br />',
            '<img src="', coolweather_iconspath,
            weather[number][day_or_night]['weathericon'], '.gif" alt="',
            weather[number][day_or_night]['weathertext'],
            '" align="left" valign="absmiddle" width="64" height="40" style="margin-right: 0.5em" />',
            '<a href="javascript:void(0)" onclick="coolweather_input_city();" title="',
            coolweather_lang[coolweather_nav_lng]['changecity'],
            '" style="display: inline; padding: 0; margin: 0">',
            weather['city'], '</a><br />', weather['state'],
            '</div><br />', weather[number][day_or_night]['weathertext'], '<br />',
            coolweather_lang[coolweather_nav_lng]['hightemperature'],
            weather[number][day_or_night]['hightemperature'], coolweather_unit[metric]['temp'], '<br />',
            coolweather_lang[coolweather_nav_lng]['lowtemperature'],
            weather[number][day_or_night]['lowtemperature'], coolweather_unit[metric]['temp'], '<br />',
            coolweather_lang[coolweather_nav_lng]['realfeelhigh'],
            weather[number][day_or_night]['realfeelhigh'], coolweather_unit[metric]['temp'], '<br />',
            coolweather_lang[coolweather_nav_lng]['realfeellow'],
            weather[number][day_or_night]['realfeellow'], coolweather_unit[metric]['temp'], '<br />',
            coolweather_lang[coolweather_nav_lng]['windspeed'],
            weather[number][day_or_night]['windspeed'], coolweather_unit[metric]['speed'], '<br />',
            windforce,
            coolweather_lang[coolweather_nav_lng]['winddirection'],
            coolweather_lang[coolweather_nav_lng][weather[number][day_or_night]['winddirection']], '<br />',
            '<a href="javascript:void(0)" onclick="coolweather_set_weather(0);" ',
            'style="display: inline; padding: 0; margin: 0">',
            coolweather_lang[coolweather_nav_lng]['currentconditions'], '</a><br />',
            coolweather_lang[coolweather_nav_lng]['today'],
            '<a href="javascript:void(0)" onclick="coolweather_set_weather(1, 0);" ',
            'style="display: inline; padding: 0; margin: 0">',
            coolweather_lang[coolweather_nav_lng]['daytime'],
            '</a> <a href="javascript:void(0)" onclick="coolweather_set_weather(1, 1);" ',
            'style="display: inline; padding: 0; margin: 0">',
            coolweather_lang[coolweather_nav_lng]['nighttime'], '</a><br />',
            coolweather_lang[coolweather_nav_lng]['tomorrow'],
            '<a href="javascript:void(0)" onclick="coolweather_set_weather(2, 0);" ',
            'style="display: inline; padding: 0; margin: 0">',
            coolweather_lang[coolweather_nav_lng]['daytime'],
            '</a> <a href="javascript:void(0)" onclick="coolweather_set_weather(2, 1);" ',
            'style="display: inline; padding: 0; margin: 0">',
            coolweather_lang[coolweather_nav_lng]['nighttime'], '</a><br />', unit].join('');
    }
}

coolweather_rpc.get_weather_callback = function (result, args) {
    if (result instanceof PHPRPC_Error) {
        var coolweather_hint = document.getElementById('coolweather_hint');
        coolweather_hint.innerHTML = ['<img src="', coolweather_iconspath, 'swa.gif" alt="error" align="left" width="64" height="40" /><span style="color: red">', result.toString(), '</span>'].join('');
    }
    else {
        if (result == null) {
            result = [];
        }
        result['locid'] = args[0];
        result['metric'] = args[1];
        var weather = PHPSerializer.serialize(result);
        set_cookie('coolweather_metric', args[1]);
        set_cookie('coolweather_weather', weather, 900000);
        coolweather_report = weather;
        coolweather_set_weather(0);
    }
}

coolweather_rpc.get_location_callback = function (result) {
    var metric = get_cookie('coolweather_metric');
    if (metric == null) metric = 1;
    var coolweather_hint = document.getElementById('coolweather_hint');
    var coolweather_input = document.getElementById('coolweather_input');
    if (result instanceof PHPRPC_Error) {
        coolweather_hint.innerHTML = ['<span style="color: red">', result.toString(), '</span>'].join('');
        coolweather_input.disabled = false;
    }
    else if (result.length == 0) {
        coolweather_hint.innerHTML = coolweather_lang[coolweather_nav_lng]['nocitymatched'];
        coolweather_input.disabled = false;
        coolweather_input.focus();
    }
    else if (result.length == 1) {
        set_cookie('coolweather_locid', result[0]['location']);
        coolweather_get_weather(result[0]['location'], metric);
    }
    else {
        coolweather_hint.innerHTML = [coolweather_lang[coolweather_nav_lng]['morecitymatched'],
            '<br /><div align="right"><a href="javascript:void(0)" onclick="coolweather_input_city()" style="display: inline; padding: 0; margin: 0">',
            coolweather_lang[coolweather_nav_lng]['back'], '</a></div>'].join('');
        var coolweather_input_container = document.getElementById('coolweather_input_container');
        coolweather_input_container.innerHTML = ['<label for="coolweather_input">', coolweather_lang[coolweather_nav_lng]['location'], '</label><br />'].join('');
        coolweather_input = document.createElement('select');
        var opt = document.createElement('option');
        opt.text = coolweather_lang[coolweather_nav_lng]['choosecity'];
        opt.value = '';
        opt.defaultSelected = true;        if (coolweather_input.options.add) {
            coolweather_input.options.add(opt);
        }
        else {
            coolweather_input.appendChild(opt);
        }
        for (var i = 0; i < result.length; i++) {
            var opt = document.createElement('option');
            opt.text = [result[i]['city'], result[i]['state']].join(', ');
            opt.value = result[i]['location'];
            if (coolweather_input.options.add) {
                coolweather_input.options.add(opt);
            }
            else {
                coolweather_input.appendChild(opt);
            }
        }
        coolweather_input.id = "coolweather_input";
        coolweather_input.onchange = function () {
            var locid = this.value;
            set_cookie('coolweather_locid', locid);
            coolweather_get_weather(locid, metric);
        }
        coolweather_input_container.appendChild(coolweather_input);
        coolweather_input.focus();
    }
}

function on_coolweather_city_input(event) {
    if (window.event) event = window.event;
    if (event.keyCode == 13) {
        var city = this.value;
        var coolweather_hint = document.getElementById('coolweather_hint');
        coolweather_hint.innerHTML = coolweather_lang[coolweather_nav_lng]['loading'];
        var coolweather_input = document.getElementById('coolweather_input');
        coolweather_input.disabled = true;
        coolweather_get_location(city);
    }
}

function coolweather_get_location(city) {
    coolweather_rpc.get_location(city);
}

function coolweather_get_weather(locid, metric) {
    var coolweather_container = document.getElementById('coolweather_container');
    coolweather_container.innerHTML = ['<div id="coolweather_hint">', coolweather_lang[coolweather_nav_lng]['loading'], '</div>'].join('');
    coolweather_rpc.get_weather(locid, metric);
}

function coolweather_input_city() {
    delete_cookie('coolweather_locid');
    coolweather_init2();
}

function coolweather_init(lang) {
        if ((lang) && (lang != ''))
            coolweather_nav_lng = lang;
        var locid = get_cookie('coolweather_locid');
        if (locid == null) locid = "EUR|PL|PL007|WARSZAWA";
	    coolweather_init2(locid);

}


function coolweather_init2(locid) {
    var coolweather_container = document.getElementById('coolweather_container');
    if (locid == null) {
        coolweather_container.innerHTML = ['<div id="coolweather_input_container">',
            '<label for="coolweather_input">',
            coolweather_lang[coolweather_nav_lng]['city'],
            '</label><br /><input type="text" id="coolweather_input" /></div><div id="coolweather_hint">',
            coolweather_lang[coolweather_nav_lng]['firstseehint'], '</div>'].join('');
        var coolweather_input = document.getElementById('coolweather_input');
        coolweather_input.onkeypress = on_coolweather_city_input;
        coolweather_input.focus();
    }
    else {
        coolweather_container.innerHTML = ['<div id="coolweather_hint">', coolweather_lang[coolweather_nav_lng]['loading'], '</div>'].join('');
        var metric = get_cookie('coolweather_metric');
        if (metric == null) metric = 1;
        if (get_cookie('coolweather_weather') == null) {
            coolweather_get_weather(locid, metric);
        }
        else {
            coolweather_report = get_cookie('coolweather_weather');
            coolweather_set_weather(0);
        }
    }
}

