// ----------------------------------------------------------------------------
// 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(" nettoyant lunette optique anti buee statique loupe lecture lunettes vue opticien nettoyage ecostick montures accessoires optiques accuite visuelle stick sans solvants etuis ",
" nettoyant lunette optique anti buee statique loupe lecture lunettes vue opticien nettoyage ecostick montures accessoires optiques accuite visuelle stick sans solvants etuis ",
" loupes lecture originale choix paire frais port inclus dans prix tous modeles ",
" nettoyant lunette optique anti buee statique loupe lecture lunettes vue opticien nettoyage ecostick montures accessoires optiques accuite visuelle stick sans solvants etuis ",
" nettoyant lunette optique anti buee statique loupe lecture lunettes vue opticien nettoyage ecostick montures accessoires optiques accuite visuelle stick sans solvants etuis ",
" nettoyant lunette optique anti buee statique loupe lecture lunettes vue opticien nettoyage ecostick montures accessoires optiques accuite visuelle stick sans solvants etuis ",
" tarifs nos produits sticks loupes lecture lunettes solaires bien etre ",
" video foires salons  ",
" laissez message impression autre sur notre livre cliquez bouton envoyez mail ecostick@hotmail com fr ",
" liens favoris  ",
" diplome foire paris 2006 selection produit nomine attribution premier prix malin secteur bricolage  ",
" produits bien etre vendu sur nos salons coussin massage shiatsu pro maison ");
urlsArray = new Array("../topic/index.html",
"../mapage/index.html",
"../loupesdelectures/index.html",
"../acessoiresetuise/index.html",
"../lunettedemaquill/index.html",
"../catalogue/index.html",
"../achatsdenosprodu/index.html",
"../videofoiresetsal/index.html",
"../livredor/index.html",
"../topic1/index.html",
"../diplome/index.html",
"../produitsdebienet/index.html");
titlesArray = new Array("Ecostick.fr :nettoyant lunettes le  specialiste nettoyants lunettes, loupes de lecture nettoyants pour pc",
"ecostick.fr: nettoyant lunettes le specialiste nettoyants lunettes,loupe de lecture",
"ecostick.fr :nettoyant lunettes le specialiste loupe-lecture-lunette-optique ",
"Ecostick.fr:nettoyant lunettes accessoires-lunettes-etui-tournevis-microfibres-loupes",
"Ecostick.fr:nettoyant lunettes le specialiste lunette de maquillage-fabricant-loupe-grossissante",
"ecostick.fr:nettoyant lunettes le specialiste,loupe de lecture",
"Ecostick.fr:nettoyant lunettes le specialiste, boutique en ligne stick-loupe-accessoire",
"ecostick.fr:nettoyant lunettes le specialiste,le meilleur des loupes",
"ecostick.fr:nettoyant lunettes le meilleur, des loupes",
"ecostick.fr:nettoyant lunettes le plus fort,numero1",
"ecostick.fr:nettoyant lunettes le numero un le meilleur",
"PRODUITS DE BIEN ETRE VENDU SUR NOS SALONS");
descArray = new Array("Ecostick est la premiere entreprise à vous proposer ce produit novateur qu'est le stick de nettoyage qui à été primé à Paris.Specialiste en  nettoyant...",
"Conditions générales de vente      1- Objet :     Les présentes conditions générales de vente régissent les relations contractuelles entre la société ...",
" Ecostick de magnifique loupe de lecture également Ecostick est la premiere entreprise à vous proposer ce produit novateur qu'est le stick de nettoyag...",
"Ecostick est la premiere entreprise à vous proposer ce produit novateur qu'est les nombreux accessoires etui microfibre tournevis et le stick de netto...",
"Ecostick est la premiere entreprise à vous proposer ce produit novateur qu'est lla loupe de maquillage et le stick de nettoyage qui à été primé à Pari...",
"BEAUCOUP  DE MODELES NE SONT PAS EN VENTE SUR LE SITE  VOUS POUVEZ LES COMMANDER EN NOTANT LA REFERENCE ET ENVOYEZ UN MAIL à: ecostick@hotmail.com    ...",
"",
"",
"Ecostick est la premiere entreprise à vous proposer ce produit novateur qu'est le stick de nettoyage qui à été primé à Paris.Specialiste en  nettoyant...",
"Ecostick est la premiere entreprise à vous proposer ce produit novateur qu'est le stick de nettoyage qui à été primé à Paris.Specialiste en  nettoyant...",
"SELECTION PRODUIT NOMINE POUR L ATTRIBUTION DU PREMIER PRIX DU PRODUIT MALIN SECTEUR BRICOLAGE FOIRE DE PARIS 2006.......",
"COUSSIN DE MASSAGE SHIATSU LE  PRO A LA MAISON");
sublinksArray = new Array(12);
var linksCount = 12;


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>");
}
