// ----------------------------------------------------------------------------
// 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(" neoconso christian-vidal com annuaire shopping internet service communautaire petites annonces gratuite actualite reductions promotions boutiques vente ligne fil abonnement rss ",
" sites boutiques vente ligne produits beaute soins bien-etre cosmetiques parfumeries corps sante ",
" boutiques vente ligne cadeaux fleurs faire livrer bouquet domicile trouve cadeau evenement special anniversaire fetes noel saint valentin categories shopping sites specialises gourmets vins alcools cybermarches comparateurs ",
" communaute publier actualite personnelle professionnelle publication faire-part naissance faire connaitre l'actualite club association decerner diplome sympa mettre ligne deposer annonce gratuite dans categories achat vente rencontre ",
" liens favoris utilisez modele demarrer page contenant liste contient quelques exemples accompagnes d'une breve description remplacez ces defaut desirez supprimer-les adoptez propre organisation  ",
" boutiques vente ligne produits hightech image son telephonie cartes telephoniques television hifi photo telephones ",
" sites boutiques vente ligne materiel informatique acheter prix discount ordinateur portable bureau categories shopping logiciels peripheriques consommables informatiques ",
" sites boutiques vente ligne loisirs astrologie divertissement equipement jeux jouets videos musique pari rencontres sports medias films art ",
" maison jardin animaux bricolage decoration electromenager jardinage meubles nouveaux nouvelle bricoleurs reponses questions liste sites confiance achat web serenite categories shopping ",
" boutiques vente ligne vetements internet neoconso choix reussir achat liste sites top web nouvelles collections printemps ete automne hiver bonnes affaires realiser reductions promotions livraison gratuite jeux concours demander catalogues vpc categories shopping accessoires mode bijoux chaussures lingerie maroquinerie ",
" bijou boutiques vente ligne bijoux diamant zirconium bagues colliers boucles d'oreilles piercing ",
" boutiques vente ligne chaussures homme femme enfant ",
" boutiques vente ligne coquins coquines amoureux collections style ",
" boutiques vente ligne specialises sacs main maroquinerie professionnelle voyage achat grande marque meilleur prix ",
" boutiques vente ligne vetements internet choix achat liste sites top web nouvelles collections printemps ete automne hiver bonnes affaires realiser reductions promotions livraison gratuite jeux concours demander catalogues vpc ",
" agences voyage sur internet tarifs avantageux multiples options possibles reserver l'avance sejour vacances reduction coup coeur profiter prix casse offre derniere minute ",
" sites boutiques vente ligne pays best shopping mondial australia belgique netherlands usa etats-unis royaume uni angleterre irlande switzerland deutschland new zealand italia espana ",
" pajutile page d'accueil navigateur c'est internet plus besoin d'aller dans favoris tous sites visites web sont syr cette d'apres source mediametrie retrouverez moteurs recherche d'information vie pratique banques finances jeux divertissements culture principaux transport voyage mappy viamichelin souhaitez pouvez utiliser blanche sans charte graphique neoconso christian-vidal com preferez entierement personnalisee fournit gratuitement mode cela suffit remplir formulaire ci-dessous enumerant liste faut donner nom indiquer egalement soit visible autres internautes qu'elle cachee entree autorisee uniquement mot passe ",
" pajutile standard  ",
" page d'accueil  ",
" sites boutiques vente ligne sur interne ",
" neoconso christian-vidal com annuaire shopping internet service communautaire petites annonces gratuite actualite reductions promotions boutiques vente ligne fil abonnement rss ");
urlsArray = new Array("../topic/index.html",
"../beaute/beaute.html",
"../cadeaux/cadeaux.html",
"../communaute/communaute.html",
"../topic1/index.html",
"../hightech1/index.html",
"../informatique/index.html",
"../loisirs/loisirs.html",
"../maison/maison.html",
"../mode/mode.html",
"../bijoux/index.html",
"../chaussures/index.html",
"../lingerie/lingerie.html",
"../maroquinerie/maroquinerie.html",
"../vetements/index.html",
"../voyages/voyages.html",
"../worldshopping/worldshopping.html",
"../pajutile/index.html",
"../pajutile1/index.html",
"../pageblanche/index.html",
"../pagecategorie/index.html",
"../pagecategorie1/index.html");
titlesArray = new Array("Christian vidal Annuaire du shopping internet et service communautaire de petites annonces gratuites.",
"Sites boutiques de vente en ligne de produits de beauté cosmétiques parfumerie soins du corps   sur internet",
"Sites boutiques de vente en ligne de cadeaux et fleurs  sur internet",
"Communauté : publier vos petites annonces gratuitement",
"Liens favoris",
"Sites boutiques de vente en ligne de produits high tech image son téléphonie sur internet",
"Sites boutiques de vente en ligne de matériel informatique sur internet",
"Sites boutiques de vente en ligne de la catégorie loisirs  sur internet",
"Sites boutiques de vente en ligne d'équipement maison et jardin sur internet",
"Sites boutiques de vente en ligne de vêtements et accessoires mode",
"Sites boutiques de vente en ligne de bijoux sur internet",
"Sites boutiques de vente en ligne de   sur internet",
"Sites boutiques de vente en ligne de lingerie",
"Sites boutiques de vente en ligne de sacs à main et de maroquinerie voyage",
"Boutiques de vente en ligne de vêtements homme femme et enfant",
"Sites boutiques de vente en ligne auto moto et agences de voyages sur internet",
" Les sites et les boutiques de vente en ligne sont classées par pays et constituent le BEST OF du shopping mondial.",
"Pajutile, la page d'accueil de votre navigateur",
"Pajutile Standard",
"Ma page d'accueil",
"Sites boutiques de vente en ligne de   sur internet",
"Christian vidal Annuaire du shopping internet et service communautaire de petites annonces gratuites.");
descArray = new Array("Annuaire du shopping internet et service communautaire de petites annonces gratuites.",
"sites et boutiques de vente en ligne en produits de beauté et soins bien-être : Cosmétiques - Parfumeries - Soins du Corps - Santé bien-être",
"Boutiques vente en ligne de cadeaux et fleurs : Faire livrer un bouquet de fleurs à domicile ou trouver un cadeau pour un évènement spécial : annivers...",
"Dans la partie Communauté, vous allez pouvoir publier votre actualité personnelle ou professionnelle : publication de votre faire-part de naissance - ...",
"Utilisez ce modèle pour démarrer une page contenant une liste de vos liens favoris. Le modèle contient quelques exemples accompagnés d'une brève descr...",
"Boutiques vente en ligne de produits hightech image et son et téléphonie.Cartes téléphoniques - Télévision Tv - Hifi son - Photo,Téléphones",
"sites et boutiques vente en ligne de matériel informatique pour acheter à prix discount un ordinateur portable ou un pc de bureau . Les catégories sho...",
"Sites et boutiques de vente en ligne Loisirs : astrologie - Divertissement - Equipement - Jeux jouets - Jeux Vidéos - Musique - Pari jeux - Rencontres...",
"Bienvenue dans l'univers Maison et Jardin ! Vous cherchez de nouveaux meubles, une nouvelle décoration ou vous êtes bricoleurs dans l'âme ? Les catégo...",
"Sites boutiques de vente en ligne de vêtements et accessoires mode",
"Les boutiques de vente en ligne de bijoux : or  et diamant, zirconium. bagues colliers boucles d'oreilles piercing... ",
"Sites boutiques de vente en ligne de chaussures homme femme et enfant  sur internet",
"Les boutiques de vente en ligne pour les coquins et les coquines et tous les amoureux des collections de style.",
"Les boutiques de vente en ligne spécialisés dans les sacs à main et la maroquinerie professionnelle ou de voyage. Pour un achat de grande marque au me...",
"Sites boutiques de vente en ligne de vêtements homme, femme enfant - la maman et son bébé jusqu'au seniors",
"Les grandes agences de voyage sur internet vous proposent des tarifs avantageux avec de multiples options possibles : réserver à l'avance son séjour v...",
" Les sites et les boutiques de vente en ligne sont classées par pays et constituent le BEST OF du shopping mondial.Shopping Australia - Shopping Belgi...",
"Pajutile c'est la page d'accueil de votre navigateur internet. Plus besoin d'aller dans les favoris, tous les sites les plus visités du web sont syr c...",
"",
"",
"Sites boutiques de vente en ligne de   sur internet",
"Annuaire du shopping internet et service communautaire de petites annonces gratuites.");
sublinksArray = new Array(22);
var linksCount = 22;


// 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)
  }

  // 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] + lnktarget + "\">" + 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] + 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;'>" + 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>");
}
