// Courtesy of Joey
// Public Domain Code
// http://joey.kitenet.net/blog/entry/relative_dates_in_html/

var timeUnits = new Array;
timeUnits['minute'] = 60;
timeUnits['hour'] = timeUnits['minute'] * 60;
timeUnits['day'] = timeUnits['hour'] * 24;
timeUnits['month'] = timeUnits['day'] * 30;
timeUnits['year'] = timeUnits['day'] * 364;
var timeUnitOrder = ['year', 'month', 'day', 'hour', 'minute'];
var timeUnitTranslations = {
	'year': { 'en': ['year', 'years'] },
	'month': { 'en': ['month', 'months'] },
	'day': { 'en': ['day', 'days'] },
	'hour': { 'en': ['hour', 'hours'] },
	'minute': { 'en': ['minute', 'minutes'] }
};
var cunjunctionTranslations = { 'en': 'and ' };
var lessThanTranslations = { 'en': 'less than a minute ' }

function relativeDate(date, lang) {
	if(typeof(lang) == 'undefined') { var lang = 'en'; }
    var now = new Date();
    var offset = date.getTime() - now.getTime();
    var seconds = Math.round(Math.abs(offset) / 1000);

    var ret = "";
    var shown = 0;
    for(i = 0; i < timeUnitOrder.length; i++) {
        var unit = timeUnitOrder[i];
        if (seconds >= timeUnits[unit]) {
            var num = Math.floor(seconds / timeUnits[unit]);
            seconds -= num * timeUnits[unit];
            if (ret) { ret += cunjunctionTranslations[lang]; }
            ret += num + " " + (num > 1 ? timeUnitTranslations[unit][lang][1] : timeUnitTranslations[unit][lang][0]) + " ";
            if (++shown == 2) { break; }
        } else if(shown) { break; }
    }
    if(!ret) { ret = lessThanTranslations[lang]; }
    // return ret + (offset < 0 ? "ago" : "from now");
    return ret;
}

