// ----------------------------------------------------------------------------
// 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 = 0;
USE_UTF8 = 0;
REMOVE_ACCENTS = 1;
BOLD_LINKS = 1;
ONLINE_WEBSITE = 1;

namesArray = new Array(" apir campeurs tente caravane defense ile flotte sainte marie comite camping association oleron charente maritime littoral nature caravanning caravaning injustice lutte ",
" l'actualite notre association petit suivi actualites  ",
" l'apir coso documents changent 2011 cliquez sur images acceder aux rubriques ",
" ils sont telechargement  ",
" version 2011 ",
"",
"",
"",
"",
" documents 2011 coso ",
"",
"",
"",
" saisissez texte paragraphe ici ",
" saisissez texte paragraphe ici ",
" historique presentation sommes ile raisons motivations ",
" bulletins bulletin journaux journal publication info information photos renseignements  ",
" saisissez texte paragraphe ici ",
" saisissez texte paragraphe ici ",
" remplacez texte description article peut etre aussi long souhaitez pouvez laisser lignes blanches aerer presentation egalement demarrer sous-paragraphe commencant ligne caractere comme illustre ci-dessous exemple titre formater utilisant elements syntaxe suivant mettre mots italique attirer l'attention soulignant mots gras combiner styles precedents placer dessus image l'editeur d'images cela cliquer sur modifier puis rendez-vous l'onglet ajouter ceci utile rupture stock promotion  ",
" saisissez texte paragraphe ici ",
" saisissez texte paragraphe ici ",
" saisissez texte paragraphe ici ",
" contact ecrire contacter mail ",
" elections election voter municipales 2008 liste electorale electorales inscription administratif  ",
" comite soutien coso aide financement solidarite action ",
" adhesion  montant  euros prendre dans l'annee civile adherent l'apir souhaitant etre aides comite soutien droit d'entree annees l'inscription  total adhesions payer  138 toute prise charge frais avocat voyage lors scrutin municipal… sera fonction mise jour cotisation cotisations payees 2005 2006 2007 remboursement 100 payee sur ces 33 ",
" avez amis viennent sur terrains souhaitent aider fait faire economies tentez parrainage passage presente lea notre mascotte a ",
" photos souvenirs reunions ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" dossier sainte ste marie verbalisation verbalisations pv ",
" photos l'assemblee generale 2009  ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" saisissez description image ici ",
" rappeler bons moments  ",
" apir ile camping campeurs prive privee terrain parcelle lutte flotte sainte marie bois noue rivedoux sablanceau couarde ars portes  ");
urlsArray = new Array("../topic/index.html",
"../lesnouvelles/index.html",
"../lesdocumentspour/index.html",
"../lesdocumentspour/page1.html",
"../lesdocumentspour/page1.html",
"../lesdocumentspour/page1.html",
"../lesdocumentspour/page1.html",
"../lesdocumentspour/page1.html",
"../lesdocumentspour/page1.html",
"../lesdocumentspour/page2.html",
"../lesdocumentspour/page2.html",
"../lesdocumentspour/page2.html",
"../lesdocumentspour/page2.html",
"../lesdocumentspour/page2.html",
"../lesdocumentspour/page2.html",
"../quisommesnous/index.html",
"../nosbulletins/index.html",
"../nosbulletins/page1.html",
"../nosbulletins/page2.html",
"../nosbulletins/page3.html",
"../nosbulletins/page4.html",
"../nosbulletins/page5.html",
"../nosbulletins/page6.html",
"../contacts/index.html",
"../sinscriresurlesl/index.html",
"../lecomitedesoutie/index.html",
"../lecomitedesoutie/page1.html",
"../lecomitedesoutie/page2.html",
"../lalbumphoto/index.html",
"../lalbumphoto/page1.html",
"../lalbumphoto/page2.html",
"../lalbumphoto/page3.html",
"../lalbumphoto/page4.html",
"../lalbumphoto/page5.html",
"../lalbumphoto/page6.html",
"../lalbumphoto/page7.html",
"../lalbumphoto/page8.html",
"../lalbumphoto/page9.html",
"../lalbumphoto/page10.html",
"../lalbumphoto/page11.html",
"../lalbumphoto/page12.html",
"../lalbumphoto/page13.html",
"../lalbumphoto/page14.html",
"../lalbumphoto/page15.html",
"../lalbumphoto/page16.html",
"../lalbumphoto/page17.html",
"../lalbumphoto/page18.html",
"../lalbumphoto/page19.html",
"../lalbumphoto/page20.html",
"../lalbumphoto/page21.html",
"../lalbumphoto/page22.html",
"../verbalisationsst/index.html",
"../lagde2009/index.html",
"../lagde2009/page1.html",
"../lagde2009/page2.html",
"../lagde2009/page3.html",
"../lagde2009/page4.html",
"../lagde2009/page5.html",
"../lagde2009/page6.html",
"../lagde2009/page7.html",
"../lagde2009/page8.html",
"../lagde2009/page9.html",
"../lagde2009/page10.html",
"../lalbumphoto1/index.html",
"../informationsdern/index.html");
titlesArray = new Array("APIR",
"l'actualité de notre association",
"Pour l'APIR et le COSO",
"les documents concernant l'APIR",
"Fiche Adhésion APIR",
"Charte de Qualité",
"Extraits de statuts et inscription...",
"Relevé de décision AG 2010",
"Statuts 2011",
"le Comité de Soutien",
"Fiche Adhésion COSO",
"Règlement Intérieur COSO",
"Statuts du COSO",
"Relevé de décision AG 2010",
"Statuts 2011",
"Qui sommes nous ? ",
"les bulletins de l'APIR à consulter et télécharger",
"Bulletin de Juin 2007",
"Bulletin de Décembre  2006",
"Bulletin de Mai 2006",
"Bulletin de Novembre 2005",
"Bulletin de juin 2005",
"Bulletin de Novembre 2004",
"Les contacts APIR",
"comment faire pour s'inscrire sur les listes électorales et voter dans l'Ile de Ré ? ",
"le Comité de Soutien : un ami indispensable aux membres de l'APIR. ",
"pour adhérer au COSO",
"le parrainage",
"des délinquants bien sympathiques. ",
"AG 2008",
"AG 2008",
"AG 2008",
"AG 2008.",
"Manif 2007 : parce que le dialogue est impossible, il faut se faire entendre...",
"et il y avait du monde à cette manif...",
"Le Pic nique 2007... avec le tournoi de pétanque...",
"Pour être sûr que tout le monde y soit...",
"journée pic nique... une de plus",
"Le doyen qui surveille la relève.",
"photos eddy-zizou 055.jpg",
"ça organise dur !!!",
"photos eddy-zizou 063.jpg",
"2005 ag image 9.jpg",
"photos eddy-zizou 058.jpg",
"2005 ag image 8.jpg",
"photos eddy-zizou 023.jpg",
"photos eddy-zizou 050.jpg",
"De bons souvenirs !",
"site1 salle.jpg",
"site pétanque.jpg",
"Et des fois, Léon s'invite en costume...",
"Verbalisations à Ste Marie : le dossier",
"Les photos de l'Assemblée Générale de 2009... ",
"IdRé 2009 054.jpg",
"IdRé 2009 056.jpg",
"IdRé 2009 061.jpg",
"IdRé 2009 062.jpg",
"IdRé 2009 063.jpg",
"IdRé 2009 065.jpg",
"IdRé 2009 067.jpg",
"IdRé 2009 068.jpg",
"IdRé 2009 071.jpg",
"IdRé 2009 072.jpg",
"Pour se rappeler des bons moments... ",
"les dernières nouvelles, les informations à consulter régulièrement. ");
descArray = new Array("site de l'association des campeurs sur parcelles privées de l'Ile de Ré... ",
"Un petit suivi des actualités de notre association... ",
"les documents qui changent en 2011.   Cliquez sur les images pour accéder aux rubriques... ",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"Propriétaires de terrains sur l'Ile de Ré depuis plus de 30 ans, les campeurs sont aujourd'hui privés de la jouissance d'un bien pourtant légalement e...",
"les bulletins de l'APIR... un peu de poésie dans un monde de brutes ! ",
"&",
"&",
"&",
"&",
"&",
"&",
"",
"",
"le comité de soutien est une association loi 1901 qui est gérée par un conseil d'administration.  Son but est de favoriser la défenses des propriétair...",
"&",
"&",
"",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"voici une page qui vous permet de gérer ce dossier, en complément des infos déjà sur le site. ",
"",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"",
"");
sublinksArray = new Array(65);
var linksCount = 65;


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>");
}

