// global variables
var adept_url_de = "http://www.adept-consult.de/Deutsch/Home/tabid/36/Default.aspx";
var adept_url_en = "http://www.adept-consult.de/English/Home/tabid/97/Default.aspx";

// local variables
var __adept_page_lang = null;
var __adept_dialog_background = null;
var __adept_dialog = null;
var __adept_check_lang_executed = false;
var __adept_check_lang = null;

// check the current language
function adept_check_lang(page_lang) {
    if (!page_lang) return;
    // remeber page language for later usage
    __adept_check_lang = page_lang;
    // check if check was already execued and if so
    // execute it again
    if (__adept_check_lang_executed) {
        adept_check_lang_execute();
    }
}

// execute the current language check
function adept_check_lang_execute() {
    if (!__adept_check_lang) return;
    // remeber page language for later usage
    __adept_check_lang_executed = true;
    // read selected language from cookie
    var current_lang = __adept_readCookie("lang");
    // test if language cookie matches language of current page
    if (current_lang == __adept_check_lang ) {
        // renew cookie
        __adept_createCookie("lang", current_lang, 31);
	__adept_page_lang = current_lang;
        return;
    }
    // check the current cookie if we need to redirect
    if (current_lang == "de") {
        __adept_redirect("de");
    }
    else if (current_lang == "en") {
        __adept_redirect("en");
    }
    // show language dialog
    else {
        __adept_show_language_dialog();
    }
}

// reset cookie and show language dialog
function adept_reset_lang() {
    __adept_eraseCookie("lang");
    __adept_show_language_dialog();
}

// override current language to avoid redirects
function adept_set_lang(new_lang) {
    // change language in the cookie
    __adept_createCookie("lang", new_lang, 31);
    __adept_page_lang = new_lang;
    return true;
}

// change the current language
function __adept_change_lang(new_lang) {
    if (new_lang == __adept_page_lang)  {
        // do nothing since selected language is current page language
        __adept_createCookie("lang", new_lang, 31);
        __adept_close_language_dialog();
        return;
    }
    if (new_lang == __adept_check_lang)  {
        // do nothing since selected language is current page language
        __adept_createCookie("lang", new_lang, 31);
        __adept_close_language_dialog();
        return;
    }
    // change language in the cookie
    __adept_createCookie("lang", new_lang, 31);
    __adept_page_lang = new_lang;
    // redirect to correct language page
    __adept_redirect(new_lang);
}

// redirect to english or german page
function __adept_redirect(new_lang) {
    window.location = new_lang == "de" ? adept_url_de : adept_url_en; 
}

// show the language dialog
function __adept_show_language_dialog() {
    if (__adept_dialog != null) return;

    var innerHTML = "";
    innerHTML += "<img src=http://www.adept-consult.de/Portals/_default/Skins/Templates/images/adept_langhead.jpg width=380></img>"
    innerHTML += "<p>";
    innerHTML += "<a class=\"lang_de\" href=\"#\" onclick=\"__adept_change_lang('de')\"><h2>Land ausw&auml;hlen</h2>Bitte w&auml;hlen Sie Ihr Land bzw. Ihre Sprache aus.</a>";
    innerHTML += "<a class=\"lang_en\" href=\"#\" onclick=\"__adept_change_lang('en')\"><h2>Select a country</h2>Please select your country or language.</a>";
    innerHTML += "</p>";

    __adept_dialog_background = document.createElement("div");
    __adept_dialog_background.className = "adept_language_dialog_background";
    __adept_dialog_background.innerHTML = "&nbsp;";

    __adept_dialog = document.createElement("div");
    __adept_dialog.className = "adept_language_dialog";
    __adept_dialog.innerHTML = innerHTML;

    document.getElementById("Body").appendChild(__adept_dialog_background);
    document.getElementById("Body").appendChild(__adept_dialog);
}

// close the language dialog
function __adept_close_language_dialog() {
    if (__adept_dialog == null) return;
    document.getElementById("Body").removeChild(__adept_dialog);
    document.getElementById("Body").removeChild(__adept_dialog_background);
    __adept_dialog = null;
    __adept_dialog_background = null;
}

// create a new cookie entry (or override an existing one)
function __adept_createCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    }
    else var expires = "";
    document.cookie = name + "=" + value + expires + "; path=/";
}

// read an existing cookie entry
function __adept_readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}

// delete an existing cookie entry
function __adept_eraseCookie(name) {
    __adept_createCookie(name, "", -1);
}
