/*
 * jQuery auto_maxheight - MAx height auto resizer - v 0.1.0
 *
 * @copyright Copyright (c) 2002-2010 GAYA - La nouvelle Agence
 * @author Benoit Chenu <bchenu@gaya.fr>
 */
(function($) {

	$.fn.auto_maxheight = function(options) {

		// options
		var opts = $.extend({}, $.fn.auto_maxheight.defaults, options);

		return this.each(function() {
			$this = $(this);

			if (!opts.maxheight && !opts.ref_bloc)
				return;

			if (!opts.maxheight)
				$this.maxheight = $(opts.ref_bloc, $this).height();
			else
				$this.maxheight = opts.maxheight;
			$this.trucable_bloc = opts.trucable_bloc;

			$.fn.auto_maxheight.resize($this);
		});
	};

	$.fn.auto_maxheight.resize = function(el) {
		// Supprime la restriction du min-height si celle-ci est définit sinon le bloc ne peut se réduire
		$(el).css({'min-height':0, 'height':'auto'});

		if ($(el).height() > el.maxheight)
		{
			while ($(el).height() > el.maxheight)
			{
				var txt = '';
				var pos_trunk = 0;

				while (!txt)
				{
					// S'il n'y a plus de bloc à traiter
					if (!$(el.trucable_bloc, el).size())
						break;

					txt = $(el.trucable_bloc+':last', el).text();
					pos_trunk = txt.lastIndexOf(' ');

					// Si le bloc est vide, on le supprime
					if (pos_trunk <= 0)
					{
						$(el.trucable_bloc+':last', el).remove();
						txt = '';
					}
				}

				// Pas de truncate possible
				if (pos_trunk <= 0)
					break;

				$(el.trucable_bloc+':last', el).text(txt.substring(0, pos_trunk)+'...');

				// Sous IE6, le block conteneur de se resize pas lors de l'exécution du script (il a attent que le js se termine)
				// On lui dit de se recaller
				$(el).height('auto');

				// Si on a essayé de réduire tous les blocs et que l'on ne peut plus rien réduire
				// il est préférable de s'arrêter sinon on entraine un boucle sans fin
 				if ($(el.trucable_bloc, el).size() == 1 && txt.length <= 3)
 					break;
			}
		}
	};

})(jQuery);
