(function(jQuery){  
 jQuery.fn.truncate = function(options) {  
      
  var defaults = {  
   length: 300,  
   minTrail: 20,  
   moreText: "more",  
   lessText: "less",  
   ellipsisText: "..."  
  };  
    
  var options = jQuery.extend(defaults, options);  
      
  return this.each(function() {  
   obj = jQuery(this);  
   var body = obj.html();  
     
   if(body.length > options.length + options.minTrail) {  
    var splitLocation = body.indexOf(' ', options.length);  
    if(splitLocation != -1) {  
     // truncate tip  
     var splitLocation = body.indexOf(' ', options.length);  
	 
	 
     var str1 = body.substring(0, splitLocation);  
     var str2 = body.substring(splitLocation, body.length - 1);  
	
	var regX = new RegExp("<[^<>]+>","m");
	

	regX.test(str2);
	var newTag = RegExp.lastMatch;
	
	
	newStr1 = str1 + '<span class="ellipsis">' + options.ellipsisText + '</span>' + newTag;
	newStr2 = newTag.replace('/','') + '<span class="ellipsis">' + options.ellipsisText + '</span>' + str2;

 
     obj.html('<div class="topSection">' + newStr1 + '</div>' + '<div class="bottomSection">' + newStr2 + '</div>');  
     obj.find('.bottomSection').css("display", "none");  
       
     // insert more link  
     obj.append(  
       '<div style="clear:both;">' + '<a href="#" class="moreLink"><strong>' +  options.moreText + '</strong></a>' + '</div>'
     );  
     
     // set onclick event for more/less link  
     var moreLink = jQuery('.moreLink strong', obj);  
     var moreContent = jQuery('.bottomSection', obj);  
     var ellipsis = jQuery('.ellipsis', obj);  
     moreLink.click(function() {  
      if(moreLink.text() == options.moreText) {

       moreContent.fadeIn(1000);  
       moreLink.text(options.lessText);  
       
      } else {  
       moreContent.fadeOut(500);  
       moreLink.text(options.moreText);  
       ellipsis.css("display", "inline"); 
	   
      }  
      return false;  
       });  
	 
    }  
   } // end if  
     
  });  
 };  
})(jQuery);  