COLS = 16;
ROWS = 31;
BRICK_SIZE = 32;

currentBrick = 0;
currentImage = 0;
isMouseDown = false;

createEditor = function()
{
	console.log('Rozpoczynam tworzenie edytora.');
	$('#editor-grid').width(COLS*BRICK_SIZE);
	for(var r = 0; r < ROWS; r++)
	{
		// creating row 
		row = $("<tr></tr>").addClass("editor-row");
		for(var c = 0; c < COLS; c++)
		{
			// creating cell 
			cell = $("<td></td>").addClass("editor-cell");
			cell.css('background-image', "url(/editor/bricks/robboblkc_1.png)")
			cell.data('val', 0).data('img', 1).data('x',c).data('y',r);
			cell.mousedown(function(){
				isMouseDown = true;
				fillCell(this, currentBrick);
			});
			cell.mouseup(function(){
				isMouseDown = false;
			});
			cell.mouseover(function(){
				if(isMouseDown)
					fillCell(this, currentBrick, currentImage);
			});
			cell.click(function(){
				fillCell(this, currentBrick, currentImage);
			});
			// check if most on the right cell
			if(c == COLS - 1) cell.addClass('most-right-cell');
			// check if bottom cell
			if(r == ROWS - 1) cell.addClass('most-bottom-cell');
			row.append(cell);
		}
		$('#editor-grid').append(row);
	}		
	fillBarWithBricks();
};

clearLevel = function()
{
	for(var r = 0; r < ROWS; r++)
		for(var c = 0; c < COLS; c++)
			setCellValue(c,r,0);
	console.log('clean done');
}

fillCell = function(cell, val, img)
{
	$(cell).css('background-image', "url(/editor/bricks/robboblkc_"+img+".png)")
	$(cell).data('val', val);
};

getCell = function(x, y)
{
	return $('#editor-grid .editor-row:eq('+y+') .editor-cell:eq('+x+')');
};

getCellValue = function(x, y)
{
	return $('#editor-grid .editor-row:eq('+y+') .editor-cell:eq('+x+')').data('val');
};

setCell = function(x, y, el)
{
	$('#editor-grid .editor-row:eq('+y+') .editor-cell:eq('+x+')').replaceWith(el);
};

setCellValue = function(x, y, val)
{
	cell = $('#editor-grid .editor-row:eq('+y+') .editor-cell:eq('+x+')');
	cell.data('val', val);
	if(val == 0) img = 1;
	else
	{
		img = 3;
		for(i=0;i<bricksBarArray.length;i++)
			if(bricksBarArray[i][0] == val)
			{
				img = bricksBarArray[i][1];
				break;
			}
	}
	cell.css('background-image', "url(/editor/bricks/robboblkc_"+img+".png)")	
};

var bricksBarArray = [
	// nr klocka, nr obrazka, nazwa
	[0, 1, "PUSTE POLE"],
	[3, 3, "ŚCIANA"],
	[30, 32, "NIC"],
	[2, 2, "KRATKA"],
	[4, 4, "ŚRÓBKA"],
	
	[6, 6, "NABOJE"],
	[12, 41, "KLUCZ"],
	[13, 47, "DRZWI"],
	[14, 9, "ZIEMIA"],
	[19, 54, "KRATKA ŚLIZG"],
	
	[20, 52, "BOMBA"],
	[27, 31, "NIESPODZIANKA"],
	[28, 38, "MAGNEZ LEWO"],
	[29, 37, "MAGNEZ PRAWO"],
	[49, 53, "ŻYCIE"],
	
	[7, 63, "PTAK W LEWO"],
	[8, 61, "PTAK W PRAWO"],
	[10, 62, "PTAK W GÓRĘ"],
	[11, 60, "PTAK W DÓŁ"],
	[69, 29, "OCZY"],

	[21, 45, "DZIAŁKO W LEWO"],
	[22, 43, "W PRAWO"],
	[23, 42, "W GÓRĘ"],
	[24, 46, "W DÓŁ"],
	[33, 70, "DZIAŁKO OBROTOWE"],

	[35, 74, "DZIAŁKO CIĄGŁE LEWO"],
	[36, 72, "DZIAŁKO CIĄGŁE PRAWO"],
	[37, 71, "DZIAŁKO CIĄGŁE GÓRA"],
	[38, 73, "DZIAŁKO CIĄGŁE DÓŁ"],
	[34, 66, "DZIAŁKO CHODZĄCE W LEWO"],

	[39, 78, "BLASTER W LEWO"],
	[40, 76, "BLASTER W PRAWO"],
	[41, 75, "BLASTER GÓRA"],
	[42, 77, "BLASTER DÓŁ"],
	[63, 67, "DZIAŁKO CHODZACE W PRAWO"],

	[25, 64, "POTWOREK PRAWOSTRONNY"],
	[26, 65, "POTWOREK LEWOSTRONNY"],
	[31, 69, "FIRE PTAK LEWO"],
	[32, 68, "FIRE PTAK PRAWO"],
	[0, 1, ""],

	[43, 79, "LUSTRO 1"],
	[44, 80, "LUSTRO 2"],
	[45, 81, "LUSTRO 3"],
	[46, 82, "LUSTRO 4"],
	[47, 83, "LUSTRO 5"],
	[48, 84, "LUSTRO 6"],
	[64, 85, "LUSTRO 7"],
	[65, 86, "LUSTRO 8"],
	[66, 87, "LUSTRO 9"],
	[67, 88, "LUSTRO 10"],

	[5, 5, "STATEK"],	
	[1, 15, "ROBBO W LEWO"]
];

