var dg0 = new Image(12, 20);
var dg1 = new Image(12, 20);
var dg2 = new Image(12, 20);
var dg3 = new Image(12, 20);
var dg4 = new Image(12, 20);
var dg5 = new Image(12, 20);
var dg6 = new Image(12, 20);
var dg7 = new Image(12, 20);
var dg8 = new Image(12, 20);
var dg9 = new Image(12, 20);
var dgam = new Image(12, 20);
var dgpm = new Image(12, 20);
var dgblank = new Image(12, 20);
dg0.src = imagePath+'dg0.gif';
dg1.src = imagePath+'dg1.gif';
dg2.src = imagePath+'dg2.gif';
dg3.src = imagePath+'dg3.gif';
dg4.src = imagePath+'dg4.gif';
dg5.src = imagePath+'dg5.gif';
dg6.src = imagePath+'dg6.gif';
dg7.src = imagePath+'dg7.gif';
dg8.src = imagePath+'dg8.gif';
dg9.src = imagePath+'dg9.gif';
dgam.src = imagePath+'dgam.gif';
dgpm.src = imagePath+'dgpm.gif';
dgblank.src = imagePath+'space.gif';

var prevDate = 0;
var count = 0;
var timerID = null;
var timerRunning = false;
var diff = 0;

function stopclock() {
	if(timerRunning) {
		clearInterval(timerID);
		timerRunning = false;
	}
}
function showtime() {
	var isUpdate = false;
	var curDate = new Date();
	if(--count<0 || Math.abs(curDate.getTime() - prevDate) > 1200) {
		count = 600;
		isUpdate = true;
	}
	prevDate = curDate.getTime();
	curDate.setTime(prevDate+diff);
	
	//alert("showtime(): "+isUpdate);
	
	var seconds = curDate.getSeconds();
	var curNo = seconds % 10;
	updateClock(document.images['second2'], curNo);
	if(curNo==0 || isUpdate) {
		curNo = seconds < 10?0:Math.floor(seconds/10);
		updateClock(document.images['second1'], curNo);
		if(curNo==0 || isUpdate) {
			var minutes = curDate.getMinutes();	
			curNo = minutes % 10;
			updateClock(document.images['minute2'], curNo);
			if(curNo==0 || isUpdate) {
				curNo = minutes < 10?0:Math.floor(minutes/10);
				updateClock(document.images['minute1'], curNo);
				if(curNo==0 || isUpdate) {
					var hours = curDate.getHours() % 12; //0-23 -> 0-11
					if(hours==0) {
						hours=12;
					}
					curNo = hours % 10;
					updateClock(document.images['hour2'], curNo);
					if(curNo==0 || hours==1 || isUpdate) { //change 10 digit place
						curNo = hours < 10?-1:Math.floor(hours/10);
						updateClock(document.images['hour1'], curNo);
					}
					if(hours==12 || isUpdate) { //change am/pm
						document.images["ampm"].src = (curDate.getHours() < 12) ? dgam.src : dgpm.src;
						var date = curDate.getDate();
						curNo = date%10;
						updateClock(document.images['day2'], curNo);
						if(curNo==0 || date==1 || isUpdate){
							curNo = (date < 10)?-1:Math.floor(date/10);
							updateClock(document.images['day1'], curNo);
							if(date==1 || isUpdate) {
								var month = curDate.getMonth()+1;
								curNo = month%10;
								updateClock(document.images['month2'], curNo);
								if(curNo == 0 || month==1 || isUpdate) {
									curNo = (month < 10)?-1:Math.floor(month/10);
									updateClock(document.images['month1'], curNo);
									if(month==1 || isUpdate) {
										var year = curDate.getFullYear();
										curNo = year%10;
										updateClock(document.images['year4'], curNo);
										if(curNo==0 || isUpdate) {
											curNo = year < 10?-1:Math.floor(year/10)%10;
											updateClock(document.images['year3'], curNo);
											if(curNo==0 || isUpdate) {
												curNo = year < 100?-1:Math.floor(year/100)%10;
												updateClock(document.images['year2'], curNo);
												if(curNo==0 || isUpdate) {
													curNo = year < 1000?-1:Math.floor(year/1000);
													updateClock(document.images['year1'], curNo);
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}
}
function initClock(dayOfMonth,month,year,hourOfDay,minute,second) {
    var currentdate=new Date();
    var systemdate=new Date();
    diff=0;
    systemdate.setDate(dayOfMonth);
    systemdate.setMonth(month);
    systemdate.setYear(year);
    systemdate.setHours(hourOfDay);
    systemdate.setMinutes(minute);
    systemdate.setSeconds(second);  
    diff=systemdate.getTime()-currentdate.getTime();
	stopclock();
	timerRunning = true;
	timerID = setInterval("showtime()",1000);
}
function updateClock(curModObj, curNo) {
	if(curModObj!=null) {
		switch (curNo) {
			case 0:
				curModObj.src = dg0.src;
				break;
			case 1:
				curModObj.src = dg1.src;
				break;
			case 2:
				curModObj.src = dg2.src;
				break;
			case 3:
				curModObj.src = dg3.src;
				break;
			case 4:
				curModObj.src = dg4.src;
				break;
			case 5:
				curModObj.src = dg5.src;
				break;
			case 6:
				curModObj.src = dg6.src;
				break;
			case 7:
				curModObj.src = dg7.src;
				break;
			case 8:
				curModObj.src = dg8.src;
				break;
			case 9:
				curModObj.src = dg9.src;
				break;
			case -1:
				curModObj.src = dgblank.src;
				break;
		}
	}
}
