// ----------------------------------------------------------------------------
// 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 = "Search results for";
STR_NO_RESULT = "No results found";
STR_SEARCH_BUTTON = "Search";
STR_SCORE = "Score";
STR_TERMS = "Terms";
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 saint jacques homard grille sea-food seafood mariscos tapas pescado jean luz pays cote basque bar louvine turbot merlu l'espagnole chipiron ttoro moules parillada parillada crustace cataplane sardine sole bask country sokoa vue sur fromage brebis confiture cerises noires gateau colonel sorbet citron vodka mamia mamya caille specialite profiterolles terrine nougat soupe menu enfant omelette aux cepes ",
" maurice ravel bolero quay ciboure tower bordagain harbour socoa jaizquibel rhune vauban ",
" fried fresh anchovies salad king scallops shrimps kebab monkfish louvine angled hake garlic pimento espelette turbotin grille after-dinner drink coupon  ",
" squids mussels cataplane salad landais soup fishes omelette boletus combinados  ",
" cataplane euros ",
" seafoods dish oysters scampis platter royal prawns whelks winkles shrimp  ",
" shellfish parillada fishes seafoods ttoro paella fishermen soup ",
" poelee king scallops hake fondue leeks lobster sardines sole meuniere turbot parillada angled bass shellfish ",
" confit canard landes lamb chop magret duck boletus rib steak butter ",
" marine cheese ewe jam black cherries cake basque colonel sorbet lemon vodka salad fruits mamia milk profiteroles terrine nougat baba rum fondant chocolate creme brulee souffle frozen cointreau cup ",
" menu child ",
" contact reservation for your demands information bookings suggest you contacting the choice phone fax card philippe geny restaurant marine port socoa 64500 ciboure france mail diff@wanadoo click here will send quickly confirmation ",
" groups ",
" extraits presse gastronomique  ",
" timetable payment access map gps adress diablotine traffic forecast weather table tides spots surf sailing diving ",
" histoire marine  ",
" gallery  ",
" our guest book post your comments thanks critical http www livre-dor net livre php livredor=99499 dans visitors' ",
" fish tank slide show  ",
" titre votre album  ",
" fish tank slide show  ",
" marine restaurant socoa ciboure fruits mer poissons coquillages crustaces diaporama feu artifices juillet 2011  ");
urlsArray = new Array("../accueil/accueil-en.html",
"../lenvironnement/environnement-en.html",
"../specialites/specialites-en.html",
"../entrees/entrees-en.html",
"../entrees/entrees-en.html#cata",
"../cartefruitsdemer/cartefruitsdemer-en.html",
"../platscomplets/platscomplets-en.html",
"../cartepoissons/cartepoissons-en.html",
"../nosviandes/carteviandes-en.html",
"../nosdesserts/cartedesserts-en.html",
"../nosmenus/cartemenus-en.html",
"../contact/Contactreservation-en.html",
"../groupes/groupes-en.html",
"../lapresse/lapresse-en.html",
"../infosacces/infosacces-en.html",
"../histoire/histoire-en.html",
"../galerie/galerie-en.html",
"../notrelivredor/livredor-en.html",
"../albumphoto/index-en.html",
"../albumphoto1/index-en.html",
"../albumphoto3/index-en.html",
"../diaporamafeu14ju/index-en.html");
titlesArray = new Array("Welcome at the Restaurant la Marine, Socoa. Specialities of Seafoods, Fishes, Shellfish.",
"  Bay of St-Jean-de-Luz Ciboure, Harbour of Socoa",
"Our Specialities",
"Starters",
"cataplane",
"Restaurant la Marine Socoa Seafoods Fishes Shellfish Ciboure Mariscos Tapas St Jean de Luz Pays Cote Basque Bask Sokoa 64",
"Complete Dishes",
"Fishes",
"Meats",
"Dessert Menu",
"Menus",
"Contact - reservation",
"Groups",
"Extraits de la Presse Gastronomique",
"Practical Informations",
"Histoire de la Marine",
"Gallery",
"our Guest Book",
"Fish tank Slide Show",
"Titre de votre album",
"Fish tank Slide Show",
"DIAPORAMA FEU 14 JUILLET 2011");
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...",
"Bay of St-Jean-de-Luz Ciboure, beach and harbour of Socoa, le Bolero, Maurice RAVEL, quay RAVEL, Convent of Récollets, Tower of Bordagain, Tower of Va...",
" ",
"They are very varied:  Back to Homepage",
"&",
"back to Homepage",
"",
"",
"",
"",
"",
" For your demands of information or your bookings,  we suggest you contacting us - in the choice by :      - Phone at N° :                            ...",
" ",
"",
"Lexicon:",
"",
"",
" Post your comments, thanks, or critical http:  www.livre-dor.net / livre.php? Livredor=99499|dans our Visitors' book",
"",
"",
"",
"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>");
}

