// 引数arg_yearで指定された年のサマータイム開始時刻を内部表現で返す。
//
function GetDstStart(arg_year) {
	var dst_start = new Date(arg_year, 3, 1, 2, 0, 0); // 第2引数の3は、4月を表す。
	for (var i = 1; i <= 7; i++) {
		dst_start.setDate(i);
		if (0 == dst_start.getDay()) {
			break;
		}
	}
	return dst_start.getTime();
}

// 引数arg_yearで指定された年のサマータイム終了時刻を内部表現で返す。
//
function GetDstEnd(arg_year) {
	var dst_end = new Date(arg_year, 9, 31, 1, 0, 0);
	for (var i = 31; i > 24; i--) {
		dst_end.setDate(i);
		if (0 == dst_end.getDay()) {
			break;
		}
	}
	return dst_end.getTime();
}


// まず今が何年か調べます。
today = new Date();
year = today.getYear();
if (year < 100) {
	year += 1900;
}
// ここまでで、yearに今年の年(1998など)が入っています。

var tz_offset = today.getTimezoneOffset();



pos_start = GetDstStart(year);
pos_end = GetDstEnd(year);

tz_jp = 9 * 60; // GMT+9
tz_ny = -4 * 60; // GMT-5
tz_la = -7 * 60; // GMT-8
tz_mi = 2 * 60; // GMT+1
tz_pa = 2 * 60; // GMT+1
tz_lo = 1 * 60; // GMT0
tz_ho = 8 * 60; // GMT+8
tz_sa = -2 * 60; // GMT-3


function nowat(now_t, tz, st) {
	var hour, min, sec;

	var pos_t = now_t + (tz_offset + tz) * 60 * 1000;

	if (0 != st) {
		// サマータイム処理
		if ((pos_start <= pos_t) && (pos_end > pos_t)) {
			pos_t += 60 * 60 * 1000;
		}
	}			
	var t = new Date();
	t.setTime(pos_t);

	hour = t.getHours();
	min = t.getMinutes();
	sec = t.getSeconds();
	if (hour < 10) {
		hour = "0" + hour;
	}
	if (min < 10) {
		min = "0" + min;
	}
	if (sec < 10) {
		sec = "0" + sec;
	}
	return hour + ":" + min + ":" + sec; 
}

function update_watch() {
	now = new Date();
	n_t = now.getTime();
	jp = nowat(n_t, tz_jp, 0);
	ny = nowat(n_t, tz_ny, 0);
	la = nowat(n_t, tz_la, 0);
	mi = nowat(n_t, tz_mi, 0);
	pa = nowat(n_t, tz_pa, 0);
	lo = nowat(n_t, tz_lo, 0);
	ho = nowat(n_t, tz_ho, 0);
	sa = nowat(n_t, tz_sa, 0);

	document.forms[0].elements[0].value = jp;
	document.forms[0].elements[1].value = ny;
	document.forms[0].elements[2].value = la;
	document.forms[0].elements[3].value = mi;
	document.forms[0].elements[4].value = pa;
	document.forms[0].elements[5].value = lo;
	document.forms[0].elements[6].value = ho;
	document.forms[0].elements[7].value = sa;

	setTimeout('update_watch()', 999); // 1000msec = 1sec
}

update_watch();
