// ----------------------------------------------------------------------------
// Lauyan Software Javascript Search Engine 1.0
//
// This file is the JavaScript search engine for a website created by TOWeb
//
// Copyright (C) LAUYAN SOFTWARE
// web: http://www.lauyan.com
// ----------------------------------------------------------------------------

STR_SEARCH_QUERY_MSG = "Résultats de la recherche pour";
STR_NO_RESULT = "Aucun résultat trouvé";
STR_SEARCH_BUTTON = "Rechercher";
STR_SCORE = "Score";
STR_TERMS = "Termes";
STR_SEARCH_SIZE = "40";
MIN_WORD_LEN = 2;
DISPLAY_SRCH_INFO = 1;
USE_UTF8 = 0;
REMOVE_ACCENTS = 1;
BOLD_LINKS = 0;
ONLINE_WEBSITE = 1;

namesArray = new Array(" pensee jour silence disponibilite l'ecoute l'authenticite ",
" karate yoga gong yogi senoir malades blesses ",
" arts martiaux humanitaire solidarite facteurs sante bien-etre ecosante ecomedecine art martial club karate sophrologie homeopathie organisme medecines alternatives douces paralleles acupunture osteopathie shiatzu phytotherapie traductions techniques guerir silence confiance serenite ",
" karate gong humanitaire solidarite club team tassin ecole d'arts martiaux facteurs sante bien-etre ecosante ecomedecine art martial sophrologie shiatzu silence confiance serenite force distance ",
" sophrologie facteurs sante bien-etre ecosante ecomedecine art martial club karate medecines alternatives douces paralleles homeopathie acupunture osteopathie shiatzu phytotherapie guerir silence confiance serenite calme ",
" gong art martial interne bien etre  ",
" solidarite homeopathie organisme humanitaire benevolat medecins benevoles soigne plus demunis ecosante ecomedecine medecines alternatives douces paralleles acupunture osteopathie shiatzu phytotherapie guerir silence confiance serenite bien-etre ",
" arts martiaux humanitaire sans frontiere karate qong souffle solidaire solidarite ",
" traductions high tech francais anglais allemand optoelectronique biotechnologies materiaux avances informatique electronique automatisme ",
" facteurs sante sophie mougenot bien-etre ecosante ecomedecine art martial karate sophrologie solidarite homeopathie organisme humanitaire medecines alternatives douces paralleles acupunture osteopathie shiatzu phytotherapie traductions guerir silence confiance serenite vide plein ",
" puissance pensee cours redaction ",
"  ",
" adresses e-mail  ",
" liens favoris  ",
" statistiques  ",
" livre d'or  ");
urlsArray = new Array("../penseedujour(54)/index.php",
"../newevents/index.php",
"../topic(56)/index.php",
"../karate(49)/index.php",
"../mapage1(53)/index.php",
"../qigong/index.php",
"../mapage(52)/index.php",
"../conferencessante(47)/index.php",
"../traductionshight(58)/index.php",
"../lesilence(51)/index.php",
"../lapensee(50)/index.php",
"../lapriere/index.php",
"../contact(48)/index.php",
"../topic1(57)/index.php",
"../mapage2/index.php",
"../livredor/index.php");
titlesArray = new Array("Pour une écosanté par sophie Mougenot : le karaté, les médecines alternatives, Solidarité Homéopathie, la sophrologie, le silence",
"NEWS",
"le karaté, le qi gong, les médecines alternatives, la sophrologie, le silence, l'authenticité, la simplicité",
"le karaté, un sport de confiance, une écosanté",
"Une écosanté par sophie Mougenot : le karaté, les médecines alternatives, Solidarité Homéopathie, la sophrologie, le silence",
"Pour une écosanté par sophie Mougenot : le qi gong, un art martial interne, une écomédecine, pour une écosanté",
"Solidarité Homéopathie et médecines alternatives, une éco médecine. ",
"Conférences Santé organisées par Solidairté Homéopathie",
"Traductions techniques  High Tech",
"Pour une écosanté par sophie Mougenot : la richesse du silence",
"La puissance de la pensée",
"Pour une écosanté par sophie Mougenot : le karaté, les médecines alternatives, Solidarité Homéopathie, la sophrologie, le silence",
"adresses e-mail",
"Pour une écosanté par sophie Mougenot : le karaté, les médecines alternatives, Solidarité Homéopathie, la sophrologie, le silence",
"Statistiques",
"livre d'or");
descArray = new Array("arts martiaux humanitaire, solidarité, karaté, qi gong, médecines alternatives, le silence, la pensée, l'authenticité, traductions techniques",
"les derniers évènements",
"mes facteurs de santé par sophie mougenot : le karaté, la sophrologie, les médecines alternatives dites traditionnelles et Solidarité Homéopathie",
"Le karaté, un facteur de santé - une écosanté avec la sophrologie, le silence, la pensée, l'authenticité.",
"la sophrologie : une écosanté  par sophie mougenot, un facteur de santé : avec le karaté,  le silence, la pensée, l'authenticité.",
"COURS DE QI GONG  Pour découvrir la profondeur, la force, l'efficacité des mouvements lents. Etre en conscience avec soi et avec les autres. Etre doux...",
"Solidarité Homéopathie, organisme humanitaire qui regroupe des médecins bénévoles, soigne les plus démunis et se centre sur une écosanté, écomédecine,...",
"Evenement ARTS MARTIAUX et MEDECINE organisée par Solidarité Homéopathie, un organisme humanitaire qui regroupe des médecins bénévoles Homéopathe, Acu...",
"Traductions techniques biotechnologies, informatique, automatisme, contrôle, biomatériaux, juridique",
"",
"En cours de rédaction",
"",
"Pour contacter Solidarité Homéopathie, TEAM un club de  karaté , yoseikan budo, sophrologie à Tassin la demi lune, voir les conférences santé- ecoméde...",
"Pour une écosanté  par sophie mougenot : mes facteurs de santé : le karaté, les médecines alternatives, Solidarité Homéopathie, la sophrologie, les tr...",
"",
"");
sublinksArray = new Array(16);
var linksCount = 16;


