// array met namen fotobestanden
var fotos = ['224.jpg','223.jpg','222.jpg','207.jpg','170.jpg','144.jpg','100.jpg','86.jpg','26.jpg','33.jpg','32.jpg','31.jpg','30.jpg','29.jpg','28.jpg','27.jpg'];
			 
// moeilijkheidsgraad -> waarde radiobutton
var level;
//aantal fotos in array
var aantalFotos=fotos.length;
//geselecteerde foto
var foto;
//array met puzzel-elementen in volgorde
var puzzel = [];
//configuratie moeilijkheidsgraad
var levels = [];
	levels[0] = [];
	levels[0]['rij']=4;
	levels[0]['kolom']=4;
	levels[1] = [];
	levels[1]['rij']=6;
	levels[1]['kolom']=5;
	levels[2] = [];
	levels[2]['rij']=8;
	levels[2]['kolom']=8;
	
//afmetingen fotos
var fotoBreedte = 700;
var fotoHoogte = 467;
//afmeting div-tags -> te berekenen
var celBreedte;
var celHoogte;
//score
var aantalClicks = 0;
var aantalCorrect = 0;
//wachttijd 150ms (als je op 2 deeltjes geklikt hebt blijft dit 150ms transparant voor ze verwisseld worden)
var wacht = 150;
$(document).ready(function(){
	// change-event aan radiobuttons koppelen
	$('input[name=level]').bind('click',function(){
		level = $(this).val();
		nieuw();	
	});
	
	//click-event aan knop koppelen
	$('#shuffle').bind('click',function(){
		nieuw();	
	});
	
	//ken aan alle div-tags in #foto een click-event toe
	$('#foto').delegate('div','click',function(){
		//wanner op div-tag in #foto wordt geklikt, 
		//roep functie verwerk aan en geef div-object mee
		verwerk(this);
	});
	
	//haal geselecteerd niveau op
	//waarde van radiobutton met attribuut checked
	level = $('input[name=level][checked=checked]').val();
	//roep functie nieuw op
	nieuw();
});
//functie selecteert willikeurige afbeelding uit array en initieert puzzel
function nieuw()
{
	// controleer of #foto kindnodes bevat
	// zo ja, verwijder kindnodes
	if($('#foto').children().length >0)
	{
		$('#foto').empty();
	}
	
	// zoek pad van een willekeurig geselecteerde afbeelding
	foto = '/images/klasfoto/' + fotos[Math.floor(aantalFotos * Math.random())];
	
	// bereken celbreedte en -hoogte
	celBreedte = Math.floor(fotoBreedte / levels[level]['kolom']);
	celHoogte = Math.floor(fotoHoogte / levels[level]['rij']);
	
	
	//maak div-element aan
	var div = $('
');
		div.css({position:'absolute',
				 width:celBreedte + 'px',
				 height:celHoogte + 'px',
				 overflow:'hidden'});
	var img = $('
![]()
');
		img.attr('src',foto);
		
	// voeg foto toe aan #thumb
	//als er al iets in thumb zit eerst wegdoen
	if ($('#thumb').children().length >0)
	{
		$('#thumb').empty();
	}
	$('#thumb').append($(img).clone());
	
	$(img).css('position','absolute');
	$(div).append(img);
	
	//maak voor elke cel (rij/kolom een kloon van de div en positioneer foto
	//zet kloon in array puzzel
	for (var rij = 0; rij < levels[level]['rij']; rij++)
	{
		for(var kolom = 0; kolom < levels[level]['kolom']; kolom++)
		{
			// maak voor elke cel een kloon van div
			var cel = $(div).clone();
			// bereken voor elke cel een id = aantal kolommen*aantal rijen + kolomnummer
			var id = levels[level]['kolom']*rij+kolom;
			//console.log(id);
			cel.attr('id','puzzel_' + id);
			
			//bereken left en top voor foto
			var links = '-' + celBreedte * kolom + 'px';
			var top = '-' + celHoogte * rij + 'px';
			
			//positioneer afbeelding
			$(cel).find('img')
				  .css({left:links,
				  		top:top});
						
			//duw cel in array puzzel
			puzzel.push(cel);
		}	
	}
	
	//zet alle elementen op willikeurige plaats
	for (var rij = 0; rij < levels[level]['rij']; rij++)
	{
		for(var kolom = 0; kolom < levels[level]['kolom']; kolom++)
		{
			// bereken index van willekeurig element uit puzzel-array
			index = Math.floor(puzzel.length * Math.random());
			
			//  haal puzzestuk uit array puzzel met index
			var puzzelStuk = puzzel[index];
			
			// bereken positie puzzelstuk
			var links = celBreedte *kolom + 'px';
			var top = celHoogte * rij + 'px';
			
			//positioneer puzzelstuk
			$(puzzelStuk).css({left:links,
							   top:top});
							   
			//voeg toe aan foto
			$('#foto').append(puzzelStuk);
			
			//verwijder puzzelStuk uit puzzel
			puzzel.splice(index,1);
		}
	}
	
	// zet aantal clicks,.... (alle spans) op 0 -> zie function score()
	aantalClicks = 0;
	score();
	
}
//verwerk aangeklikte div-tag
function verwerk(obj)
{
	//wordt op geselecteerd object geklikt -> verwijder klasse
	if($(obj).hasClass('geselecteerd'))
	{
		$(obj).removeClass('geselecteerd');
	}
	else
	{
		$(obj).addClass('geselecteerd');
		if($('.geselecteerd').length == 2)
		{
			verwissel();
		}
	}
}
//verwissel de twee geselecteerde div-tags in DOM
function verwissel()
{
	aantalClicks += 2;
	
	//haal geselecteerde objecten uit de pagina
	var puzzel_1 = $('.geselecteerd').eq(0);
	var puzzel_2 = $('.geselecteerd').eq(1);
	
	//vraag index op van geselecteerde elementen in #foto
	var puzzel_1_ndx = $(puzzel_1).index();
	var puzzel_2_ndx = $(puzzel_2).index();
	
	// maak puzzelstukken los van DOM met detach()
	puzzel_1 = $(puzzel_1).detach();
	puzzel_2 = $(puzzel_2).detach();
	
	// vraag left en top op van beide elementen
	var links_1 = $(puzzel_1).css('left');
	var boven_1 = $(puzzel_1).css('top');
	
	var links_2 = $(puzzel_2).css('left');
	var boven_2 = $(puzzel_2).css('top');
	
	//ken left en top toe van ander element
	$(puzzel_1).css({left:links_2,
					 top:boven_2});
					 
	$(puzzel_2).css({left:links_1,
					 top:boven_1});
					 
	// elementen terug toevoegen 
	if (puzzel_1_ndx == 0)
	{
		$('#foto div').eq(0).before(puzzel_2);
	}
	else
	{
		puzzel_1_ndx--;
		$('#foto div').eq(puzzel_1_ndx).after(puzzel_2);
	}
	puzzel_2_ndx--;
	$('#foto div').eq(puzzel_2_ndx).after(puzzel_1);
	
	deselecteer();
	score();
}
//deselecteer de geselecteerde div-tags
function deselecteer()
{
	$('.geselecteerd').removeClass('geselecteerd');
}
// zoek aantal correcte puzzelstukken
//update cpanel
function score()
{
	//toon aantal clicks
	$('#clicks').text(aantalClicks);
	
	//bereken aantal correcte puzzelstukken
	var aantalCorrect = 0;
	
	$('#foto div').each(function(index,value) {
		if($(this).attr('id') == 'puzzel_' + index)
		{
			aantalCorrect++;
		}	
	});
	
	$('#correct').text(aantalCorrect);
	var aantalFout = levels[level]['rij']*levels[level]['kolom']-aantalCorrect;
	$('#fout').text(aantalFout);		
}