(function () {

	var initTime = 2; // in seconds

	var ctx, canvas;
	
	var trafienie = true;
	var pierwsza_k = -1;
	var druga_k;
	
	var pulpit = [ ];
	
	var dopasowanie = false;
	

	var time_indx = 0; 
	var indx = 0; 
	var licznik = 53;


	var czas_gry = null;
	var progress = null;
	

	var pary = [
			
				["img/01.png","img/01a.png"],
				["img/02.png","img/02a.png"],
				["img/03.png","img/03a.png"],
				["img/04.png","img/04a.png"],
				["img/05.png","img/05a.png"],
				["img/06.png","img/06a.png"]
		];
	
	
	function Karta(sx, sy, swidth, sheight, img, info, ckli) {
		this.sx = sx;
		this.sy = sy;
		this.swidth = swidth;
		this.sheight = sheight;
		this.info = info;
		this.img = img;
		this.draw = drawback;
		this.drawall = drawa;
		this.clk = ckli;
	}


	function rysuj() {
	
		var i;
		
		var cx = 20;
		var cy = 20;
		var margin = 30;
		var cardwidth = 280;
		var cardheight = 100;
		var karta_a;
		var karta_b;
		var pica;
		var picb;
		

			for ( i = 0; i < pary.length; i++ ) {
				
				if (cx > 850) {
				  cx = 20;
				  cy = cy + 2*cardheight + 2*margin;
				}

				pica = new Image();
				pica.src = pary[i][0];
				karta_a = new Karta(cx, cy, cardwidth, cardheight, pica, i, false);
				pulpit.push(karta_a);


				picb = new Image();
				picb.src = pary[i][1];
				karta_b = new Karta(cx, cy + margin + cardheight, cardwidth, cardheight, picb, i, false);
				pulpit.push(karta_b);

				cx = cx + cardwidth + margin;

				karta_b.draw();
				karta_a.draw();
				
			}
	}

	function losuj() {
	
		var i, k;
		var temp_info;
		var temp_img;
		var dl = pulpit.length;
		var nt;

			for (nt = 0; nt < dl * 3 ; nt++)
			{  
				
				i = Math.floor(Math.random()*dl); k = Math.floor(Math.random()*dl);

				temp_info = pulpit[i].info; temp_img = pulpit[i].img;

				pulpit[i].info = pulpit[k].info;
				pulpit[i].img = pulpit[k].img;

				pulpit[k].info = temp_info;
				pulpit[k].img = temp_img;
			
			}
	}

	function drawback() {
	
		if (time_indx === 1) {
		   ctx.clearRect(this.sx,this.sy,this.swidth,this.sheight);
		}
		var backcardimg = new Image();
		backcardimg.src = "img/revers.png";
		ctx.drawImage(backcardimg,this.sx,this.sy,this.swidth,this.sheight); 

	}

	function drawa() {
	
		if (time_indx === 1) {ctx.clearRect(this.sx,this.sy,this.swidth,this.sheight);}
		ctx.drawImage(this.img,this.sx,this.sy,this.swidth,this.sheight); 

	}

	function wybierz(ev) {

	
		if (time_indx === 0) { 
			sTime();
		} 
	
		var czas_odwrocenia;
		var out;
		var mx;
		var my;


		if (ev.layerX ||  ev.layerX == 0) { 
				mx= ev.layerX;
				my = ev.layerY;
		} 
	
		else if (ev.offsetX || ev.offsetX == 0) { 
				mx = ev.offsetX;
				my = ev.offsetY;
		}

		var i,
			karta;

		for (i=0; i<pulpit.length; i++)
		{
			karta = pulpit[i];
				if (karta.sx >= 0)  

				if ((mx>karta.sx)&&(mx<karta.sx+karta.swidth)&&(my>karta.sy)&&(my<karta.sy+karta.sheight)) {
					
					if ((trafienie) || (i!=pierwsza_k)) {
						break;
					}
				}
		}

		if (i<pulpit.length) { 

			if (trafienie) {
				pierwsza_k = i;
				trafienie = false;
				ctx.clearRect(karta.sx,karta.sy,karta.swidth,karta.sheight);
				ctx.drawImage(karta.img,karta.sx,karta.sy,karta.swidth,karta.sheight); 
				time_indx = 1;
			}

			else {
				druga_k = i;
				ctx.clearRect(karta.sx,karta.sy,karta.swidth,karta.sheight);
				ctx.drawImage(karta.img,karta.sx,karta.sy,karta.swidth,karta.sheight); 
					licznik--;
					document.tablescore.score.value = licznik;
				if ( karta.info == pulpit[pierwsza_k].info ) {
					dopasowanie = true;
					if (karta.clk == false)
					{ indx++; 
					  karta.clk = true;
					  pulpit[pierwsza_k].clk =true;

					}
		
				}

				else {
					dopasowanie = false;
				}
			
				trafienie = true;
				czas_odwrocenia = setTimeout(odwroc,600);
			}
		}

	}

function odwroc() {
		
		if (!dopasowanie) {

			pulpit[pierwsza_k].draw();
			pulpit[druga_k].draw();

		}

		else {
			ctx.clearRect(pulpit[druga_k].sx,pulpit[druga_k].sy,pulpit[druga_k].swidth,pulpit[druga_k].sheight);
				ctx.drawImage(pulpit[druga_k].img,pulpit[druga_k].sx,pulpit[druga_k].sy,pulpit[druga_k].swidth,pulpit[druga_k].sheight);
			
				ctx.clearRect(pulpit[pierwsza_k].sx,pulpit[pierwsza_k].sy,pulpit[pierwsza_k].swidth,pulpit[pierwsza_k].sheight);
			ctx.drawImage(pulpit[pierwsza_k].img, pulpit[pierwsza_k].sx,pulpit[pierwsza_k].sy,pulpit[pierwsza_k].swidth,pulpit[pierwsza_k].sheight);
			
		}
		
		if (indx === 6) {
			canvas.removeEventListener('click',wybierz,false);  
			ctx.clearRect(0,0,ctx.canvas.width,ctx.canvas.height); 
			wygrana();
			cTime();
		}
	}
	
$(function createProgress() {$("#progressbar").progressbar({ value: 0 });});
    
	function sTime() {
		setTimeout(uTime, 10000);
	}

    function uTime() {
	
			progress = $("#progressbar").progressbar("option","value");
				if (progress < 100) {
					$("#progressbar").progressbar("option", "value", progress + 10);
					czas_gry = setTimeout(uTime, 12000);
				}

				if (progress == 100 ) {
					canvas.removeEventListener('click',wybierz,false);  
					ctx.clearRect(0,0,ctx.canvas.width,ctx.canvas.height); 
					przegrana();
				}

	}

function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}

	function cTime() {
		clearTimeout(czas_gry);
		time_indx = 0;
		progress = 0;
		indx = 0;
		trafienie = true;
		pierwsza_k = -1;
		pulpit = [ ];
		dopasowanie = false;

		$("#progressbar").progressbar({ value: 0 });
	}

	function wygrana() {
		$("#msg").html('<span>Gratulacje! Gra ukończona. Poprawne rozwiązanie:</span> <br> <img src="img/results.png" alt="Poprawne rozwiązanie" height="500" width="500"> ').fadeIn(1000);
	}	 

	function przegrana() {
		$("#msg").html('<span1>Ooops! Niestety czas się skończył. Poprawne rozwiązanie to:</span1> <br> <img src="img/results.png" alt="Poprawne rozwiązanie" height="500" width="500"> ').fadeIn(1000);
	}



	function wyswietl()
	{
		for (i=0; i<pulpit.length; i++)
		{
			karta = pulpit[i];
			ctx.clearRect(karta.sx,karta.sy,karta.swidth,karta.sheight);
			ctx.drawImage(karta.img,karta.sx,karta.sy,karta.swidth,karta.sheight); 
		}

		setTimeout(ukryj, initTime * 1000);
	}

	function ukryj()
	{
		for (i=0; i<pulpit.length; i++)
		{
			pulpit[i].drawall();
			pulpit[i].draw();
		}
	}

	function init() {
		
		ctx = document.getElementById('canvas').getContext('2d'); 
		canvas = document.getElementById('canvas');
		canvas.addEventListener('click',wybierz,false);
		
			$("#msg").empty();
		rysuj();
		losuj();
		wyswietl();
    }


$('#tablescore input[type="button"]').click(function () { this.form.reset(); cTime(); init(); });

}());
