/* Begin: Time functions */

var timerID;
var DaysOfWeek=["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sun"];

// Get the difference in time between the local machine and web server, so that we can use the web server clock rather than the local clock
function getServerClock(serverYear, serverMonth, serverDay, serverHour, serverMinute, serverSecond)	{

//get local machine date : getDate() 0-31, getMonth() 0-11, getFullYear() 4 digit year, getHours() 0-23, getMinutes() 0-59, getSeconds() 0-59 
	var localDate = new Date();
	var localYear = localDate.getFullYear();
	var localMonth = localDate.getMonth();
	var localDay = localDate.getDate();
	var localHour = localDate.getHours();
	var localMinute = localDate.getMinutes();
	var localSecond = localDate.getSeconds();

var tempLocDate = new Date(localYear, localMonth, localDay, localHour, localMinute, localSecond);
var tempServDate = new Date(serverYear, serverMonth-1, serverDay, serverHour, serverMinute, serverSecond);

var clockOffset = (tempServDate - tempLocDate); //offset in milliseconds between local time and server time

return clockOffset;
}


function tzone(tz, os, ds) {
	this.ct = new Date(0) ;		// datetime
	this.tz = tz ;		// code
	this.os = os ;		// GMT offset
	this.ds = ds ;		// has daylight savings
}




function UpdateClocks(offset) {
	var ct = new Array(
		new tzone('London',  0, 1),
		new tzone('New York', -5, 1),
		new tzone('Tokyo', +9, 0)
	) ;

	var clockOffset = offset;

	var dt = new Date() ;	// [GMT] time according to machine clock
	
	dt.setMilliseconds(clockOffset); //modify time to use server clock	
	
	var startDST = new Date(dt.getFullYear(), 3, 1) ; //1st April
	while (startDST.getDay() != 0)
		startDST.setDate(startDST.getDate() + 1) ;

	var endDST = new Date(dt.getFullYear(), 10, 30) ; //30th Nov. Changed from (09, 31)  to (10, 30) by HP  on 13th Dec 2006, because NY ends DST on 4th Nov 2007
	while (endDST.getDay() != 0)
		endDST.setDate(endDST.getDate() - 1) ;

	var ds_active ;		// DS currently active
	if (startDST < dt && dt < endDST)
		ds_active = 1 ;
	else
		ds_active = 0 ;

	// Adjust each clock offset if that clock has DS and in DS.
	for(n=0 ; n<ct.length ; n++)
		if (ct[n].ds == 1 && ds_active == 1) ct[n].os++ ;

	// compensate time zones
	gmdt = new Date() ;
	gmdt.setMilliseconds(clockOffset); //modify time to use server clock		
	for (n=0 ; n<ct.length ; n++)
		ct[n].ct = new Date(gmdt.getTime() + ct[n].os * 3600 * 1000) ;

	document.getElementById("Clock0").innerHTML = ClockString(ct[0].ct, ct[0].tz);
	document.getElementById("Clock1").innerHTML = ClockString(ct[1].ct, ct[1].tz);
	document.getElementById("Clock2").innerHTML = ClockString(ct[2].ct, ct[2].tz);

	timerID = window.setTimeout(function(){UpdateClocks(clockOffset);}, 1001) ;
}

function ClockString(dt, location) {
	var stemp, ampm ;
	var dt_year = dt.getUTCFullYear() ;
	var dt_month = dt.getUTCMonth() + 1 ;
	var dt_day = dt.getUTCDate() ;
	var dt_hour = dt.getUTCHours() ;
	var dt_minute = dt.getUTCMinutes() ;
	var dt_second = dt.getUTCSeconds() ;

	dt_year = dt_year.toString() ;
	if (0 <= dt_hour && dt_hour < 10) {
		dt_hour = '0' + dt_hour;
	}

	if (dt_minute < 10)
		dt_minute = '0' + dt_minute ;

	if (dt_second < 10)
		dt_second = '0' + dt_second ;

	stemp = '<span class="time">' + dt_hour + ":" + dt_minute + ':' + dt_second + '</span>';
	stemp = stemp + '<span class="timeZone"><br /><strong>' + location + '</strong><br />';
	//stemp = stemp + DaysOfWeek[dt.getDay()] + ' ' + dt_day + '/' + dt_month + '</span>';
	return stemp ;
}
/* END: Time functions */