function split_url(url)
{
    var parts = {base:url, search:'', hash:''};

    var split_at_hash = url.match(/^(.*)#(.*)$/);
    if(split_at_hash)
    {
        parts.base = split_at_hash[1];
        parts.hash = split_at_hash[2];
    }

    var split_at_query = parts.base.match(/^(.*)\?(.*)$/);
    if(split_at_query)
    {
        parts.base = split_at_query[1];
        parts.search = split_at_query[2];
    }

    return parts;
}

var lang_list = new Array('en','fr','de');

var lang_warn = new Array();

lang_warn.en='Sorry, there is no English translation for this page';
lang_warn.fr='Vous surfez sur la version francaise de ce site, mais il n\'y a pas de traduction francaise pour cette page en particulier.'
lang_warn.de='Sorry, there is no German translation for this page';


var menu_list = new Array('index','download','install','retext','audio','descent',
                          'redguard','carma','extreme','gta','dreams','blood',
                          'screamer','baron','support','purchase','unlock',
                          'links','ackno');

var menu_item = new Array();

for(i = 0; i < menu_list.length; i++)
    menu_item[menu_list[i]] = new Array();

menu_item.index.en    = 'Home';
menu_item.download.en = 'Download';
menu_item.install.en  = 'Install';
menu_item.retext.en   = 'Texture packs';
menu_item.audio.en    = 'Audio packs';
menu_item.descent.en  = 'Descent II';
menu_item.redguard.en = 'Redguard';
menu_item.carma.en    = 'Carmageddon';
menu_item.extreme.en  = 'Extreme Assault';
menu_item.gta.en      = 'Grand Theft Auto';
menu_item.dreams.en   = 'Dreams to Reality';
menu_item.blood.en    = 'Blood';
menu_item.screamer.en = 'Screamer 2';
menu_item.baron.en    = 'Red Baron';
menu_item.support.en  = 'Support';
menu_item.purchase.en = 'Buy Glidos';
menu_item.unlock.en   = 'Unlock service';
menu_item.links.en    = 'Links';
menu_item.ackno.en    = 'Acknowledgements';

// Don't set a value here unless there is a cooresponding page
menu_item.index.fr    = 'Accueil';
menu_item.download.fr = 'Téléchargement';
menu_item.install.fr  = 'Installation';
menu_item.retext.fr   = 'Packs de Textures';
menu_item.audio.fr    = 'Packs Audios';
menu_item.support.fr  = 'Support';
menu_item.purchase.fr = 'Acheter Glidos';
menu_item.unlock.fr   = 'Dévérouiller Glidos';

// Don't set a value here unless there is a cooresponding page
menu_item.index.de    = 'Home';
menu_item.download.de = 'Download';
menu_item.install.de  = 'Installation';
// menu_item.retext.de   = 'Texturen Packs';
menu_item.audio.de    = 'Audio packs';
menu_item.support.de  = 'Unterstützung';
menu_item.purchase.de = 'Kaufe Glidos';
menu_item.unlock.de   = 'Freischalt Service';
menu_item.links.de    = 'Links';
// menu_item.ackno.de = 'Danksagung';

function write_menu_item(i)
{
    var match = document.location.search.match(/lang=(..)/);
    var lang  = match ? match[1] : 'en';
    var page  = menu_list[i];

    if(lang != 'en' && menu_item[page][lang])
    {
        // Language not English, and we have a translated page, so use it and show flag.
        var path = page == 'unlock' ? 'http://unlock.glidos.net/unlock.php'
                                    : 'http://www.glidos.net/'+page+'-'+lang+'.html';

        document.write('<tr><td><a href="'+path+'?lang='+lang+'"><img src="'+lang+'.gif" align=left>&nbsp;'+menu_item[page][lang]+'</a></td></tr>');
    }
    else
    {
        // English or we have no translation, use English text and page, but set lang correctly
        // so that we will continue to link to pages that do have translations.
        var path = page == 'unlock' ? 'http://unlock.glidos.net/unlock.php'
                                    : 'http://www.glidos.net/'+page+'.html';

        document.write('<tr><td><a href="'+path+'?lang='+lang+'">'+menu_item[page]['en']+'</a></td></tr>');
    }
}

function generate_menu()
{
    var match   = document.location.search.match(/lang=(..)/);
    var lang    = match ? match[1] : 'en';
    var raw_url = document.location.search ?  document.location.href.replace(/\?.*$/, '') : document.location.href;
    var i;

    document.write('<table>');

    document.write('<tr><td bgcolor=#404040><table>');

    for(i = 0; i < lang_list.length; i++)
    {
        document.write('<tr><td align=right>'
                +(lang == lang_list[i] ? '<img align=middle src="arrow.gif">&nbsp;&nbsp;' : '')
                +'<a href="'+raw_url+'?lang='+lang_list[i]+'"><img align=middle src="'+lang_list[i]+'.gif"></a></td></tr>');
    }

    document.write('</table></td></tr>');

    for(i = 0; i < menu_list.length; i++)
        write_menu_item(i);

    document.write('</table>');
}

function redirect_if_wrong_language()
{
    var match = document.location.search.match(/lang=(..)/);
    var lang  = match ? match[1] : 'en';
    var match = document.location.pathname.match(/([^\/]*).html/);
    if(!match) return;
    var path  = match[1];
    var match = path.match(/(.*)-(..)/);
    var path  = match ? match[1] : path;
    var plang = match ? match[2] : 'en';

    if(lang != plang && menu_item[path] && menu_item[path][lang])
    {
        // We are not using the correct page for the current language,
        // and there is a translation, then redirect.
        document.location.href = path+(lang != 'en' ? '-'+lang : '')+'.html?lang='+lang;
    }
}

function generate_no_french_warning()
{
    var match = document.location.search.match(/lang=(..)/);
    var lang  = match ? match[1] : 'en';
    var match = document.location.pathname.match(/-(..).html/);
    var plang = match ? match[1] : 'en';

    if(lang != plang)
        document.write('<table bgcolor="##000088"><tr><td><font color="#FFCC00">'+lang_warn[lang]+'</font></td></tr></table>');
}

function rewrite_links()
{
    var location_bits = split_url(document.location.href);

    if(location_bits.search)
    {
        for(i = 0; i < document.links.length; i++)
        {
            var link_bits = split_url(document.links[i].href);

            if(document.links[i].hostname == document.location.hostname && !link_bits.search)
            {
                document.links[i].href = link_bits.base + '?' + location_bits.search + (link_bits.hash ? '#' + link_bits.hash : '');
            }
        }
    }
}

