<!-- ------------------------ global variables ------------------------>
var sclock = document.clock.st.value;
<!--sclock="Fri Apr 9 11:00:00 1999";-->
arb = new Array("Jan","Feb","Mar","Apr","May","June","July","Aug","Sep","Oct","Nov","Dec");
IE4    = (document.all)? ".style" : "";


//document.clock.refreshpage.value = 180 + " seconds";
var rDate = new Date();
var tr = rDate.getTime() + 181*1000;

<!-- obtain time difference between server's and client's clock-->
var sDate0 = new Date( sclock );
var cDate0 = new Date();
var ts0 =  sDate0.getTime();	<!-- server's initial ms time -->
var tc0 =  cDate0.getTime();	<!-- client's initial ms time 1900 +-->
var bla = sDate0.getDate();
var blaa = cDate0.getMonth();
var bx = arb[blaa];

var blaaa =  document.clock.yr.value; //sDate0.getYear();
var dt = ts0 - tc0;

<!-- NY market open time on server's clock -->
var oDate = new Date();
oDate.setTime(ts0);	  	<!-- set it to the server's time -->
oDate.setHours( 8 );
oDate.setMinutes( 00 );
oDate.setSeconds( 0 );
var tdOpen = oDate.getTime();

<!-- NY market close time on server's clock -->
var lDate = new Date();
lDate.setTime(ts0);	  	<!-- set it to the server's time -->
lDate.setHours( 17 );
lDate.setMinutes( 15 );
lDate.setSeconds( 0 );
var tdClose = lDate.getTime();

<!-- A/E market open time on server's clock -->
var oaDate = new Date();
oaDate.setTime(ts0);	  	<!-- set it to the server's time -->
oaDate.setHours( 15 );
oaDate.setMinutes( 15 );
oaDate.setSeconds( 0 );
var tdOpena = oaDate.getTime();

<!-- A/E market close time on server's clock -->
var laDate = new Date();
laDate.setTime(ts0);	  	<!-- set it to the server's time -->
laDate.setHours( 17 );
laDate.setMinutes( 15 );
laDate.setSeconds( 0 );
var tdClosea = laDate.getTime();

<!-- set weekend open time for NY market: close at Fri-17:15, open at Mon-8:00 -->
var swday = sDate0.getDay();

if( swday == 5 && (ts0 > tdClose) ){ oDate.setDate( oDate.getDate() + 3 ); }
else if( swday == 6) { oDate.setDate( oDate.getDate() + 2 ); }
else if( swday == 0) { oDate.setDate( oDate.getDate() + 1 ); }
tdOpen = oDate.getTime();

<!-- set weekend open time for A/E market: close at Fri-17:15, open at Sun-18:00 -->
if( swday == 5 && (ts0 > tdClosea) ){ oaDate.setDate( oaDate.getDate() + 2 ); }
else if( swday == 6)
{
	oaDate.setDate( oaDate.getDate() + 1 );
	tdClosea = 0; <!-- skip the 1st if in the function-->
}
tdOpena = oaDate.getTime();

