function highlightSearch( searchText, CSSClassName ){
	var reg = /([^,])+/gi;
	var str;
	var words = searchText.match( reg );
	if( words != null ){
		str = "";
		for( var i = 0; i < words.length; i++ ){
			if( str == "" ){
				str = highlightReplace( words[0] );
			}else{
				str = str + "|" + highlightReplace( words[i] );
			}
		}
		var elts = document.getElementsByTagName( "*" );
		for( var i = 0; i < elts.length; i++ ){	
			var elt = elts[i];
			if( elt.className == "_highlightable_" ){
				highlightSearch1( elt, new RegExp( str, "i" ), CSSClassName )
			}
		}
	}
}

function highlightSearch1( node, reg, CSSClassName ){
	var res, elt, attr;
	if( node == null ) return;
	highlightSearch1( node.firstChild, reg, CSSClassName )
	if( node.nodeType == 3 ){ // TEXT_NODE
		res = node.nodeValue.match( reg );
		if( res != null ){
			if( res.index == 0 ){
				node.splitText( res[0].length );
				elt = document.createElement( "SPAN" );
				attr = document.createAttribute( "class" );
				attr.nodeValue = CSSClassName;
				elt.attributes.setNamedItem( attr );
				node.parentNode.replaceChild( elt, node );
				elt.appendChild( node );
				node = elt;
			}else{
				node.splitText( res.index );
			}
		}
	}
	highlightSearch1( node.nextSibling, reg, CSSClassName )
}

function highlightReplace( str ){
	var ret;
	ret = str.replace( /[aàâä]/ig, "[aàâä]" );
	ret = ret.replace( /[eéèêë]/ig, "[eéèêë]" );
	ret = ret.replace( /[iîï]/ig, "[iîï]" );
	ret = ret.replace( /[oôö]/ig, "[oôö]" );
	ret = ret.replace( /[uùûü]/ig, "[uùûü]" );
	ret = ret.replace( /[cç]/ig, "[cç]" );
	return ret;
}