// ----------------------------------------------------------------------------
// 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 = 1;
ONLINE_WEBSITE = 1;

namesArray = new Array(" reves interpretation signification reve interpreter rever dictionnaire analyse freud interpretation sens reves ",
" reves interpretation reve interpretation reves signification reve interpreter rever dictionnaire analyse freud  ",
" signification reve trouver signification reves sinification interpretation interpreter rever dictionnaire analyse freud ",
" dictionnaire reves dictionnaire symbole reve reves interpretation signification reve interpreter rever analyse freud ",
" reves interpretation signification reve interpreter rever dictionnaire analyse freud interpretation sens reves ",
" accident acident accidant dictionnaire reves reve accident  ",
" age dictionnaire reves dictionnaire symbole reve reves interpretation signification reve interpreter rever analyse freud ",
" animal animaux dictionnaire reves dictionnaire symbole reve reves interpretation signification reve interpreter rever analyse freud ",
" auto automobile mobile dictionnaire reves dictionnaire symbole reve reves interpretation signification reve interpreter rever analyse freud ",
" bagarre battre bagare dictionnaire reves dictionnaire symbole reve reves interpretation signification reve interpreter rever analyse freud ",
" cheval chevals chevaux dictionnaire reves dictionnaire symbole reve reves interpretation signification reve interpreter rever analyse freud ",
" crocodile crocrodile crocodil crocodille dictionnaire reves dictionnaire symbole reve reves interpretation signification reve interpreter rever analyse freud ",
" dent dictionnaire reves dictionnaire symbole reve reves interpretation signification reve interpreter rever analyse freud ",
" dent dictionnaire reves dictionnaire symbole reve reves interpretation signification reve interpreter rever analyse freud ",
" faire l'amour avec son presence l'ex dans maison dictionnaire reves dictionnaire symbole reve reves interpretation signification reve interpreter rever analyse freud ",
" examen dictionnaire reves dictionnaire symbole reve reves interpretation signification reve interpreter rever analyse freud ",
" foulard foular dictionnaire reves dictionnaire symbole reve reves interpretation signification reve interpreter rever analyse freud ",
" faire l'amour avec son presence l'ex dans maison dictionnaire reves dictionnaire symbole reve reves interpretation signification reve interpreter rever analyse freud ",
" larve dictionnaire reves dictionnaire symbole reve reves interpretation signification reve interpreter rever analyse freud ",
" reves interpretation signification reve interpreter rever dictionnaire analyse freud ",
" dent dictionnaire reves dictionnaire symbole reve reves interpretation signification reve interpreter rever analyse freud ",
" piqure insecte guepe bourdon abeille dictionnaire reves dictionnaire symbole reve reves interpretation signification reve interpreter rever analyse freud ",
" poursuite poursuivi reve dico cauchemar sens dictionnaire reves monstre chose danger peur  ",
" suicide pendre reve dico cauchemar sens dictionnaire reves monstre chose danger peur  ",
" dent dictionnaire reves dictionnaire symbole reve reves interpretation signification reve interpreter rever analyse freud ",
" freud reves freud reves interpretation signification reve interpreter rever dictionnaire analyse ",
" rever reves interpretation signification reve interpreter dictionnaire analyse freud ",
" rever reves pourquoi demande quoi sert reve joindre l'utile l'agreable www interpretation signification com ",
" interpretation reve reves signification interpreter rever dictionnaire analyse freud ",
" soirees decouverte animation groupe theme reves nocturnes reve eveille ",
" formation communication entreprise analyse reves nocturnes reve eveille ",
" stage d'ete 2009 reves veillees developpement personnel tourisme vert ",
" reve eveille reves interpretation signification interpreter rever dictionnaire analyse freud ",
" christian vidal forme relation d'aide aux metiers communication raphael biagi agrement ff2p cours therapeute reves interpretation signification reve interpreter rever dictionnaire analyse freud ",
" reves interpretation signification reve interpreter rever dictionnaire analyse freud ",
" tchat tchatez reves ",
" reves interpretation reve interpretation reves signification reve interpreter rever dictionnaire analyse freud  ",
" reves interpretation reve interpretation reves signification reve interpreter rever dictionnaire analyse freud  ",
" reves interpretation reve interpretation reves signification reve interpreter rever dictionnaire analyse freud  ",
" reves interpretation reve interpretation reves signification reve interpreter rever dictionnaire analyse freud  ");
urlsArray = new Array("../reves/index.html",
"../interpretation-reve/interpretation-reve.html",
"../signification-reve/signification-reve.html",
"../dictionnaire-reve/dictionnaire-des-reves.html",
"../coaching/index.html",
"../accident/dictionnaire-des-reves.html",
"../age/dictionnaire-des-reves.html",
"../animaux/dictionnaire-des-reves.html",
"../automobile/dictionnaire-des-reves.html",
"../bagarre/dictionnaire-des-reves.html",
"../cheval/dictionnaire-des-reves.html",
"../crocodile/dictionnaire-des-reves.html",
"../corps/dictionnaire-des-reves.html",
"../dent/dictionnaire-des-reves.html",
"../examen1/dictionnaire-des-reves.html",
"../examen/dictionnaire-des-reves.html",
"../foulard/dictionnaire-des-reves.html",
"../journaliste/dictionnaire-des-reves.html",
"../larve/dictionnaire-des-reves.html",
"../dictionnaire/dictionnaire-des-reves.html",
"../nature/dictionnaire-des-reves.html",
"../piqure/dictionnaire-des-reves.html",
"../poursuite-reve/reve-de-poursuite.html",
"../suicide/reve-de-poursuite.html",
"../vetements/dictionnaire-des-reves.html",
"../sigmund-freud-psychanalyse/sigmund-freud-psychanalyse.html",
"../comment-rever/comment-rever.html",
"../pourquoi-rever/pourquoi-rever.html",
"../relation-d-aide/relation-d-aide.html",
"../soireesdecouvert/index.html",
"../formation/index.html",
"../stagedete/index.html",
"../reve-eveille/reve-eveille.html",
"../christian-vidal-therapeute/christian-vidal-therapeute.html",
"../partenaires/christian-vidal-therapeute.html",
"../tchat/index.html",
"../poursuite/poursuite-sens-du-reve.html",
"../deuil/rencontre-personne-disparue.html",
"../sensreve/interpretation-reve-agression.html",
"../reve-ex-4/interpretation-reve-d-un-ex.html");
titlesArray = new Array("Reves interpretation signification : découvrir le sens de ses rêves et entrez dans l'action",
" interpréter un rêve c'est traduire le langage de l'inconscient",
"Reves interpretation signification : qu'est ce que signifie le rêve ? son aspect réel, imaginaire et symbolique",
"Reves interpretation signification : Dictionnaire des rêves",
"Reves interpretation signification : découvrir le sens de ses rêves et entrez dans l'action",
"Reves interpretation signification Accident",
"Reves interpretation signification Age",
"Reves interpretation signification Cheval",
"Reves interpretation signification Auto Automobile",
"Reves interpretation signification bagarre",
"Reves interpretation signification Cheval",
"Reves interpretation signification Crocodile",
"Reves interpretation signification examen",
"Reves interpretation signification examen",
"Reves interpretation signification ex",
"Reves interpretation signification examen",
"Reves interpretation signification Foulard",
"Reves interpretation signification ex",
"Reves interpretation signification Larve",
"MAISON / Dictionnaire des rêves ",
"Reves interpretation signification examen",
"Reves interpretation signification Larve",
"Poursuite dans un reve / Etre poursuivi / Dictionnaire des rêves",
"Poursuite dans un reve / Etre poursuivi / Dictionnaire des rêves",
"Reves interpretation signification examen",
"Sigmund Freud : le père de la psychanalyse et l'interprétation des rêves",
"Comment rêver ?",
"Pourquoi rêver ?",
"Relation d'aide à propos de l'analyse des rêves : interprétation et signification",
"Soirées découverte ; animation de groupe sur le thème des rêves nocturnes et du rêve éveillé",
"Formation en communication (entreprise) à partir de l'analyse des rêves nocturnes et du rêve éveillé",
"Stage d'été 2009 Rêves et Veillées : développement personnel et tourisme vert",
"Rêve Eveillé",
"Qui suis je ? Christian Vidal Thérapeute ",
"Partenaires ",
"tchatez avec moi à propos de vos rêves",
" Interprétation : exemple d'interprétation d'un rêve de poursuite",
"exemple 2 d'interprétation d'un reve de rencontre avec une personne disparue",
" Interprétations : exemple 3 d'interprétation d'un rêve de poursuite et d'agression",
"exemple 4 d'interprétation : rencontre avec son ex petit ami ");
descArray = new Array("Rêves Interprétation et signification : L'analyse des rêves permet d'élargir son champ de conscience dans la vie quotidienne , à travers l'interprétat...",
"Rêves Interprétation et signification",
"Rêves Interprétation et signification",
"Rêves Interprétation et signification",
"Rêves Interprétation et signification : L'analyse des rêves permet d'élargir son champ de conscience dans la vie quotidienne , à travers l'interprétat...",
"Rêves Interprétation et signification",
"Rêves Interprétation et signification : âge , sens et signification - possibilités d' interprétation dans un rêve",
"Dictionnaire des rêves :  sens et signification de la présence d'un animal ou d'animaux dans un rêve",
"Rêves Interprétation et signification : Automobile , sens et signification de la présence d'une auto dans un rêve",
"Rêves Interprétation et signification /interprétation bagarre - sens et signification de la présence d' une bagarre / se battre -  dans un rêve",
"Cheval Chevaux : Rêves Interprétation et signification : sens et signification de la présence d'un cheval ou de chevaux dans un rêve",
"Rêves Interprétation et signification / interprétation crocodile - sens et signification de la présence d' un crocodile dans un rêve",
"Dictionnaire des rêves : interprétation dent - sens et signification de la présence d' un examen dans un rêve : dent, dent arrachée",
"Dictionnaire des rêves : interprétation dent - sens et signification de la présence d' un examen dans un rêve : dent, dent arrachée",
"Rêves Interprétation et signification : interprétation ex - sens et signification de la présence d' un ex dans un rêve : faire l'amour avec un ex - l'...",
"Rêves Interprétation et signification interprétation examen - sens et signification de la présence d' un examen dans un rêve",
"Rêves Interprétation et signification / interprétation foulard - sens et signification de la présence d' un foulard dans un rêve",
"Rêves Interprétation et signification : interprétation ex - sens et signification de la présence d' un ex dans un rêve : faire l'amour avec un ex - l'...",
"Rêves Interprétation et signification / interprétation larve - sens et signification de la présence d' une larve dans un rêve",
"Rêves Interprétation et signification",
"Dictionnaire des rêves : interprétation dent - sens et signification de la présence d' un examen dans un rêve : dent, dent arrachée",
"Rêves Interprétation et signification / interprétation piqure insecte - sens et signification de la présence d' une piqure d'insecte bourdon abeille g...",
"Les rêves ou l'on est poursuivi tourne parfois au cauchemar. La poursuite entraîne le rêveur dans un état de peur qui provient surtout du fait qu'il n...",
"Dictionnaire des rêves : interprétation suicide / se pendre - sens et signification de la présence d' un examen dans un rêve",
"Dictionnaire des rêves : interprétation dent - sens et signification de la présence d' un examen dans un rêve : dent, dent arrachée",
"Rêves Interprétation et signification ; En matière d'interprétation et de signification des rêves, Sigmund Freud est incontournable puisqu'il est le p...",
"Rêves Interprétation et signification : En fait l'expression certaines personnes ne rêvent jamais n'est pas tout à fait exacte , il vaudrait mieux dir...",
"Pourquoi rêver ? : Si on me demande à quoi sert le rêve, alors je répondrais qu'il s'agit de joindre l'utile à l'agréable... - www.Rêves Interprétatio...",
"Rêves Interprétation et signification : service pour découvrir le sens des rêves nocturnes",
"Soirées découverte ; animation de groupe sur le thème des rêves nocturnes et du rêve éveillé",
"Formation en communication (entreprise) à partir de l'analyse des rêves nocturnes et du rêve éveillé",
"Stage d'été 2009 Rêves et Veillées : développement personnel et tourisme vert",
"Rêves Interprétation et signification : Rêve Eveillé",
"Rêves Interprétation et signification : Christian Vidal , formé à la relation d'aide et aux métiers de la communication par Raphaël Biagi. Agrément FF...",
"Rêves Interprétation et signification",
"tchatez avec moi à propos de vos rêves",
"Rêves Interprétation et signification :  Interprétation : exemple d'interprétation d'un rêve de poursuite",
"Rêves Interprétation et signification : exemple 2 d'interprétation d'un reve de rencontre avec une personne disparue",
"Rêves Interprétation et signification:  Interprétation : exemple 3 d'interprétation d'un rêve de poursuite et d'agression",
"Rêves Interprétation et signification : exemple 4 d'interprétation : rencontre avec son ex petit ami ");
sublinksArray = new Array(40);
var linksCount = 40;


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>");
}
