function relative_time(time_value) {
	var time_lt1min = 'less than 1 min ago';
	var time_1min = '1 min ago';
	var time_mins = '%1 mins ago';
	var time_1hour = '1 hour ago';
	var time_hours = '%1 hours ago';
	var time_1day = '1 day ago';
	var time_days = '%1 days ago';

	var values = time_value.split(" ");
	if (values.length > 1) {
		time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
	}

	var parsed_date = Date.parse(time_value);
	var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
	var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
	delta = delta + (relative_to.getTimezoneOffset() * 60);

	if (delta < 60) {
		return time_lt1min;
	} else if (delta < 120) {
		return time_1min;
	} else if (delta < (60 * 60)) {
		return time_mins.replace('%1', (parseInt(delta / 60)).toString());
	} else if (delta < (120 * 60)) {
		return time_1hour;
	} else if (delta < (24 * 60 * 60)) {
		return time_hours.replace('%1', (parseInt(delta / 3600)).toString());
	} else if (delta < (48 * 60 * 60)) {
		return time_1day;
	} else {
		return time_days.replace('%1', (parseInt(delta / 86400)).toString());
	}
}

