// ----------------------------------------------------------------------------
// 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 = 0;
USE_UTF8 = 0;
REMOVE_ACCENTS = 1;
BOLD_LINKS = 1;
ONLINE_WEBSITE = 1;

namesArray = new Array(" accueil diffusion entreprise communication l'objet peut realiser tous objets publicitaires cadeaux d'affaire d'entreprise commerces entreprises associations supporteurs clubs sportifs proposons cet effet quelques idees d'objets promotionnels clients articles leur vendre personnalises image notre activite dans domaine publicitaire st-jean-de-luz pays basque date vingt-cinq ans nos atouts sont professionnalisme serieux connaissance sujet grande variete gamme specialites textile t-shirt personnalise comite chapeau sombrero casquette foulard fete bandana fanion echarpe supporteur cravate-club parapluie parasol jeux parka securite haute visibilite triple usage combinaison travail porte-cles pins cartes commerciales flyers calendriers stylo calculatrice ecologique eau briquet cendrier plage sac tapis souris cles usb cliquez simplement sur l'un boutons rubrique interesse gauche page l'une imagettes ci-dessous entrer catalogue prix indiques incluent impression d'un texte logo couleur -sauf contre-indication- ils s'entendent hors frais port restent charge  ",
" plein air utiles tous articles relatifs activite jeux habillement gadgets d'hygiene chapeaux sombreros casquettes frisbees yoyos boomerangs raquettes plage ballons matelas gonflables boules petanque textile tee-shirts chemisettes polos foulards bandanas eventails draps bain sacs pain provision tabliers maniques lanieres tour cou lanyards- parapluies parasols tentes aussi chaises etuis telephone portable cendriers verre plastique cendriers poche lampes-torche bouteilles isotherme isothermes couteaux multifonctions pare-soleil briquets rince-doigts sets rasage dentaires savonnettes gel douche lait corporel shampoing tongs pantoufles spa preservatifs ",
" restauration traiteurs articles restaurants bars serviettes tire-bouchons sommeliers cendriers chocolat publicitaire rince-doigts parfumees petits drapeaux papier canapes tapas stop gouttes verser vin sans faire de ",
" travail securite parka haute visibilite triple usage combinaison course salopette fourree isotherme gilet veste polaire figurines reflechissantes enfants bracelet reflecteur  ",
" bureau calculatrices ecologiques energie renouvelable sans pollution stylos-bille bic  ",
" communication supports papier diffuser message cartes commerciales flyers calendriers-chevalets calendriers muraux banque effacables feuillets tapis souris optiques ",
" porte-cles trophees pins notre fabrique est leader europeen fabrication d'objets promotionnels metal plastique porte-cles sur mesure emailles main fonctions clevy -brevet europeen- pins accroche-lunettes pince-cravates cuir jeton pince nappe crochet sacs coupe-papier marque-pages medailles plexiglass graves laser jetons etc production situee dans plus importantes regions industrielles d'europe pres bilbao espagne nos atouts savoir-faire centenaire allie reactivite adaptee aux exigences actuelles publicite fidelite reproduction rapidite d'execution deux trois semaines delai excellent rapport qualite-prix 100 made europe fabriquons exclusivite articles brevetes niveau sommes prets commencer avec fructueuse collaboration besoins information pouvez trouver ci-dessous quelques unes fabrications 2011 ",
" clubs associations quelques objets promotionnels supporteurs sportifs mini-maillot retroviseur porte-cles maillot fanions sacs drapeau match voiture cravates-club echarpes badge bracelet silicone evenementiel inviolable banniere main-clap tap-tap ttun-ttun coussin stade corne brume supporteur deroulante ",
" usb cles memoire flash deviennent objet aussi indispensable qu'un telephone mobile presentons large choix avec prix capacite 2010 susceptibles variations cours mois livrables egalement 512 consulter possibilite insertion donnees fichiers images videos piece ",
" cadeaux fin d'annee coffrets gourmands  ",
" liens favoris pourrez trouver ci-dessous quelques sites utiles agreables dans vie tous jours  ");
urlsArray = new Array("../accueil/index.html",
"../topic/index.html",
"../mapage/index.html",
"../travail/index.html",
"../bureau-accessoir/index.html",
"../mapage2/index.html",
"../porte-cles/index.html",
"../clubs-associatio/index.html",
"../mapage1/index.html",
"../mapage3/index.html",
"../liensutiles/index.html");
titlesArray = new Array("Accueil",
"PLEIN AIR & UTILES",
"RESTAURATION - TRAITEURS",
"TRAVAIL & SECURITE",
"BUREAU",
"COMMUNICATION",
"PORTE-CLES, TROPHEES, PINS",
"CLUBS - ASSOCIATIONS",
"USB",
"CADEAUX DE FIN D'ANNEE",
"Liens favoris");
descArray = new Array(" PUBLICITE PAR L'OBJET communication impression ",
" PUBLICITE PAR L'OBJET, OBJET PUBLICITAIRE, promotion, communication, personnalisation, personnalisé, personalisé, impression, imprimé, serigraphie, s...",
"Des articles pour Restaurants, Bars et Traiteurs: Serviettes, Tire-bouchons - Sommeliers, cendriers, Chocolat publicitaire, rince-doigts (serviettes p...",
"Parka de sécurité de Haute Visibilité, à triple usage. Combinaison de course. Combinaison de travail. Salopette de travail. Combinaison de travail de ...",
"Calculatrices écologiques, à énergie renouvelable, sans pollution. Stylos-bille, stylos-bille BIC.",
"Supports papier pour diffuser votre message... Cartes commerciales, Flyers, Calendriers-Chevalets, Calendriers muraux, Calendriers Banque. Calendriers...",
"Notre Fabrique est Leader Européen en fabrication d'Objets Promotionnels en Métal et Plastique (Porte-Clés, Porte-clés sur mesure émaillés main, Porte...",
"Quelques objets promotionnels pour Associations, Supporteurs, et Clubs Sportifs. Mini-maillot de rétroviseur, porte-clés maillot. fanions, sacs de rét...",
"Les clés mémoire Flash USB deviennent un objet aussi indispensable qu'un téléphone mobile...  Nous vous en présentons un large choix, avec des prix en...",
"Les coffrets gourmands.",
"Vous pourrez trouver ci-dessous quelques sites utiles (ou agréables) dans votre vie de tous les jours: ");
sublinksArray = new Array(11);
var linksCount = 11;


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>");
}

