// ----------------------------------------------------------------------------
// 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 = 0;
ONLINE_WEBSITE = 1;

namesArray = new Array(" marine restaurant socoa ciboure fruits mer poissons coquillages crustaces saint jacques homard grille huitre sea-food seafood mariscos tapas pescado jean luz pays cote basque bar louvine turbot turbotin lotte merlu l'espagnole chipiron ttoro moules parillada parillada crustace cataplane confit canard sardine sole bask country sokoa vue sur vue fromage brebis confiture cerises noires gateau colonel sorbet citron vodka mamia mamya caille specialite profiteroles terrine nougat soupe menu enfant omelette aux cepes shellfish san juan mariscada anchois ostras gamba cigala santiago merluza bogavante lubina lenguado rodaballo rape paella paela crustaceos pato chuleta magret setas boquerones ravel bolero  ",
" maurice ravel bolero quai ciboure tour bordagain port socoa jaizquibel rhune fort vauban ",
" friture anchois salade saint jacques crevettes brochette lotte louvine ligne merlu jean luz ail piment espelette turbotin grille digestif  ",
" chipiron moules cataplane salade landais soupe poissons omelette cepes combinados  ",
" cataplane euros ",
" fruits mer huitres crevettes plateau royal bulots bigorneaux panache langoustines  ",
" crustaces parillada poissons ttoro paella ",
" poelee saint jacques fondue poireaux darne merlu espagnole homard grille sardines sole meuniere turbot beurre blanc crustaces parillada poissons bar ",
" confit canard landais cotelettes agneau magret cepes entrecote beurre maitre hotel  ",
" marine fromage brebis confiture cerises noires gateau basque colonel sorbet citron vodka salade fruits mamia caille specialite profiteroles terrine nougat baba rhum fondant chocolat creme brulee souffle glace cointreau coupe ",
" menu enfant ",
" contact reservation demandes d'informations reservations proposons contacter -au choix- telephone fax utilisateurs skype courrier philippe geny restaurant marine port socoa 64500 ciboure courriel diff@wanadoo cliquant ici enverrons rapidement confirmation ",
" groupe ",
" extraits presse gastronomique  ",
" horaire paiement acces plan coordonnees adresse diablotine circulation previsions meteo calendrier marees spots surf voile plongee ",
" histoire marine  ",
" galerie  ",
" notre livre d'or postez commentaires remerciements critiques http www livre-dor net php livredor=99499 dans ",
" diaporama feu juillet 2010  ",
" diaporama vivier  ",
" titre album  ");
urlsArray = new Array("../accueil/index.html",
"../lenvironnement/index.html",
"../mapage2/index.html",
"../divers/index.html",
"../divers/index.html#cata",
"../listedesfruitsde/index.html",
"../platscomplets/index.html",
"../nospoissons/index.html",
"../nosviandes/index.html",
"../nosdesserts/index.html",
"../nosmenus/index.html",
"../topic6/index.html",
"../mapage1/index.html",
"../lapresse/index.html",
"../mapage/index.html",
"../mapage3/index.html",
"../galerie/index.html",
"../notrelivredor/index.html",
"../albumphoto2/index.html",
"../albumphoto/index.html",
"../albumphoto1/index.html");
titlesArray = new Array("Bienvenue au Restaurant la Marine à Socoa.  Spécialités de poissons, Fruits de mer, Coquillages.",
"Baie de St-Jean-de-Luz Ciboure, port de Socoa",
"Nos Spécialités",
"Entrées",
"cataplane",
"Restaurant la Marine Socoa Fruits de Mer Poissons Coquillages Ciboure Sea-food Mariscos Ttoro Homard Tapas St Jean de Luz Pays Cote Basque Bask Sokoa ...",
"Plats Complets",
"Nos Poissons",
"Nos Viandes",
"Nos Desserts",
"Nos Menus",
"Contact - réservation",
"Groupes",
"Extraits de la Presse Gastronomique",
"Infos pratiques",
"Histoire de la Marine",
"Galerie",
"Notre Livre d'Or",
"DIAPORAMA FEU 14 JUILLET 2010",
"DIAPORAMA VIVIER",
"Titre de votre album");
descArray = new Array("Restaurant la Marine, Socoa, Ciboure, pres, proximite, Biarritz,  Fruits de Mer, Poissons, Coquillages, spécialités de la Mer, St Jean de Luz, huitres...",
"Baie de St-Jean-de-Luz Ciboure, plage et port de Socoa, le Bolero, Maurice RAVEL, quai RAVEL, Cloître et Couvent des Récollets, Tour de Bordagain,",
" ",
"Elles sont très variées:  retour à l'accueil",
"&",
"retour à l'accueil",
"",
"",
"",
"",
"",
"Pour vos demandes d'informations ou vos réservations, nous vous proposons de nous contacter -au choix- par :      - Téléphone au N° :  05 59 47 98 60 ...",
" ",
"",
"Lexique:  ",
"",
"",
"Postez vos commentaires, remerciements, ou critiques http://www.livre-dor.net/livre.php?livredor=99499|dans notre Livre d'Or",
"",
"",
"");
sublinksArray = new Array(21);
var linksCount = 21;


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>");
}