<!-- ------------------------- function ------------------------------- -->
function updateClock()
{
	<!-- timer -->
	var cDate = new Date();
	var tc = cDate.getTime();	<!-- client (local) ms time -->
	var ts = tc + dt;		<!-- convert to server's ms time -->
	var scDate = new Date();	<!-- simulated server's -->
	scDate.setTime( ts );		<!-- "Date" object -->

    	var hours = scDate.getHours();
	var minutes = scDate.getMinutes();
	var seconds = scDate.getSeconds();
	<!--var timeValue = "" + ((hours >12) ? hours -12 :hours);-->
	var timeValue = "" + hours;
	<!--if (timeValue == "0") timeValue = 12;-->
	timeValue += ((minutes < 10) ? ":0" : ":") + minutes;
	timeValue += ((seconds < 10) ? ":0" : ":") + seconds;
	<!--timeValue += (hours >= 12) ? " P.M." : " A.M.";-->
	//timeValue += " EST";
	document.clock.face.value =bx+ " " +bla+ " " +blaaa+ ", " + "Current New York Time: " +timeValue;

	<!-- NY countdown -->
	if( ts <= tdOpen )
	{
		tCount = Math.floor( (tdOpen - ts)/1000 );

		rmd = tCount % 3600;
		chours = (tCount-rmd)/3600;

		cseconds = rmd % 60;
		cminutes = (rmd - cseconds) /60;

                var uh = "" + ( (chours == 1) ? " hour, " : " hours, " );
                var ctimeValue = "" + chours + uh;
		var um = "" + ( (cminutes == 1) ? " minute and " : " minutes and " );
		ctimeValue += ((cminutes < 10) ? "0" : "") + cminutes + um;
		var us = "" + ( (cseconds == 1) ? " second" : " seconds" );
		ctimeValue += ((cseconds < 10) ? "0" : "") + cseconds + us;

                eval('document.clock.count'+IE4+'.color="red"');
		document.clock.count.value = "NY Market will open in " + ctimeValue;
	}

	else if( ts <= tdClose )
	{
		tCount = Math.floor( (tdClose - ts)/1000 );

		rmd = tCount % 3600;
		chours = (tCount-rmd)/3600;

		cseconds = rmd % 60;
		cminutes = (rmd - cseconds) /60;

		var uh = "" + ( (chours == 1) ? " hour, " : " hours, " );

		var ctimeValue = "" + chours + uh;
		var um = "" + ( (cminutes == 1) ? " minute and " : " minutes and " );
		ctimeValue += ((cminutes < 10) ? "0" : "") + cminutes + um;
		var us = "" + ( (cseconds == 1) ? " second" : " seconds" );
		ctimeValue += ((cseconds < 10) ? "0" : "") + cseconds + us;
                eval('document.clock.count'+IE4+'.color="black"');
		document.clock.count.value = "NY Market will close in " + ctimeValue;
	}
	else
	{
		tCount = 24*3600 - Math.floor( (ts - tdOpen)/1000 );

		rmd = tCount % 3600;
		chours = (tCount-rmd)/3600;
		cseconds = rmd % 60;
		cminutes = (rmd - cseconds) /60;
		var uh = "" + ( (chours == 1) ? " hour, " : " hours, " );
		var ctimeValue = "" + chours + uh;
		var um = "" + ( (cminutes == 1) ? " minute and " : " minutes and " );
		ctimeValue += ((cminutes < 10) ? "0" : "") + cminutes + um;
		var us = "" + ( (cseconds == 1) ? " second" : " seconds" );
		ctimeValue += ((cseconds < 10) ? "0" : "") + cseconds + us;
                eval('document.clock.count'+IE4+'.color="red"');
		document.clock.count.value = "NY Market will open in " + ctimeValue;
	}

	<!-- A/E countdown -->
	if( ts <= tdClosea )
	{
		tCount = Math.floor( (tdClosea - ts)/1000 );

		rmd = tCount % 3600;
		chours = (tCount-rmd)/3600;

		cseconds = rmd % 60;
		cminutes = (rmd - cseconds) /60;

		var uh = "" + ( (chours == 1) ? " hour, " : " hours, " );
		var ctimeValue = "" + chours + uh;
		var um = "" + ( (cminutes == 1) ? " minute and " : " minutes and " );
		ctimeValue += ((cminutes < 10) ? "0" : "") + cminutes + um;
		var us = "" + ( (cseconds == 1) ? " second" : " seconds" );
		ctimeValue += ((cseconds < 10) ? "0" : "") + cseconds + us;
                eval('document.clock.counta'+IE4+'.color="black"');
		document.clock.counta.value = "Asia/Europe Market will close in " + ctimeValue;
	}

	else if( ts <= tdOpena )
	{
		tCount = Math.floor( (tdOpena - ts)/1000 );

		rmd = tCount % 3600;
		chours = (tCount-rmd)/3600;

		cseconds = rmd % 60;
		cminutes = (rmd - cseconds) /60;

		var uh = "" + ( (chours == 1) ? " hour, " : " hours, " );
		var ctimeValue = "" + chours + uh;
		var um = "" + ( (cminutes == 1) ? " minute and " : " minutes and " );
		ctimeValue += ((cminutes < 10) ? "0" : "") + cminutes + um;
		var us = "" + ( (cseconds == 1) ? " second" : " seconds" );
		ctimeValue += ((cseconds < 10) ? "0" : "") + cseconds + us;
                eval('document.clock.counta'+IE4+'.color="red"');
		document.clock.counta.value = "Asia/Europe Market will open in " + ctimeValue;
	}
	else
	{

		tCount = 24*3600 - Math.floor( (ts - tdClosea)/1000 );

		rmd = tCount % 3600;
		chours = (tCount-rmd)/3600;

		cseconds = rmd % 60;
		cminutes = (rmd - cseconds) /60;

		var uh = "" + ( (chours == 1) ? " hour, " : " hours, " );
		var ctimeValue = "" + chours + uh;
		var um = "" + ( (cminutes == 1) ? " minute and " : " minutes and " );
		ctimeValue += ((cminutes < 10) ? "0" : "") + cminutes + um;
		var us = "" + ( (cseconds == 1) ? " second" : " seconds" );
		ctimeValue += ((cseconds < 10) ? "0" : "") + cseconds + us;
                eval('document.clock.counta'+IE4+'.color="green"');
		document.clock.counta.value = "Asia/Europe Market will close in " + ctimeValue;
	}
 <!--reset the refresh countdown-->
 	rtd = Math.floor( (tr - tc)/1000 );
	if(  rtd <= 0 ) rtd = 0;
	var rtdValue = rtd + ((rtd == 1)?" second" : " seconds" );
	//document.clock.refreshpage.value = rtdValue;
	setTimeout("updateClock()",500);


}
