// ----------------------------------------------------------------------------
// Lauyan Software Javascript Search Engine 1.0
//
// This file is the JavaScript search engine for a website created by TOWeb
//
// Copyright (C) LAUYAN SOFTWARE 2006
// 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(" bienvenue sur site pool sud offre gamme variee produits haute qualite tous types piscines prenez temps visiter web savoir davantage avec nos prix tres competitifs saurez satisfaire exigences clients propres merci completer fiche d'information aider connaitre mieux servir ",
" gamme produits pool sud  ",
" Équipement piscine  ",
" produits d'entretien  ",
" accessoires piscine  ",
" equilibre l'eau mise eau piscine debut saison est necessaire verifier niveau l'aide d'une trousse d'analyse languettes ideal propre saine doit situer entre imperatif controler chaque semaine voici produits permettrons d'elever diminuer lorsque c'est plus pool sud moins acide chlorhydrique special ",
" desinfection l'eau afin conserver eau propre prevenir l'apparition bacteries champignons autres impuretes est important desinfecter regulierement piscine utilisez chlore granule pool sud pastille  ",
" luttes contre algues  ",
" floculation ",
" clariafiant concentrÉ pool sud  ",
" accessoires piscine  ",
"",
"",
"",
"",
" brosses balais  ",
" Épuisettes manches telescopiques  ",
" kits piscines  ",
" accessoires divers  ",
" contacts  ",
" jerome stichelbout directeur jerome@mobilis mervin gershanov export manager mervin@mobilis guy kalambayi trader guy@mobilis megeni house innes road durban 4001 south africa postnet suite 266 private bag x10 musgrave 4062 tel 303 4889 fax 2849 ");
urlsArray = new Array("../topic/index.html",
"../produits/index.html",
"../equipementdepisc/index.html",
"../lesproduitsdentr/index.html",
"../accessoires/index.html",
"../albumphotosepia/index.html",
"../albumphotodemo/index.html",
"../albumphotosepia1/index.html",
"../floculation1/index.html",
"../floculationclari/index.html",
"../lesaccessoirs/index.html",
"../lesaccessoirs/index.html",
"../lesaccessoirs/index.html",
"../lesaccessoirs/index.html",
"../lesaccessoirs/index.html",
"../accbrosses/index.html",
"../accepuisettes/index.html",
"../acckits/index.html",
"../accdivers/index.html",
"../topic1/index.html",
"../topic1/index.html");
titlesArray = new Array("Bienvenue sur le site Pool Sud ... !",
"La Gamme des produits POOL SUD",
"Équipement de piscine",
"LES PRODUITS D'ENTRETIEN",
"Les accessoires de piscine",
"EQUILIBRE DE L'EAU",
"DESINFECTION DE L'EAU",
"LUTTES CONTRE LES ALGUES",
"_FLOCULATION_",
"CLARIAFIANT CONCENTRÉ POOL SUD",
"Accessoires piscine",
"Brosses et balais",
"Épuisettes et manches télescopiques",
"Les kits de piscine",
"Accessoires divers",
"Brosses et balais",
"Épuisettes et manches télescopiques",
"Kits piscines",
"Accessoires divers",
"POOL SUD - Le Spécialiste de le Piscine Sous le Soleil",
"L'Enigme Mobilis cc");
descArray = new Array("%TW-SEARCH%  Bienvenue au Pool Sud.  POOL SUD vous offre sa gamme variée de produits de haute qualité pour tous types de piscines. Prenez le temps de ...",
"",
"",
"",
"",
"EQUILIBRE DE L'EAU       A la mise en eau de votre piscine en début de saison, il est nécessaire de vérifier le niveau de pH de l'eau de votre piscine...",
"Afin de conserver une eau propre et de prévenir l'apparition de bactéries, de champignons et autres impuretés, il est important de désinfecter réguliè...",
"",
"",
"",
"",
"&",
"&",
"&",
"&",
"",
"",
"",
"",
"",
"&");
sublinksArray = new Array(21);
var linksCount = 21;


// 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()
{
  // 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
  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>");

  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(" ");
  document.write( "" + 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)
  }

  // begin search ...
  for( i=0; i<searchWords.length; i++ )
  {
    keyword = searchWords[i];
    if( keyword.length > MIN_WORD_LEN ) // skip small words
	  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 )
	        {
/*	           		if( BOLD_LINKS ) { 
						res_table[t][3] += "<tr><td width='50'>&nbsp</td><td><b><a href='" + urlsArray[k] +"'>" + titlesArray[k] + "</a></b></td></tr>";
					} else	
*/	          res_table[t][3] += "<tr><td width='35'>&nbsp</td><td><a href='" + urlsArray[k] +"'>" + titlesArray[k] + "</a></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
	    {
        t = res_table[q][0];    // get page index
        if( BOLD_LINKS ) {
          document.writeln("<br><b>" + (q+1) + ". <a href=" + urlsArray[t] +">" + titlesArray[t] + "</a></b>" );
        } else
          document.writeln("<br><b>" + (q+1) + ".</b> <a href=" + urlsArray[t] +">" + 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;'>" + STR_TERMS + ": " + res_table[q][2] + " - " + 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>");
}

