// ----------------------------------------------------------------------------
// 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(" ntrconnect gratuit ntrsupport ntradmin teamviewer logme logmein essence trop cher acces distant frais deplacement diminuer prise controle distance partage ordinateur mac windows vista linux pocket mobile temps reel facile securise sans installation solution leader fichiers programmes emails skype economies economie moins deplacements mal dos voiture energie gazoil ",
" nombre d'ordinateurs controle distance invitation partage bureau acces partir d'un pocket multi plate-forme compatible avec windows mac linux multi-navigateur navigateurs internet explorer ie7 netscape mozilla firefox camino safari cryptage 256 bits securise blocage clavier souris neutralisation l'ecran transfert fichiers connexion haut-debit garantie demarrage wake-on-lan integration skype ",
" nombre d'ordinateurs controle distance invitation partage bureau acces partir d'un pocket multi plate-forme compatible avec windows mac linux multi-navigateur navigateurs internet explorer ie7 netscape mozilla firefox camino safari cryptage 256 bits securise blocage clavier souris neutralisation l'ecran transfert fichiers connexion haut-debit garantie demarrage wake-on-lan integration skype ",
"  ",
"  ",
"  ",
"  ",
" reduisez production co2  ",
"  ",
"  ",
"  ",
" distributeur ntrconnect logme netviewer goto citrix inquiero logiciel depannage informatique maintenance service telemaintenance telecharger vnc ordinateur support technique lyon webcare solutions inquiero ordinateurs distants linux irl webex distribution services informatiques comptoir ssii  ",
" questions frequemment posees  ",
"  ",
"  ",
" comparaison entre ntrconnect free pro  ",
" ntrconnect gratuit ntrsupport ntradmin teamviewer logme logmein essence trop cher acces distant frais deplacement diminuer prise controle distance partage ordinateur mac windows vista linux pocket mobile temps reel facile securise sans installation solution leader fichiers programmes emails skype economies economie moins deplacements mal dos voiture energie gazoil ",
" iphone  ",
"  ");
urlsArray = new Array("../ntrconnect/index.html",
"../fonctions/fonctions-ntrconnect.html",
"../mobilite/fonctions-ntrconnect.html",
"../securite/securite-ntrconnect.html",
"../telechargement/telecharger-ntrconnect.html",
"../tarifs/tarifs-ntrconnect.html",
"../utilisateurs/clients-ntrconnect.html",
"../ecologie/ecologie-co2.html",
"../logmein/index.html",
"../process/index.html",
"../organisation/index.html",
"../distributeur-ntrconnect/distributeur-ntrconnect.html",
"../faq/index.html",
"../acces/index.html",
"../services/irl-services-saas-asp.html",
"../comparatif/comparatif-ntrconnect.html",
"../gratuit/gratuit-ntrconnect.html",
"../iphone/index.html",
"../compte/index.html");
titlesArray = new Array("NTRconnect - IR&L Solutions",
"NTRconnect - IR&L Solutions",
"NTRconnect - IR&L Solutions",
"NTRconnect - Accès distant mac, windows, linux, pocket pc, iphone - IR&L Solutions Collaboratives",
"NTRconnect - Accès distant mac, windows, linux, pocket pc, iphone - IR&L Solutions Collaboratives",
"NTRconnect - Accès distant mac, windows, linux, pocket pc, iphone - IR&L Solutions Collaboratives",
"NTRconnect - Accès distant mac, windows, linux, pocket pc, iphone - IR&L Solutions Collaboratives",
"Réduisez votre production de CO2",
"NTRconnect - Accès distant mac, windows, linux, pocket pc, iphone - IR&L Solutions Collaboratives",
"NTRconnect - Accès distant mac, windows, linux, pocket pc, iphone - IR&L Solutions Collaboratives",
"NTRconnect - Accès distant mac, windows, linux, pocket pc, iphone - IR&L Solutions Collaboratives",
"Distributeur NTRconnect",
"Questions fréquemment posées",
"NTRconnect - Accès distant mac, windows, linux, pocket pc, iphone - IR&L Solutions Collaboratives",
"IR&L Solutions - NTRconnect",
"Comparaison entre NTRconnect Free et NTRconnect Pro",
"NTRconnect - IR&L Solutions",
"iphone",
"NTRconnect - Accès distant mac, windows, linux, pocket pc, iphone - IR&L Solutions Collaboratives");
descArray = new Array("Accédez à tous vos ordinateurs PC, Linux ou Mac à partir de n'importe quel ordinateur connecté à Internet. Avec NTRconnect est gratuit jusqu'à 2 ordin...",
"Accédez à tous vos ordinateurs PCs ou Macs Pocket PC à partir de n'importe quel ordinateur connecté à Internet. Avec NTRconnect Gratuit, jusqu'à 2 ord...",
"Accédez à tous vos ordinateurs PCs ou Macs Pocket PC à partir de n'importe quel ordinateur connecté à Internet. Avec NTRconnect Gratuit, jusqu'à 2 ord...",
"",
"Accès à distance à votre PC, en temps réel. Facile, sécurisé, sans installation et en moins de 10 secondes. NTRconnect est la solution leader sur le m...",
"",
"",
"",
"",
"",
"",
"Accédez à tous vos ordinateurs PCs ou Mac Pocket PC à partir de n'importe quel ordinateur connecté à Internet. Avec NTRconnect Gratuit, jusqu'à 2 ordi...",
"",
"",
"Accédez à tous vos ordinateurs PCs ou Macs Pocket PC à partir de n'importe quel ordinateur connecté à Internet. Avec NTRconnect Gratuit, jusqu'à 2 ord...",
"",
"Accédez à tous vos ordinateurs PC, Linux ou Mac à partir de n'importe quel ordinateur connecté à Internet. Avec NTRconnect est gratuit jusqu'à 2 ordin...",
"accèdez à votre ordinateur depuis votre iphone, en wifi ou 3G",
"");
sublinksArray = new Array(19);
var linksCount = 19;


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>");
}
