/*
 * truncatable 1.2.1 - jQuery lightwieght text truncation plugin
 *
 * Copyright (c) 2009 Philip Beel (http://www.theodin.co.uk/)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * Revision: $Id: jquery.truncatable.js 2010-09-01 $
 *
 * Error corrected and compacted - 2010 by belboon.de
 *
 */

(function($) {
	$.fn.truncatable = function(options) {
		var defaults = {
			limit: 100,
			moreText: '...',
			lessText: ''
		};
		var options = $.extend(defaults,options);
		return this.each(function(num){
			var truncText = $(this).html(); // buffer the text
			var stringLength = truncText.length;
			if (stringLength > defaults.limit) {
				var splitText = truncText.substr(defaults.limit);
				var splitPoint = splitText.substr(0,1);
				var whiteSpace = new RegExp(/^\s+$/);
				for (var newLimit = defaults.limit; newLimit < stringLength; newLimit++) {
					var newSplitText = truncText.substr(0, newLimit);
					var newHiddenText = truncText.substr(newLimit);
					var newSplitPoint = newSplitText.slice(-1);
					if (whiteSpace.test(newSplitPoint)) {
						var hiddenText = '<span class="hiddenText_'+num+'" style="display:none">'+newHiddenText+'</span>';
						var setNewLimit = (newLimit-1);
						$(this).html(truncText.substr(0,setNewLimit)).append(' <a class="more_'+num+'" href="'+window.location.href+'">'+defaults.moreText+'</a> '+hiddenText);
						$('a.more_'+num).click(function() {
							$('span.hiddenText_'+num).show();
							$('a.more_'+num).hide();
							return false;
						});
						if (defaults.lessText != '') {
							$('span.hiddenText_'+num).append(' <a class="hide_'+num+'" href="'+window.location.href+'" title="'+defaults.lessText+'">'+defaults.lessText+'</a>');
							$('a.hide_'+num).click(function() {
								$('.hiddenText_'+num).hide();
								$('a.more_'+num).show();
								return false;
							})
						}
						newLimit = stringLength;
					}
				}
			}
		})
	}
})(jQuery);
