/* Text bemeretezese pixelre
** A 'selObjText'  elemben levo szoveg font-size-jat csokkenti maximum 'step' lepesben 'dec' pixellel, amig bele nem fer a 'maxWidth' hosszba
** es 'maxHeight' magassagba. Ha ez 'step' lepesben nem erheto el, akkor miutan lecsokkentette a font-sizet amig lehetett,
** a szoveg vegebol annyi karaktert vag le, hogy beleferjen a kivant meretbe, vegere harom pontot tesz.
** A setVisualLength fv a gyujtemeny, ahol az adott szovegekre meghivodik a fuggveny.
** Amire figyelni kell: Ha a bemeretezendo szoveg tobb soros, es egy olyan kontenerben van, aminek a szelessege tobb, mint amekkorara be szeretnenk 
** meretezni, akkor az elso sor kivetelevel a tobbit levagja, mert egeszen eddig nem fog teljesulni a kilepesi feltetel.
** Esetleges fejlesztes:  a selObjTextet ne szovegkent kezelje. Tehat ha van benne nehany node, akkor azokon is fusson vegig, es ami nem fer bele a
** meretkeretbe, azt teljesen dobja ki. (opcionalisan parameterezheto is lehet). Masik, hogy ne a gyujtofvvel kelljen mokolni, hanem legyen egy register
** vagy valami metodusa...
*/

function visualLength(selObjText,maxWidth,maxHeight,step,dec,wholewordsonly)
{

	if (wholewordsonly != true) wholewordsonly = false;
	var nameObj = selObjText;
	
	
	if (nameObj != null){
	
		var nameObjLength = nameObj.offsetWidth;
		var nameObjHeight = nameObj.offsetHeight;
		var originalContent = nameObj.innerHTML;
		//betumeret csokkentese
		for (i=step; i>0; i--)
		{
			nameObjLength = nameObj.offsetWidth;
			nameObjHeight = nameObj.offsetHeight;
			if(nameObjLength>maxWidth || nameObjHeight>maxHeight){
				 if(nameObj.style.fontSize) {
			         var s = parseInt(nameObj.style.fontSize.replace("px",""));
			      } else {
			         var s = 16;
			      }
				  s=s-dec;
				  nameObj.style.fontSize = s+"px";
			}		
		}
		
		nameObjLength = nameObj.offsetWidth;
		nameObjHeight = nameObj.offsetHeight;
		
		//szoveg vagasa
		if (nameObjLength > maxWidth || nameObjHeight > maxHeight)
	    {
		
			//Binaris kereses...
			var low=1;
			var high=originalContent.length;
			while(low<=high){
				var aTry = parseInt((low+high)/2);
				var checkThis = originalContent.substring(0,aTry);
				var checkNeighbour = originalContent.substring(0,aTry+1);
				
				if(textSizerFitIn(nameObj,checkThis,maxWidth,maxHeight) && textSizerFitIn(nameObj,checkNeighbour,maxWidth,maxHeight)){low=aTry+1; continue;};
				if(!textSizerFitIn(nameObj,checkThis,maxWidth,maxHeight) && !textSizerFitIn(nameObj,checkNeighbour,maxWidth,maxHeight)){high=aTry-1; continue;};
				
				the_char = checkThis.charAt(checkThis.length-1);
				
				//toredek szavak lecsapasa
				if (wholewordsonly == true) {
					if(!originalContent.charAt(0,aTry)==' ') {
						checkThis=checkThis.substring(0,checkThis.lastIndexOf(' ')); 
					}
				}
				
				//vagas vege, a szoveg eloallt 
				nameObj.innerHTML=checkThis+" ...";
				break;
			}
	    }
	}
}

//megmondja, hogy az elem lathato-e epp
function textSizerElementVisible(jselement){
	do{
		if (jselement.style.display.toUpperCase() == 'NONE') return false;
		jselement=jselement.parentNode;
	}while (jselement.tagName.toUpperCase() != 'BODY');
	return true;
}

//megmondja, hogy az adott szoveg belefer-e az adott kontenerben az adott meretekbe
function textSizerFitIn(selContainer,newText,sizeX,sizeY){
	selContainer.innerHTML=newText+"...";
	if(selContainer.offsetWidth<=sizeX && selContainer.offsetHeight<=sizeY) return true;
	else return false;
}

