(function($){  
  $.fn.truncate = function(options) {  
 
    var defaults = {
      len: 30,
      maxLen: 40,
      trail: '...'
    };
    var options = $.extend(defaults, options);
  
    return this.each(function() {  
      var obj  = $(this);
      var body = obj.html();
      
      if (body.length > options.len) {
        var splitLocation = body.indexOf(' ', options.len);
        if ((splitLocation > options.maxLen) || (splitLocation == -1))
          splitLocation = options.maxLen;
        if (splitLocation + options.trail.length < body.length) {
          var leftString = body.substring(0, splitLocation);
          obj.html(leftString + options.trail);
        }
      }
    });
 };  
})(jQuery); 

