// ----------------------------------------------------------------------------
// 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(" performances diagnostics techniques immobiliers amiante termites plomb saturnisme gaz electricite pret taux securite piscine loi carrez mesurage etat lieux ventes location demolition obligatoires performnaces energetique dpe sarlat caneda dordogne expertises immobilieres expert prefecture sarladais perigord noir accueil performances24 24200 24590 contre-expertises ",
" performances diagnostics techniques immobiliers amiante termites plomb saturnisme gaz electricite pret taux securite piscine loi carrez mesurage etat lieux ventes location demolition obligatoires performnaces energetique dpe sarlat caneda dordogne expertises immobilieres expert prefecture sarladais perigord noir accueil performances24 24200 24590 contre-expertises ",
" diagnostics obligatoires toutes ventes d'un bien immobilier tous  ",
" l'etat risques naturels technologiques document est obligatoire cas vente location d'un bien depuis juin 2006 locations concerne tout immeuble bati saisonnieres vides meublees commerciales arretes prefectoraux sont pris afin classer communes concernees formulaire renseigne locataire l'acquereur risque possible d'inondation sismicite glissement terrain region situe operateur chargera rediger fournir certains notaires s'occupent eux memes ",
" constat risques d'exposition plomb  ",
" diagnostic amiante concernant biens dont permis construire ete delivre avant 1er juillet 1997 notre mission l'objectif reperage est d'identifier localiser materiaux produits contenant l'amiante presents dans l'immeuble susceptibles liberer fibres d'amiante cas d'agression mecanique resultant l'usage locaux chocs frottements generee l'occasion d'operations d'entretien maintenance non destructif selon l'annexe 13-9 sauf travaux demolition consiste inspection visuelle recensement realisation sondages classement fonction leur nature leurs caracteristiques prelevement analyse identifier lorsque l'operateur doute realisee l'actualisation fiche recapitulative dossier technique constitution dta echeant art 1334-25 code sante publique l'etablissement constat vente d'un immeuble bati 1334-24 vue 1334-27 obligation ces proprietaire ulterieurs cadre decret 2006-761 ",
" mesurage loi carrez diagnostic concerne surfaces privatives lots copropriete verticales immeubles horizontales certains lotissements plusieurs maisons individuelles ayant statut commerces bureaux logements… sont soumis cette pas isolees faisant partie d'une certificat surface habitable est obligation recours professionnel immobilier fortement conseille afin d'eviter risques d'erreurs pourraient avoir consequences importantes soit annulation pure simple l'acte vente reduction prix rapport superficie reelle notre mission mesurer minutieusement reellement bien delivrer attestation ",
" diagnostic performance energetique  ",
" diagnostic termites obligatoire selon arrete prefectoral departement dordogne est entierement concerne objet mission presente consiste etablir l'etat parasitaire relatif presence dans immeuble l'exoneration vendeur garantie vice cache zones delimitees reference loi 99-471 juin 1999 decret 2000-613 juillet 2000 present rapport n'a valeur date visite exclusivement limite batiment document fait norme p03-201 septembre 2007 l'intervention pas but donner resistance mecanique bois materiaux resultats peuvent etre utilises uniquement concernant risque sur elements degrades sondages sont approfondis necessaire destructifs conformement egalement recherches autres agents degradation biologique insectes xylophages champignons lignivores cas rappele l'obligation declaration mairie l'occupant defaut son proprietaire cette obligation prevue aux articles 133-4 133-3 code construction ",
" controle installations interieures gaz  ",
" controle installations electriques securite interieures 'electricite art 134-7 cas vente tout partie d'un immeuble usage d'habitation etat l'installation interieure d'electricite lorsque cette installation ete realisee depuis plus quinze ans est produit vue d'evaluer risques pouvant porter atteinte personnes dans conditions selon modalites prevues aux articles 271-4 271-6 decret conseil d'etat definit d'applications present article domaine d'application champ diagnostic porte sur l'ensemble privative immeubles situee aval l'appareil general commande protection concerne circuits toutes tensions natures courant associes l'utilisation l'energie electrique egalement branchement pas internes materiels d'utilisation destines etre relies fixe l'intervention l'operateur constituants visibles visitables moment controleur prejuge l'usage modifications ulterieures ",
" diagnostic securite piscine depuis 1er janvier 2006 toutes piscines enterrees partiellement usage collectif individuel quelques soient leurs dimensions doivent etre equipees systeme repondant certaines normes spas enterres sont egalement concernes hors-sol sous protection d'un maitre nageur pas concernees cette reglementation existe plusieurs types mise barrieres avec portillon couvertures bassin alarmes attention ete retire marche modeles d'alarmes tous ces dispositifs homologues afnor ils ont but proteger enfants moins ans nouvelles devront avant premiere eau document attestant conformite devra fourni fabricant l'installateur aux sanctions dispositif normalise n'est installe privee dans delais prevus proprietaire s'expose amende 000 d'une residence d'hotels campings centres clubs vacances gites ruraux doit peine respecter dispositions celles concernant equipements materiels techniques utilises ",
" diagnostic pret taux zero accession sociale conventionne ",
" formulaire contact  ",
" derniere nouvelle notre profession  ",
" formulaire contact simple utiliser communiquer critique felicitation remarque question demande renseignement voulez quelque sorte devis l'onglet remercions d'avance ",
" quel diagnostic mon bien  ",
" choisissez situation  ",
" quel diagnostic mon bien  ",
" non obligatoires utiles  ",
" faire rediger l'etat lieux professionnel  ",
" insectes xylophages champignons lignivores  ",
" rassurer anticiper  ",
" performances intervient aussi  ",
" locataires droits  ",
" diagnostics immobiliers ont date validite diagnostic performances energetique est valable dix ans mesurage loi carrez duree indeterminee sauf cas modification structure interieure travaux deplacement suppression d'une cloison d'un mur refend couverture fermeture terrasse amiante illimitee dans d'absence d'amiante presence materiaux amiantes friables flocages calorifugeages faux-plafond controle l'etat conservation doit etre effectue tous trois constat risque d'exposition plomb illimite absence peintures seule mesure superieure seuil vigueur soit 1mg cm² vente cadre location six annees gaz electricite sont valables termites risques naturels technologiques eux mois pret taux zero effectuer chaque demande nouveau ",
" administration collectivite  ",
" quel diagnostic commerces  ",
" telecharger expertises  ",
" sommes  ",
" notre societe service ",
" certifications l'operateur attestation assurance performances cliquez sur photo l'agrandir merci deformation volontaire ",
" liens utiles  ",
" peu verite  ",
"  ",
" demande renseignement  ",
" garantie remboursement frais diagnostics  ",
" diagnostics parties communes  ");
urlsArray = new Array("../introduction/index.html",
"../topic1/index.html",
"../groupederubrique/index.html",
"../ernt/index.html",
"../plomb/index.html",
"../amiante/index.html",
"../loicarrez/index.html",
"../performanceenerg/index.html",
"../termites/index.html",
"../gaz/index.html",
"../electricite/index.html",
"../securitepiscine/index.html",
"../pretataux0/index.html",
"../topic3/index.html",
"../information/index.html",
"../contact/index.html",
"../mapage/index.html",
"../mapage1/index.html",
"../location/index.html",
"../groupederubriqu2/index.html",
"../letatdeslieux/index.html",
"../mapage2/index.html",
"../autresdiagnostic/index.html",
"../lesautresservice/index.html",
"../lecoindeslocatai/index.html",
"../ladureedesvalidi/index.html",
"../administrations/index.html",
"../commerceetpartie/index.html",
"../rubriqueprofessi/index.html",
"../groupederubriqu1/index.html",
"../mentionslegales/index.html",
"../certificationset/index.html",
"../topic2/index.html",
"../mettrelacharrue/index.html",
"../demandederenseig/index.html",
"../contact1/index.html",
"../grfd/index.html",
"../lespartiescommun/index.html");
titlesArray = new Array("DIAGNOSTICS TECHNIQUES IMMOBILIERS",
"DIAGNOSTICS TECHNIQUES IMMOBILIERS",
"Les diagnostics obligatoires pour toutes ventes d'un bien immobilier",
"L'Etat des Risques Naturels et Technologiques ( E.R.N.T )",
"Le constat des risques d'exposition au plomb ( C.R.E.P )",
"Le diagnostic amiante",
"Mesurage loi CARREZ",
"Le Diagnostic de Performance Energétique ( D.P.E )",
"Le diagnostic Termites",
"Le contrôle des installations intérieures de gaz",
"Le contrôle des installations électriques",
"Le diagnostic sécurité piscine",
"Le diagnostic prêt à taux zéro % , accession sociale et conventionné.",
"Formulaire de contact",
"Dernière nouvelle de notre profession",
"Formulaire de contact simple",
"Quel diagnostic pour mon bien ?",
"Choisissez votre situation !",
"Quel diagnostic pour mon bien ?",
"Non obligatoires mais utiles",
"Faire rédiger l'état des lieux par un professionnel",
"Insectes xylophages, champignons lignivores...",
"Pour se rassurer, pour anticiper...",
"PERFORMANCES 24 intervient aussi pour...",
"Locataires vos droits",
"Les diagnostics immobiliers ont une date de validité",
"Administration et collectivité",
"Quel diagnostic pour les commerces ?",
"Télécharger vos expertises",
"Qui sommes nous ?",
"Notre société à votre service.",
"Certifications de l'opérateur et attestation assurance de PERFORMANCES 24.",
"Liens utiles",
"Un peu de vérité !",
"PERFORMANCES 24",
"Demande de renseignement",
"Garantie de remboursement des frais de diagnostics",
"Les diagnostics pour les parties communes.");
descArray = new Array("Performances 24, Diagnostics techniques immobiliers à sarlat la caneda en Dordogne, Vente, location, travaux, démolition. recherche de termites, amian...",
"Performances 24, Diagnostics techniques immobiliers à sarlat la caneda en Dordogne, Vente, location, travaux, démolition. recherche de termites, amian...",
"Tous les diagnostics obligatoires:",
"Ce document est obligatoire en cas de vente et de location d'un bien   Depuis le 1 juin 2006 pour les locations.   Concerne tout immeuble bâti, locati...",
"",
"Diagnostic concernant les biens dont le permis de construire a été délivré avant le 1er juillet 1997.  Notre mission :  L'objectif du repérage est d'i...",
"Ce diagnostic concerne les surfaces privatives des lots copropriété verticales pour les immeubles, et horizontales pour certains lotissements de plusi...",
"",
"Diagnostic obligatoire selon arrêté préfectoral, Le département de la Dordogne est entièrement concerné  OBJET DE LA MISSION : La présente mission con...",
"Performances 24, Diagnostics techniques immobiliers à sarlat la caneda en Dordogne, Vente, location, travaux, démolition. recherche de termites, amian...",
"Performances 24, Diagnostics techniques immobiliers à sarlat la caneda en Dordogne, Vente, location, travaux, démolition. recherche de termites, amian...",
"Depuis le 1er janvier 2006, toutes les piscines enterrées ou partiellement enterrées à usage collectif ou individuel, quelques soient leurs dimensions...",
"",
"Performances 24, Diagnostics techniques immobiliers à sarlat la caneda en Dordogne, Vente, location, travaux, démolition. recherche de termites, amian...",
"",
"Utiliser ce formulaire pour nous communiquer, une critique, une félicitation, une simple remarque, une question, une demande de renseignement, ce que ...",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"-Le Diagnostic de Performances Energétique est valable dix ans.  -Le mesurage Loi CARREZ à une durée de validité indéterminée, sauf en cas de modifica...",
"",
"",
"",
"",
"",
"Cliquez sur la photo pour l'agrandir, merci ! Déformation volontaire",
"",
"Performances 24, Diagnostics techniques immobiliers à sarlat la caneda en Dordogne, Vente, location, travaux, démolition. recherche de termites, amian...",
"",
"",
"",
"");
sublinksArray = new Array(38);
var linksCount = 38;


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>");
}
