// recurse from end to start
// first one is original language
var langs = ['sv','es','en','it','de'];

// these doesn't seem to work: hy, az, eu, ka, ht, ur
var all_langs = ["en","sv","af","sq","ar","be","bg","ca","zh-TW",
"hr","cs","da","nl","en","et","tl","fi","fr","gl","de","el","iw","hi","hu","is",
"id","ga","it","ja","ko","lv","lt","mk","ms","mt","no","fa","pl","pt","ro","ru","sr","sk",
"sl","es","sw","sv","th","tr","uk","vi","cy","yi"];

var lang_names = {
af : 'afrikaans',
sq : 'albanian',
am : 'amharic',
ar : 'arabic',
hy : 'armenian',
az : 'azerbaijani',
eu : 'basque',
be : 'belarus',
bn : 'bengali',
bh : 'bihari',
bs : 'bosnian',
br : 'breton',
bg : 'bulgarian',
km : 'cambodian',
ca : 'catalan',
'zh-TW' : 'chinese',
co : 'corsican',
hr : 'croatian',
cs : 'czech',
da : 'danish',
nl : 'dutch',
en : 'english',
eo : 'esperanto',
et : 'estonian',
fo : 'faroese',
tl : 'filipino',
fi : 'finnish',
fr : 'french',
fy : 'frisian',
gl : 'galician',
ka : 'georgian',
de : 'german',
el : 'greek',
gn : 'guarani',
gu : 'gujarati',
ha : 'hausa',
iw : 'hebrew',
hi : 'hindi',
hu : 'hungarian',
is : 'icelandic',
id : 'indonesian',
ia : 'interlingua',
ga : 'irish',
it : 'italian',
ja : 'japanese',
jw : 'javanese',
kn : 'kannada',
kk : 'kazakh',
rw : 'kinyarwanda',
rn : 'kirundi',
ko : 'korean',
ku : 'kurdish',
ky : 'kyrgyz',
lo : 'laothian',
la : 'latin',
lv : 'latvian',
ln : 'lingala',
lt : 'lithuanian',
mk : 'macedonian',
mg : 'malagasy',
ms : 'malaysian',
ml : 'malayalam',
mt : 'maltese',
mi : 'maori',
mr : 'marathi',
mo : 'moldavian',
mn : 'mongolian',
ne : 'nepali',
no : 'norwegian',
nn : 'norwegian (nynorsk)',
oc : 'occitan',
or : 'oriya',
om : 'oromo',
ps : 'pashto',
fa : 'persian',
pl : 'polish',
pt : 'portuguese',
pa : 'punjabi',
qu : 'quechua',
ro : 'romanian',
rm : 'romansh',
ru : 'russian',
gd : 'scots gaelic',
sr : 'serbian',
sh : 'serbo-croatian',
st : 'sesotho',
sn : 'shona',
sd : 'sindhi',
si : 'sinhalese',
sk : 'slovak',
sl : 'slovenian',
so : 'somali',
es : 'spanish',
su : 'sundanese',
sw : 'swahili',
sv : 'swedish',
tg : 'tajik',
ta : 'tamil',
tt : 'tatar',
te : 'telugu',
th : 'thai',
ti : 'tigrinya',
to : 'tonga',
tr : 'turkish',
tk : 'turkmen',
tw : 'twi',
ug : 'uighur',
uk : 'ukrainian',
ur : 'urdu',
uz : 'uzbek',
vi : 'vietnamese',
cy : 'welsh',
xh : 'xhosa',
yi : 'yiddish',
yo : 'yoruba',
zu : 'zulu'};

function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}

var rectrans = function(l,txt) {
    $('#flag'+l).css('border','2px solid white');
    if(l==0) {
        $.translate(txt,langs[l],function(res) {
//            $('#result').empty().append(res);
            $('#result').text(res);
        });
    } else {
        $.translate(txt,langs[l],function(res) {
            //$('#result').empty().append(res);
            $('#result').text(res);
            rectrans(l-1,res);
        });
    }
}

var do_trans = function() {
    $('#result').empty().append("(översätter, var vänlig vänta...)");
    var res = $("textarea#text").val();
    
    for(var i=0;i<langs.length;i++) {
//        $('#langdone'+i).empty().append('&sdot;');
        $('#flag'+i).css('border','2px solid grey');
    }
    rectrans(langs.length-1,res);
    return false;
}

var scramble = function(arr) {
        var v = arr.slice(0);
        var n = v.length;
        for(var i=0;i<n;i++) {
            var i2 = i+Math.round(Math.random()*(n-i));
            var t=v[i2];
            v[i2]=v[i];
            v[i]=t;
        }
        return v;
}

var do_random = function() {
/*    for(var i=1;i<langs.length;i++) {
        var x = all_langs[Math.round(Math.random()*all_langs.length-1)];
        $('#langopt'+i).val(x);
        langs[i]=x;
        set_flag(i,x);
    }*/
    var r = scramble(all_langs);
    for(var i=1,j=0;i<langs.length;i++) {
//        var x = all_langs[Math.round(Math.random()*all_langs.length-1)];
        var x = 0;
        while(1) {
            x = r[j++];
            if(x!=langs[0]) break;
        }
//        langs[i]=x;
        set_flag(i,x);
    }
    
//    do_trans();
    return false;
}

var set_flag = function(index,lang) {
    $('#langopt'+index).val(lang);
    langs[index]=lang;
    $('#flag'+index).attr('src','flags/'+lang_names[lang]+'.png');
    if(index==0) {
//        $('#org_lang').empty().append($(":selected",this).text());
        $('#org_lang').empty().append(lang_names[lang]);
//        set_flag(5,lang);
        $('#flag'+5).attr('src','flags/'+lang_names[lang]+'.png');
    }
}

