// ----------------------------------------------------------------------------
// Lauyan Software Javascript Search Engine 1.1
//
// 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_SCORE = "Score";
STR_TERMS = "Termes";
STR_SEARCH_SIZE = "20";
MIN_WORD_LEN = 2;
DISPLAY_SRCH_INFO = 1;
USE_UTF8 = 0;
REMOVE_ACCENTS = 1;
BOLD_LINKS = 1;
ONLINE_WEBSITE = 1;
ALLWORDSONLY = 0;
namesArray = new Array(" <mots-cles> guide peche moniteur federation francaise guides stage avec peche pecheur auvergnat ffmgp dans cantal mouche carnassier brochet sejour auvergne france sandre perche truite silure gardon ombre truites ombres chabot saumon barque bord gites gite lac barrage grandval garabit ablette moteur electrique photo trophee allier loire allagnon allanche chapelle d'allagnon francis chauvet frederic bachelier declic nature mort manie cuillere canne motor stages loisirs tourisme riviere poissons juniors ados brochets ardeche haute-loire hobby carnassiers eau reservoir toc leurre cantal< mots-cles> ",
" guide peche moniteur federation francaise guides peche guid techniques stage peche pecheur com auvergnat image ffmgp vertical tirette toc coup carnassier brochet sandre perche truite silure gardon ombre truites ombres chabot saumon barque bord mouche dans cantal auvergne gites lac barrage grandval garabit ablette moteur electrique photo trophee allier loire allagnon allanche chapelle d'allagnon francis chauvet frederic bachelier declic nature mort manie cuillere canne motor stages loisirs tourisme riviere poissons juniors ados brochets ardeche haute-loire hobby carnassiers eau reservoir leurre coregone cantal savoie leman leurres sejours sejour pÃªche pÃªche sÃ©jour france corÃ©gone fera trutta professionnel riviÃ¨re Ã©tang rÃ©servoir omble flyfishing fly fishing lure cristivomer lavaret vairon maniÃ© trout char pike sandre lac chauvet dordogne mauriac ",
" <keywords guide peach fishing instructor monitor drives guides french federation the training course with sins sin guides peche auvergne fisherman ffmgp cantal fly has carnivore the pike stay goes france pikeperch perch trout silurid roach shade shadow trouts and shadows chabot salmon boat edge goes gites for gite lake dam grandval garabit bleak electric engine photo trophy fishes him allier loire allagnon allanche chapel fish for francis chauvet frederic bachelier handled natural dead click spoon canes motor for courses leisure activities tourism river juniors ados pikes ardeche high hobby carnivores water reservoir peche obsessive-compulsive disorder bait keywords ",
" <keywords>guide peche guide brochet sandre pecheur ffmgp federation francaise guides peche vertical tirette toc coup carnassier perche truite silure gardon ombre truites ombres chabot saumon barque bord mouche dans cantal auvergne gites lac barrage grandval garabit ablette moteur electrique photo trophee allier loire allagnon allanche chapelle d'allagnon francis chauvet frederic bachelier declic nature mort manie cuillere canne motor guide moniteur moniteur-guide guid techniques stage pecheur com auvergnat image lac chauvet stages loisirs tourisme riviere poissons juniors ados brochets ardeche haute-loire hobby carnassiers eau reservoir leurre guide coregone cantal savoie leman leurres sejours sejour pÃªche pÃªche sÃ©jour france corÃ©gone fera trutta professionnel riviÃ¨re Ã©tang rÃ©servoir omble flyfishing fly fishing lure cristivomer lavaret vairon maniÃ© trout char pike moniteur< keywords> ",
" <keywords>guide peche guide brochet sandre pecheur ffmgp federation francaise guides peche vertical tirette toc coup carnassier perche truite silure gardon ombre truites ombres chabot saumon barque bord mouche dans cantal auvergne gites lac barrage grandval garabit ablette moteur electrique photo trophee allier loire allagnon allanche chapelle d'allagnon francis chauvet frederic bachelier declic nature mort manie cuillere canne motor guide< keywords> ",
"  ",
" stichworter angelfuhrer angelmonitor angellehrer fuhrt monitor lehrer pfirsiches fischfanges franzosischen bundes der angelpraktikum mit fischt fÜhrt sÜnde peche auvergnat fischer ffmgp von franzosischem bund angelfuhrers cantal den fuhrer fliegenfischerei hat die fliege berat pfirsich fischfang fleischfressers hechtes angelaufenthaltes beim auvergne frankreich chabot zander barsch stange forelle wels plotze schatten forellen und lachs dem boot bordes gites fur gite see stausee ist grandval garabit plotzen ukelei elektromotors angelbootes fotos trophae sie hartkase lachses allier loire allagnon allanche kapelle fische francis chauvet friedrich bachelier das foto umgegangene naturliche tote ausklinkvorrichtung loffel rohr motor praktika loisirs tourisme riviere poissons juniors ados truites ombres brochets ardeche haute-loire hobby carnassiers eau lac barrage reservoir guide mouche toc guide leurre cantal<  ",
" <keywords>guide peche guide brochet sandre pecheur ffmgp federation francaise guides peche vertical tirette toc coup carnassier perche truite silure gardon ombre truites ombres chabot saumon barque bord mouche dans cantal auvergne gites lac barrage grandval garabit ablette moteur electrique photo trophee allier loire allagnon allanche chapelle d'allagnon francis chauvet frederic bachelier declic nature mort manie cuillere canne motor guide< keywords> ",
"  ",
" video  ",
"  ",
" diaporama kaky peche  ",
"  ",
" <keywords guide peach fishing instructor monitor drives guides french federation the training course with sins sin guides peche auvergne fisherman ffmgp cantal fly has carnivore the pike stay goes france pikeperch perch trout silurid roach shade shadow trouts and shadows chabot salmon boat edge goes gites for gite lake dam grandval garabit bleak electric engine photo trophy fishes him allier loire allagnon allanche chapel fish for francis chauvet frederic bachelier handled natural dead click spoon canes motor for courses leisure activities tourism river juniors ados pikes ardeche high hobby carnivores water reservoir peche obsessive-compulsive disorder bait keywords ");
urlsArray = new Array("../topic1/index.html",
"../guidedepeche/index.html",
"../topic4/index.html",
"../tarifs/index.html",
"../topic8/index.html",
"../contactwebmaster/index.html",
"../topic7/index.html",
"../pointgps/index.html",
"../pageliens/index.html",
"../videos/index.html",
"../pagecontactkakyp/index.html",
"../diaporama/index.html",
"../albumdiaporama/index.html",
"../albumphotosdiapo/index.html");
titlesArray = new Array("Guide de Pêche - Moniteur Guide de Pêche dans le Cantal - Auvergne",
"Pêche des Carnassiers - Pêche du Brochet - Pêche du Sandre - Truite à la mouche - Truite au toc",
"Photos -  pêche en barrage. pêche en barque, Guide de pêche en Auvergne.",
"Guide de Pêche carnassier - Carnassiers en lac de barrages - Truite en rivière - pêche au toc - Pêche du carnassier en bateau.",
"Contactez Francis CHAUVET - Moniteur Guide de Pêche - Cantal - Auvergne ...",
"Siite de pêche, webmaster.",
"Guide de Pêche, brochet, sandre, perche, truite",
"Francis CHAUVET, Guide de Pêche dans le Cantal, point GPS du lieu de pêche...",
"Cantal Guide de Pêche, Auvergne",
"Vidéo",
"Cantal Guide de Pêche",
"Diaporama Kaky Pêche",
"Cantal Guide de Pêche",
"Photos -  pêche en barrage. pêche en barque, Guide de pêche en Auvergne.");
descArray = new Array("<description>Francis CHAUVET Guide de pêche et Moniteur Diplômé vous fait découvrir de merveilleux sites de pêche dans le Cantal, vous initie à différ...",
"Francis CHAUVET Guide de pêche et Moniteur Diplômé vous fait découvrir de merveilleux sites de pêche dans le Cantal, vous initie à différentes techniq...",
"<description>Francis CHAUVET Guide de pêche et Moniteur Diplômé vous fait découvrir de merveilleux sites de pêche dans le Cantal, vous initie à différ...",
"<description>Francis CHAUVET Guide de pêche et Moniteur Diplômé vous fait découvrir de merveilleux sites de pêche dans le Cantal, vous initie à différ...",
"<description>Francis CHAUVET Guide de pêche et Moniteur Diplômé vous fait découvrir de merveilleux sites de pêche dans le Cantal, vous initie à différ...",
"",
"<description>Francis CHAUVET Guide de pêche et Moniteur Diplômé vous fait découvrir de merveilleux sites de pêche dans le Cantal, vous initie à différ...",
"<description>Francis CHAUVET Guide de pêche et Moniteur Diplômé vous fait découvrir de merveilleux sites de pêche dans le Cantal, vous initie à différ...",
"",
"",
"",
"",
"",
"<description>Francis CHAUVET Guide de pêche et Moniteur Diplômé vous fait découvrir de merveilleux sites de pêche dans le Cantal, vous initie à différ...");
sublinksArray = new Array(14);
var linksCount = 14;


