
	function HiliteKeywords( strHTML ) 
	{
		OriginalContent = strHTML;
		if ( null != Words ) {
			var LongestWordLength = 0;
			for (var t=0; t < Words.length ; t++) 
			{
				if ( Words[t].length > LongestWordLength )
				{
					LongestWordLength = Words[t].length;
				}
			}
			
			var WordsSorted = new Array();
			
			for( var t=LongestWordLength ; t > 0 ; t--)
			{
				for ( var tt = 0; tt < Words.length ; tt++)
				{
					if ( Words[tt].length == t )
					{
						strHTML = NoTagReplace( strHTML, Words[tt], '<span class="Hilite">', '</span>', false, false, tt);
					}
				}
			}
		} 
		return strHTML;
	}

	function NoTagReplace( target, markTerm, tagStart, tagEnd, caseSens, wordOnly, t ) 
	{
		var work = target;
		var ind = 0;
		var next = 0;

		if ( !caseSens ) 
		{
			markTerm = markTerm.toLowerCase();
			work = target.toLowerCase();
		}

		while ( ( ind = work.indexOf( markTerm, next ) ) >= 0 ) 
		{
			if ( ! ( work.substring( 0, ind ).lastIndexOf( '<' ) < work.substring( 0, ind ).lastIndexOf( '>' ) ) ) 
			{
				next = ind + markTerm.length;
				continue;
			}
			
			var precedingChar = ( ind > 0 ? work.substring( ind - 1, ind ) : '' );
			var procedingChar = ( ind + markTerm.length < work.length ? work.substring( ind + markTerm.length, ind + markTerm.length + 1) : '' );
			
			var WordStart = !( ( 'abcdefghijklmnopqrtsuvwxyzĉĝċ' ).indexOf( precedingChar ) > -1 );
			var WordEnd = !( ( 'abcdefghijklmnopqrtsuvwxyzĉĝċ' ).indexOf( procedingChar ) > -1 );
			
			// Abort if word is "not alone".
			if( !WordStart || !WordEnd )
			{
				next = ind + markTerm.length;
				continue;
			}
			
			target = target.substring(0,ind) + tagStart + target.substring(ind,(ind+markTerm.length)) + tagEnd + target.substring(ind+markTerm.length,target.length); 
			work = work.substring(0,ind) + tagStart + work.substring(ind,(ind+markTerm.length)) + tagEnd + work.substring(ind+markTerm.length,work.length); 
			next = ind + tagStart.length + tagEnd.length;

			if (next >= work.length) 
			{ 
				break;
			} 
		}
		return target;
	}