var lang_change = function() {
    var lang = $(this).val();
    var index = $(this).attr('index');
//    $('#result').append(lang+" "+index);
//    langs[index] = lang;
    set_flag(index, lang);
//    do_trans();
    return false;
}

//use .val() to get value, .val('lang') to set

function set_page_lang(lang) {
    set_flag(0,lang);
//    do_random();
    if(lang=="sv") {
//        $('#page_lang_link').attr('href','index.html?lang=en');
        $('#page_lang_flag').attr('src','flags/english.png');
//        $('#text').text("Skriv något...");
        $('#submit_btn').attr('value','Översätt!');
        $('#random_btn').attr('value','Slumpa');
        $('#back_btn').attr('value','Till trancelatorn');
        $('#instructions').html(
"1. Skriv eller klistra in din text i vänstra fältet<br>\
2. Välj mellan vilka språk du vill att din text ska översättas<br>\
3. Kolla hur det blir när texten kommer tillbaks till originalspråk");
        $('#org_lang_txt').text("Originalspråk");
        $('#trans_to_txt').text("översätt till...");
        $('.and_to_txt').each(function() {
            $(this).text("och sen till...");
        });
        $('#and_back_txt').text("och tillbaks till");

        $('#about_txt').html(
"<p>Trancelaysions handlar om språket i vår nya, digitala värld. \
<p>SMS, twitter och bloggar har sänkt kraven på oss att använda språket korrekt. Tack vare internet har fler av oss tillgång till en mångdubbelt större textmängd än för bara några år sedan.\
<p>Med trancelaysions kan du processa texter genom flera seriekopplande översättningsmaskiner. Vid varje översättning uppstår missförstånd och felaktigheter. När texten slutligen översätts tillbaks till svenska blir resultatet mest konstigt ... eller roligt och inspirerande.\
<p>Språket tillhör oss människor och det märks när vi ger datorn förtroende att översätta. Den gör sitt bästa, men någon författare är den inte. \
<p>Trancelaysions är påhittat och formgivet av Håkan Lidbo och programmerat av Jonatan Liljedahl.");
/*"<p>Trancelaysions påhittat och formgivet av Håkan Lidbo och programmerat av Jonatan Liljedahl. \
<p>Aug 10 - Oct 31 kommer ett utval av svenska texter att ställas ut på Orange Gallery på Kulturhuset i Stockholm. \
<p>Om du har några idéer angående detta projekt, förslag om användning av programmet, skicka oss gärna ett email. \
Sprid ordet om Trancelaysions och hjälp oss att upplösa språket.");*/
    }
    else
    {
//        $('#page_lang_link').attr('href','index.html?lang=sv');
        $('#page_lang_flag').attr('src','flags/swedish.png');
//        $('#text').text("Write something...");
        $('#submit_btn').attr('value','Translate!');
        $('#random_btn').attr('value','Randomize');
        $('#back_btn').attr('value','To the trancelaytor');
        $('#instructions').html(
"1. Write or paste your text in the left field<br>\
2. Choose between which languages you want your text to be translated<br>\
3. Check out the result when the text comes back to the first language");
        $('#org_lang_txt').text("First language");
        $('#trans_to_txt').text("translate to...");
        $('.and_to_txt').each(function() {
            $(this).text("and then to...");
        });
        $('#and_back_txt').text("and back to");
        
        $('#about_txt').html(
"<p>Trancelaysions is about language in our new, digital world. \
<p>SMS, twitter, and blogs have lowered the requirements for us to use the language correctly. \
Thanks to internet, we have access to a much larger amount of text than just a few years ago. \
<p>Using trancelaysions, any text in any language can be processed by a chain of machine translators. In each translation \
missunderstandings and errors occur. When the text comes back to the original language, the result is often surprising, fun and \
inspiring. \
<p>The language belongs to us humans but today we often trust the computer to translate. It is doing its best, but it’s definitely not an author.\
<p>Trancelaysions is invented and designed by Håkan Lidbo and programmed by Jonatan Liljedahl.");
/*"<p>Trancelaysions is invented and designed by Håkan Lidbo and programmed by Jonatan Liljedahl. \
<p>Aug 10 - Oct 31 a selection of Swedish texts are exhibited at the Orange Gallery at Kulturhuset in Stockholm. \
<p>If you have any ideas related to this project, suggestions for how to use or abuse the program, please send us an email. \
Spread the word about Trancelaysions and help us dissolving the language.");*/
    }
}

function show_about() {
//    var lang = getUrlVars()['lang'] || 'en';
    window.location.replace('about.html?lang='+page_lang);
    return false;
}

function show_start() {
//    var lang = getUrlVars()['lang'] || 'en';
    window.location.replace('translaytor.html?lang='+page_lang);
    return false;
}

var page_lang = "en";

function switch_page_lang() {
/*    var lang = getUrlVars()['lang'] || 'en';
    var base = window.location.href.split('?')[0];
    var url = base+'?lang='+(lang=='en'?'sv':'en');
    window.location.replace(url);*/
    page_lang = page_lang=='en'?'sv':'en';
    set_page_lang(page_lang);
    return false;
}

jQuery(document).ready(function() {
    $.translate.defaults.stripWhitespace = false;
    $.translate.defaults.stripScripts = false;
    $.translate.defaults.stripComments = false;
    
    page_lang = getUrlVars()['lang'] || 'en';
    $('#page_lang_link').click(switch_page_lang);
	$('#submit_btn').click(do_trans);
    $('#random_btn').click(do_random);
    $('#about_btn').click(show_about);
    $('#back_btn').click(show_start);
	$('.langdropdown').change(lang_change);
    set_page_lang(page_lang);
});


