function troncatTextOfPage(page) {
	// Classes des blocs conteneur dont le texte doit être coupé
	// Vous pouvez modifier ces classes
	classes = ['dtt'];
	var blocs = null;
	for (var i = 0; i < classes.length; i++) {
		blocs = page.getElementsByClassName(classes[i]);
		// Title et summary, classes des blocs contenant le titre et le chapeau qui doivent coupé
		// Vous pouvez modifier ces classes
		launchTroncatForCoupleElements(blocs, 'stt', 'ctt');
	}
}

function launchTroncatForCoupleElements(blocs, classPart1, classPart2)  {
	// Execute une troncature sur chacun des blocs, chaque bloc doit contenir 2 element avec des class differentes (ex: class "title" et un second de class "summary")
	// blocs : (required) : element DOM contenant la liste des blocs
	// classPart1,classPart2 : (required) : String contenant la class css du sous-bloc surlequel intervenir, un bloc doit contenir 2 sous-bloc minimum
	//							chacun d'eux est identifiable par sa class.
	var charWidth=12;
	var lineHeight=16;
	for (var i = 0; i < blocs.length; i++) {
		
		var bloc = blocs[i];

		var nbCharByRow = 0;
		var nbChar = 0;

		if(classPart1 != "" && classPart2 != "")
		{
			var part1 = bloc.getElementsByClassName(classPart1)[0];
			var part2 = bloc.getElementsByClassName(classPart2)[0];
		
			if(part1 != undefined && part2 != undefined)
			{
				var part1Source = generateSourceIfNecessary(bloc, classPart1);
				var part2Source = generateSourceIfNecessary(bloc, classPart2);
				
				var nbCharByRow = Math.ceil(part1.clientWidth / charWidth);
				var nbChar = Math.floor((bloc.clientHeight/lineHeight)) * nbCharByRow;
				
//				alert("client width :"+part1.clientWidth+"\nnb lignes : "+Math.floor((bloc.clientHeight/lineHeight))+"\nnb char per row : "+nbCharByRow)

				if(nbCharByRow > 0 && nbChar > 0)
				{
					var result = troncatureCouple(part1Source.textContent, part2Source.textContent, nbChar, nbCharByRow, '...');
					part1.textContent = result[0];
					part2.textContent = result[1];
				}
			}
		}
	}
}

troncatureCouple = function(chaine1, chaine2, nbChar, nbCharByRow, suffixe) {
	// Tronque la -chaine1- et -chaine2- si l'ensemble dépasse -nbChar- characteres
	// avec une priorité à la chaine1.

	var tabMotsChaine1 = chaine1.split(" ");
	var nbMotsChaine1 = tabMotsChaine1.length;
	
	var charLost = 0;
	if(nbCharByRow != undefined)
	{
		var nbCharChaine1 = chaine1.length;
		var nbRowChaine1 = Math.ceil(nbCharChaine1/nbCharByRow);
		charLost = (nbRowChaine1*nbCharByRow - nbCharChaine1);
		
	}

	var sommeChar = 0;
	var cursorChaine1 = 0;
	for(var i=0; i<nbMotsChaine1; i++)
	{
		sommeChar+=tabMotsChaine1[i].length;
		if(sommeChar > nbChar)
		{
			cursorChaine1 = i-1;
			break;
		}
	}
	
	var cursorChaine2 = 0;
	
	if(sommeChar < nbChar)
	{	
		var charDispo = nbChar - sommeChar - charLost;
		var sommeChar = 0;
		var tabMotsChaine2 = chaine2.split(" ");
		var nbMotsChaine2 = tabMotsChaine2.length;
	
		for(var i=0; i<nbMotsChaine2; i++)
		{
			sommeChar+=tabMotsChaine2[i].length;
			if(sommeChar > charDispo)
			{
				cursorChaine2 = i+1;
				break;
			}
		}
	}
	
	var c1 = "";
	var c2 = "";
	
	if(cursorChaine1 > 0)
	{
		c1 = troncature(chaine1, cursorChaine1, suffixe);
		c2 = "";
		
	}else
	{
		if(cursorChaine2 > 0)
		{
			c1 = chaine1;
			c2 = troncature(chaine2, cursorChaine2, suffixe);
		}else
		{
			c1 = chaine1;
			c2 = chaine2;
		}
	}

	return [c1,c2];
};

troncature = function(chaine, nbMots, suffixe) {
	// Tronque la chaine de caractere "chaine" à un nombre de mots données (nbMots) et ajout le suffixe.
	var tabMots = chaine.split(" ");
	var result = "";

	for(var i=0; i<nbMots; i++)
	{
		result+=tabMots[i]+" ";
	}

	return result+suffixe;
};


isThereSource = function(bloc, classPart) {
	
	var result = false;
	var sourceElement = bloc.getElementsByClassName(classPart+"-source")[0];
	
	if(sourceElement)
	{
		result = true;
	}

	return result;
	
};

generateSource = function(bloc, classPart) {
	
	var sourceElement = document.createElement("div" );
	sourceElement.setAttribute("class", classPart+"-source");
	sourceElement.setAttribute("style", "display:none;");
	
	try{
		sourceElement.textContent = bloc.getElementsByClassName(classPart)[0].textContent;
	}catch(err)
	{
		console.log("troncat.js:generateSource: une erreur est survenu lors de la lecture du textContent");
	}
	bloc.appendChild(sourceElement); 

};

generateSourceIfNecessary = function(bloc, classPart) {

	if(!isThereSource(bloc, classPart))
	{
		generateSource(bloc, classPart);
	}
	
	return bloc.getElementsByClassName(classPart+"-source")[0];
};


