// Great Circle Mapper
// Copyright (C) 2007,2009
// Karl L. Swartz

function padleft(str, min, pad) {
	str = str.toString();
	pad = pad.toString();
	while (str.length < min) {
		str = pad + str;
	}
	return str;
}
function tztime(tm, ofs, tag) {
	var t = new Date(Date.parse(tm) + (ofs * 60000));
	var m3 = t.getUTCMonth() * 3;
	var mon = "JanFebMarAprMayJunJulAugSepOctNovDec".substring(m3, m3+3);
	if (tag !== "") {
		tag = "&nbsp;" + tag;
	}
	return	padleft(t.getUTCDate(), 2, "0") + "&nbsp;" +
		mon + "&nbsp;" + t.getUTCFullYear() + "&nbsp;" +
		padleft(t.getUTCHours(), 2, "0") + ":" +
		padleft(t.getUTCMinutes(), 2, "0") + tag;
}
function tzdata(tm, table) {
	var min = Date.parse(tm) / 60000;
	var i;
	var a = (table + ",").split(",");
	var len = a.length - 1;
	if (len == 1) {
		a[1] = "";
		++len;
	}
	var ofs = a[0];
	var tag = a[1];
	for (i = 2; i < len; ++i) {
		if (min < a[i]) { break; }
		ofs = a[++i];
		tag = a[++i];
	}
	return ofs + "," + tag;
}
function tznow(table) {
	var now = new Date();
	var tz = tzdata(now, table).split(",");
	return tztime(now, tz[0], tz[1]);
}
function tztick(ident) {
	var obj = document.getElementById(ident);
	if (obj) {
		var now = new Date();
		var tz = tzdata(now, tztbl).split(",");
		var tock = (60 - now.getSeconds()) * 1000;

		obj.innerHTML = tztime(now, tz[0], tz[1]);
		setTimeout("tztick(\""+ident+"\");", tock);
	}
}
