var COUNTDOWN_INTERVAL = 1000;

function suffix(days) {
	switch (days % 10) {
		case 1: return "st"; break;
		case 2: return "nd"; break;
		case 3: return "rd"; break;
		default: return "th"; break;
	}
}

function format_number(num) {
	var str = "";

	do {
		var rem = num % 1000;
		str = rem + str;
		num = parseInt(num / 1000);
		if (num > 0) {
			if (rem < 10)
				str = "00" + str;
			else if (rem < 100)
				str = "0" + str;
			str = "," + str;
		}
	} while (num > 0);

	return str;
}

function compute_oregonian() {
	var now = new Date();
	var oregonian = new Date("June 28 2004 12:00:00 PDT");

	var diff = ((now.valueOf() - oregonian.valueOf()) / 1000);
	var days = Math.floor(diff / 86400);

	return format_number(days) + suffix(days);
}

function pad(a) {
	if(a < 10) return "0"+a; else return a;
}

function computeDiff(target, currtime) {
	var dt = new Date(target);
	var dct = new Date(currtime);

	var timehaspassed = false;

	var x = "";

	if(dt.valueOf() < dct.valueOf()) {
		timehaspassed = true;
		var temp = dct;
		dct = dt;
		dt = temp;
	}

	var diff = ((dt.valueOf() - dct.valueOf()) / 1000);

	var days = Math.floor(diff / 86400);
	diff -= days * 86400;

	var hours = Math.floor(diff / 3600);
	diff -= hours * 3600;

	var minutes = Math.floor(diff / 60);
	diff -= minutes * 60;

	if( ( (days * 24) + hours ) <= 200) {
		x = (timehaspassed ? "Passed by " : "")+((days*24)+hours)+"h:"+pad(minutes)+"m:"+pad(Math.floor(diff))+"s";
	} else {
		x = (timehaspassed ? "Passed by " : "")+format_number(days)+"d:"+pad(hours)+"h:"+pad(minutes)+"m:"+pad(Math.floor(diff))+"s";
	}
	return x;
}
