(function($) {
	$.fn.cliptext = function(options) {
		var settings = $.extend({
			appendString: ' ...' , 
			attachTitle: true , 
			clipOnSpace: false,
			height: 'auto', 
			minlen: 5
		} , options );
		
		var min = 0; 
		this.each(function() {
			//Find the smallest height
			if ( ($(this).height() > 0 && $(this).height() < min) || (min==0) ) { 
				min = $(this).height();
			}
		});
		min = (settings.height == 'auto') ? min : parseInt(settings.height); 
		
		return this.each(function() {

			//Stop if we have children
			var $kids = $(this).children();
			if ($kids.size() == 1) {
				var node = $kids; 
			} 
			else if ($kids.size() != 0 )
				return; 
			else { 
				var node = $(this); 
			}

			var str = $(node).text();
			var original_str = str; 
			var strlen = str.length;
			var c = strlen;
			if (settings.attachTitle == true) { 
				$(node).attr('title',str); 
			}
			
			while ( $(node).height() > min) { 
				c = (settings.clipOnSpace != true) ? c - settings.appendString.length : str.lastIndexOf(' ');
				str = str.substr(0 , c);
				$(node).text( str + settings.appendString);
				if (str.length <= settings.minlen ) {
					$(node).text(original_str); 
					break; 
				}
				
			}
		});
	}
})(jQuery);
