function g(o) {return document.getElementById(o);}

	var tm_width = 100;
	var tm_height = 1200;
	var basey = 300;
	var basex = 1;
	var ystep = 10; // should be set to line-height
	var timezones = [
		['lunch','12:00'],
		['home','17:30']
	];

	function setup() {
		var output10 = '';
		var output6 = '';
		var output2 = '';
		var maxy = screen.height;
		//basex = document.body.clientWidth / 2 - 32;
		var y = 0;

		for(var i = 0; i <= 2 * maxy / ystep; i++) {
			if(i % 3 == 0)
				output2 += '-<br />';
			else
				output2 += i % 3 + '<br />';

			if(i % 6 == 0)
				output6 += '-<br />';
			else
				output6 += i % 6 + '<br />';

			if(i % 10 == 0)
				output10 += '-<br />';
			else
				output10 += i % 10 + '<br />';
		}
		g('hand').style.left = basex - 1 + 'px';
		g('hand').style.top = basey + 'px';

		g('h1').style.left = basex + 'px';
		g('h2').style.left = basex + 8 + 'px';
		g('m1').style.left = basex + 16 + 'px';
		g('m2').style.left = basex + 24 + 'px';
		g('s1').style.left = basex + 32 + 'px';
		g('s2').style.left = basex + 40 + 'px';
		g('ms1').style.left = basex + 48 + 'px';
		g('ms2').style.left = basex + 56 + 'px';
		g('ms3').style.left = basex + 64 + 'px';


		g('h1').innerHTML = output2;
		g('h2').innerHTML = output10;
		g('m1').innerHTML = output6;
		g('m2').innerHTML = output10;
		g('s1').innerHTML = output6;
		g('s2').innerHTML = output10;
		g('ms1').innerHTML = output10;
		g('ms2').innerHTML = output10;
		g('ms3').innerHTML = output10;

		tm_loop();
	}

	function turn(v, t) {
		var t1 = t-1;
		if(v > t1) {
			return (v - t1);
		}
		else return 0;
	}

	function tm_loop() {
		var date = new Date();

		var h1 = Math.floor(date.getHours() / 10);
		var h2 = date.getHours() - h1 * 10;


		var m1 = Math.floor(date.getMinutes() / 10);
		var m2 = date.getMinutes() - m1 * 10;

		var s1 = Math.floor(date.getSeconds() / 10);
		var s2 = date.getSeconds() - s1 * 10;

		var ms1 = Math.floor(date.getMilliseconds() / 100);
		var ms2 = Math.floor(date.getMilliseconds() / 10) - ms1 * 10;
		var ms3 = Math.floor(date.getMilliseconds()) - ms2 * 10 - ms1 * 100;

		// tweeny bits

		ms2 += ms3 / 10;
		ms1 += ms2 / 10;
		s2 += ms1 / 10;
		s1 += turn(s2, 10) % 6;
		m2 += turn(s1, 6) % 10;
		m1 += turn(m2, 10) % 6;
		h2 += turn(m1, 6) % 10;
		h1 += turn(h2, 10) % 2;

		// make this work better someday
		basey = ((date.getHours() + date.getMinutes() / 60.0) / 24) * (document.body.clientHeight-11);

		g('hand').style.top = basey + 1 + 'px';
		g('h1').style.top = basey - ((h1 + 120)*ystep) + 'px';
		g('h2').style.top = basey - ((h2 + 120)*ystep) + 'px';
		g('m1').style.top = basey - ((m1 + 120)*ystep) + 'px';
		g('m2').style.top = basey - ((m2 + 120)*ystep) + 'px';
		g('s1').style.top = basey - ((s1 + 120)*ystep) + 'px';
		g('s2').style.top = basey - ((s2 + 120)*ystep) + 'px';
		g('ms1').style.top = basey - ((ms1 + 120)*ystep) + 'px';
		g('ms2').style.top = basey - ((ms2 + 120)*ystep) + 'px';
		g('ms3').style.top = basey - ((ms3 + 120)*ystep) + 'px';

		setTimeout('tm_loop()',20);
	}