//Biblioth\u00E8que permettant la recherche en AJAXfunction searchNotes(query, start){  var xmlhttp=false;  /*@cc_on @*/  /*@if (@_jscript_version >= 5)   try {    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");    }     catch (e) {      try {        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");      }       catch (E) {        xmlhttp = false;      }    }@end @*/  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {    try {      xmlhttp = new XMLHttpRequest();    } catch (e) {      xmlhttp=false;    }  }  if (!xmlhttp && window.createRequest) {    try {      xmlhttp = window.createRequest();    } catch (e) {      xmlhttp=false;    }  }      xmlhttp.open("GET", DBase + "search_" + PageLang + "?searchview&query=" + query +  "&SearchOrder=4",true);  xmlhttp.onreadystatechange=function() {    if (xmlhttp.readyState==4) {       var divRight = document.getElementById('right-column');       if( divRight !=null)             divRight.style.display = 'none';              //   removeEvent('right-column' , '' , '' )       var divCenter = document.getElementById('center-column');  	  if( divCenter !=null)                divCenter.setAttribute('id','center-right-column');       else          divCenter = document.getElementById('center-right-column');  	  divCenter.innerHTML = xmlhttp.responseText;      }  }  xmlhttp.send(null)}function removeEvent( obj, type, fn ) {//John Resig : http://ejohn.org/projects/flexible-javascript-events/	if ( obj.detachEvent ) {		obj.detachEvent( 'on'+type, obj[type+fn] );		obj[type+fn] = null;	} else		obj.removeEventListener( type, fn, false );}/* * This is the function that actually highlights a text string by * adding HTML tags before and after all occurrences of the search * term. You can pass your own tags if you'd like, or if the * highlightStartTag or highlightEndTag parameters are omitted or * are empty strings then the default <font> tags will be used. */function doHighlight(bodyText, searchTerm, highlightStartTag, highlightEndTag) {  // the highlightStartTag and highlightEndTag parameters are optional  if ((!highlightStartTag) || (!highlightEndTag)) {    highlightStartTag = "<font style='color:blue; background-color:yellow;'>";    highlightEndTag = "</font>";  }    // find all occurences of the search term in the given text,  // and add some "highlight" tags to them (we're not using a  // regular expression search, because we want to filter out  // matches that occur within HTML tags and script blocks, so  // we have to do a little extra validation)  var newText = "";  var i = -1;  var lcSearchTerm = searchTerm.toLowerCase();  var lcBodyText = bodyText.toLowerCase();      while (bodyText.length > 0) {    i = lcBodyText.indexOf(lcSearchTerm, i+1);    if (i < 0) {      newText += bodyText;      bodyText = "";    } else {      // skip anything inside an HTML tag      if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {        // skip anything inside a <script> block        if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<script", i)) {          newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;          bodyText = bodyText.substr(i + searchTerm.length);          lcBodyText = bodyText.toLowerCase();          i = -1;        }      }    }  }    return newText;}/* * This is sort of a wrapper function to the doHighlight function. * It takes the searchText that you pass, optionally splits it into * separate words, and transforms the text on the current web page. * Only the "searchText" parameter is required; all other parameters * are optional and can be omitted. */function highlightSearchTerms(searchText, treatAsPhrase, warnOnFailure, highlightStartTag, highlightEndTag){  // if the treatAsPhrase parameter is true, then we should search for   // the entire phrase that was entered; otherwise, we will split the  // search string so that each word is searched for and highlighted  // individually  if (treatAsPhrase) {    searchArray = [searchText];  } else {    searchArray = searchText.split(" ");  }  var objCenter = document.getElementById("main")  if (!objCenter || typeof(objCenter.innerHTML) == "undefined") {    if (warnOnFailure) {      alert("Sorry, for some reason the text of this page is unavailable. Searching will not work.");    }    return false;  }    var bodyText = objCenter.innerHTML;  for (var i = 0; i < searchArray.length; i++) {    bodyText = doHighlight(bodyText, searchArray[i], highlightStartTag, highlightEndTag);  }    objCenter.innerHTML = bodyText;  return true;}/* * Fonction permettant d'afficher le r\u00E9sultat d'une recherche  * dans une nouvelle fen\u00EAtre */function displayResult( sType , reference , parentReference , typePublication , regulPublication , ParentCategory , fileName){switch( sType ){case 'page':  	window.open(DBase + "pagesref/" + reference + "?Opendocument&lang=" + PageLang + "&searchtext=" + document.forms[1].searchtext.value);  break;  case 'comhtml' :	window.open(DBase + "pagesref/" + reference + "?Opendocument&lang=" + PageLang + "&publi="+typePublication+"&regul="+regulPublication+"&categ="+ParentCategory+"&parent="+parentReference+"&searchtext=" + document.forms[1].searchtext.value);  break;  case 'comdoc' :window.open(DBase + "pagesref/" + reference + "/$file/" +  fileName) ; break;    default:	switch( PageLangto.LowerCase() ) 	{	case 'fr':  		alert( 'Type inconnu, merci de contacter votre administrateur');	break;			case 'en':  	alert( 'Unknown type, please contact your administrator');	break;		default:	alert( 'Unknown type, please contact your administrator');	}  }}