(function($){
	$.fn.jTruncate = function(options) {
	   
		var defaults = {
			length: 300,
			minTrail: 20,
			moreText: "more",
			lessText: "less",
			ellipsisText: "...",
			moreAni: "",
			lessAni: ""
		};
		
		var options = $.extend(defaults, options);
	   
		return this.each(function() {
			var obj = $(this);
			var body = obj.html();
			var startHtml = body;
			
			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);
					obj.html(str1 + '<span class="truncate_ellipsis">' + options.ellipsisText + 
						'</span>' + ' <a href="#" class="truncate_more_link">' + options.moreText + '</a>');
					
					var tText = obj.html();

					// set onclick event for more/less link
					function setLinks(){
						var moreLink = $('.truncate_more_link', obj);
						var ellipsis = $('.truncate_ellipsis', obj);
						moreLink.click(function() {
							if(moreLink.text() == options.moreText) {
								obj.html(startHtml + ' <a href="#" class="truncate_more_link">' + options.lessText + '</a>');
								setLinks();
							} else {
								obj.html(tText);
								setLinks();
							}
							return false;
						});
					}
					
					setLinks();
					
				}
			} // end if
			
		});
	};
})(jQuery);
