// -------------------------------------------------------------------------
//
// Name:        speeding.js
// Author:      Paul Belanger
// Created:     3/8/2009 5:15 PM
// Description: The formulas for figuring out speed/time/distance
//
// -------------------------------------------------------------------------


function calcSpeed()
{
	clearFields();
	var dist = document.getElementById("Distance").value;
	var time = document.getElementById("Time").value;

	if ( checkInt( dist, time ) )
		return;

	var adjustment = 0;

        if ( checkLights() )
        {
		var lights = document.getElementById("Lights").value;
		var seconds = document.getElementById("Seconds").value;

		if ( checkInt( lights, seconds ) )
			return;

		var adjustment = ( ( lights * seconds ) / 60);

		document.getElementById("timeWasted").innerHTML = cleanTime( Math.round( adjustment ) );
        }

	var speed = Math.round( ( dist / ( time - adjustment ) ) * 60);
	if ( speed < 0 )
		speed = 0;

	document.getElementById("Speed").value = speed;
	document.getElementById("thisTime").innerHTML = cleanTime( time );
	document.getElementById("indSpeed").innerHTML = "<--";
}


function calcTime()
{
	clearFields();
	var dist = document.getElementById("Distance").value;
	var speed = document.getElementById("Speed").value;

	if ( checkInt( dist, speed ) )
		return;

	var adjustment = 0;

        if ( checkLights() )
        {
		var lights = document.getElementById("Lights").value;
		var seconds = document.getElementById("Seconds").value;

		if ( checkInt( lights, seconds ) )
			return;

		var adjustment = ( (lights * seconds) / 60);

		document.getElementById("timeWasted").innerHTML = cleanTime( Math.round( adjustment ) );
        }

	var time = Math.round( ( ( dist / speed ) * 60 ) + adjustment );
	if ( time < 0 )
		time = 0;

	document.getElementById("Time").value = time;
	document.getElementById("thisTime").innerHTML = cleanTime( time );
	document.getElementById("indTime").innerHTML = "<--";
}


function checkInt( num1, num2 )
{
	if ( !parseInt( num1, 10 )  ||  !parseInt( num2, 10 ) )
	{
		document.getElementById("thisTime").innerHTML = "Error";
		return true;
	}

	return false;
}


function clearFields()
{
	document.getElementById("thisSpeed").innerHTML = "";
	document.getElementById("thisTime").innerHTML = "";
	document.getElementById("timeWasted").innerHTML = "";
	document.getElementById("indTime").innerHTML = "";
	document.getElementById("indSpeed").innerHTML = "";
}

function cleanTime( time )
{
	var newtime = time;
	var days = 0;
	var hours = 0;
	var minutes = 0;

	// days
	if ( newtime > 1439 )
	{
		days = Math.floor( newtime / 1440 );
		newtime %= 1440;
	}

	// hours
	if ( newtime > 59 )
	{
		hours = Math.floor( newtime / 60 );
		minutes = newtime % 60;
	}
	else
	{
		minutes = newtime;
	}

	return (days > 9 ? "" : "0") + days +":"+ (hours > 9 ? "" : "0") + hours +":"+ (minutes > 9 ? "" : "0") + minutes;
}


function checkLights()
{
	if ( document.getElementById("useLights").checked )
		return true;

	document.getElementById("timeWasted").innerHTML = "";
	return false;
}


