function trimText( element, node, boxHeight, maxHeight, text)
{
	if ( maxHeight === undefined) maxHeight = element.scrollHeight;
	if ( boxHeight === undefined) boxHeight = element.clientHeight;

	var count = 0;

	if ( maxHeight > boxHeight)
	{
		if ( node === undefined) node = element.firstChild;
		if ( text === undefined) text = node.nodeValue;

		var min = 0;
		var max = text.length;
		var minHeight = 0;
		var cur = max;
		var curHeight;
		var oldCur;

		do {
			oldCur = cur;
			cur = Math.floor(
				min + ( max - min) *
				( ( boxHeight - minHeight ) / ( maxHeight - minHeight)));
			/*debugln( 'min ' + min + ', max ' + max + ', minH ' + minHeight + ', maxH ' + maxHeight + 
				', boxH ' + boxHeight + ', cur ' + cur);*/
			if ( cur == min && cur + 1 < max)
			{
				cur++;
			}

			if ( cur > oldCur)
			{
				node.appendData( text.substring( oldCur, cur));
			} else
			{
				node.deleteData( cur, oldCur - cur);
			}

			if ( min + 1 >= max )
			{
				break;
			}
			
			curHeight = element.scrollHeight;
			if ( curHeight <= boxHeight)
			{
				min = cur;
				minHeight = curHeight;
			} else
			{
				max = cur;
				maxHeight = curHeight;
			}

		} while ( count++ != 150);
	}
	return( count);
}

