// ----------------------------------------------------------------------------
// 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 = 0;
ONLINE_WEBSITE = 1;
ALLWORDSONLY = 0;
namesArray = new Array(" actualites nouveaute ajoutez commentaires voulons permettre toutes celles ceux sont curieux l'action propositions pcf particulier concerne correze trouver source informations qu'ils recherchent n'hesitez pas exprimer attentes remarques besoins suggestions venir rencontrer bas plupart articles pourrez dorenavant ajouter seront publie immediatement adresse mail sera publiee connue moderateur est d'autre part protegee pourra etre captee robots envois publicitaires automatiques bientot plaisir lire ",
" echanges correziens 170  ",
" vie sections  ",
" election regionales  ",
" pont angles fete limousin pcf correze federation parti communiste communistes politique lutte defense ",
" auditeurs attentifs lors d'un nombreux debats ",
"",
" 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 ",
" sante  ",
"  ",
" actualite manifestations pcf correze federation parti communiste elus politique lutte defense ",
" congres innovant constructif  ",
" tracts affiches  ",
" interventions videos  ",
" presse communiques  ",
" conseil national dates septembre 2009 27 ",
" reseaux groupes travail  ",
" sections assemblees cours venir uzerche mardi septembre heures salle n°3 l'ancien lycee garcons ayen mercredi chez renee blanchard perpezac blanc meymac conseil municipal davignac bugeat vendredi octobre fetes gourdon murat ussel bort mairie roche canillac polyvalente saint paul donzenac lundi larche pantaleon malemort dojo neuvic jeudi vireviolle georgette madelaigue lamaziere basse tulle maurice vareille federation pcf juillac campagne nord bel automne mexant seilhac puy-grand chamboulive ",
" liens utiles  ",
" bienvenue voulons contribuer battre breche inegalites pousser democratie quartier planete faire emerger concretement monde partage tous toutes richesses savoirs pouvoirs c'est dignite chaque femme homme est jeu nombreux sont celles ceux ont envie change vraiment besoin politique faut qu'elle soit entre mains progres viendra plus grand nombre decidons ensemble bouger choses cela communistes travaillent construire avec veulent engages non projet transformation necessaire decider manieres porter accueillant comptons sur personnalite liberte notre collectif s'en trouvera riche tres fraternellement marie-george buffet secretaire nationale pcf ",
" cotisation souscription faire vivre parti campagnes l'animation politique pcf constituent ses besoins financiers elus communistes contribuent besoin reversant leurs indemnites adherents cotisent aupres leur federation servent couvrir ponctuels locales nationales electorales s'engagent participation proportionnelle aux moyens chacun montant est fixe revenus l'adherent ouvrent droits dans cadre definit statuts ",
" nos elus  ",
" archives  ",
" Élections regionales  ",
" contribution debat  ",
" elus departementaux  ",
" conseillere generale tulle- urbain-nord presidente commission affaires sociales ",
" conseiller general brive sud-ouest vice president conseil charge l'Éducation colleges ",
" elus municipaux  ",
"",
" j'adhere recevez l'humanite gratuitement pendant semaines journal communiste role original dans presse francaise analyses investigations anticipations sur l'avenir participation construction d'une voix nouvelle l'emancipation humaine chaque mercredi supplement communistes informe plus precisement l'activite parti adherer remplissez formulaire d'adhesion ci-dessous informations enregistrees sont reservees l'usage francais conformement aux articles suivants loi n°78-17 janvier 1978 relative l'informatique fichiers libertes toute personne peut obtenir communication cas echeant rectification suppression concernant simple demande ",
" pourquoi choisir pcf l'emancipation humaine depassement toutes dominations exploitations humiliations pauvrete sont d'actualite inventer autre monde fonde sur rapports humains liberes loi l'argent est urgent adherer parti communiste francais c'est mettre avant cette volonte creation modes d'interventions nouveaux peuple politique partout degagent exigences fortes societe veut plus politiques liberales capacite d'intervention d'invention nouvelle doit etre instituee soit ignore trahi participer s'assurer d'une dynamique rassembleuse construction dans respect identites roles chacun battre droite maintenant durablement reussir gauche adhesion casse systematiquement fondements solidaires notre elle criminalise exclut cela change vraiment 2007 faut construire forte union populaire donner moyens d'agir situation veritable alternative adherent local national sympathie l'engagement militant choix mise mouvement tous fraternelle justice d'egalite determine suivant ses aspirations cadres structures d'activites lui proposes structure d'animation locale cellule section nationale federation animation reseau questions generales specifiques apport competence formation logistique droits l'adherent fixe statuts quelques extraits reseaux collectifs auxquels souhaite reflechir agir recevoir information leur diversite aux debats d'orientation Être informe-e ordres jour elements preparatoires discussion instances consulte-e essentielles saisir toute instance proposition suite aura ete donnee voir proposer offre diversifiee d'initiatives correspondant attentes ",
" membres l'executif departemental  ",
"",
"",
"",
" saisissez description image ici ",
" contributions  ",
" conseillers generaux correze dominique grador pierre coutaud jean-claude chauvignat alain vacher martine leclerc henri roy elus philippe bernis adjoint verts tulle andre pamboutzoglou brive declarent sommes force l'union gauche est necessaire battre droite plate couture dimanche limousin assurer victoire lors prochaines echeances resister efficacement politique gouvernement indignes face refus oppose federation socialiste haute-vienne certains ses d'associer l'ensemble partenaires front constitution d'une liste d'union 2eme tour elections regionales cette exclusive d'un seul parti dans departement seule ville s'impose forces region vision hegemonique sectaire n'est pas notre requiere reconnaissance respect etique morale souhaitons soit present avec composantes majorite regionale sortira urnes prochain ",
" merci envoi  ");
urlsArray = new Array("../topic/index.html",
"../mapage8/index.html",
"../viedessections/index.html",
"../mapage7/index.html",
"../albumphoto/index.html",
"../albumphoto/page1.html",
"../albumphoto/page2.html",
"../albumphoto/page3.html",
"../albumphoto/page4.html",
"../albumphoto/page5.html",
"../albumphoto/page6.html",
"../albumphoto/page7.html",
"../albumphoto/page8.html",
"../albumphoto/page9.html",
"../albumphoto/page10.html",
"../albumphoto/page11.html",
"../albumphoto/page12.html",
"../albumphoto/page13.html",
"../albumphoto/page14.html",
"../albumphoto/page15.html",
"../albumphoto/page16.html",
"../albumphoto/page17.html",
"../albumphoto/page18.html",
"../albumphoto/page19.html",
"../albumphoto/page20.html",
"../albumphoto/page21.html",
"../albumphoto/page22.html",
"../albumphoto/page23.html",
"../albumphoto/page24.html",
"../globulerouge/index.html",
"../manifestationatu/index.html",
"../actualite-manife/index.html",
"../34emecongres/index.html",
"../tractsetaffiches/index.html",
"../interventionsvid/index.html",
"../archives/index.html",
"../mapage9/index.html",
"../mapage1/index.html",
"../mapage/index.html",
"../topic5/index.html",
"../mapage2/index.html",
"../mapage3/index.html",
"../mapage4/index.html",
"../presseetcommuniq/index.html",
"../frontdegauche/index.html",
"../contact/index.html",
"../trombinoscope1/index.html",
"../trombinoscope1/page1.html",
"../trombinoscope1/page2.html",
"../trombinoscope2/index.html",
"../trombinoscope2/index.html",
"../mapage5/index.html",
"../mapage6/index.html",
"../trombinoscope3/index.html",
"../trombinoscope3/page1.html",
"../trombinoscope3/page2.html",
"../trombinoscope3/page3.html",
"../trombinoscope3/page4.html",
"../contributions/index.html",
"../pourledeuxiemeto/index.html",
"../merci/index.html");
titlesArray = new Array("PCF-Corrèze, parti communiste français de Corrèze, Fédération du PC 19, Elus de Corrèze, correze",
"ECHANGES Corrèziens N° 162",
"Vie des sections",
"Election Régionales",
"La Fête du Pont des Angles",
"Auditeurs attentifs lors d'un des nombreux débats",
"Christian Audouin devant une belle assemblée",
"Un autre débat, toujours autant de monde !",
"Plus une place de libre",
"Retrouvailles et convivialité",
"Desautard au mieux de sa forme",
"Des clients satisfaits !",
"Prêts pour les échanges politiques",
"TOURNOI DE SIXTE",
"le gardien a eu chaud !",
"on discute tactique",
"on vérifie le classement",
"une partie disputée",
"DSC02688.JPG",
"DSC02675.JPG",
"DSC02657.JPG",
"DSC02699.JPG",
"DSC02700.JPG",
"DSC02703.JPG",
"DSC02733.JPG",
"DSC02705.JPG",
"DSC02715.JPG",
"la remise de la coupe aux vainqueurs",
"l'équipe victorieuse",
"Santé",
"Intervention des élus",
"Manifestations",
"Pour un congrès innovant et constructif",
"Tracts et Affiches",
"Interventions vidéos",
"Presse et Communiqués",
"Les élections en Corrèze (19)",
"Réseaux et groupes de travail",
"Dates des assemblées des sections",
"Liens utiles",
"Bienvenue",
"La cotisation, la souscription, pour faire vivre le parti",
"Les élus PCF-Corrèze ,19",
"Archives",
"Elections régionales, limousin, élections régionales limousin, front de gauche",
"débat Corrèze,débat 19",
"Elus département 19 Corrèze",
"Dominique GRADOR, Conseillère Générale  TULLE- URBAIN-NORD Présidente de la Commission des Affaires Sociales.",
"Alain VACHER , Conseiller Général BRIVE SUD-OUEST Vice Président du  Conseil Général, Chargé de l'Éducation et des Collèges",
"Elus municipaux Corrèze 19",
"(page en cours de réalisation)",
"j'adhére",
"Pourquoi choisir le PCF",
"PCF-Corrèze (19), MEMBRES DE L'EXECUTIF DEPARTEMENTAL",
"Pascal Bagnarol,                           secrétaire départemental",
"Emile Roubertie,                        responsable de la communication",
"Hélène Colin,                         accueil et secrétariat administratif",
"Danièle Baron,                          animatrice à l'organisation",
"Contributions",
"PCF-Corrèze (19)",
"Merci pour votre envoi.");
descArray = new Array("Actualité de la  Fédération du PCF de Corrèze (19) actualités et informations",
"ECHANGES Corrèziens N° 162",
"",
"Elections régionales 2010, Limousin, Limousin Terre de gauche",
"La Fédération du PCF de Corrèze (19) fête du Pont des Angles",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"&",
"",
"Les interventions des élus du PCF à l'assemblée nationale et au sénat",
"Actualité, Manifestations du PCF de Corrèze (19)",
"",
"",
"",
"",
"Interventions au conseil national",
"",
"Dates des assemblées des sections",
"",
"Nous voulons contribuer à battre en brèche les inégalités.  Nous voulons pousser la démocratie du quartier à la planète et faire émerger concrètement ...",
"Les campagnes, l'animation politique du PCF, constituent ses besoins financiers. Les élus communistes contribuent au besoin du parti en reversant leur...",
"",
"",
"La Fédération du PCF de Corrèze (19) élections régionales en limousin",
"Apportez votre pierre à l'édifice: page de débat",
"",
"&",
"&",
"",
"&",
"Recevez l'Humanité gratuitement pendant 4 semaines ! Journal communiste, l'Humanité, a un rôle original dans la presse française. Analyses, investigat...",
"Pour l'émancipation humaine Le dépassement de toutes dominations, de toutes exploitations, des humiliations, de la pauvreté sont d'actualité. Inventer...",
"MEMBRES DE L'EXECUTIF DEPARTEMENTAL  de La Fédération du PCF de Corrèze (19)",
"&",
"&",
"&",
"&",
"",
"Les Conseillers généraux de la Corrèze : Dominique GRADOR, Pierre COUTAUD, Jean-Claude CHAUVIGNAT, Alain VACHER, Martine LECLERC, Henri ROY et les élu...",
"");
sublinksArray = new Array(61);
var linksCount = 61;


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>");
}