ALLWORDSONLY = false;

// getParam returns the value of the specified GET parameter
function getParam(paramName)
{
    paramStr = document.location.search;
    if( paramStr == "" )
        return "";
    if( paramStr.charAt(0) == "?" )
        paramStr = paramStr.substr(1);
    arg = (paramStr.split("&"));
    for( i=0; i<arg.length; i++ ) 
    {
      arg_values = arg[i].split("=")
      if( unescape(arg_values[0]) == paramName ) 
      {
         if( USE_UTF8 == 1 && self.decodeURIComponent ) // check if decodeURIComponent() is defined
            ret = decodeURIComponent(arg_values[1]);
         else
            ret = unescape(arg_values[1]);  // IE 5.0 and older does not have decodeURI
         return ret;
      }
    }
    return "";
}

function replaceAll(str,from,to) 
{
    var idx = str.indexOf(from);
    while( idx > -1 ) {
        str = str.replace(from, to); 
        idx = str.indexOf(from);
    }
    return str;
}

// lowercase, remove quotes and accents
function formatChars(str) 
{
    str = str.toLowerCase();
    if( REMOVE_ACCENTS ) 
    {
      var a = "àáâãäåòóôõöèéêëçìíîïùúûüÿñ";
      var b = "aaaaaaoooooeeeeciiiiuuuuyn";
      for( i=0; i<a.length; i++ )
        str = replaceAll( str, a.charAt(i), b.charAt(i) );
    }
    str = replaceAll( str, "'", " " );
    return str;
}

function SortCompare(a, b)
{
  if( a[2] == b[2] )
  {  
    if (a[1] < b[1]) return 1;
    else if (a[1] > b[1]) return -1;
    else return 0;
  }
  else if (a[2] < b[2]) return 1;
    else return -1;
}

