function counter() {
	var millis = Date.UTC(2011, 5, 7, 17, 0, 0, 0) - new Date().getTime();
	var days = Math.floor(millis / 86400000);
	millis -= (days * 86400000);
	
	var hours = Math.floor(millis / 3600000);
	millis -= (hours * 3600000);
	
	var minutes = Math.floor(millis / 60000);
	millis -= (minutes * 60000);
	
	var seconds = Math.floor(millis / 1000);
	millis -= (seconds * 1000);
	
	return days + ":" + zeroFill(hours, 2) + ":" + zeroFill(minutes, 2) + ":" + zeroFill(seconds, 2) + "." + zeroFill(millis, 3);
}

//taken from http://stackoverflow.com/questions/1267283/how-can-i-create-a-zerofilled-value-using-javascript
//JavaScript really doesn't have a way to pad zeroes?
function zeroFill(number, width) {
	width -= number.toString().length;
	if (width > 0) {
		return new Array( width + (/\./.test( number ) ? 2 : 1) ).join( '0' ) + number;
	}

	return number;
}

function startCounter() {
	var millis = Date.UTC(2011, 5, 6, 17, 0, 0, 0) - new Date().getTime();
	if (millis <= 0) {
		document.getElementById("counter").innerHTML = "Yes.";
	}
	else {
		setTimeout("decrementCounter()", 10);
		updateCache();
	}
}

function decrementCounter() {
	var millis = Date.UTC(2011, 5, 6, 17, 0, 0, 0) - new Date().getTime();
	if (millis <= 0) {
		window.location = "http://www.youtube.com/watch?v=oHg5SJYRHA0";
	}
	document.getElementById("counter").innerHTML = counter();
	setTimeout("decrementCounter()", 10);
}

