// ----------------------------------------------------------------------------
// 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 = "25";
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(" attelage tradition hippomobile break ",
" attelage tradition hippomobile hippomobiles voitures chevaux phaeton dog carts break wagonette omnibus coche carrosse chariot barouche vitoria landau parc-drag road coach mail coachcoupe berline char bancs roof-seat corbillard traineau tandem cart cocking country norfolk essex charette poney ralli car governess demi tonneau gig stanhope tilbury dennett spider sulky cabriolet carrick curricle cape pill box buggy grand duc petit gigs anglaise dormeuse ",
" restauration dominique posselle conseils suivent sont fruit ans d'experience concertation comparaison d'observation est effet delicat vouloir etablir regles dans domaine seuls bon gout habitudes etaient mise  ",
" attelage tradition hippomobile hippomobiles voitures chevaux phaeton dog carts break wagonette omnibus coche carrosse chariot barouche vitoria landau parc-drag road coach mail coachcoupe berline char bancs roof-seat corbillard traineau tandem cart cocking country norfolk essex charette poney ralli car governess demi tonneau gig stanhope tilbury dennett spider sulky cabriolet carrick curricle cape pill box buggy grand duc petit gigs anglaise dormeuse ",
" attelage tradition hippomobile hippomobiles voitures chevaux phaeton dog carts break wagonette omnibus coche carrosse chariot barouche vitoria landau parc-drag road coach mail coachcoupe berline char bancs roof-seat corbillard traineau tandem cart cocking country norfolk essex charette poney ralli car governess demi tonneau gig stanhope tilbury dennett spider sulky cabriolet carrick curricle cape pill box buggy grand duc petit gigs anglaise dormeuse ",
" attelage tradition hippomobile hippomobiles voitures chevaux phaeton dog carts break wagonette omnibus coche carrosse chariot barouche vitoria landau parc-drag road coach mail coachcoupe berline char bancs roof-seat corbillard traineau tandem cart cocking country norfolk essex charette poney ralli car governess demi tonneau gig stanhope tilbury dennett spider sulky cabriolet carrick curricle cape pill box buggy grand duc petit gigs anglaise dormeuse ",
" attelage tradition hippomobile hippomobiles voitures chevaux phaeton dog carts break wagonette omnibus coche carrosse chariot barouche vitoria landau parc-drag road coach mail coachcoupe berline char bancs roof-seat corbillard traineau tandem cart cocking country norfolk essex charette poney ralli car governess demi tonneau gig stanhope tilbury dennett spider sulky cabriolet carrick curricle cape pill box buggy grand duc petit gigs anglaise dormeuse ",
" attelage tradition hippomobile hippomobiles voitures chevaux phaeton dog carts break wagonette omnibus coche carrosse chariot barouche vitoria landau parc-drag road coach mail coachcoupe berline char bancs roof-seat corbillard traineau tandem cart cocking country norfolk essex charette poney ralli car governess demi tonneau gig stanhope tilbury dennett spider sulky cabriolet carrick curricle cape pill box buggy grand duc petit gigs anglaise dormeuse ",
" attelage tradition hippomobile hippomobiles voitures chevaux phaeton dog carts break wagonette omnibus coche carrosse chariot barouche vitoria landau parc-drag road coach mail coachcoupe berline char bancs roof-seat corbillard traineau tandem cart cocking country norfolk essex charette poney ralli car governess demi tonneau gig stanhope tilbury dennett spider sulky cabriolet carrick curricle cape pill box buggy grand duc petit gigs anglaise dormeuse roof seat victoria-duc rally d'ecurie cab ",
" attelage tradition hippomobile hippomobiles voitures chevaux phaeton dog carts break wagonette omnibus coche carrosse chariot barouche vitoria landau parc-drag road coach mail coachcoupe berline char bancs roof-seat corbillard traineau tandem cart cocking country norfolk essex charette poney ralli car governess demi tonneau gig stanhope tilbury dennett spider sulky cabriolet carrick curricle cape pill box buggy grand duc petit gigs anglaise dormeuse ",
" attelage tradition hippomobile hippomobiles voitures chevaux phaeton dog carts break wagonette omnibus coche carrosse chariot barouche vitoria landau parc-drag road coach mail coachcoupe berline char bancs roof-seat corbillard traineau tandem cart cocking country norfolk essex charette poney ralli car governess demi tonneau gig stanhope tilbury dennett spider sulky cabriolet carrick curricle cape pill box buggy grand duc petit gigs anglaise dormeuse ",
" import pouvez aussi commander voiture neuve fabrication polonaise avec finitions choix  ",
" nos realisations restaurer voiture n'est pas acte anodin effet l'on veut respecter qualite faut simplement remettre etat d'utilisation restauration c'est redonner ses lettres noblesses travail ceux l'origine lui ont donne naissance pourquoi entre proprietaire l'homme l'art veritable dialogue s'avoir ecouter regarder puis faire bons choix non plaisir ",
" mannequins chevaux frequentation musees collectionneurs naturellement amene repondre certains besoins particulier fabrication fibre verre faits dans nos moules ces sont peints couleur souhaitee garnis crins naturels avec yeux ",
" conseils  ",
" comment joindre  ",
" who  ",
" dernieres nouvelles  ",
" titre album  ",
" chevaux  ",
"  ",
" drag cuts  ",
" concours  ",
" cuts 2009  ",
" cuts 2008 concours international offre opportunite unique contempler veritable musee vivant l'attelage contribue valorisation sauvegarde notre patrimoine popularite son cadre competence motivation tous ses benevoles partenaires lui ont permis hisser premier rang d'attelage tradition www attelage-cuts com ",
" barvaux-condroz belg dans commune havelange belgique essentiellement rurale connue beaute ses villages pierres pays offre l'image typique condroz l'alternance collines boisees prairies verdoyantes plaines cultures www attelages-barvaux info ",
" chantilly c'est dans cadre princier coeur entre grandes Écuries chateau princes conde deroule l'une plus prestigieuses competitions internationales d'attelage tradition www attelage-chantilly com ",
" motte tilly l'un attraits reside dans beaute son parc peuple d'arbres aux essences rares thuyas cedres bleus domaine associe noblesse jardin classique dessine l'abbe terray charme romantique d'un l'anglaise http www chateau-mottetilly com infos pratiques attelage php ",
" photos documents  ",
" photos anciennes  ",
" plans catalogues  ",
"  ",
"  ",
" formulaire contact  ");
urlsArray = new Array("../topic/index.html",
"../groupederubriqu1/index.html",
"../larestauration/index.html",
"../monogramme/index.html",
"../lasellerie/index.html",
"../peinture/index.html",
"../lesservices/index.html",
"../groupederubrique/index.html",
"../voituresavendre/index.html",
"../materielavendre/index.html",
"../accessoires/index.html",
"../mapage/index.html",
"../nosrealisations/index.html",
"../mannequins/index.html",
"../mapage2/index.html",
"../nousjoindre/index.html",
"../topic1/index.html",
"../dernieresnouvell/index.html",
"../diapoac/index.html",
"../albumphoto/index.html",
"../albumphoto4/index.html",
"../albumphoto5/index.html",
"../groupederubriqu2/index.html",
"../cuts2009/index.html",
"../cuts/index.html",
"../albumphoto2/index.html",
"../chantlly/index.html",
"../albumphoto1/index.html",
"../groupederubriqu3/index.html",
"../albumphotosepia/index.html",
"../mapage1/index.html",
"../video/index.html",
"../liens/index.html",
"../contact/index.html");
titlesArray = new Array("Attelages.Posselle",
"Attelages Posselle",
"La restauration par Dominique Posselle",
"Attelages Posselle",
"Attelages Posselle",
"Attelages Posselle",
"Attelages Posselle",
"Attelages Posselle",
"Attelages Posselle",
"Attelages Posselle",
"Attelages Posselle",
"Import",
"Nos réalisations",
"Mannequins de chevaux",
"Les conseils",
"Comment nous joindre",
"Who am I ?",
"Dernières nouvelles",
"Titre de votre album",
"Les chevaux",
"Attelages Posselle",
"Drag à Cuts",
"Concours",
"Cuts 2009",
"Cuts 2008",
"Barvaux-Condroz Belg.",
"Chantilly",
"La Motte Tilly",
"Photos et documents",
"Photos anciennes",
"Plans et catalogues",
"Attelages Posselle",
"Attelages Posselle",
"Formulaire de contact");
descArray = new Array("Cavalier depuis l'age de 10 ans et passionné par les chevaux, je n'envisageais pas de travailler autrement qu'entouré de ces fidèles compagnons; la re...",
"La restauration des voitures est très complexe,  car faisant appel à de nombreux corps de métier: charron, menuisier, ébéniste, peintre, sellier garni...",
"Les conseils qui suivent sont le fruit de 25 ans d'expérience, de concertation, de comparaison et d'observation, il est en effet délicat de vouloir ét...",
"+Nous réalisons dans nos ateliers la peinture des monogrammes.",
"Nous réalisons la sellerie des voitures en respectant ce qui nous a été permis d'observer depuis 30 ans sur les voitures des musées, mais aussi des cl...",
"Nous réalisons dans nos ateliers la peinture des voitures qui nous sont confiées: soit laquées, les voitures peuvent prendre part aux concours de trad...",
"C'est à la suite d'une longue concertation avec le client, envers qui nous pensons avoir un devoir de conseil que nous établissons un devis chiffré et...",
"Cliquez sur les photos pour voir la suite.",
"Nous offrons à nos clients la possibilité d'insérer la photo de voiture à vendre",
"",
"Sur commande: malle de pique nique, panier porte parapluie, porte gants, étui en moelle de rotin pour tuba, etc...",
"Vous pouvez aussi commander une voiture neuve de fabrication polonaise, avec finitions de votre choix.",
"Restaurer une voiture n'est pas un acte anodin. En effet, si l'on veut respecter la qualité de la voiture il ne faut pas simplement la remettre en éta...",
"La fréquentation des musées et collectionneurs nous a naturellement amené à répondre à certains besoins, et en particulier la fabrication de mannequin...",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"Le Concours International de Cuts offre une opportunité unique de contempler un véritable musée vivant de l'attelage qui contribue à la valorisation e...",
"Barvaux-Condroz, dans la commune de Havelange Belgique, essentiellement rurale et connue pour la beauté de ses villages en pierres du pays, offre l'im...",
"C'est dans un cadre princier, au coeur de Chantilly, entre les Grandes Écuries et le Château des Princes de Condé que se déroule l'une des plus presti...",
"L'un des attraits de La Motte Tilly réside dans la beauté de son parc peuplé d'arbres aux essences rares, thuyas et cèdres bleus, le domaine de La Mot...",
"",
"",
"",
"",
"",
"");
sublinksArray = new Array(34);
var linksCount = 34;


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>");
}
