
var languages = [
    ['de', 'Deutsch'],
    ['en', 'English']/*,
    ['es', 'Español'],
    ['fr', 'Français']*/];

function set_current_language()
{
    replaceChildNodes('language-select-trigger', '??');
    for (var i = 0; i < languages.length; i++) {
        if (languages[i][0] == document.language) {
            replaceChildNodes('language-select-trigger', languages[i][1]);
            break;
        }
    }
}

function change_language(language) {

    var location = window.location.href;
    location = location.replace(/#.*/, "");

    if (window.location.search == "") {
        location = "?lang=" + language;
    } else if (window.location.search.match("lang=")) {
        location = location.replace(/lang=([a-z][a-z]|)/, "lang=" + language);
    } else {
        location += "&lang=" + language;
    }

    window.location.href = location;
}

var in_selector = false;        /* kludge for firefox which sometimes fails to cancel timers (?) */

function show_language_selector() {
    in_selector = true;
    $('language-selector').style.visibility = 'inherit';
}

function hide_language_selector(from) {
    if (!in_selector) {
        $('language-selector').style.visibility = 'hidden';
    }
}

function make_language_selector () {
    var language_selector = DIV({ id: 'language-selector', style: 'visibility: hidden' });
    for (var i = 0; i < languages.length; i++) {
        if (languages[i][0] != document.language) {
            var link = A({ href: '#' }, languages[i][1]);
            link.onclick = partial(change_language, languages[i][0]);
            appendChildNodes(language_selector, link);
        }
    }
    language_selector.onmouseover = cancel_language_selector_close_timer;
    language_selector.onmouseout = function () { hide_language_selector('ONMOUSEOUT') };
    insertSiblingNodesAfter('language-select-trigger', language_selector);
}

var language_selector_close_timer = null;

function make_language_selector_close_timer () {
    in_selector = false;
    cancel_language_selector_close_timer();
    language_selector_close_timer = callLater(.5, hide_language_selector, 'TIMER');
}

function cancel_language_selector_close_timer () {
    if (language_selector_close_timer) {
        language_selector_close_timer.cancel();
        language_selector_close_timer = null;
    }
}

function init_languages()
{
    set_current_language();
    make_language_selector();
    $('language-select-span').onmouseover = show_language_selector;
    $('language-select-span').onmouseout = make_language_selector_close_timer;
}