// ----------------------------------------------------------------------------
// 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 = 0;
ONLINE_WEBSITE = 1;

namesArray = new Array(" cgt dans landes  ",
" travailler vivre aquitaine l'emploi coeur  ",
" mentions legales  ",
" l'actualite sociale dans landes  ",
" retraites  ",
" 2010 infos union departementale  ",
" 2010 infos  ",
" 2010 infos syndicats  ",
" comite chomeurs precaires  ",
" usr cgt landes infos syndicats retraites ",
" infos saisonniers  ",
" utilisez modele commencer page vierge ",
" defense droits libertes l'action juridique cgt dans landes  ",
"  ",
" 2010 dossier amiante  ",
" indecosa cgt landes  ",
" mensuel union departementale cgt landes informations syndicales est periodique l'union bulletin d'information destine aux syndiques version presentee sur site internet legerement differente notamment dans presentation contenu identique ",
" informations syndicales est periodique l'union departementale cgt landes bulletin mensuel d'information destine aux syndiques version presentee sur site internet legerement differente notamment dans presentation contenu identique ",
" 2008 informations syndicales  ",
" 2007 informations syndicales  ",
" liens favoris  ",
" archives  ",
" 2009 archives  ",
" toutes infos sur l'activite cgt dans landes  ",
" actions manifestation janvier 2009  ",
" special manifestation mars 2009 utilisez modele commencer page vierge ",
" special journee d'action octobre 2009  ",
" special manifestation avril 2009 utilisez modele commencer page vierge ",
" special manifestation juin 2009 utilisez modele commencer page vierge ",
" 2009 archives l'actualite  ",
" donnons l'avenir service public aux postiers  ",
" special tempete dans landes janvier 2009  ",
" infos syndicats cgt dans secteurs prive public  ",
" 2009 tempete landes  ",
" lutte salaries sony pontonx cgt sauver emplois  ",
" infos syndicats cgt prive public dans landes  ",
" retraites usr cgt landes l'union syndicats est l'organisation specifique l'activite syndicale direction preretraites veufs veuves chomeurs ages  ",
" 2008 archives  ",
" sante travail protection sociale  ",
" actions luttes salaries touches l'amiante  ",
" infos cgt sur assedic  ",
" infos cgt sur caisse d'allocation familiale  ",
" formation syndicale pourquoi etre efficace tout simplement equiper nos syndiques militants dirigeants savoirs faire agir mener conduire leur activite remplir mandat batir economie performante servir progres social exige d'arreter devaloriser travail humain faut contraire lui donner nouveau statut permette developper toutes potentialites individus securite sociale professionnelle revendiquee cgt conjugue acces l'emploi correctement remunere deroulement carriere grace droits attaches chaque personne quelles soient evolutions entreprises droit veritable long vie gagner telles avancees sociales sera pas possible sans nombreux pleinement acteurs decideurs parmi eux assument responsabilites tous niveaux l'organisation ils elles sont elus sur base confiance autres accordent c'est primordial cela dispense d'acquerir connaissances plus largement capacites indispensables reussite mission est confiee toujours ete vrai aujourd'hui devenu determinant parce champ syndicalisme s'elargit questions complexifient salariat s'est beaucoup diversifie techniques evoluent dans comme societe donne place nouvelle role different  ",
" infos d'indecosa cgt landes  ",
" infos l'institut cgt d'histoire sociale landes  ",
" travailler vivre aquitaine l'emploi coeur  ",
" infos unions locales cgt sur tout departement landes  ",
" 2008 archives l'actualite  ",
" campagne elections prud'homales dans landes  ",
"  ",
" conseillers cgt defendre salaries  ");
urlsArray = new Array("../topic1/index.html",
"../lacgtpresdechezv/index.html",
"../aproposdusite/index.html",
"../accueil/index.html",
"../retraites/index.html",
"../2010infosunionde/index.html",
"../2010infosul/index.html",
"../2010infossyndica/index.html",
"../infoscomitedesch/index.html",
"../2010infosretrait/index.html",
"../2010infossaisonn/index.html",
"../laformationsynd1/index.html",
"../secteurjuridique/index.html",
"../laprotectionsoci/index.html",
"../2010dossieramian/index.html",
"../laconsommation/index.html",
"../lesinformations3/index.html",
"../lesinformations2/index.html",
"../lesinformations1/index.html",
"../lesinformationss/index.html",
"../topic2/index.html",
"../lesarchives/index.html",
"../2009archives/index.html",
"../lactualite/index.html",
"../luttesetsucces1/index.html",
"../specialmanifesta/index.html",
"../specialjourneeda/index.html",
"../specialmanifest1/index.html",
"../specialjourneedu/index.html",
"../2009archivesactu/index.html",
"../privatisationdel/index.html",
"../specialtempeteja/index.html",
"../infossyndicatscg/index.html",
"../2009tempetelande/index.html",
"../dossiersonyponto/index.html",
"../infossyndicats/index.html",
"../retraitesusrcgtl/index.html",
"../2008archives/index.html",
"../santetravailetpr/index.html",
"../amiante/index.html",
"../assedic/index.html",
"../caf/index.html",
"../laformationsyndi/index.html",
"../consommation-ind/index.html",
"../institutdhistoir/index.html",
"../uniondepartement/index.html",
"../infosunionslocal/index.html",
"../luttesetsucces/index.html",
"../prudhommes2008/index.html",
"../a65/index.html",
"../noselusetmandate/index.html");
titlesArray = new Array("La CGT dans les Landes ...",
"Travailler pour vivre en Aquitaine - L'emploi au coeur.",
"Mentions légales",
"L'actualité sociale dans les Landes",
"RETRAITES",
"2010 INFOS UNION DEPARTEMENTALE ",
"2010 INFOS UL",
"2010 INFOS SYNDICATS",
"Comité des Chômeurs et Précaires",
"USR CGT LANDES : infos des syndicats de retraités ",
"INFOS SAISONNIERS",
"CGT Landes",
"La défense des droits, des libertés et l'action juridique de la CGT dans les Landes",
"CGT Landes",
"2010 DOSSIER AMIANTE",
"Indecosa CGT Landes",
"Le mensuel de l' Union Départementale CGT des Landes",
"Les Informations Syndicales",
"2008 Les Informations Syndicales",
"2007 Les Informations Syndicales ",
"Liens favoris",
"LES ARCHIVES",
"2009 ARCHIVES",
"Toutes les infos sur l'activité de la CGT dans les Landes",
"Actions et manifestation du 20 janvier 2009",
"spécial manifestation du 19 mars 2009",
"spécial journée d'action du 07 octobre 2009",
"spécial manifestation du 11 avril 2009",
"spécial manifestation du 13 juin 2009",
"2009 archives de l'actualité",
"DONNONS DE L'AVENIR AU SERVICE PUBLIC ET AUX POSTIERS",
"Spécial tempête dans les Landes en janvier 2009 ",
"Les infos des syndicats CGT dans les secteurs du privé et du public",
"2009 tempête Landes",
"La lutte des salariés de Sony Pontonx et de la CGT pour sauver les emplois",
"Les infos des syndicats CGT du privé ou du public dans les Landes ...",
"Retraités USR CGT Landes",
"2008 ARCHIVES",
"La santé au travail et la protection sociale",
"Les actions et les luttes pour les salariés touchés par l'amiante",
"Les infos CGT sur les ASSEDIC",
"Les infos CGT sur la Caisse d'Allocation Familiale",
"La Formation Syndicale",
"Les infos d'INDECOSA CGT Landes",
"Les infos de l'Institut CGT d'Histoire Sociale des Landes",
"Travailler pour vivre en Aquitaine - L'emploi au coeur.",
"Les infos des Unions Locales CGT sur tout le département des Landes",
"2008 archives de l'actualité ",
"La campagne des élections prud'homales dans les Landes",
"CGT Landes",
"Les conseillers CGT pour défendre les salariés");
descArray = new Array("%TW-SEARCH%",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"Utilisez ce modèle pour commencer une page vierge",
"",
"",
"",
"",
"Les Informations Syndicales est le périodique de l'Union Départementale de la CGT des Landes. Bulletin mensuel d'information, il est destiné aux syndi...",
"Les Informations Syndicales est le périodique de l'Union Départementale de la CGT des Landes. Bulletin mensuel d'information, il est destiné aux syndi...",
"",
"",
"",
"",
"",
"",
"",
"Utilisez ce modèle pour commencer une page vierge",
"",
"Utilisez ce modèle pour commencer une page vierge",
"Utilisez ce modèle pour commencer une page vierge",
"",
"",
"",
"",
"",
"",
"",
"L'Union des Syndicats de Retraités CGT est l'organisation spécifique de la CGT des Landes pour l'activité syndicale en direction des retraités, des pr...",
"",
"",
"",
"",
"",
"La formation syndicale pourquoi ? Pour être efficace, tout simplement. Pour équiper nos syndiqués, militants, dirigeants en savoirs et savoirs faire p...",
"",
"",
"",
"",
"",
"",
"",
"");
sublinksArray = new Array(51);
var linksCount = 51;


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>");
}