function jseSearch( internal )
{
  // get params
  var rootURL = '';
	var SelfURL = document.location.href;
  var paramIndex = SelfURL.indexOf("?");    
  if (paramIndex > -1)
     SelfURL = SelfURL.substr(0, paramIndex);
  paramIndex = SelfURL.indexOf("#");
  if (paramIndex > -1)
    SelfURL = SelfURL.substr(0, paramIndex);        
	if (ONLINE_WEBSITE) 
	{
		paramIndex = SelfURL.lastIndexOf('/');
		if (paramIndex > -1) 
		{
			rootURL = SelfURL.substr(0, paramIndex);
			paramIndex = rootURL.lastIndexOf('/');
			if (paramIndex > -1) {
				rootURL = SelfURL.substr(0, paramIndex+1);
			} else
			  rootURL = '';
		}
	}	
  SelfURL = SelfURL.replace(/\</g, "&lt;");
  SelfURL = SelfURL.replace(/\"/g, "&quot;");

  var query = getParam("jse_query");
  query = query.replace(/[\++]/g, " ");  // replace any '+' with spaces
  query = query.replace(/\</g, "&lt;");
  query = query.replace(/[\"+]/g, " ");

  // display the search form
  var lnktarget = "";
	if( internal == null || internal != 1 )
	{
    document.writeln("<form method=\"get\" action=\"" + SelfURL + "\">");
    document.writeln("<input type=\"text\" name=\"jse_query\" size=\"" + STR_SEARCH_SIZE + "\" value=\"" + query + "\" />");
    document.writeln("<input type=\"submit\" value=\"" + STR_SEARCH_BUTTON + "\" />");
    document.writeln("</form>");
  }	
	else
	{
	 lnktarget = "\" target=\"_blank";
  }
	query = formatChars(query);
  if( query.length == 0 ) return;
  
  var found=0, t=0, k=0, score=0, subscore=0, i=0;
  var keyword = "", tmp = "";
  var searchWords = new Array();

  // split search query by spaces
  searchWords = query.split(" ");
	if( internal == null || internal != 1 ) {
		document.writeln( "" + STR_SEARCH_QUERY_MSG + " : <strong>" +query+"</strong><br>");
  }
  // init result table information
  res_table = new Array(linksCount);
  for( t=0; t<linksCount; t++ )
  {
    res_table[t] = new Array(3);
    res_table[t][0] = 0;  // index
    res_table[t][1] = 0;  // score
    res_table[t][2] = 0;  // words found
    res_table[t][3] = ""; // sublinks (output string)
  }
  var significantwords = 0;
  
  // begin search ...
  for( i=0; i<searchWords.length; i++ )
  {
    keyword = searchWords[i];
    if( keyword.length > MIN_WORD_LEN ) // skip "small" words
	{
	  significantwords++;
	  for(var q=0; q<linksCount; q++ )
	  {
	    t = q;
	    score = 0;
	
	    // search for keywords (an exact word doubles the score)
		  tmp = formatChars(descArray[t]);
	    if( tmp.indexOf(keyword) != -1 ) score++;
	    if( tmp.indexOf(' '+keyword+' ') != -1 ) score+=2;
		  tmp = formatChars(titlesArray[t]);
	  	if( tmp.indexOf(keyword) != -1 ) score++;
		  if( tmp.indexOf(' '+keyword+' ') != -1 ) score+=2;
	    if( namesArray[t].indexOf(keyword) != -1 ) score++;
	    if( namesArray[t].indexOf(' '+keyword+' ') != -1 ) score+=2;
	
		// search for keywords in sublinks (i.e. bookmarks)
	    k = q+1;
		while( k <= linksCount )
		{
			tmp = descArray[k];
			if( tmp == null || tmp.charAt(0) != '&' ) break;
			subscore = 0;
			tmp = formatChars(descArray[k]);
			if( tmp.indexOf(keyword) != -1 ) subscore++;
			if( tmp.indexOf(' '+keyword+' ') != -1 ) subscore+=2;
			tmp = formatChars(titlesArray[k]);
			if( tmp.indexOf(keyword) != -1 ) subscore++;
			if( tmp.indexOf(' '+keyword+' ') != -1 ) subscore+=2;
			if( namesArray[k].indexOf(keyword) != -1 ) subscore++;
			if( namesArray[k].indexOf(' '+keyword+' ') != -1 ) subscore+=2;
			
			if( subscore > 0 )
			{
				if( res_table[t][3].indexOf( "\"" + urlsArray[k] + "\"" ) == -1 )
					res_table[t][3] += "<tr><td width='35'>&nbsp;</td><td><a href=\"" + urlsArray[k] + lnktarget + "\">" + titlesArray[k] + "</a></td></tr>";
//	           		if( B OLD_LINKS )  res_table[t][3] += "<tr><td width='50'>&nbsp</td><td><b><a href='" + urlsArray[k] +"'>" + titlesArray[k] + "</a></b></td></tr>";
				score += subscore;
			}	
			k++;
		}
		q = k-1;
		
	    if( score > 0 )
	    {
	      res_table[t][0] = t;
	      res_table[t][1] += score;
	      res_table[t][2]++;
	      found++;
	    }
	  }
	}
  }
  if( found == 0 ) 
  {
    document.write("<p><b>" + STR_NO_RESULT + "</b></p>");
  } 
  else 
  {
	 // sort by words found and scores
    res_table.sort(SortCompare);	
	
    // display the results
    for( q=0; q<found; q++ )
      if( res_table[q][1] > 0 ) // display only results with a positive score
	  if( !ALLWORDSONLY || (ALLWORDSONLY && res_table[q][2] == significantwords) )
	    {
        t = res_table[q][0];    // get page index
        if( BOLD_LINKS ) {
          document.writeln("<br><b>" + (q+1) + ". <a href=\"" + urlsArray[t] + lnktarget + "\">" + titlesArray[t] + "</a></b>" );
        } else
          document.writeln("<br><b>" + (q+1) + ".</b> <a href=\"" + urlsArray[t] + lnktarget + "\">" + titlesArray[t] + "</a>" );
        if( descArray[t].length > 2 )
          document.writeln("<br>" + descArray[t]);
        if( DISPLAY_SRCH_INFO ) 
		{
			document.write("<br><span style='font-size: 80%; font-style: italic;'>");
			if( !ALLWORDSONLY )
				document.write("" + STR_TERMS + ": " + res_table[q][2] + " - " );
			document.write("" + STR_SCORE + ": " + res_table[q][1] );
			if (ONLINE_WEBSITE) {
			  document.writeln(" - URL: " + rootURL + urlsArray[t].substr(3) + "</span>");
			}	else
			  document.writeln(" - URL: " + urlsArray[t] + "</span>");
      	}
				if( res_table[q][3].length > 0 ) { 
      	  document.writeln( '<table>' + res_table[q][3] + '</table>' );
      	} else document.writeln("<br>");
      }
  }
  document.writeln("<br>");
}

