editorDiv = null;
editorColors = [ "#0ff", "#fff", "#777", "#008", "#c82" ];
editorData = [];

mouseButtons = 0;

function onTupleClick(evt)
{
	onMouseEvent(evt);
	if (mouseButtons != 1)
		return true;

	var pos = this.posId;
	level[pos] = 0;
	this.style.backgroundColor = editorColors[1];
	
	return false;
}

function onMouseEvent(evt)
{
	if (!evt)
		mouseButtons = window.event.button;
	else
	{
		var mask = evt.button == 0 ? 1 : 2;
		if (evt.type == "mousedown")
			mouseButtons |= mask;
		else if (evt.type == "mouseup")
			mouseButtons &= ~mask;
	}
	return true;
}

oldPlayerPos = 0;
function editorUpdate()
{
	var t = Math.floor(new Date().getTime() / 125);
	editorData[oldPlayerPos].style.backgroundColor = editorColors[level[oldPlayerPos] + 1];
	oldPlayerPos = Math.floor(playerX) + Math.floor(playerY) * cLevelSize;
	editorData[oldPlayerPos].style.backgroundColor = (t & 1) ? editorColors[level[oldPlayerPos] + 1] : "#f00";
}

function toggleEditor()
{
	if (!editorDiv)
	{
		var oldfunc = document.body.onmouseup || function() { return true; };
		document.body.onmouseup = function(evt) { return onMouseEvent(evt) && oldfunc(evt); }
	
		editorDiv = document.getElementById("_editor");
//		table = document.createElement("table");
//		table.style.display = "table";
//		table.style.borderCollapse = "collapse";
		var table = editorDiv.firstChild;
		table.onmousedown = function(evt) { onMouseEvent(evt); return false; }
		
		var tbody = document.createElement("tbody");
		table.appendChild(tbody);
		
		for (y = 0; y < cLevelSize; y++)
		{
			var row = document.createElement("tr");
			tbody.appendChild(row);
			
			for (x = 0; x < cLevelSize; x++)
			{
				var pos = x + y * cLevelSize;
				
				tuple = document.createElement("td");
				row.appendChild(tuple);
				tuple.style.border = "solid 1px black";
				tuple.style.backgroundColor = editorColors[level[pos] + 1];
				tuple.style.width="8px";
				tuple.style.height="8px";
				tuple.posId = pos;
				tuple.onmousemove = onTupleClick;
				tuple.onmousedown = onTupleClick;
				
				editorData[pos] = tuple;
			}
		}
		
		editorDiv.appendChild(table);
		editorDiv.style.display = "block";
	}
	else if (editorDiv.style.display == "none")
		editorDiv.style.display = "block";
	else
		editorDiv.style.display = "none";
}