    function CGTruncate(eContainer, bMiddle) {
        var eSpan = document.createElement('span');
        eSpan.innerHTML = eContainer.innerHTML.stripTags().replace('&amp;', '&amp;');
        eContainer.innerHTML = '';
        eSpan.id = 'CGTruncateSpan'; // Hack for IE (part 1)
        eContainer.appendChild(eSpan);
        eSpan.style.position = 'absolute';
        eSpan.style.visibility = 'hidden';
        eSpan = $('CGTruncateSpan'); // Hack for IE (part 2)
        // Get container size
        //alert(eContainer.innerHTML+': '+eContainer.getStyle('width'));
        iContainerWidth = parseInt(eContainer.getStyle('width').replace('px', ''));
        iContainerHeight = parseInt(eContainer.getStyle('height').replace('px', ''));

        // Get text size
        iSpanWidth = parseInt(eSpan.getStyle('width').replace('px', ''));
        iSpanHeight = parseInt(eSpan.getStyle('height').replace('px', ''));
        //alert(eContainer.getStyle('height')+' '+iContainerHeight+' - '+iSpanHeight);
		for(i=0;(eSpan.innerHTML.length > 3) && ((iSpanWidth >= iContainerWidth) || (iSpanHeight >= iContainerHeight));i++) {
        //for(i=0;(iSpanWidth >= iContainerWidth);i++) {
            var sContent = eSpan.innerHTML;
            switch(bMiddle) {
                case true:
                    if (sContent.substr(sContent.length - 3) == '...') {
                        eSpan.innerHTML = sContent.substr(0, sContent.length - 4)+'...';
                    } else {
                        eSpan.innerHTML = sContent.substr(0, sContent.length - 1)+'...';
                    }
                break;
                default:
                    aContent = sContent.split(' ');
                    sNewContent = '';
                    for(z=0;z<aContent.length - 1;z++) {
                        sNewContent += ' '+aContent[z];
                    }
                    eSpan.innerHTML = sNewContent.strip()+'...';
            }
        	//alert(iSpanWidth+' >= '+iContainerWidth+' || '+iSpanHeight+' >= '+iContainerHeight+' || '+eSpan.innerHTML);


            iSpanWidth = parseInt(eSpan.getStyle('width').replace('px', ''));
            iSpanHeight = parseInt(eSpan.getStyle('height').replace('px', ''));
        }
        var sContent = eSpan.innerHTML;
        eContainer.removeChild(eSpan);
        eContainer.innerHTML = sContent;
    }
	Event.observe(window, 'load', function() {
		var aeTruncate = $$('.CGTruncate');
		aeTruncate.each(function(e){
			CGTruncate(e, true);
		});
	});