function attach(obj,evt,fnc) {
	if (obj.addEventListener) return obj.addEventListener(evt,fnc,false);
	if (obj.attachEvent) return obj.attachEvent('on'+evt,fnc);
	obj['on'+evt]=fnc;
}
function $(a) { return document.getElementById(a); }
function isUndef(a) { return typeof a == 'undefined'; }
String.prototype.repeat = function (m) {
	var t=false,tmp,i;
	if (!isUndef(tmp=arguments[1])) t=tmp;
	tmp='';
	if (t) {
		while (tmp.length<m) tmp+=this;
		return tmp.substr(0,m);
	} else	{
		while (i<m) {
			tmp+=this;
			i++;
		}
		return tmp;
	}
}
String.repeat={byLen:true,byCount:false};
String.prototype.pad = function(l) {
	var pb='',pf='',tmp,ps=' ',pt=String.pad.right;
	if (!isUndef(tmp=arguments[1])) ps=tmp;
	if (!isUndef(tmp=arguments[2])) pt=tmp;
	switch (pt) {
		case 1:
			pf=ps.repeat(l-this.length,true);
			break;
		case 3:
			pf=ps.repeat(Math.floor(l-this.length)/2,true);
			pb=ps.repeat(l-this.length-pf.length,true);
			break;
		default:
			pb=ps.repeat(l-this.length,true);
			break;
	}
	return pf+this+pb;
}
String.pad={left:1,right:2,both:3};
Date.shortDays=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];
Date.longDays=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
Date.englishOrd=['th','st','nd','rd','th','th','th','th','th','th'];
Date.longMonths=['January','February','March','April','May','June','July','August','September','October','November','December'];
Date.shortMonths=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
Date.prototype.format = function (fmtString) {
	/* implementation of PHP's Date() function */
	if (!isUndef(arguments[1])) this.setTime(arguments[1]);
	var i,c,t,tm,ret='';
	var y=this.getFullYear(),m=this.getMonth(),d=this.getDate(),w=this.getDay();
	var h=this.getHours(),mi=this.getMinutes(),s=this.getSeconds();
	for (i=0; i<fmtString.length; i++) {
		c=fmtString.charAt(i);
		switch (c) {
			/* day */
			case 'd': ret+=d.toString().pad(2,'0',String.pad.right); break;
			case 'D': ret+=Date.shortDays[w]; break;
			case 'j': ret+=d; break;
			case 'l': ret+=Date.longDays[w]; break;
			case 'N': ret+=w+1; break;
			case 'S': ret+=Date.englishOrd[d%10]; break;
			case 'w': ret+=w;
			/* week */
			case 'W': 
				t=new Date();
				t.setTime(this.getTime());
				t.setMonth(0);
				t.setDate(1);
				t.setDate((tm=8-t.getDay())>7?tm-7:tm);
				ret+=Math.ceil((this.getTime()-t.getTime())/604800000);
				break;
			/* month */
			case 'F': ret+=Date.longMonths[m]; break;
			case 'm': ret+=(m+1).toString().pad(2,'0',String.pad.right); break;
			case 'M': ret+=Date.shortMonths[m]; break;
			case 'n': ret+=m+1;
			case 't': 
				t=new Date();
				t.setTime(this.getTime());
				t.setMonth(t.getMonth()+1);
				t.setDate(0);
				ret+=t.getDate();
				break;
			/* year */
			case 'o':
				t=new Date();
				t.setMonth(0);
				t.setDate(1);
				t.setDate((tm=8-t.getDay())>7?tm-7:tm);
				ret+=y+(t.getTime()>this.getTime()?0:-1);
				break;
			case 'Y': ret+=y; break;
			case 'y': ret+=y.toString().substr(2,2); break;
			/* time */
			case 'a': ret+=h>11?'pm':'am'; break;
			case 'A': ret+=h>11?'PM':'AM'; break;
			case 'B': /* Swatch Internet Time (?!) */
				tm=this.getUTCHours()+1; tm*=60;
				tm=this.getUTCMinutes(); tm*=60;
				tm=this.getUTCSeconds();
				ret+=Math.floor(tm*1000/86400);
				break;
			case 'g': case 'h':
				t=h%12;
				if (t==0) t=12;
				if (c=='g') ret+=t;
				else ret+=t.toString().pad(2,'0',String.pad.left);
				break;
			case 'G': case 'H': ret+=(c=='G'?h:h.toString().pad(2,'0',String.pad.left)); break;
			case 'i': ret+=mi.toString().pad(2,'0',String.pad.left); break;
			case 's': ret+=s.toString().pad(2,'0',String.pad.left); break;
			case 'O': case 'P':
				t=tm=this.getTimezoneOffset();
				if (tm<0) {
					ret+='-';
					t=1440-t;
				} else ret+='+';
				ret+=Math.floor(tm/60)+(c=='O'?'':':')+(t%60).toString().pad(2,'0',String.pad.left);
				break;
			case 'Z': ret+=this.getTimezoneOffset()*60; break;
			/* full date/time */
			case 'c': case 'r':
				tm=new Date();
				tm.setTime(this.getTime()-this.getTimezoneOffset()*60000);
				ret+=tm.format(c=='c'?'Y-m-dTH:i:s':'D, j M Y G:i:s ')+this.format('P');
				break;
			case 'U': ret+=this.getTime(); break;
			default:
				ret+=c;
		}
	}
	return ret;
}
function runTimer() {
	//Get the approrpiate offset
	var ofs=0;
	var boxes=['warp','rush','std','hour'];
	for (i in boxes) if ($(boxes[i]).checked) ofs=parseInt($(boxes[i]).value);
	var n=new Date();
	var t=new Date();
	t.setMinutes(n.getMinutes()+ofs);
	$('now').innerHTML=n.format('g:i:s A');
	$('then').innerHTML=t.format('g:i:s A');
	setTimeout('runTimer();',250);
}
function timerWinLoad() {
	runTimer();
}
attach(window,'load',timerWinLoad);