// ----------------------------------------------------------------------------
// 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 = 0;
ONLINE_WEBSITE = 1;
ALLWORDSONLY = 0;
namesArray = new Array(" mariage ",
" formule pro decouvrez rassemble chaque atout garantir reussite soirees  ",
" tarifs sono ",
" location projecteur beamer video ",
" spectacles evenements  ",
" cocktail explosif meilleur musique  ",
" deroulement soiree  ",
" dj's  ",
" animation  ",
" questions frequemment posees ces concernent forfait soiree party packs consultez rubrique  ",
" exclusif conseils reussir soiree ",
" offre prix souhaitez officielle suffit d'imprimer cette page retrouvez nos deux offres base formules plus elaborees sera propose sur precisions  ",
" salles soirees privees  ",
" decouvrez party pack  ",
" formules tarifs party packs pouvez commander directement l'aide formulaire reservation pack prix htva 21 ",
" video demonstration virtuel  ",
" option party packs ameliorer pack disposez differentes options pouvez choisir lorsque remplissez commande ligne  ",
" commander party pack  ",
" soirees prodj photos  ",
" livre d'or references  ",
" bruxelles belgique mariage sono location ",
" formulaire contact  ",
" bars restos souhaitez formule originale jouer musique dans etablissement recherchez fois atmospheres relaxantes aussi faire monter l'ambiance moment alors decouvrez virtuel smart  ",
" jeux animations festives  ",
" formulaire contact  ",
" mariages plus beau jour vie prodj anime regulierement ",
" drafs utilisez modele commencer page vierge ",
" bruxelles belgique mariage sono location ",
" bruxelles belgique mariage sono location ",
" emploi utilisez modele commencer page vierge ",
" bon commande prestations  ",
" visites nombre  ");
urlsArray = new Array("../start/index.html",
"../lafomuleprodj/index.html",
"../tarifs/index.html",
"../kitdeprojection/index.html",
"../spectacleseteven/index.html",
"../lamusique/index.html",
"../lasoiree/index.html",
"../ledj/index.html",
"../animation/index.html",
"../faqs/index.html",
"../conseils/index.html",
"../offre/index.html",
"../salles/index.html",
"../partypacks/index.html",
"../ppformules/index.html",
"../videodemo/index.html",
"../option/index.html",
"../reservationpp/index.html",
"../photos/index.html",
"../livredor/index.html",
"../intro/intro.html",
"../contact/index.html",
"../barsrestos/index.html",
"../jeux/index.html",
"../contact1/index.html",
"../mapage4/index.html",
"../drafts/index.html",
"../confirmation/index.html",
"../vosphotos/index.html",
"../mapage/index.html",
"../commande/index.html",
"../vistes/index.html");
titlesArray = new Array("Bruxelles DJ Disk Jockey Deejay soirées et mariages Belgique au meilleur rapport qualité prix",
"DJ Deejay Disk Jockey Belgique",
"DJ Mariage Bruxelles Belgique",
"location projecteur - beamer bruxelles brabant",
"Spectacles et évènements",
"Un cocktail explosif du meilleur de la musique",
"Le déroulement de votre soirée",
"DJ's",
"Animation",
"Les questions fréquemment posées",
"Exclusif : les conseils pour réussir votre soirée",
"Offre de Prix",
"Salles pour vos soirées privées",
"Sono Bruxelles",
"Location sono Bruxelles",
"Video de démonstration du DJ virtuel",
"Option Party Packs",
"Commander un Party Pack",
"Les soirées ProDj.be en photos",
"Livre d'or et références",
"DJ Bruxelles et Belgique animation",
"Formulaire de contact",
"Bars & Restos",
"Jeux et animations festives",
"Formulaire de contact",
"Mariages",
"drafs",
"DJ Bruxelles et Belgique animation",
"DJ Bruxelles et Belgique animation",
"Emploi",
"Bon de Commande de prestations",
"visites");
descArray = new Array("DJ mariage",
"Découvrez la formule Pro DJ qui rassemble chaque atout pour garantir la réussite de vos soirées :",
"DJ mariage Belgique",
"Location de video projecteur à Bruxelles et Brabant location beamer location video projecteur location projecteur",
"",
"",
"",
"DJ  mariage",
"",
"Ces questions concernent le forfait SOIREE DJ  (pour les Party Packs consultez la rubrique Party Packs)",
"",
"Si vous souhaitez une Offre de prix officielle, il vous suffit d'imprimer cette page. Vous y retrouvez les prix pour nos deux offres de base. Pour les...",
"",
"Location sono Bruxelles",
"Vous pouvez commander directement à l'aide du formulaire de Réservation Party Pack Prix HTVA (21%)",
"",
"Pour améliorer votre Party Pack, vous disposez de différentes options, que vous pouvez choisir lorsque vous remplissez votre commande en ligne :",
"",
"",
"",
"DJ Bruxelles et Belgique animation sono",
"",
"Vous souhaitez une formule originale pour jouer de la musique dans votre établissement... Vous recherchez à la fois des atmosphères relaxantes, mais a...",
"",
"",
"Pour le plus beau jour de votre vie,   ProDj.be anime régulièrement des mariages.",
"Utilisez ce modèle pour commencer une page vierge",
"DJ Bruxelles et Belgique animation sono",
"DJ Bruxelles et Belgique animation sono",
"Utilisez ce modèle pour commencer une page vierge",
"",
"Nombre de visites");
sublinksArray = new Array(32);
var linksCount = 32;


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>");
}

