Array.prototype.contains = function (x){ for(var i = 0; i < this.length; i++) if(this[i] == x) return true; return false; }

var countries = new Array("افغانستان", "آلبانی", "الجزایر", "ساموآی آمریکا", "آندورا", "آنگولا", "آنگویلا", "آنتیگوا و باربودا", "آرژانتین",
"ارمنستان", "آروبا", "ایالات متحده آمریکا", "بنگلادش", "بحرین", "باهاما", "جمهوری آذربایجان", "استرالیا", "اتریش", "باربادوس", "بلاروس", "بلژیک", "بلیز",
"بنین", "برمودا", "بوتان", "بولیوی", "بوسنی و هرزگووین", "بوتسوانا", "برزیل", "British Indian Ocean Territory", "جزایر ویرجین بریتانیا",
"برونئی", "بلغارستان", "بورکینافاسو", "میانمار", "بوروندی", "کامبوج", "کامرون", "کانادا", "کیپ ورد", "جزایر کایمان", "جمهوری آفریقای مرکزی",
"چاد", "شیلی", "جمهوری خلق چین", "فرانسه", "کلمبیا", "کومور", "جمهوری دموکراتیک کنگو", "جمهوری کنگو", "جزایر کوک", "کاستاریکا",
"ساحل عاج", "کرواسی", "کوبا", "قبرس", "جمهوری چک", "دانمارک", "جیبوتی", "دومینیکا", "جمهوری دومینیکن", "تیمور شرقی", "اکوادور", "مصر",
"السالوادور", "گینه استوایی", "اریتره", "استونی", "اتیوپی", "جزایر فالکلند", "فارو", "فیجی", "فنلاند", "پلی‌نزی فرانسه", "گابن",
"گامبیا", "گرجستان", "آلمان", "غنا", "جبل‌الطارق", "یونان", "گرینلند", "گرنادا", "گوآم", "گواتمالا", "گینه", "گینه بیسائو", "گویان", "هائیتی",
"واتیکان", "هندوراس", "هنگ‌کنگ", "مجارستان", "ایسلند", "هند", "اندونزی", "اندونزی", "عراق", "ایرلند", "اسرائیل", "ایتالیا", "جامائیکا", "ژاپن",
"اردن", "قزاقستان", "کنیا", "کیریباتی", "کره شمالی", "کره جنوبی", "کویت", "قرقیزستان", "لائوس", "لتونی", "لبنان", "لسوتو", "لیبریا",
"لیبی", "لیشتنشتاین", "لیتوانی", "لوکزامبورگ", "ماکائو", "مقدونیه", "ماداگاسکار", "مالاوی", "مالزی", "مالدیو", "مالی", "مالت", "جزایر مارشال",
"مارتینیک", "موریتانی", "موریس (جزیره)", "مکزیک", "میکرونزی", "موناکو", "مولداوی", "مغولستان", "مراکش", "موزامبیک", "نامیبیا", "نائورو", "نپال",
"هلند", "نیوزیلند", "نیکاراگوآ", "نیجر", "نیجریه", "نروژ", "عمان", "پاکستان", "پالائو", "پاناما", "پاپوآ گینه نو", "پاراگوئه",
"پرو", "فیلیپین", "لهستان", "پرتغال", "پورتوریکو", "قطر", "رومانی", "روسیه", "رواندا", "سنت کیتس و نویس", "سنت لوسیا", "ساموآ",
"سان مارینو", "سائوتومه و پرینسیپ", "عربستان سعودی", "سنگال", "صربستان و مونته‌نگرو", "سیشل", "سیرالئون", "سنگاپور", "اسلواکی",
"اسلوونی", "جزایر سلیمان", "سومالی", "آفریقای جنوبی", "اسپانیا", "سری لانکا", "سودان", "سورینام", "سوازیلند", "سوئد", "سوئیس", "سوریه", "تاجیکستان",
"تانزانیا", "تایلند", "توگو", "تونگا", "ترینیداد و توباگو", "تونس", "ترکیه", "ترکمنستان", "تووالو", "اوگاندا", "اوکراین",
"امارات متحده عربی", "پادشاهی متحده", "اروگوئه", "ازبکستان", "وانواتو", "ونزوئلا", "ویتنام", "جزایر ویرجین", "یمن", "زامبیا", "زیمبابوه", "جمهوری چین");

var flag = null;

var score = 0;
var flagsleft = 20;

function irand(n)
{
    return Math.floor(Math.random() * n)
}

function Flag(n)
{
    var tmp;
    var order = new Array(-1, -1, -1, -1, -1);
    for(var i = 0; i < 5; i++)
    {
        do tmp = irand(5); while(order.contains(tmp));
        order[i] = tmp;
    }

    this.flag = "flaggor/" + (1 + n) + ".gif";
    this.answer = order[0];

    this.alternatives = new Array("", "", "", "", "");
    this.alternatives[order[0]] = countries[n];

    do tmp = countries[irand(countries.length)]; while(this.alternatives.contains(tmp));
    this.alternatives[order[1]] = tmp;

    do tmp = countries[irand(countries.length)]; while(this.alternatives.contains(tmp));
    this.alternatives[order[2]] = tmp;

    do tmp = countries[irand(countries.length)]; while(this.alternatives.contains(tmp));
    this.alternatives[order[3]] = tmp;

    do tmp = countries[irand(countries.length)]; while(this.alternatives.contains(tmp));
    this.alternatives[order[4]] = tmp;
}

function getRandomFlag()
{
    return new Flag(irand(countries.length));
}

function setNextFlag()
{
    flag = getRandomFlag();
    document.getElementById("flag").src = flag.flag;

    document.getElementById("alt1").value = flag.alternatives[0];
    document.getElementById("alt2").value = flag.alternatives[1];
    document.getElementById("alt3").value = flag.alternatives[2];
    document.getElementById("alt4").value = flag.alternatives[3];
    document.getElementById("alt5").value = flag.alternatives[4];
}

function answer(n)
{
    if(flag == null)
        return;

    flagsleft--;
    if(flag.answer == n)
        score++;

    if(flagsleft > 0)
        setNextFlag();
    else
        document.getElementById("alternatives").style.display = "none";

    update();
}

function update()
{
    document.getElementById("score").firstChild.nodeValue = score;
    document.getElementById("outof").firstChild.nodeValue = 20 - flagsleft;
    document.getElementById("flagsleft").firstChild.nodeValue = flagsleft;
}

function initialise()
{
    flag = null;
    score = 0;
    flagsleft = 20;
    update();
    document.getElementById("alternatives").style.display = "block";
    setNextFlag();
}
