
//*********************************************************************
//
// WorldClock Module
//
// This module gets the Standard London time by using (getUTC) and
// calculate the relative time of different places (HK, NY, Tokyo & Vancouver)
//
//*********************************************************************


//*********************************************************************
//
// Mod method
//
// This method mains to calculate the mod of a over b
//
//*********************************************************************

function Mod(a, b) { return a-Math.floor(a/b)*b }

//*********************************************************************
//
// ZeroFront method
//
// This method get a number and return and standard number format by
// putting a zero in front of single number.
//
//*********************************************************************

function ZeroFront(a) { return ((a < 10) ? "0" : "") + a}

// clock variables

var clockid = new Array()
var clockidVan = new Array()
var clockidHK = new Array()
var clockidNY = new Array()
var clockidTY = new Array()

// Standard time difference

var LondonDiff = 1
var VancouverDiff = -7
var HKDiff = 8
var NYDiff = -4
var TYDiff = 9

// clock id for updating and refering

var clockidoutside=new Array()
var i_clock=-1

// Acquire Greenwich Mean Time. GMT

var GMT_Time = new Date()
var minutes=GMT_Time.getUTCMinutes()
var seconds=GMT_Time.getUTCSeconds()
// Standardize the London time


minutes = ZeroFront(minutes)
seconds = ZeroFront(seconds)

// Calculate the other time using standard time difference

var LondonTime = ZeroFront(Mod(GMT_Time.getUTCHours() + LondonDiff, 24))+":"+ minutes
var VancouverTime = ZeroFront(Mod(GMT_Time.getUTCHours() + VancouverDiff, 24))+":"+ minutes
var HKTime = ZeroFront(Mod(GMT_Time.getUTCHours() + HKDiff, 24))+":"+ minutes
var NYTime = ZeroFront(Mod(GMT_Time.getUTCHours() + NYDiff, 24))+":"+ minutes
var TYTime = ZeroFront(Mod(GMT_Time.getUTCHours() + TYDiff, 24))+":"+ minutes

//*********************************************************************
//
// clockon method
//
// This is a background method keep running for updating the the clocks.
//
//*********************************************************************

function clockon() {

	LondonTime= new Date()
	hours=LondonTime.getUTCHours()
	minutes=LondonTime.getUTCMinutes()
	seconds=LondonTime.getUTCSeconds()

	hours = ZeroFront(hours)
	minutes = ZeroFront(minutes)
	seconds = ZeroFront(seconds)

	LondonTime = ZeroFront(Mod(GMT_Time.getUTCHours()  + LondonDiff, 24))+":"+ minutes
	VancouverTime = ZeroFront(Mod(GMT_Time.getUTCHours()  + VancouverDiff, 24))+":"+ minutes
	HKTime = ZeroFront(Mod(GMT_Time.getUTCHours()  + HKDiff, 24))+":"+ minutes
	NYTime =  ZeroFront(Mod(GMT_Time.getUTCHours()  + NYDiff, 24))+":"+ minutes
        TYTime = ZeroFront(Mod(GMT_Time.getUTCHours()  + TYDiff, 24))+":"+ minutes

	if (document.all) {
		for (i=0;i<=clockid.length-1;i++) {
			var thisclock=eval(clockid[i])
			thisclock.innerHTML=LondonTime

			var thisclockVan=eval(clockidVan[i])
			thisclockVan.innerHTML=VancouverTime

			var thisclockHK=eval(clockidHK[i])
			thisclockHK.innerHTML=HKTime

			var thisclockNY=eval(clockidNY[i])
			thisclockNY.innerHTML=NYTime

			var thisclockTY=eval(clockidTY[i])
			thisclockTY.innerHTML=TYTime
        	}
	}

	if (document.getElementById) {
		for (i=0;i<=clockid.length-1;i++) {
			document.getElementById(clockid[i]).innerHTML="<font style='font-family:Arial, Helvetica, sans-serif'>&nbsp;<b>伦敦</b> :&nbsp;&nbsp;" + LondonTime+"</font>"+"&nbsp;&nbsp;|"

			document.getElementById(clockidVan[i]).innerHTML="<font style='font-family:Arial, Helvetica, sans-serif'>&nbsp; <b>温哥华</b> :&nbsp;&nbsp;"+ VancouverTime+"</font>"+"&nbsp;&nbsp;|"

			document.getElementById(clockidHK[i]).innerHTML="<font style='font-family:Arial, Helvetica, sans-serif'>&nbsp; <b>香港</b> : &nbsp;&nbsp;"+ HKTime+"</font>"+"&nbsp;&nbsp;|"

			document.getElementById(clockidNY[i]).innerHTML="<font style='font-family:Arial, Helvetica, sans-serif'>&nbsp; <b>纽约</b> : &nbsp;&nbsp;"+ NYTime+"</font>"+"&nbsp;&nbsp;|"

			document.getElementById(clockidTY[i]).innerHTML="<font style='font-family:Arial, Helvetica, sans-serif'>&nbsp; <b>东京</b> : &nbsp;&nbsp;"+ TYTime+"</font>"+"&nbsp;&nbsp;"
		}
	}

	var timer=setTimeout("clockon()",60000)
}


//*********************************************************************
//
// writeclock method
//
// This method output the clock as html format. Using the array to store each
// different clock output and output it out.
//
//*********************************************************************

function writeclock() {
	i_clock++
	if (document.all || document.getElementById || document.layers) {
		clockid[i_clock]="clock"+i_clock
		clockidVan[i_clock]="clockV"+i_clock
		clockidHK[i_clock]="clockHK"+i_clock
		clockidNY[i_clock]="clockNY"+i_clock
		clockidTY[i_clock]="clockTY"+i_clock

		document.write("<span id='"+clockid[i_clock]+"' style='position:relative'>伦敦 "+LondonTime+"</span> ")
		document.write("<span id='"+clockidVan[i_clock]+"' style='position:relative'> &nbsp; 温哥华 "+VancouverTime+"</span> ")
		document.write("<span id='"+clockidHK[i_clock]+"' style='position:relative'> &nbsp; 香港 "+HKTime+"</span>  ")
		document.write("<span id='"+clockidNY[i_clock]+"' style='position:relative'> &nbsp; 纽约 "+NYTime+"</span>  ")
		document.write("<span id='"+clockidTY[i_clock]+"' style='position:relative'> &nbsp; 东京 "+TYTime+"</span>")
	}
}

// Calling the function.
window.onload=clockon
writeclock()
