Shorten Time Return Function
Here is how i'd approach it

// Make all those units constants
var SECOND = 1000;
var MINUTE = SECOND * 60;
var HOUR = MINUTE * 60;
var DAY = HOUR * 24;
var YEAR = DAY * 365;

// store the string variations in a table, seperate from the code
TIMES = [
    {min: 0, text: "right now", unit: SECOND},
    {min: 2 * SECOND, text: "@ seconds ago", unit: SECOND},
    {min: MINUTE, text: "about 1 minute ago", unit: MINUTE},
    {min: 2 * MINUTE, text: "@ minutes ago", unit: MINUTE},
    {min: HOUR, text: "about 1 hour ago", unit: HOUR},
    {min: 2 * HOUR, text: "@ hours ago", unit: HOUR},
    {min: DAY, text: "yesterday", unit: DAY},
    {min: 2 * DAY, text: "@ days ago", unit: DAY},
    {min: YEAR, text: "over a year ago", unit: YEAR}
];

// use the table to generate the date
function timeAgoText(diff) {
    var use;
    for(var index = 0, length = TIMES.length; index &lt; length; index++)
    {
        if( TIMES[index].min &lt; diff )
        {
            use = TIMES[index];
        }
    }
    units = Math.floor(diff / use.unit)
    return use.text.replace("@", units)
}

function timeAgo(dateText)
{
   var then = new Date(dateString);
   if ($.browser.msie) {
      then = Date.parse(dateString.replace(/( \+)/, ' UTC$1'));
   }
   var diff = new Date() - then;
   if( isNaN(diff) || diff &lt; 0 )
   {
       return ""
   }
   else
   {
       // seperate the time check and the text generation
       return {
           tAgo: timeAgoText(diff),
           timeCheck: diff &gt; HOUR * 2 
       }
   }
}