fillBarWithBricks = function()
{
	$('#bricks-bar').width(5*BRICK_SIZE);
	row = false;
	for(var i=0; i < bricksBarArray.length; i++)
	{
		c = i % 5;
		r = i / 5;
		if(!row || c == 0)
		{
			row = $("<tr></tr>").addClass("editor-row");
			if(row)
				$('#bricks-bar').append(row);
		}

		b = bricksBarArray[i];
		// creating cell 
		cell = $("<td></td>").addClass("editor-cell");
		cell.css('background-image', "url(/editor/bricks/robboblkc_"+b[1]+".png)")
		cell.data("val", b[0]);
		cell.data("img", b[1]);
		cell.attr("title", b[2]);
		cell.click(function(){
			currentBrick = $(this).data('val');
			currentImage = $(this).data('img');
		});		
		row.append(cell);		
	}
/*
	for(var r = 0; r < 11; r++)
	{
		// creating row 
		row = $("<tr></tr>").addClass("editor-row");
		for(var c = 0; c < 5; c++)
		{
			// creating cell 
			cell = $("<td></td>").addClass("editor-cell");
			cell.css('background-image', "url(/editor/bricks/robboblkc_"+(c+1+r*5)+".png)")
			cell.data("val", c+r*5);
			cell.click(function(){
				currentBrick = $(this).data('val');
			});
			// check if most on the right cell
			if(c == COLS - 1) cell.addClass('most-right-cell');
			// check if bottom cell
			if(r == ROWS - 1) cell.addClass('most-bottom-cell');
			row.append(cell);
		}
		$('#bricks-bar').append(row);
	}
*/
};

test = function()
{
	var lvl = $('#level-id').val();
	if(lvl == "")
	{
		alert('first save your level')
		return;
	}
	window.location = "/public/testlevel/"+lvl;
}

save = function()
{
	var pass = $('#level-pass').val();
	if(!pass || pass == "")
	{
		pass = prompt("Please enter a password to protect your level.","")
		if(!pass)
		{
			alert("Level can't be saved without password! Please enter password then try again.");
			return;
		}
	}
	$('#save-link').hide();
	$('#save-link-ajax').show();
	postData = "";
	var i = 0;
	for(var r = 0; r < ROWS; r++)
		for(var c = 0; c < COLS; c++)
			postData += getCellValue(c,r)+",";
	postData = postData.substr(0, postData.length-1);
	var lvl = $('#level-id').val();
	var name = $('#level-name').val();
	$.post('/public/savelevel/'+lvl, {'data':postData, 'name':name, 'pass':pass}, function(a,b){
		$('#save-link').show();
		$('#save-link-ajax').hide();
		if(isNaN(a))
		{
			alert(a);
		}
		else
		{
			$('#level-id').val(a);
			alert('save ok - id='+a);
		}
	})
};

load = function()
{
	$('#load-link').hide();
	$('#load-link-ajax').show();
	var lvl = $('#level-id').val();
	console.log("level = "+lvl);
	$.post('/public/loadlevel/'+lvl, {'level':lvl}, function(a,b){
		var arr = a['data'].split(',');
//		console.log(a['data']);
		var i = 0;
		for(var r = 0; r < ROWS; r++)
			for(var c = 0; c < COLS; c++)
			{
				setCellValue(c,r,(arr[i]*1));
//				cell = $('#editor-grid tr:eq('+r+') td:eq('+c+')');
//				cell.css('background-image', "url(/editor/bricks/robboblkc_"+((arr[i]*1)+1)+".png)");
				i++;
			}
		$('#load-link').show();
		$('#load-link-ajax').hide();
	}, 'json');
};
