var width = 1
var cC = 1
var eraser = false
var max = 0
var globalCount = 1
var dw = 1
var setWidth = 0

changeCC()
changeLw()
printGrid()

// WARNING! DISGUSTING SUBROUTINES BELOW - ENTER AT YOUR OWN RISK...

function printGrid() {

max = 200

document.write("<center><p>Hint: click to draw an insane line</p><table>");
	
		for (var y = max;y >= 0; y--)
		{
		
			document.write("<tr id=" + y + ">");
			for (var x = 0; x<=max; x++) 
			{
				var cellId = x + "," + y // Every cell is given co-ordinates e.g. id = "2,3" is (2,3) in table row 2 and is  along. (0,0) is the origin (not (1,1))
				document.write("<td onMouseDown=lulz('"+cellId+"') onMouseOver=paint('"+cellId+"') id='"+cellId+"'></td>");
			}
			
			document.write("</tr>");
		}

	document.write("</table>")

}

function blacken(cellId, rur) {
	
	globalCount = (globalCount+2)%255
	
	var coord = cellId.split(",")
	var x = parseInt(coord[0])*parseInt(255/max)
	var y = parseInt(coord[1])*parseInt(255/max)
	var n2 = parseInt((x+y)/2)
	var n1 = (parseInt(x*y/cC))%255
	var a = 0
	
	if (x%2==0) {a = n1}
	if (x%3==0&&y%5==0) {a = n2}
	else {a = globalCount}
	
	if (rur=="line") {
	
		document.getElementById(cellId).style.backgroundColor = "rgb("+x+", "+a+", "+y+")"
	
	}
	else {document.getElementById(cellId).style.backgroundColor = "rgb("+n1+", "+n2+", "+n1+")"}

	if (globalCount < 255) {globalCount += cC}
	else {globalCount = globalCount%255}
	

}

function paint(cellId) {

	var coord = cellId.split(",")
	var x = coord[0]
	var y = coord[1]
	
	x = parseInt(x)
	y = parseInt(y)
	
	if (width==0||width==setWidth) {dw *= -1}
	width += dw
		
	blacken((x + "," + y), "line")
	
	x-= Math.round(width/3); y-= Math.round(width/3)
	
	for (var a=x;a<=(x+(width-1));a++)	{
		
		for (var b=y;b<=(y+(width-1));b++)	{
		
		if (eraser) {document.getElementById(a + "," + b).style.backgroundColor = "white"}
		else {blacken((a + "," + b), "line")}
		
		}
	}
}

function changeCC() {

cC = Math.round(prompt('Colour coefficient?'))

if (cC < 0) {cC = cC*-1}
if (cC == 0) {cC = 1}

}

function changeLw() {

width = Math.round(prompt('Line width?'))
setWidth = width
}

function toggleBrush() {

if (eraser==true) {eraser = false; document.getElementById("brushButton").innerText = "Switch to eraser"}
else {eraser=true; document.getElementById("brushButton").innerText = "Switch back to brush"}
}

function clearAll() {

for (var y = max;y >= 0; y--)
		{
			for (var x = 0; x <=max; x++) 
			{
				document.getElementById(x + "," + y).style.backgroundColor = "white"	
			}
			
		}

}

function fillAll() {

for (var y = max;y >= 0; y--)
		{
			for (var x = 0; x <=max; x++) 
			{
				blacken(x + "," + y);	
			}
			
		}

}

function lulz(someId) {
var coord = someId.split(",")
var x = coord[0]
var y = coord[1]

x = parseInt(x)
y = parseInt(y)
var dx = 1
var dy = 1
var x1 = x
var y1 = y
var count = 0
	while (count<=100000)
	{
		if ((x1+setWidth)==max|(x1+setWidth)>max|(x1-setWidth)==0|(x1-setWidth)<0){dx = -1.5*dx;}
		if ((y1+setWidth)==max|(y1+setWidth)>max|(y1-setWidth)==0|(y1-setWidth)<0){dy = -dy;}
		x1 = Math.round(x1)
		y1 = Math.round(y1)
		paint(x1 + "," + y1)
		y1+=dy
		x1+=dx
		count++
	}

}



// Add in different colour behaviours