// ----------------------------------------------------------------------------
// 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 = "Resultados de la investigación para";
STR_NO_RESULT = "Ningún resultado encontrado";
STR_SEARCH_BUTTON = "Buscar";
STR_SCORE = "Cuenta";
STR_TERMS = "Términos";
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 restaurante socoa ciboure mariscos peces crustaceos santiago langosta tostada ostra sea-food seafood golpeaste pegaste pescado juan luz san pais costa vasca bar louvine rodaballo turbotin lota merluza espanola chipiron txipiron ttoro moldes mejillones parillada parillada crustace cataplane confit pato sardina lenguado bask country sokoa vista sobre mar mar queso oveja mermelada cerezas negras pastel vasco coronel sorbete limon vodka mamia mamya cuajada especialidad profiteroles barreno conserva carne tarro especie turron frances sopa menu nino tortilla setas shellfish mariscada boqueron ostras gamba cigala bogavante lubina rape paella chuleta filete boquerones ravel bolero  ",
" maurice ravel bolero muelle ciboure torre bordagain puerto socoa jaizquibel larrun fuerte vauban ",
" boquerones fritos ensalada vieiras gambas pincho rape lubina anzuelo merluza ajo pimiento espelette rodaballo copa licor apertura sitio bono  ",
" chipirones mejillones cataplane ensalada landesa sopa pescados tortilla francesa setas combinados  ",
" cataplane euros ",
" mariscos ostras gambas bandeja real caracolillos bocinas bigaros caracoles mezcla cigalas mariscada ",
" crustaceos parillada pescados ttoro paella mariscos ",
" poelee santiagos vieiras fondue puerros rodaja merluza espanola bogavante tostado sardinas lenguado meuniere rodaballo mantequilla blanca crustaceos parillada pescados lubina anzuelo ",
" confit pato landes chuletas cordero magret setas entrecot mantequilla maitre hotel  ",
" marine queso oveja mermelada ceresas pastel vasco colonel sorbete limon vodka ensalada frutas mamia cuajada profiteroles terrine nougat baba ron fondant chocolate crema quemada souffle helado cointreau copa ",
" menu enfant ",
" contacto reserva para sus demandas informaciones reservas proponemos ponerse con nosotros eligir por telefono fax correo philippe geny restaurant marine port socoa 64500 ciboure francia mail diff@wanadoo hacer clic aqui les mandaremos seguida confirmacion ",
" grupos ",
" extraits presse gastronomique  ",
" horarios pagos acceso mapa gps direccion diablotine trafico previsiones meteo calendario mareas spots surf velero submarinismo ",
" historia marine  ",
" galeria  ",
" nuestro libro oro enviar sus comentarios etc http www livre-dor net livre php livredor=99499 dans notre d'or ",
" diaporama vivero  ",
" titre votre album  ",
" diaporama vivero  ",
" marine restaurant socoa ciboure fruits mer poissons coquillages crustaces diaporama feu artifices juillet 2011  ");
urlsArray = new Array("../accueil/accueil-es.html",
"../lenvironnement/environnement-es.html",
"../specialites/specialites-es.html",
"../entrees/entrees-es.html",
"../entrees/entrees-es.html#cata",
"../cartefruitsdemer/cartefruitsdemer-es.html",
"../platscomplets/platscomplets-es.html",
"../cartepoissons/cartepoissons-es.html",
"../nosviandes/carteviandes-es.html",
"../nosdesserts/cartedesserts-es.html",
"../nosmenus/cartemenus-es.html",
"../contact/Contactreservation-es.html",
"../groupes/groupes-es.html",
"../lapresse/lapresse-es.html",
"../infosacces/infosacces-es.html",
"../histoire/histoire-es.html",
"../galerie/galerie-es.html",
"../notrelivredor/livredor-es.html",
"../albumphoto/index-es.html",
"../albumphoto1/index-es.html",
"../albumphoto3/index-es.html",
"../diaporamafeu14ju/index-es.html");
titlesArray = new Array("Bienvenidos al Restaurante la Marine en Socoa. Especialidades de Pescados, Mariscos, Conchas.",
"Bahía de St-Jean-de-Luz Ciboure, puerto de Socoa",
"Nuestras Especialidades",
"Entrantes",
"cataplane",
"Restaurante la Marine Socoa Ciboure,  Mariscos, Pescados, Conchas, Ostras, Bocinas, Bígaros, cigalas, mariscada,gambas,",
"Platos Completos",
"Pescados",
"Carnes",
"Postres",
"Menús",
"Contacto - Reserva",
"Grupos",
"Extraits de la Presse Gastronomique",
"Noticias prácticas ",
"Historia de la Marine",
"Galeria",
"Nuestro Libro de Oro",
"DIAPORAMA VIVERO",
"Titre de votre album",
"DIAPORAMA VIVERO",
"DIAPORAMA FEU 14 JUILLET 2011");
descArray = new Array("Restaurante la Marine Socoa-Ciboure,  Mariscos, Pescados, Conchas, Especialidades del Mar, Ostras, Vieiras, Lubina, merluza de anzuelo a la española, ...",
"Bahía de St-Jean-de-Luz Ciboure, san juan, playa y puerto de Socoa, Bolero, Maurice RAVEL, muelle, RAVEL, Claustro, Convento, Récollets, Torre, Bordag...",
" ",
"Son muy variadas:  volver a entrada",
"&",
"volver a entrada",
"",
"",
"",
"",
"",
" Para sus demandas de informaciones o sus reservas, le proponemos ponerse en contacto con nosotros - a eligir - por:      - Teléfono al N° :          ...",
" ",
"",
"Léxico:",
"",
"",
"Enviar sus comentarios, etc... http://www.livre-dor.net/livre.php?livredor=99499|dans notre Livre d'Or",
"",
"",
"",
"DIAPORAMA FEU ARTIFICES 14 JUILLET 2011");
sublinksArray = new Array(22);
var linksCount = 22;


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>");
}

