// ニューヨークサマータイム開始時刻　3月第2日曜午前2時を内部表現で返す。
function nyGetDstStart(arg_year) {
	var dst_start = new Date(arg_year, 2, 1, 2, 0, 0);
	var count = 0;
	for (var i = 1; i <= 14; i++) {
		dst_start.setDate(i);
		if (0 == dst_start.getDay()) {
			count++;
			if (count == 2) {
				break;
			}
		}
	}
	return dst_start.getTime();
}

// ニューヨークサマータイム終了時刻　11月の第1日曜午前2時を内部表現で返す。
function nyGetDstEnd(arg_year) {
	var dst_end = new Date(arg_year, 10, 1, 1, 0, 0);
	for (var i = 1; i <= 7; i++) {
		dst_end.setDate(i);
		if (0 == dst_end.getDay()) {
			break;
		}
	}
	return dst_end.getTime();
}


// ロンドンサマータイム開始時刻　3月最終日曜日午前1時を内部表現で返す。
function ukGetDstStart(arg_year) {
	var dst_start = new Date(arg_year, 2, 31, 1, 0, 0);
	for (var i = 31; i > 24; i--) {
		dst_start.setDate(i);
		if (0 == dst_start.getDay()) {
			break;
		}
	}
	return dst_start.getTime();
}


// ロンドンサマータイム終了時刻10月最終日曜日午前1時を内部表現で返す。
function ukGetDstEnd(arg_year) {
	var dst_start = new Date(arg_year, 9, 31, 1, 0, 0);
	for (var i = 31; i > 24; i--) {
		dst_start.setDate(i);
		if (0 == dst_start.getDay()) {
			break;
		}
	}
	return dst_start.getTime();
}



// 現在の年を取得


// ここまでで、yearに今年の年(1998など)が入っています。





var tz_jp = 9 * 60; // GMT+9
var tz_ny = -5 * 60; // GMT-0500
var tz_uk = 0 * 60; // GMT+1

function nowat(now_t, tz, st) {
var today = new Date();
var year = today.getYear();
if (year < 1900) {
	year += 1900;
}
var tz_offset = today.getTimezoneOffset();
var ny_pos_start = nyGetDstStart(year);
var ny_pos_end = nyGetDstEnd(year);

var uk_pos_start = ukGetDstStart(year);
var uk_pos_end = ukGetDstEnd(year);

	var pos_t = now_t + ((tz_offset + tz) * 60 * 1000) + 1000;

	if (1 == st) {
		// ニューヨークサマータイム処理
		if ((ny_pos_start <= pos_t) && (ny_pos_end > pos_t)) {
			pos_t += 60 * 60 * 1000;
		}
	}
	if (2 == st) {
		// ロンドンサマータイム処理
		if ((uk_pos_start <= pos_t) && (uk_pos_end > pos_t)) {
			pos_t += 60 * 60 * 1000;
		}
	}
	var t = new Date();
	t.setTime(pos_t);

	var day = t.getDate();
	var month = t.getMonth();
	month = month + 1;
	var hour = t.getHours();
	var min = t.getMinutes();
	var sec = t.getSeconds();

	if (hour < 10) {
		hour = "0" + hour;
	}
	if (min < 10) {
		min = "0" + min;
	}
	if (sec < 10) {
		sec = "0" + sec;
	}
	return month + "/" + day + " " + hour + ":" + min + ":" + sec;
}

function update_watch() {
	var now = new Date();
	var n_t = now.getTime();
	var jp = nowat(n_t, tz_jp, 0);
	var ny = nowat(n_t, tz_ny, 1);
	var uk = nowat(n_t, tz_uk, 2);

	var jpdate = jp.split(" ");
	var nydate = ny.split(" ");
	var ukdate = uk.split(" ");

	if (document.getElementById("currentTime_tk_d") != undefined ) {
		document.getElementById("currentTime_tk_d").innerHTML = jpdate[0];
	}
	if (document.getElementById("currentTime_tk") != undefined ) {
		document.getElementById("currentTime_tk").innerHTML = jpdate[1];
	}

	if (document.getElementById("currentTime_ny_d") != undefined ) {
		document.getElementById("currentTime_ny_d").innerHTML = nydate[0];
	}
	if (document.getElementById("currentTime_ny") != undefined ) {
		document.getElementById("currentTime_ny").innerHTML = nydate[1];
	}


	if (document.getElementById("currentTime_uk_d") != undefined ) {
		document.getElementById("currentTime_uk_d").innerHTML = ukdate[0];
	}
	if (document.getElementById("currentTime_uk") != undefined ) {
		document.getElementById("currentTime_uk").innerHTML = ukdate[1];
	}
	setTimeout('update_watch()', 999); // 1000msec = 1sec
}

update_watch();

