﻿var beatCount = 0;
var startTime = null;
var endTime = null;

document.onkeydown = keyPressed;

function id(name)
{
	return document.getElementById(name);
}

function resetBPMFinder()
{
	beatCount = 0;
	startTime = null;
	endTime = null;
	displayValues();
}

function displayValues()
{
	if(startTime == null)
	{
		id("startTime").innerHTML = "?";
		id("endTime").innerHTML = "?";
	}
	else
	{
		id("startTime").innerHTML = displayTime(startTime);
		id("endTime").innerHTML = displayTime(endTime);
	}
	id("beatCount").innerHTML = beatCount;
	if(beatCount > 1)
	{
		var miliseconds = endTime - startTime;
		id("bpmValue").innerHTML = beatCount * 1000 * 60 / miliseconds;
	}
	else
	{
		id("bpmValue").innerHTML = "?";
	}
}

function displayTime(t)
{
	return addLeadingZero(t.getHours()) + ":" + addLeadingZero(t.getMinutes()) + ":" + addLeadingZero(t.getSeconds());
}

function addLeadingZero(n)
{
	if(n >= 10)
	{
		return n + "";
	}
	else
	{
		return "0" + n;
	}
}

function keyPressed(e)
{
	if(window.event)
	{
		e = window.event;
	}
	if(e.keyCode != 82) // r key not pressed
	{
		beatTapped();
	}
	else
	{
		resetBPMFinder();
	}
}

function beatTapped()
{
	beatCount++;
	if(beatCount == 1)
	{
		startTime = endTime = new Date();
	}
	else
	{
		endTime = new Date();
	}
	displayValues();
}