function SubmitSearch(n)
{
	var p = document.getElementsByName("jse_query");
	var idx = n;  if( p < 0) return false;
	if( p && p[idx] && p[idx].value != "" ) {
	if( (p[idx].value).replace(/^\s+|\s+$/g, '') != "" ) {
		p = document.getElementsByName("jse_form");
		if( p && p[idx] )
			p[idx].submit();
		return true;
	  }
	}
	return false;
}
function switchSearchLang(lang,emptycart)
{
	var params = "";
	var currURL = document.location.href;
	var newURL = (currURL.lastIndexOf('_frame/search2') >= 0) ? "search2":"search";
	if( lang != "" )
		newURL += "-"+lang;
	newURL += ".html";
	var paramIndex = currURL.lastIndexOf('?');
	if( paramIndex > -1 )
		newURL += "?" + currURL.substr( paramIndex + 1 );
	if( emptycart && typeof(CleanShopcart) != "undefined" )
		CleanShopcart();
	document.location.href = newURL;
	return 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 getQueryParam()
{
  var query = getParam("jse_query");
  query = query.replace(/[\++]/g, " ");  // replace any '+' with spaces
  query = query.replace(/\</g, "&lt;");
  query = query.replace(/[\"+]/g, " ");
	return query;
}

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 = getQueryParam();

  // 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>");
  }
  */
  if( internal == 1 ) {
	 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( "<span class='wg-paragraph'>" + STR_SEARCH_QUERY_MSG + " : <strong>" +query+"</span></strong><br>");
  }
  // init result table information
  res_table = new Array(linksCount);
  for( t=0; t<linksCount; t++ )
  {
    res_table[t] = new Array(4);
    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 )
			{
				var idx = urlsArray[t].indexOf('@');
				if( idx > 0 ) 
				{
					var lnk = urlsArray[k].substr(0, idx)
					if( res_table[t][3].indexOf( lnk ) == -1 )
						res_table[t][3] += "<tr><td width='35'>&nbsp;</td><td><a href=\"" + urlsArray[k].substr(idx+1) + "\" name=\"" + lnk + "\">" + titlesArray[k] + "</a></td></tr>";
				} else 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 class='wg-paragraph'><b>" + STR_NO_RESULT + "</b></p>");
  } 
  else 
  {
/*	if( ALLWORDSONLY )
	{
		//  if all words only then we recount and filter amoung the results to get the total of found items
		found = 0;
		for( var z=0; z<itemsCount; z++ )
			if( res_table[z][1] > 0 ) // display only results with a positive score
			if( !ALLWORDSONLY || (ALLWORDSONLY && res_table[z][2] == significantwords) )
				found++;
	}
  */
	// sort by words found and scores
    res_table.sort(SortCompare);	
    // display the results
	document.writeln( '<div class="wg-paragraph">' );
    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

		var lnk = urlsArray[t] + lnktarget;
		var idx = urlsArray[t].indexOf('@');
		if( idx > 0 ) 
			lnk = urlsArray[t].substr(idx+1);
			
		if( BOLD_LINKS ) {
		  document.writeln("<br><b>" + (q+1) + ". <a href=\"" + lnk + "\">" + titlesArray[t] + "</a></b>" );
		} else
		  document.writeln("<br><b>" + (q+1) + ".</b> <a href=\"" + lnk + "\">" + 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( urlsArray[t].indexOf('@') > 0 ) {
			  document.writeln(" - URL: 'TOWeb demonstration'</span>");
			} else 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 class="wg-paragraph">' + res_table[q][3] + '</table>' );
      	} else document.writeln("<br>");
      }
 	document.writeln( '</div>' );
  }
  document.writeln("<br>");
}

