function getRoot() {
	var iCycles = 0;
	var oParent;
	do {
		oParent = window.parent;
		if (oParent == null)
			oParent = window.opener;
		if (oParent.location.href.indexOf('htm') == -1 ||  oParent.location.href.indexOf('index.htm') != -1)
			return oParent;
		oParent = oParent.parent;
		iCycles++;
	} while (oParent != null && oParent != window && iCycles < 10);
	return null;
}

function getValue(sName) {
	var oItems = document.getElementsByName(sName);
	if (oItems.length == 0) 
		return document.getElementById(sName).value;
	if (oItems.length == 1)
		return oItems[0].value;
	else
		for (var i = 0; i < oItems.length; i++) {
			if (oItems[i].checked)
				return oItems[i].value;
		}
	return '';
}

function setValue(sName, sValue) {
//		alert('name: ' +sName +', value: ' +sValue);
	var oItems = document.getElementsByName(sName);
	if (oItems.length == 0)
		document.getElementById(sName).value = sValue;
	if (oItems.length == 1)
		oItems[0].value = sValue;
	else
		for (var i = 0; i < oItems.length; i++) {
			if (oItems[i].value == sValue)
				oItems[i].checked = true;
		}
}

function getParam(sName, sURL) {
	if (sURL == null)
		var sURL = window.location.href;
		
	sURL = sURL.substr(sURL.indexOf('?') +1);
	var aParams = sURL.split('&');
	var aParam, aParam;
	for (var i = 0; i < aParams.length; i++) {
		aParam = aParams[i].split('=');
		if (aParam[0] == sName)
			return decodeURI(aParam[1]);
	}
	return '';
}

function GetBookmark() {
	var sURL = window.location.href;
	var iPos = sURL.indexOf('#');
	if (iPos == -1)
		return '';
	else {
		return sURL.substr(iPos +1);
	}
}

function getCurrentYPos() {
	if (document.body && document.body.scrollTop)
		return document.body.scrollTop;
	if (document.documentElement && document.documentElement.scrollTop)
		return document.documentElement.scrollTop;
	if (window.pageYOffset)
		return window.pageYOffset;
	return 0;
}

function getObjectTop(sId, oDoc) {
	if (oDoc == null)
		oDoc = document;
		
	var iY = 0;
	try {
	    var oObj = oDoc.getElementsByName(sId)[0];
	    while (oObj != null && oObj != oDoc.body && oObj.offsetTop != null) {
	    	iY += oObj.offsetTop;
	    	oObj = oObj.offsetParent;
	    }
    } catch (e) {
    	alert(e.message);
    }

	return iY;
}

function addZeros(iNum, iMinSize) {
	var sNum = String(iNum);
	while (sNum.length < iMinSize)
		sNum = '0' +sNum;
	return sNum;
}
/*
function _hilightWords(sBody, sHitSet) {
	var aHits = sHitSet.split(',');

	if (aHits.length > 0) {
    	var sText, sWord, oSubExp, bFound;
		var sHiBody = cleanupWord(sBody.toUpperCase());

		sBody = sBody.replace(
			new RegExp('<td width="40%">([^<]*)</td>', 'gim'), 
			function ($0, $1) {
				sText = $1;
				bFound = false;
				for (var i = 0; i < aHits.length; i++) {
		
			alert('word: ' +sWord);

					sText = sText.replace(
						new RegExp('(' +sWord +')', 'gim'),
						function ($0, $1) {
							bFound = true;
							return '<span class="hl">' +$1 +'</span>';
						}
					);
				}
				if (bFound)
					return '<td width="40%" class="hl">' +sText +'</td>';
				else
					return '<td width="40%">' +sText +'</td>';
			}
		);
	}
	
	return sBody;
}
*/

