// This page and script Copyright © 2002, Brian Freeman

// ************** BEGIN user definitions

var digitPath = "http://www.intensecash.com/clock/";

// image size, if zero then values are not used

var digitWidth = 0;
var digitHeight = 0;

// am/pm or 24 hour?
var ampmMode = false;

// show time?
var showTime = true;
// show date?
var showDate = true;

// string of printable digits
var digitHash = new makeArray("0","1","2","3","4","5","6","7","8","9",":","a","p","/");

// corresponding file name prefixes
//var fileNameHash = new makeArray("zero","one","two","three","four","five","six","seven","eight","nine","slash","am","pm","colon");
var fileNameHash = new makeArray("0","1","2","3","4","5","6","7","8","9","colon","am","pm","slash");

// ************** END user definitions

var NSsound = navigator.plugins && navigator.plugins["LiveAudio"];
var IEsound = navigator.plugins && document.all;
var audioEnabled = NSsound || IEsound;

var soundError = false;
var soundFlag = false;

function handleError() // the error-handling function
{
	start();
	return true; // required
}

window.onerror = handleError;

function emptyArray(n) // array declaration without data
{
	this.length = n;
}

function makeArray() // array declaration with data
{
	var args = makeArray.arguments;
	for(var i = 0; i < args.length; i++)
	{
		this[i] = args[i];
	}
	this.length = args.length;
}

function padZeros(str)
{
	while(str.length < 2)
		str = "0" + str; // duh!
	return str;
}

// hash array that finds a filename for a digit
var xrefHash = new emptyArray(digitHash.length);

for(var i = 0;i < digitHash.length;i++)
{
	xrefHash[digitHash[i]] = fileNameHash[i];
}

function imageArray(n)
{
	for(var i = 0;i < n;i++)
	{
		this[digitHash[i]] = new Image();
	}
	this.length = n;
}

var digitArray = new imageArray(digitHash.length);

function loadDigits()
{
	for(var i = 0;i < digitHash.length;i++)
	{
		var fn = digitPath + "/" + fileNameHash[i] + ".gif";
		digitArray[digitHash[i]].src = fn;
	}
}



/**
*	updates the time, pass in the date
*/
function updateDate(d)
{
	var month = d.getMonth()+1;
	if( month < 10 )
		monthStr = "0"+month;	
	else
		monthStr = ""+month;

	dateStr = monthStr +"/"+ d.getDate() +"/"+ d.getFullYear();
	for(var i = 0; i<dateStr.length; i++)
	{
		var d = dateStr.substring(i,i+1);
		var imageIndex = "dateDigit" + i;
		if(document.images[imageIndex].src != digitArray[d].src)
		{
			// only reload if required
			document.images[imageIndex].src = digitArray[d].src;
		}
	}

}


/**
*	updates the time, pass in the date
*/
function updateTime(d)
{
	var hrstr = d.getHours();

	var ampm = "";

	if(ampmMode)
	{
		ampm = "a";
		if(hrstr >= 12)
		{ 
			// AM/PM conversion
			hrstr -= 12;
			ampm = "p";
		}

		if(hrstr == 0) { // There are no zeros in am/pm time
			hrstr = 12;
		}
	}

	hrstr = padZeros("" + hrstr);

	var minstr = padZeros("" + d.getMinutes());
	var secstr = padZeros("" + d.getSeconds());

	var timeStr = hrstr + ":" + minstr + ":" + secstr + ampm;

	for(var i = 0;i < timeStr.length;i++)
	{
		var d = timeStr.substring(i,i+1);
		var imageIndex = "timeDigit" + i;
		if(document.images[imageIndex].src != digitArray[d].src)
		{
			// only reload if required
			document.images[imageIndex].src = digitArray[d].src;
		}
	}

}

function show()
{
	setTimeout("show();",1000);

	d = new Date(); // visitor's time

	updateDate(d);
	updateTime(d);


	//document.tickSound.play();
}

// Netscape requires this structure to be populated as it is constructed,
// to avoid some rather bad side-effects

function setupDisp() // this is called from the page body
{
	var dateInitStr;
	var timeInitStr;

	var d = new Date();
	var month = d.getMonth()+1;
	if( month < 10 )
		monthStr = "0"+month;	
	else
		monthStr = ""+month;

	dateInitStr = monthStr +"/"+ d.getDate() +"/"+ d.getFullYear();

	// var dateInitStr = "01/01/2002";

	var hrstr = d.getHours();

	var ampm = "";

	if(ampmMode)
	{
		ampm = "a";
		if(hrstr >= 12)
		{ 
			// AM/PM conversion
			hrstr -= 12;
			ampm = "p";
		}

		if(hrstr == 0) { // There are no zeros in am/pm time
			hrstr = 12;
		}
	}

	hrstr = padZeros("" + hrstr);

	var minstr = padZeros("" + d.getMinutes());
	var secstr = padZeros("" + d.getSeconds());

	timeInitStr = hrstr + ":" + minstr + ":" + secstr + ampm;
	
	//timeInitStr = "12:00:00" + ((ampmMode)?"a":"");

	var wh = "";
	if((digitWidth > 0) && (digitHeight > 0))
	{
		wh = "WIDTH=" + digitWidth + " HEIGHT=" + digitHeight;
	}

	//display the date
	document.write("<td><img src=clock/todayis.gif>");
	for(i=0; i < dateInitStr.length; i++)
	{
		var fn = xrefHash[dateInitStr.substring(i,i+1)]; // hash to filename
		//var src = digitPath + "/" + fn + ".gif";
		var src = digitPath + "/" + fn + ".gif";
		// display date
		document.write("<IMG SRC=\"" + src + "\" NAME=\"dateDigit" + i + "\"" + " " + wh + ">");
	}
	document.write("</td><td>&nbsp;&nbsp;&nbsp;</td>");

	//display the time
	document.write("<td>");
	for(i=0; i < timeInitStr.length; i++)
	{
		var fn = xrefHash[timeInitStr.substring(i,i+1)]; // hash to filename
		//var src = digitPath + "/" + fn + ".gif";
		var src = digitPath + "/" + fn + ".gif";
		// display time
		document.write("<IMG SRC=\"" + src + "\" NAME=\"timeDigit" + i + "\"" + " " + wh + ">");
	}
	document.write("</td>");
}

function start()
{
	loadDigits();
	show();
}

//<BODY onload="start();" BGCOLOR="#0" TEXT="#000000" LINK="#0000ff" VLINK="#800080" ALINK="#ff0000">

with(document)
{		
   writeln("<TABLE bgcolor='#464655' border='0' cellspacing='0' cellpadding='0' bordercolorlight='#80a0ff' bordercolordark='#1055a0'>");
   writeln("<TR>");
   // Row 1 Column 1
   writeln("<TD>");
   writeln("<TABLE BORDER=0 cellpadding=0 cellspacing=0>");
   writeln("<TR>");
   // create digit table dynamically
   setupDisp();
				
   writeln("</TR></TABLE>");
   writeln("</TD></TR>");
   writeln("</TABLE>");
}

start();