var dayWords = new Array(7)
dayWords[ 0 ] = "Sunday";
dayWords[ 1 ] = "Monday";
dayWords[ 2 ] = "Tuesday";
dayWords[ 3 ] = "Wednesday";
dayWords[ 4 ] = "Thursday";
dayWords[ 5 ] = "Friday";
dayWords[ 6 ] = "Saturday";

var hourWords = new Array(12)
hourWords[ 0 ] = "Twelve";
hourWords[ 1 ] = "One";
hourWords[ 2 ] = "Two";
hourWords[ 3 ] = "Three";
hourWords[ 4 ] = "Four";
hourWords[ 5 ] = "Five";
hourWords[ 6 ] = "Six";
hourWords[ 7 ] = "Seven";
hourWords[ 8 ] = "Eight";
hourWords[ 9 ] = "Nine";
hourWords[ 10 ] = "Ten";
hourWords[ 11 ] = "Eleven";
hourWords[ 12 ] = "Twelve";

function startClock()
{
	var fuzziness = document.getElementById( 'fuzziness' );
	var clock = document.getElementById( 'fuzzyClock' );
	var hours;
	var minutes;
	var seconds;
	var day;
	var displayHours;
	var displayTime;
	
	var AMorPM = "am"
	var theTime = new Date();
	var hours = theTime.getHours();
	var minutes = theTime.getMinutes();
	var seconds = theTime.getSeconds();
	var day = theTime.getDay();
	
	displayHours = hours;
	
	if( hours >= 12 )
	{
		AMorPM = "pm"
	}
	if( hours > 12 )
	{
		displayHours -= 12;
	}
	if( hours == 0 )
	{
		displayHours = 12;
	}
	fuzzinessOption = fuzziness.options[ fuzziness.selectedIndex ].value;
	
	if( fuzzinessOption == 0 )
	{
		//*********least fuzzy
		if( minutes <= 2 )
			displayTime = hourWords[ displayHours ] + " o'clock";
		else if( minutes >= 3 && minutes <= 7 )
			displayTime = "Five past " + hourWords[ displayHours ];
		else if( minutes >= 8 && minutes <= 12 )
			displayTime = "Ten past " + hourWords[ displayHours ];
		else if( minutes >= 13 && minutes <= 17 )
			displayTime = "Quarter past " + hourWords[ displayHours ];
		else if( minutes >= 18 && minutes <= 22 )
			displayTime = "Twenty past " + hourWords[ displayHours ];
		else if( minutes >= 23 && minutes <= 27 )
			displayTime = "Twenty-five past " + hourWords[ displayHours ];
		else if( minutes >= 28 && minutes <= 32 )
			displayTime = "Half past " + hourWords[ displayHours ];
		else if( minutes >= 33 && minutes <= 37 )
			displayTime = "Twenty-five until " + (hourWords[ (displayHours + 1) % 12 ]);
		else if( minutes >= 38 && minutes <= 42 )
			displayTime = "Twenty until " + (hourWords[ (displayHours + 1) % 12 ]);
		else if( minutes >= 43 && minutes <= 47 )
			displayTime = "Quarter until " + (hourWords[ (displayHours + 1) % 12 ]);
		else if( minutes >= 48 && minutes <= 52 )
			displayTime = "Ten until " + (hourWords[ (displayHours + 1) % 12 ]);
		else if( minutes >= 53 && minutes <= 57 )
			displayTime = "Five until " + (hourWords[ (displayHours + 1) % 12 ]);
		else if( minutes >= 58 )
			displayTime = (hourWords[ (displayHours + 1) % 12 ]) + " o'clock";
		else
			displayTime = "ERROR";
	}
	else if( fuzzinessOption == 1 )
	{

		//*********somewhat fuzzy
		if( minutes <= 5 )
			displayTime = hourWords[ displayHours ] + " o'clock";
		else if( minutes >= 6 && minutes <= 15 )
			displayTime = "Ten past " + hourWords[ displayHours ];
		else if( minutes >= 16 && minutes <= 25 )
			displayTime = "Twenty past " + hourWords[ displayHours ];
		else if( minutes >= 26 && minutes <= 35 )
			displayTime = "Half past " + hourWords[ displayHours ];
		else if( minutes >= 36 && minutes <= 45 )
			displayTime = "Twenty until " + (hourWords[ (displayHours + 1) % 12 ]);
		else if( minutes >= 46 && minutes <= 55 )
			displayTime = "Ten until " + (hourWords[ (displayHours + 1) % 12 ]);
		else if( minutes >= 56 )
			displayTime = (hourWords[ (displayHours + 1) % 12 ]) + " o'clock";
		else
			displayTime = "ERROR";
	}
	else if( fuzzinessOption == 2 )
	{
		//*********kinda fuzzy
		if( minutes <= 7 )
			displayTime = hourWords[ displayHours ] + " o'clock";
		else if( minutes >= 8 && minutes <= 22 )
			displayTime = "Quarter past " + hourWords[ displayHours ];
		else if( minutes >= 23 && minutes <= 37 )
			displayTime = "Half past " + hourWords[ displayHours ];
		else if( minutes >= 38 && minutes <= 52 )
			displayTime = "Quarter until " + (hourWords[ (displayHours + 1) % 12 ]);
		else if( minutes >= 53 )
			displayTime = (hourWords[ (displayHours + 1) % 12 ]) + " o'clock";
		else
			displayTime = "ERROR";
	}
	else if( fuzzinessOption == 3 )
	{
		//*********pretty fuzzy
		if( minutes <= 14 )
			displayTime = hourWords[ displayHours ] + " o'clock";
		else if( minutes >= 15 && minutes <= 44 )
			displayTime = "Half past " + hourWords[ displayHours ];
		else if( minutes >= 45 )
			displayTime = (hourWords[ (displayHours + 1) % 12 ]) + " o'clock";
		else
			displayTime = "ERROR";
	}
	else if( fuzzinessOption == 4 )
	{
		//*********very fuzzy
		if( minutes <= 30 )
			displayTime = hourWords[ displayHours ] + " o'clock";
		else if( minutes >= 31 )
			displayTime = (hourWords[ (displayHours + 1) % 12 ]) + " o'clock";
		else
			displayTime = "ERROR";
	}
	else if( fuzzinessOption == 5 )
	{
		//*********extremely fuzzy
		if( hours < 5 )
			displayTime = "Early Morning";
		else if( hours >= 5 && hours <= 8 )
			displayTime = "Morning";
		else if( hours >= 9 && hours <= 10 )
			displayTime = "Almost Noon";
		else if( hours >= 11 && hours <= 12 )
			displayTime = "Noon";
		else if( hours >= 13 && hours <= 15 )
			displayTime = "Afternoon";
		else if( hours >= 16 && hours <= 18 )
			displayTime = "Evening";
		else if( hours >= 19 && hours <= 21 )
			displayTime = "Late Evening";
		else if( hours >= 22 )
			displayTime = "Night";
		else
			displayTime = "ERROR";
	}
	else if( fuzzinessOption == 6 )
	{
		//*********absolute fuzziness
		if( day == 1 || day == 2 )
			displayTime = "Start of Week";
		else if( day == 3 || day == 4 )
			displayTime = "Middle of Week";
		else if( day == 5 )
			displayTime = "End of Week";
		else if( day == 6 || day == 0 )
			displayTime = "Weekend";
		else
			displayTime = "ERROR";
	}
	clock.innerHTML = displayTime;
	
	setTimeout( "startClock()", 1000 );
}