function hilightWords(sBody, sHitSet) {
	var aHits = sHitSet.split(',');

	if (aHits.length > 0) {
		var sHiBody = cleanupWord(sBody.toUpperCase());
    	var sText, sWord, oSubExp, bFound;
    	
		for (var i = 0; i < aHits.length; i++) {
			sWord = aHits[i];

			if (sWord.charAt(sWord.length -1) == '*')
				sWord = sWord.substr(0, sWord.length -1);
			else
				sWord += '(\\b|\')';
				
			if (sWord.charAt(0) == '*')
				sWord = sWord.substr(1);
			else
				sWord = '(\\b|\')' +sWord;
			
//			alert('word: ' +sWord);
			var oRegExp = new RegExp(sWord, 'gim');
			var aPos = [];
			while ((aArr = oRegExp.exec(sHiBody)) != null) {
				aArr.lastIndex = oRegExp.lastIndex;
				aPos.push(aArr);
			}
			
			var iPrev = -1;	
			while (aPos.length > 0) {
				var aArr = aPos.pop();
				
				var iPos1 = sBody.lastIndexOf('>', aArr.index);
				var iPos2 = sBody.lastIndexOf('<', aArr.index);
				
				if (iPos1 > iPos2) {
//					alert(sHiBody.substr(aArr.index -20, 40));
						
					var iPos = sHiBody.lastIndexOf('<TD ', aArr.index);
					if (iPos != -1) {
						iPos += 4;
						
//						alert(sBody.substr(iPos, 5));
						
						if (iPrev != iPos) {
//							alert(sHiBody.substr(aArr.index -80, 80) +'***' +sHiBody.substr(aArr.index, 80));
							
							sBody = sBody.substr(0, iPos) +'class="hl" ' +sBody.substr(iPos);
							sHiBody = sHiBody.substr(0, iPos) +'class="hl" ' +sHiBody.substr(iPos);
							
							iPrev = iPos;
						}
//							alert(sHiBody.substr(aArr.index -80, 80) +'***' +sHiBody.substr(aArr.index, 80));
					}
					
					var iIndex = aArr.index +11;// -iSub;
					var iLastIndex = aArr.lastIndex +11;// -iSub;
					
					sBody = sBody.substr(0, iIndex) +'<span class="hl">' 
						+sBody.substring(iIndex , iLastIndex) +'</span>' +sBody.substr(iLastIndex);
					sHiBody = sHiBody.substr(0, iIndex) +'<span class="hl">' 
						+sHiBody.substring(iIndex , iLastIndex) +'</span>' +sHiBody.substr(iLastIndex);
				}
			}	
		}
	}
	
//	prompt('', sBody);
	
	return sBody;
}

function hilightWords2(sBody, aHitSet) {
	try {
		var sCurrent = aHitSet[aHitSet.length -1];
		
//		alert(sCurrent);
		
		sCurrent = sCurrent.substr(5);
		
		for (var i = 0; i < aHitSet.length; i++) {
			var sBaseNo = aHitSet[i].substr(5);
			
			var oRegExp = new RegExp('>' +sBaseNo +'<', 'gm');
			var aPos = [];
			while ((aArr = oRegExp.exec(sBody)) != null) {
				aArr.lastIndex = oRegExp.lastIndex;
				aPos.push(aArr);
			}
				
			while (aPos.length > 0) {
				var aArr = aPos.pop();
				
				var iPos = sBody.lastIndexOf('<TR ', aArr.index);
				if (iPos != -1) {
					iPos += 3;

					if (sBaseNo == sCurrent)						
						sBody = sBody.substr(0, iPos) +' class="h2" ' +sBody.substr(iPos);
					else
						sBody = sBody.substr(0, iPos) +' class="hl" ' +sBody.substr(iPos);
						
//					alert(sBody.substr(aArr.index -160, 160) +'***' +sBody.substr(aArr.index, 160));
				}
			}
		}
	} catch(e) {
		alert(e.message);
	}
	
	return sBody;
}

