;(function($) {
  $.fn.fuzzyDate = function() {
    $(this).each(function() {
      var d = new Date(Date.parse($(this).text()));
      if(!isNaN(d)) {
        var diff_sec = (new Date().getTime() - d.getTime()) / 1000;
        var diff_min = Math.floor(diff_sec / 60);
        
        var fuzz = '';
        
        if(diff_min == 0) fuzz = 'A few seconds ago';
        else if(diff_min < 10) fuzz = 'A few minutes ago';
        else if(diff_min < 45) fuzz = 'About an half an hour ago';
        else if(diff_min < 90) fuzz = 'About one hour ago';
        else if(diff_min < 1440) fuzz = 'About ' + Math.floor(diff_min / 60) + ' hours ago';
        else if(diff_min < 2880) fuzz = 'Yesterday';
        else if(diff_min < 8640) fuzz = 'Few days ago';
        else if(diff_min < 40320) fuzz = 'About ' + Math.floor(diff_min / 10080) + ' weeks ago';
        else if(diff_min < 86400) fuzz = 'About one month ago';
        else if(diff_min < 525960) fuzz = 'About ' + Math.floor(diff_min / 43200) + ' months ago';
        else if(diff_min < 1051199) fuzz = 'About one year ago';
        else fuzz = 'Over ' + Math.floor(diff_min / 525960) + ' years ago';
        
        $(this).text(fuzz); 
      }
    });
    return this; 
  };
})(jQuery);
