var table;

function preload() {
	table = loadTable('alabasterPD.csv', 'csv', 'header');
}


function setup() {
	createCanvas(1000, 900);
}

function draw(){
	clear()
	var total_Rape = table.getColumn('Totals.Violent.Rape');
	var total_Murder = table.getColumn('Totals.Violent.Murder');
	var total_Assault = table.getColumn('Totals.Violent.Assault');
    
    textSize(20)
    fill(0,0,0)
	text("Alabaster P.D. Crime", 310, 50)

	fill(0,0,0)
	textSize(10)
	text("# of Assaults",110,530)
	text("# of Rapes",315,330)
	text("# of Murders",515,130)
	
	line(100,100, 100, 700); 
	line(700,700, 700, 100);
	line(295, 700, 295, 100);
	line(305, 700, 305, 100);
	line(495,700, 495, 100);
	line(505,700, 505, 100);

	line(100,700,700, 700);
	line(700,100,100, 100);
	line(700,305,100, 305);
	line(700,295,100, 295);
	line(700,495,100, 495);
	line(700,505,100, 505);

	//ASSAULT
	for(var x = 0; x < table.getRowCount(); x++){
		var tick1 = map(total_Assault[x], min(total_Assault), max(total_Assault), 100,295)
		line(tick1,700, tick1,705)
		line(tick1,95, tick1,100)
		//print(years[x])
		var tick2 = map(total_Assault[x], min(total_Assault), max(total_Assault), 700,505)
		line(95,tick2, 100,tick2)
		line(700,tick2, 705,tick2)

		if(total_Assault[x] == min(total_Assault) || total_Assault[x] == max(total_Assault)){
			textSize(10)
			text(total_Assault[x], tick1-5, 720)
			text(total_Assault[x], 80, tick2+5)

		}
	}

	for(var x = 0; x < table.getRowCount(); x++){
		var x1 = map(total_Assault[x], min(total_Assault), max(total_Assault), 100, 295)
		var y1 = map(total_Assault[x], min(total_Assault), max(total_Assault), 700,505)
		fill(204, 51, 51)
		ellipse(x1, y1, 5, 5);
		info(x1,y1,x,total_Assault,"Assault", total_Assault, "Assault")

		x1 = map(total_Assault[x], min(total_Assault), max(total_Assault), 100, 295)
		y1 = map(total_Rape[x], min(total_Rape), max(total_Rape), 495,305)
		fill(204, 51, 51)
		ellipse(x1, y1, 5, 5);
		info(x1,y1,x,total_Assault,"Assault", total_Rape, "Rape")

		x1 = map(total_Assault[x], min(total_Assault), max(total_Assault), 100, 295)
		y1 = map(total_Murder[x], min(total_Murder), max(total_Murder), 295,100)
		fill(204, 51, 51)
		ellipse(x1, y1, 5, 5);
		info(x1,y1,x,total_Assault,"Assault", total_Murder, "Murder")

	}

	//RAPE
	for(var x = 0; x < table.getRowCount(); x++){
		var tick1 = map(total_Rape[x], min(total_Rape), max(total_Rape), 305, 495)
		line(700,tick1, 705,tick1)
		line(95,tick1, 100,tick1)

		var tick2 = map(total_Rape[x], min(total_Rape), max(total_Rape), 305, 495)
		line(tick2,700, tick2,705)
		line(tick2,95, tick2,100)

		if(total_Rape[x] == min(total_Rape) || total_Rape[x] == max(total_Rape)){
			textSize(10)
			fill(0,0,0)
			text(total_Rape[x], tick1-3, 85)
			text(total_Rape[x], 710, tick2+5)

		}

	}

	for(var x = 0; x < table.getRowCount(); x++){
		var x1 = map(total_Rape[x], min(total_Rape), max(total_Rape), 305, 495)
		var y1 = map(total_Assault[x], min(total_Assault), max(total_Assault), 700,505)
		fill(204, 51, 51)
		ellipse(x1, y1, 5, 5);
		info(x1,y1,x,total_Rape,"Rape", total_Assault, "Assault")

		x1 = map(total_Rape[x], min(total_Rape), max(total_Rape), 305, 495)
		y1 = map(total_Rape[x], min(total_Rape), max(total_Rape), 495,305)
		fill(204, 51, 51)
		ellipse(x1, y1, 5, 5);
		info(x1,y1,x,total_Rape,"Rape", total_Rape, "Rape")

		x1 = map(total_Rape[x], min(total_Rape), max(total_Rape), 305, 495)
		y1 = map(total_Murder[x], min(total_Murder), max(total_Murder), 295,100)
		fill(204, 51, 51)
		ellipse(x1, y1, 5, 5);
		info(x1,y1,x,total_Rape,"Rape", total_Murder, "Murder")

	}

	//MURDER
	for(var x = 0; x < table.getRowCount(); x++){
		var tick1 = map(total_Murder[x], min(total_Murder), max(total_Murder), 505,700)
		line(tick1,700, tick1,705)
		line(tick1,95, tick1,100)
		var tick2 = map(total_Murder[x], min(total_Murder), max(total_Murder), 100,295)
		line(700,tick2, 705,tick2)
		line(95,tick2, 100,tick2)

		if(total_Murder[x] == min(total_Murder) || total_Murder[x] == max(total_Murder)){
			textSize(10)
			fill(0,0,0)
			text(total_Murder[x], tick1-5, 720)
			text(total_Murder[x], 85, tick2+5)
		}
		
	}


	for(var x = 0; x < table.getRowCount(); x++){
		var x1 = map(total_Murder[x], min(total_Murder), max(total_Murder), 505, 700)
		var y1 = map(total_Assault[x], min(total_Assault), max(total_Assault), 700,505)
		fill(204, 51, 51)
		ellipse(x1, y1, 5, 5);
		info(x1,y1,x,total_Murder,"Murder", total_Assault, "Assault")

		x1 = map(total_Murder[x], min(total_Murder), max(total_Murder), 505, 700)
		y1 = map(total_Rape[x], min(total_Rape), max(total_Rape), 495,305)
		fill(204, 51, 51)
		ellipse(x1, y1, 5, 5);
		info(x1,y1,x,total_Murder,"Murder", total_Rape, "Rape")

		x1 = map(total_Murder[x], min(total_Murder), max(total_Murder), 505, 700)
		y1 = map(total_Murder[x], min(total_Murder), max(total_Murder), 295,100)
		fill(204, 51, 51)
		ellipse(x1, y1, 5, 5);
		info(x1,y1,x,total_Murder,"Murder", total_Murder, "Murder")

	}
}

function info(x1, y1, x, xaxis, xname, yaxis, yname){
	if(mouseX < x1+2 && mouseX > x1-2 && mouseY < y1+2 && mouseY > y1-2){
		fill(0,0,0)
		textSize(10);
		text("   # of " + xname + ": " + xaxis[x], mouseX, mouseY+10)
		text("   # of " + yname + ": " + yaxis[x], mouseX, mouseY)
	}
}