function hilightHTMLWords(sBody, sHitSet) {
	var aHits = sHitSet.split(',');

	if (aHits.length > 0) {
		var sHiBody = cleanupWord(sBody.toUpperCase());
    	var sText, sWord, oSubExp, bFound;
    	
		for (var i = 0; i < aHits.length; i++) {
			sWord = aHits[i];

			if (sWord.charAt(sWord.length -1) == '*')
				sWord = sWord.substr(0, sWord.length -1);
			else
				sWord += '(\\b|\')';
				
			if (sWord.charAt(0) == '*')
				sWord = sWord.substr(1);
			else
				sWord = '(\\b|\')' +sWord;
			
//			alert('word: ' +sWord);
			var oRegExp = new RegExp(sWord, 'gim');
			var aPos = [];
			while ((aArr = oRegExp.exec(sHiBody)) != null) {
				aArr.lastIndex = oRegExp.lastIndex;
				aPos.push(aArr);
			}
				
			while (aPos.length > 0) {
				var aArr = aPos.pop();
				
				var iPos1 = sBody.lastIndexOf('>', aArr.index);
				var iPos2 = sBody.lastIndexOf('<', aArr.index);
				
				if (iPos1 > iPos2) {
					sBody = sBody.substr(0, aArr.index) +'<span class="hl">' 
						+sBody.substring(aArr.index, aArr.lastIndex) +'</span>' +sBody.substr(aArr.lastIndex);
					sHiBody = sHiBody.substr(0, aArr.index) +'<span class="hl">' 
						+sHiBody.substring(aArr.index, aArr.lastIndex) +'</span>' +sHiBody.substr(aArr.lastIndex);
				}
			}	
		}
	}
	
	return sBody;
}

function cleanupWord(sWord) {
	return sWord.replace(/[ÀÂÆÁ]/gi, 'A')
		.replace(/[Ç]/gi, 'C')
		.replace(/[ÉÈÊË]/gi, 'E')
		.replace(/[ÎÏÍ]/gi, 'I')
		.replace(/[ÔŒŐÖÓ]/gi, 'O')
		.replace(/[ÛÙÜŰÚ]/gi, 'U')
		.replace(/[Ñ]/gi, 'N');
//		.replace(/[']/gi, '_');
}

function getStopWords(sLang) {
	if (sLang == 'FR')
		return [ 'DOIT', 'DOIVENT', 'CEUX', 'CI', 'EX', 'VII', 'VI', 'UNE', 'UN', 'TOUTES', 
			'TOUTEFOIS', 'TOUTE', 'TOUT', 'TOUS', 'TELLE', 'SUR', 'SONT', 'SON', 'SOI', 'SOIT', 
			'SI', 'SES', 'SE', 'SA', 'QUI', 'QUE', 'QUANT', 'QU', 'POUR', 'PEUT', 'PAS', 'PAR', 
			'OU', 'ON', 'NE', 'MEME', 'MAIS', 'LUI', 'LORSQUE', 'LORSQU', 'LORS', 'LEUR', 
			'LES', 'LEQUEL', 'LE', 'LAQUELLE', 'LA', 'IX', 'IV', 'ILS', 'IL', 'III', 'II', 'IN', 
			'ETRE', 'ETE', 'ET', 'EST', 'ENTRE', 'EN', 'ELLES', 'ELLE', 'DU', 'DONT', 'DONC', 
			'DES', 'DEJA', 'DE', 'DANS', 'CI', 'CETTE', 'CET', 'CES', 'CELUI', 'CELLE', 'CELA', 
			'CE', 'CAS', 'AVEC', 'AVANT', 'AVAIT', 'AUX', 'AUTRES', 'AUTRE', 'AUSSI', 
			'AU', 'APRÈS', 'AINSI', 'LEURS', 'ONT', 'AYANT', 'MOINS' ];
	else if (sLang == 'EN')
		return [ 'AND', 'THIS', 'THAT', 'ALSO', 'THE', 'IN', 'ON', 'WITH', 'AS', 'OR', 
			'NOT', 'OF', 'AN', 'FOR', 'TO', 'AT', 'BY', 'SUCH', 'MAINLY', 'USE', 'ETC', 'FROM',
			'IT', 'IS', 'ITS', 'ARE', 'WE', 'YOU', 'THEY', 'THEM', 'THESE', 'BE', 'HAVE', 'HAS']; 
	else if (sLang == 'HU')
		return [ 'ÉS', 'EZ', 'AZ', 'MÉG', 'A', 'VAGY', 'NEM', 'MÁR', 'KEVÉS', 
			'SOK', 'NÉHÁNY', 'STB', 'NÉHA', 'GYAKRAN', 'TALÁN']; 
}
