// ----------------------------------------------------------------------------
// 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 = 0;
ALLWORDSONLY = 0;
namesArray = new Array("  ",
" blog l'etkda  ",
" jeudi juillet 2010 yoga tous soirs mois 20h00 partir lundi mercredi vendredi 12h30 mardi 10h30 pas mourir idiot serait dommage rester avec cliches l'on priver ses effets benefiques corps comme mental inspirent encore actuellement science medecine occidentale alors cours d'essai c'est regle ",
" decembre 2004 l'etkda est heureuse presenter son tout nouveau site menu look nouvelle rubrique photos videos blog sur lequel pouvez laissez commentaires n'hesitez pas donner avis avez idees suggestions sommes l'ecoute ameliorer notre ",
" salles horaires  ",
" aix provence  ",
" allauch  ",
" aubagne  ",
" auriol  ",
" val  ",
" ciotat  ",
" logis neuf  ",
" rose  ",
" saint-barnabe  ",
" roquevaire  ",
" saint zacharie  ",
" nicolas hubert sebastien fabrice marie catherine ",
" autres activites  ",
" baby gym  ",
" body taekwondo  ",
" haidong gumdo sabre coreen  ",
" self defense  ",
" yoga  ",
" hubert  ",
" questions frequemment posees  ",
"  ",
" ecole taekwondo d'aubagne  ",
" taekwondo  ",
" titre groupe saisissez message d'introduction rubriques ",
" 2010 utilisez modele commencer page vierge ",
" 2009 utilisez modele commencer page vierge ",
" championnat fance toutes videos sont  ",
" championnat france  ",
" coupe l'ambassadeur  ",
" magasin utilisez modele vendre articles ligne est catalogue standard avec l'option vente activee defaut visiteurs auront possibilite d'ajouter leur caddie puis d'imprimer bon commande envoyer reglement pouvez tout moment activer desactiver cette option comme dans fiches ont unite presentation ajoutez supprimez paragraphe fiche article cela affectera toutes autres ",
" 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 description article ici ",
" saisissez description article ici ",
" liens favoris  ",
" open paca mai 2010  ",
" presse parle  ",
" 2010-2009  ",
" 2009-2008  ");
urlsArray = new Array("../topic1/index.html",
"../blog/index.html",
"../blog/index.html#yoga",
"../blog/index.html#nweb",
"../groupederubrique/index.html",
"../allauch/index.html",
"../logisneuf/index.html",
"../aubagne/index.html",
"../auriol/index.html",
"../brignoles/index.html",
"../laciotat/index.html",
"../mapage/index.html",
"../larose/index.html",
"../saint-barnabe/index.html",
"../roquevaire/index.html",
"../logisneuf1/index.html",
"../entraineurs/index.html",
"../groupederubriqu4/index.html",
"../babygym/index.html",
"../bodytaekwondo/index.html",
"../yoga/index.html",
"../selfdefense/index.html",
"../aubagne1/index.html",
"../albumphoto/index.html",
"../faqs/index.html",
"../mapage1/index.html",
"../contact/index.html",
"../mapage2/index.html",
"../groupederubriqu1/index.html",
"../mapage5/index.html",
"../mapage6/index.html",
"../groupederubriqu2/index.html",
"../mapage4/index.html",
"../mapage7/index.html",
"../magasin/index.html",
"../magasin/page1.html",
"../magasin/page2.html",
"../magasin/page3.html",
"../topic2/index.html",
"../albumphoto1/index.html",
"../groupederubriqu3/index.html",
"../albumphotonb/index.html",
"../albumphotonb1/index.html");
titlesArray = new Array("Ecole Taekwondo d'Aubagne ETKDA",
"Le blog de l'ETKDA",
"Deux nouvelles activités pour l'été : Yoga et Body Taekwondo",
"Le site se refait une beauté",
"Salles et horaires",
"Aix en Provence",
"Allauch",
"Aubagne",
"Auriol",
"Le Val",
"La Ciotat",
"Logis Neuf",
"La Rose",
"Saint-Barnabé",
"Roquevaire",
"Saint Zacharie",
"Entraineurs",
"Autres activités",
"Baby Gym",
"Body Taekwondo",
"Haidong Gumdo (Sabre Coréen)",
"Self Défense",
"Yoga",
"Hubert",
"Questions fréquemment posées",
"Ecole Taekwondo d'Aubagne ETKDA",
"Ecole TaeKwonDo d'Aubagne",
"Le Taekwondo",
"Titre du groupe",
"2010",
"2009",
"Championnat de Fance",
"Championnat de France",
"Coupe de l'ambassadeur",
"Magasin",
"Nom de l'article",
"Nom de l'article",
"Nom de l'article",
"Liens favoris",
"Open PACA 31 mai 2010",
"La Presse en parle",
"2010-2009",
"2009-2008");
descArray = new Array("",
"",
"&",
"&",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"Saisissez le message d'introduction de votre groupe de rubriques",
"Utilisez ce modèle pour commencer une page vierge",
"Utilisez ce modèle pour commencer une page vierge",
"Toutes les vidéos sont là !!!",
"",
"",
"Utilisez ce modèle pour vendre des articles en ligne. Ce modèle est un catalogue standard mais avec l'option de vente en ligne activée par défaut : le...",
"&",
"&",
"&",
"",
"",
"",
"",
"");
sublinksArray = new Array(43);
var linksCount = 43;


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>");
}

