// ----------------------------------------------------------------------------
// 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(" bienvenue recherchez sites qualite visitez l'annuaire ",
" liens favoris  ",
"  ",
" titre blog  ",
"  ",
"  ",
"  ",
" associations  ",
"  ",
"  ",
" utilisez modele commencer page vierge ",
"  ",
" utilisez modele commencer page vierge ",
" utilisez modele commencer page vierge ",
"  ",
" utilisez modele commencer page vierge ",
"  ",
" utilisez modele commencer page vierge ",
"  ",
" utilisez modele commencer page vierge ",
"  ",
" utilisez modele commencer page vierge ",
"  ",
" utilisez modele commencer page vierge ",
"  ",
" utilisez modele commencer page vierge ",
"  ",
" utilisez modele commencer page vierge ",
"  ",
" utilisez modele commencer page vierge ",
"  ",
" utilisez modele commencer page vierge ",
"  ",
" utilisez modele commencer page vierge ",
"  ",
" utilisez modele commencer page vierge ",
"  ",
" titre page utilisez modele commencer vierge ",
"  ",
"  ",
"  ",
"  ",
"  ",
"  ",
"  ",
"  ",
"  ",
" ajouter site dans mon annuaire verifiez correspond aux points suivants n'est-il pas deja inscrit sur l'annuaire libellule type sites miroirs contenu identique avec url differents propositions multiples similaires sous peine suppression tous affilies redirige vers autre construction pornographiques adultes puis trouvez meilleure categorie sinon pourrez etre rejetes deplaces attention sont visites avant validation choisissez mode referencement ",
"  ",
" derniers sites inscrits  ",
" formulaire contact tout ",
"  ",
"  ",
"  ",
" code errone  ",
" http www miwim fr ");
urlsArray = new Array("../accueillibellule/index.html",
"../topic2/index.html",
"../actualite/index.html",
"../topic1/index.html",
"../annuaires/index.html",
"../artetculture/index.html",
"../animaux1/index.html",
"../associations/index.html",
"../mapage1/index.html",
"../astrologie/index.html",
"../mapage2/index.html",
"../autosmotos/index.html",
"../mapage3/index.html",
"../mapage4/index.html",
"../beaute/index.html",
"../mapage5/index.html",
"../blogs/index.html",
"../mapage6/index.html",
"../emploietformation/index.html",
"../mapage7/index.html",
"../fleursetcadeaux/index.html",
"../mapage8/index.html",
"../gastronomie/index.html",
"../mapage9/index.html",
"../histoire/index.html",
"../mapage10/index.html",
"../humour/index.html",
"../mapage11/index.html",
"../immobilier/index.html",
"../mapage12/index.html",
"../informatique/index.html",
"../mapage13/index.html",
"../internet/index.html",
"../mapage14/index.html",
"../jeux/index.html",
"../mapage15/index.html",
"../loisirs/index.html",
"../mapage16/index.html",
"../maison/index.html",
"../mariage/index.html",
"../mode/index.html",
"../musique/index.html",
"../nature/index.html",
"../sante/index.html",
"../sport/index.html",
"../vacances/index.html",
"../voyages/index.html",
"../mapage17/index.html",
"../tourisme/index.html",
"../mapage19/index.html",
"../topic3/lalibellule.html",
"../mapage18/index.html",
"../refpayant2/index.html",
"../allopass/index.html",
"../allopass2/index.html",
"../partenaires/index.html");
titlesArray = new Array("Bienvenue !",
"Liens favoris",
"L'annuaire de la Libellule",
"Titre de votre blog",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"Associations",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"Titre de votre page",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"Derniers sites inscrits",
"Formulaire de contact",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"L'annuaire de la Libellule",
"Code erroné",
"L'annuaire de la Libellule");
descArray = new Array("                                                                           Vous recherchez des sites de qualité ?                         Visitez   L'...",
" ",
"",
"",
"",
"",
"",
"%VISTAPRINT% ",
"",
"",
"Utilisez ce modèle pour commencer une page vierge",
"",
"Utilisez ce modèle pour commencer une page vierge",
"Utilisez ce modèle pour commencer une page vierge",
"",
"Utilisez ce modèle pour commencer une page vierge",
"",
"Utilisez ce modèle pour commencer une page vierge",
"",
"Utilisez ce modèle pour commencer une page vierge",
"",
"Utilisez ce modèle pour commencer une page vierge",
"",
"Utilisez ce modèle pour commencer une page vierge",
"",
"Utilisez ce modèle pour commencer une page vierge",
"",
"Utilisez ce modèle pour commencer une page vierge",
"",
"Utilisez ce modèle pour commencer une page vierge",
"",
"Utilisez ce modèle pour commencer une page vierge",
"",
"Utilisez ce modèle pour commencer une page vierge",
"",
"Utilisez ce modèle pour commencer une page vierge",
"",
"Utilisez ce modèle pour commencer une page vierge",
"",
"",
"",
"",
"",
"",
"",
"",
"",
" Pour ajouter votre site dans mon annuaire :  Vérifiez que votre site correspond aux points suivants :   - votre site n'est-il pas déjà inscrit sur L'...",
"",
"",
"  Pour tout contact :  ",
"",
"",
"",
"",
"             %ANNUAIREWEB%  %ECHOSDUNET%  http://www.miwim.fr/ %GUIDESWEBMASTER% ");
sublinksArray = new Array(56);
var linksCount = 56;


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>");
}
