//===========================================
// 世界時間
//===========================================
function w_watch(){
today = new Date();
year = today.getYear();
if (year < 1900) {
	year += 1900;
}

tz_offset = today.getTimezoneOffset();

pos_start = GetDstStart(year);
pos_end = GetDstEnd(year);
pos_aesst_start = GetAesstStart(year);
pos_aesst_end = GetAesstEnd(year);
pos_bst_start = GetBstStart(year);
pos_bst_end = GetBstEnd(year);

tz_aest = 10 * 60; // GMT+10
tz_jst = 9 * 60; // GMT+9
tz_cst = 8 * 60; // GMT+8
tz_gmt = 0; // GMT
tz_est = -5 * 60; // GMT-5
tz_pst = -8 * 60; // GMT-8

update_watch();
}
function GetDstStart(arg_year) {
	var dst_start = new Date(arg_year, 2, 1, 2, 0, 0); // 3月の第2日曜日2時
	for (var i = 8; i <= 14; i++) {
		dst_start.setDate(i);
		if (0 == dst_start.getDay()) {
			break;
		}
	}
	return dst_start.getTime();
}

function GetDstEnd(arg_year) {
	var dst_end = new Date(arg_year, 10, 1, 1, 0, 0); // 11月の第1日曜日1時
	for (var i = 1; i <= 7; i++) {
		dst_end.setDate(i);
		if (0 == dst_end.getDay()) {
			break;
		}
	}
	return dst_end.getTime();
}

function GetAesstStart(arg_year) {
	var dst_start = new Date(arg_year, 2, 31, 2, 0, 0); // AESST 注 南半球 3月の最終日曜日2時
	for (var i = 31; i > 24; i--) {
		dst_start.setDate(i);
		if (0 == dst_start.getDay()) {
			break;
		}
	}
	return dst_start.getTime();
}

function GetAesstEnd(arg_year) {
	var dst_end = new Date(arg_year, 9, 31, 3, 0, 0); // AESST 注 南半球 10月の最終日曜日3時
	for (var i = 31; i > 24; i--) {
		dst_end.setDate(i);
		if (0 == dst_end.getDay()) {
			break;
		}
	}
	return dst_end.getTime();
}

function GetBstStart(arg_year) {
	var dst_start = new Date(arg_year, 2, 31, 1, 0, 0); // BST 3月の最終日曜日1時
	for (var i = 31; i > 24; i--) {
		dst_start.setDate(i);
		if (0 == dst_start.getDay()) {
			break;
		}
	}
	return dst_start.getTime();
}

function GetBstEnd(arg_year) {
	var dst_end = new Date(arg_year, 9, 31, 1, 0, 0); // BST 10月の最終日曜日1時
	for (var i = 31; i > 24; i--) {
		dst_end.setDate(i);
		if (0 == dst_end.getDay()) {
			break;
		}
	}
	return dst_end.getTime();
}

function nowat(now_t, tz, st) {
	var hour, min, sec;

	var pos_t = now_t + (tz_offset + tz) * 60 * 1000;
	comt = "";

	if (st==1) {
		// アメリカサマータイム処理
		if ((pos_start <= pos_t) && (pos_end > pos_t)) {
			pos_t += 60 * 60 * 1000;
			comt = " Summer Time";
		}
	} else if (st==2) {
		// AESST 注 南半球 サマータイム処理
		if ((pos_aesst_start > pos_t) || (pos_aesst_end <= pos_t)) {
			pos_t += 60 * 60 * 1000;
			comt = " Summer Time";
		}
	} else if (st==3) {
		// BST サマータイム処理
		if ((pos_bst_start <= pos_t) && (pos_bst_end > pos_t)) {
			pos_t += 60 * 60 * 1000;
			comt = " Summer Time";
		}
	}

	var t = new Date();
	t.setTime(pos_t);
	
	nyear = t.getYear();
	if (nyear < 1900) {
	nyear += 1900;
	}
	month = 1 + t.getMonth();
	date  = t.getDate();
	hour = t.getHours();
	min = t.getMinutes();
	//sec = t.getSeconds();
	if (month < 10) { month = "0" + month; }
	if (date < 10) { date = "0" + date; }
	if (hour < 10) { hour = "0" + hour; }
	if (min < 10) { min = "0" + min; }
	//if (sec < 10) { sec = "0" + sec; }
	//return month + "/" + date +" "+ hour + ":" + min + ":" + sec + comt; 
	return nyear + "." + month + "." + date +" "+ hour + ":" + min; 
}

function update_watch() {
	now = new Date();
	n_t = now.getTime();
	aest = nowat(n_t, tz_aest, 2);
	jst = nowat(n_t, tz_jst, 0);
	cst = nowat(n_t, tz_cst, 0);
	gmt = nowat(n_t, tz_gmt, 3);
	est = nowat(n_t, tz_est, 1);
	pst = nowat(n_t, tz_pst, 1);
/*
	document.clock.japan.value = jst;
//	document.clock.autralia.value = est;
	document.clock.newy.value = est;
	document.clock.los.value = pst;
*/
	document.getElementById("clockJapan").textContent  = jst;
//	document.clock.autralia.value = est;
	document.getElementById("clockNY").textContent  = est;
	document.getElementById("clockLos").textContent  = pst;

	document.getElementById("clockJapan").innerText = jst;
//	document.clock.autralia.value = est;
	document.getElementById("clockNY").innerText = est;
	document.getElementById("clockLos").innerText = pst;

	setTimeout('update_watch()', 999); // 1000msec = 1sec
}
