﻿window.attachEvent('onload',autoEllipseText);
//window.attachEvent('initialized',autoEllipseText);

function autoEllipseText()
{
	//alle cellen op de pagina met een bepaald cellId worden nagelopen
	//deze cellen worden in de cellCollection geplaatst
	//een cellId is opgebouwd volgens 'CellBDOListItem<aantalregels>Lines'
	//het <aantalregels> geeft aan hoeveel regels de cell mag tonen alvorens
	//de tekst in de cell wordt afgebroken indien deze de cellgrootte overschrijdt
	var cellId;
	var cellCollection;

	//alle cellen met een id 'CellBDOListItem<minLines>Lines' t/m cellen met
	//een id 'CellBDOListItem<maxLines>Lines' worden meegenomen in deze functie
	var minLines = 1;
	var maxLines = 4;
	
	var element;		//het cellobject uit de cellCollection dat doorlopen wordt
	var text;			//de gehele tekst in de cell
	var width;			//de breedte van de cell na het laden van de pagina bij de client
	var textLine;		//een regel in de tekst van de cell
	var textLines;		//alle regels (alle textLine objecten) van de tekst van de cell inclusief de ellipse (...)
	
	var inSpan;			//de tijdelijke weergave van de tekst van de cell in een <span> tag

	//de tekst die uiteindelijk getoond wordt, wordt woord voor woord opgebouwd
	//de laatste twee oude waarden van het opbouwen worden bewaard om te bepalen of de tekst
	//inclusief de ellipse (...) binnen de cell past, past de laatste niet (oldSpan) dan 
	//wordt de eennalaatste gebruikt (oldSpanPrevious)
	var oldSpan;		
	var oldSpanPrevious;
	
	//for loop tbv het type cell met id 'CellBDOListItem<lines>Lines'
	for (var lines = minLines; lines <= maxLines; lines++)
	{
		cellId = 'CellBDOListItem' + lines + 'Lines';
		cellCollection = document.getElementsByName(cellId);
		
		for (var j=0; j < cellCollection.length; j++)
		{	
			element = cellCollection[j].childNodes[0];
			text = element.innerHTML;
			width = element.offsetWidth;
			
			textLine = '';
			textLines = '';			   	

		   	for (var line = 1; line <= lines; line++)
		   	{	
		   		element.innerHTML = '<span id="ellipsisSpan" style="white-space:nowrap;">' + text + '</span>';
			
			   	inSpan = document.getElementById('ellipsisSpan');   
			   	
			   	if(inSpan.offsetWidth > width)
			   	{
			   		var i = 0;
		      		var text_array=text.split(" ");
		      		
		      		inSpan.innerHTML = '';
					oldSpan = '';
					
		      		while(inSpan.offsetWidth < (width))
		      		{
		      			oldSpanPrevious = oldSpan;
		      			oldSpan = inSpan.innerHTML;
		      			if(inSpan.innerHTML == "")
		      			{
		      				inSpan.innerHTML = text_array[i];
		      			}
		      			else
		      			{
		      				inSpan.innerHTML = inSpan.innerHTML + " " + text_array[i];
		      			}
		      			
		      			i++;
		      		}		
	      		  	
	      		  	if (line == lines)
		      		{
		      			inSpan.innerHTML = oldSpan + "...";
			      		if(inSpan.offsetWidth < (width))
			      		{
			      			textLine = inSpan.innerHTML;
			      		}
			      		else
			      		{
			      			textLine = oldSpanPrevious + "...";
			      		}
		      		}
		      		else
		      		{
		      			textLine = oldSpan;
		      		}
	      		
		      		element.innerHTML = '';
		      
		      		text = text.substr(textLine.length, text.length);
		   		}
		   		else
		   		{
		   			textLine = inSpan.innerHTML;
		   			line = lines+1;
		   		}
		   		textLines = textLines + " " + textLine;
		   	}
		   	element.innerHTML = textLines;   			
		}
	}   
}

function FocusOnSearch(obj)
{
	if (obj.value == "Zoeken...")
	{
		obj.value = "";
	}
}