function setVisualLength()
{
	var selText;
	var selTexts;
	
	//Amibol tobb is van
	selTexts = document.getElementsByTagName("DIV");
	for(RunnerOuter = 0; RunnerOuter < selTexts.length; RunnerOuter++)
	{
		//Fooldal - tallozo
		if (selTexts[RunnerOuter].className=="EditorialMainContents") 
		{
			var textscontainer=selTexts[RunnerOuter].getElementsByTagName("span");
			for(InnerRunner = 0; InnerRunner < textscontainer.length; InnerRunner++)
			{
				//Editorial - Rovid leiras
				if (textscontainer[InnerRunner].className=="browserDescription") 
				{
					selText=textscontainer[InnerRunner];
					selText.innerHTML = selText.innerHTML.replace(new RegExp( "\\n", "g" ), " ");
					selText.innerHTML = selText.innerHTML.replace(/&nbsp;/g, " ");
					
					visualLength(selText,295,45,0,1,true);
				}
				//Editorial - Cim
				if (textscontainer[InnerRunner].className=="browserTitle") 
				{
					selText=textscontainer[InnerRunner];
					selText.innerHTML = selText.innerHTML.replace(new RegExp( "\\n", "g" ), " ");
					selText.innerHTML = selText.innerHTML.replace(/&nbsp;/g, " ");
					
					visualLength(selText,222,25,0,1,true);
				}
				
			}
		}
		
		
		//Karrier - fooldal - attachment doboz
		if (selTexts[RunnerOuter].className=="karrierAttachment") 
		{
			var textscontainer=selTexts[RunnerOuter].getElementsByTagName("span");
			for(InnerRunner = 0; InnerRunner < textscontainer.length; InnerRunner++)
			{
				//Lead
				if (textscontainer[InnerRunner].className=="KarrierAttachLead") 
				{
					selText=textscontainer[InnerRunner];
					selText.innerHTML = selText.innerHTML.replace(new RegExp( "\\n", "g" ), " ");
					selText.innerHTML = selText.innerHTML.replace(/&nbsp;/g, " ");
					
					visualLength(selText,600,75,0,1,true);
				}

				
			}
		}
		
		//Microsite - topmessages
		if (selTexts[RunnerOuter].className=="TagCloud ArticleAjanlo CloudPortlet TopMessages") 
		{
			var textscontainer=selTexts[RunnerOuter].getElementsByTagName("div");
			for(InnerRunner = 0; InnerRunner < textscontainer.length; InnerRunner++)
			{
				//Editorial - Rovid leiras
				if (textscontainer[InnerRunner].className=="Text") 
				{
					selText=textscontainer[InnerRunner];
					selText.innerHTML = selText.innerHTML.replace(new RegExp( "\\n", "g" ), " ");
					selText.innerHTML = selText.innerHTML.replace(/&nbsp;/g, " ");
					
					visualLength(selText,295,60,0,1,true);
				}
				
			}
		}
		
		if (selTexts[RunnerOuter].className=="IdeasMain MainBox") 
		{
			var textscontainer=selTexts[RunnerOuter].getElementsByTagName("div");
			for(InnerRunner = 0; InnerRunner < textscontainer.length; InnerRunner++)
			{
				//Ideas main - lead
				if (textscontainer[InnerRunner].className=="lead") 
				{
					selText=textscontainer[InnerRunner];
					selText.innerHTML = selText.innerHTML.replace(new RegExp( "\\n", "g" ), " ");
					selText.innerHTML = selText.innerHTML.replace(/&nbsp;/g, " ");
					
					visualLength(selText,295,65,0,1,true);
				}
			}
		}
		
		if (selTexts[RunnerOuter].className=="KarrierScanner") 
		{
			var textscontainer=selTexts[RunnerOuter].getElementsByTagName("div");
			for(InnerRunner = 0; InnerRunner < textscontainer.length; InnerRunner++)
			{
				//Ideas main - lead
				if (textscontainer[InnerRunner].className=="Lead") 
				{
					selText=textscontainer[InnerRunner];
					selText.innerHTML = selText.innerHTML.replace(new RegExp( "\\n", "g" ), " ");
					selText.innerHTML = selText.innerHTML.replace(/&nbsp;/g, " ");
					
					visualLength(selText,350,130,0,1,true);
				}
			}
		}
		
                if (selTexts[RunnerOuter].className=="mainCont MicrositeContentList") 
		{
			var textscontainer=selTexts[RunnerOuter].getElementsByTagName("div");
			for(InnerRunner = 0; InnerRunner < textscontainer.length; InnerRunner++)
			{
				//Ideas main - lead
				if (textscontainer[InnerRunner].className=="Lead") 
				{
					selText=textscontainer[InnerRunner];
					selText.innerHTML = selText.innerHTML.replace(new RegExp( "\\n", "g" ), " ");
					selText.innerHTML = selText.innerHTML.replace(/&nbsp;/g, " ");
					
					visualLength(selText,210,70,0,1,true);
				}
			}
		}
	}	
	
	selText=document.getElementById("aktualEvent");
	selText.innerHTML = selText.innerHTML.replace(new RegExp( "\\n", "g" ), " ");
	selText.innerHTML = selText.innerHTML.replace(/&nbsp;/g, " ");
	
	visualLength(selText,173,16,0,1,true);
}

addLoadEvent(setVisualLength);
