var poging = 0;
var kaarten = new Array();
var kaartenbak = new Array();
var aantalkaarten = 12;
var omgedraaid1 = 0;
var omgedraaid2 = 0;
var aantalweg = 0;

function initMemorie()
{
	$("#score").hide();
	$("#highscore").hide();
    fillKaartenbak();
    pickKaarten();
    saveKaarten();
    addEvents();
    $("#evenbezig").hide();
}

function fillKaartenbak()
{
    kaartenbak[0] = "Belgie";
    kaartenbak[1] = "Bulgarije";		
    kaartenbak[2] = "Cyprus";
    kaartenbak[3] = "Denemarken";
    kaartenbak[4] = "Duitsland";	
    kaartenbak[5] = "Estland";	
    kaartenbak[6] = "Finland";	
    kaartenbak[7] = "Frankrijk";
    kaartenbak[8] = "Griekenland";		
    kaartenbak[9] = "Hongarije";		
    kaartenbak[10] = "Ierland";		
    kaartenbak[11] = "Italie";
    kaartenbak[12] = "Letland";	
    kaartenbak[13] = "Litouwen";	
    kaartenbak[14] = "Luxemburg";	
    kaartenbak[15] = "Malta";
    kaartenbak[16] = "Nederland";
    kaartenbak[17] = "Oostenrijk";		
    kaartenbak[18] = "Polen";
    kaartenbak[19] = "Portugal";
    kaartenbak[20] = "Roemenie";	
    kaartenbak[21] = "Slovenie";
    kaartenbak[22] = "Slowakije";		
    kaartenbak[23] = "Spanje";
    kaartenbak[24] = "Tsjechie";
    kaartenbak[25] = "VerenigdKoninkrijk";
    kaartenbak[26] = "Zweden";
}

function pickKaarten()
{
	kaartenbak = fisherYates(kaartenbak)
    for (i = 0; i < aantalkaarten; i ++)
    {
        kaartnummer = Math.floor(i / 2);
        prefix = '';
        if (i % 2) { prefix = 'vlag'; }
        else { prefix = 'land'; }
        kaarten[i] = prefix + '_' + kaartenbak[kaartnummer];
    }
    kaarten = fisherYates(kaarten);
}

function saveKaarten()
{
    for (i = 0; i < aantalkaarten; i ++)
    {
        $("#kaart_" + (i+1)).attr('name', kaarten[i]);
        $("#kaart_" + (i+1) + " img").attr('src', ('/static/afbeeldingen/memorie/' + kaarten[i] + '.png').toLowerCase());
    }
}

function addEvents()
{
	for (i = 0; i < aantalkaarten; i ++)
    {
		$("#kaart_" + (i+1)).click(clickKaart);
    }
}

function removeEvents()
{
    for (i = 0; i < aantalkaarten; i ++)
    {
        $("#kaart_" + (i+1)).unbind('click', clickKaart);
    }
}

function clickKaart(e)
{
    kaartnummer = $(this).attr('id');
    removeEvents();
    if (omgedraaid1 == 0)
    {
        // er is nog geen andere omgedraaid
        $(this).removeClass('omgekeerd');
        omgedraaid1 = kaartnummer;
        addEvents();
    }
    else if (omgedraaid1 == kaartnummer)
    {
        // geklikt op zelfde kaart, doe niks
        alert('Deze kaart is al omgedraaid');
        addEvents();
    }
    else
    {
        // er is reeds een ander omgedraaid
        poging ++;

        if ($("#" + omgedraaid1).attr('name').split('_')[1] == $(this).attr('name').split('_')[1])
        {
            $("#" + omgedraaid1).addClass('weg');
            $(this).addClass('weg');
            omgedraaid1 = 0;
            omgedraaid2 = 0;
            addEvents();
            aantalweg ++;
            testGewonnen();
        }
        else
        {
            omgedraaid2 = kaartnummer;
            $(this).removeClass('omgekeerd');
            setTimeout("timerOver()", 1000);
        }
    }
    
}

function timerOver()
{
    $("#" + omgedraaid1).addClass('omgekeerd');
    $("#" + omgedraaid2).addClass('omgekeerd');
    omgedraaid1 = 0;
    omgedraaid2 = 0;
    addEvents();
}

function testGewonnen()
{
    if (aantalweg == (aantalkaarten/2))
    {
    	$("#submit").click(saveScore);
    	$("#score").show();
        $("#score p strong").text(poging);
        $(".kaart").hide();
    }
}

function saveScore()
{
	if ($("#score #naam").val() == '') {
		alert("Vul je naam in");
		return false;
	}
	$("#evenbezig").show();
	data = {score: $("#score p strong").text(), naam: $("#score #naam").val(), email: $("#score #email").val()};
	$.post("/memorie.php?save", data, showHighscore, "html");
}

function showHighscore(data, textStatus)
{
	$("#highscore table tbody").html(data);
	$("#score").hide();
	$("#highscore").show();
	$("#evenbezig").hide();
}

function fisherYates(myArray)
{
    // http://sedition.com/perl/javascript-fy.html
    var i = myArray.length;
    if(i == 0)
    {
        return false;
    }
    while ( --i )
    {
        var j = Math.floor( Math.random() * ( i + 1 ) );
        var tempi = myArray[i];
        var tempj = myArray[j];
        myArray[i] = tempj;
        myArray[j] = tempi;
    }
    return myArray;
}
