
//*****************************************************
// traitement des formulaires
//*****************************************************

//code qui permet l'utilisation de getDocumentById avec tous les navigateurs
//
if(!document.getElementById){
	if(document.all){
		document.getElementById=function(){
			if(typeof document.all[arguments[0]]!="undefined"){return document.all[arguments[0]]}else{return null}
		}
	}
	else if(document.layers){
		document.getElementById=function()
		{
			if(typeof document[arguments[0]]!="undefined"){return document[arguments[0]]}else{return null}
		}
	}
}

//      **************************                 initialisations
//on calcule la taille des tables
var size =Top.length;

// par defaut, on trie par toponyme
var trier = 'par top';


// on les trie par toponymes
//   v= tri_alpha ('par top');	

var mot ="";
var mem_fonction = 'dans_top' ;
var rep = new Array ();


// on efface le formulaire d'entree
selObj = window.document.getElementById('a_chercher');
selObj.value = '';

// on efface la zone de reponse
var parentElt = window.document.getElementById('Rep_zone');
	parentElt.innerHTML="";
// et le tableau des reponses	
rep[0]=-1;	



// et on affiche l'aide
v = clic();


//------------------------------------------------------------------------
// passe une chaine en minuscule et sans accent

function SansAccent (str) {	
 return str.toLowerCase().replace(/[ùûúü]/g,"u").replace(/[îïí]/g,"i").replace(/[àâä]/g,"a").replace(/[ôó]/g,"o").replace(/[éèêë]/g,"e").replace(/ç/g,"c");
}

//------------------------------------------------------------------------
// rend 	-1 ou le rang du premier trouvé
// nom est la chaine recherchée
// d est l'indice à partir duquel on commence la recherche
// b indique si il faut rechercher dans les top ou dans les mun

	function cherche(nom,d,b) {

	rang = -1;
	var i = d;

	while ((i<size)&& (rang==-1)){
		if (lang == 'cat') {
			if (b=='dans_top') {
				if (SansAccent(Top[i]).match(nom)) {rang =i}
			} else {
				if (SansAccent(Mun[i]).match(nom)) {rang =i}
			}	
		}
		else {
		 	if (b=='dans_top') {
				if (SansAccent(TopF[i]).match(nom)) {rang =i}
			} else {
				if (SansAccent(MunF[i]).match(nom)) {rang =i}
			}	
		}  
		i++
	}
return rang
}

//------------------------------------------------------------------------
function Parcours_tables() {


  var k = 0;
  var l;
	var s = 0;
	var r = 0 ;
	rep[0] = -1;

	s = cherche(mot,r,mem_fonction);

	while ((s != -1)){

 		rep[k] = s;
 		k++;
 		r = s+1;
 		s = cherche(mot,r,mem_fonction)
	}
	// en sortie rep contient les k indices trouvés
	
	// on formatte les resultats eventuels
	

	// Recherche de l'élément parent dans lequel on va insèrer la nouvelle table
	var parentElt = window.document.getElementById('Rep_zone');
	// Efface le contenu de l'élément parent
	parentElt.innerHTML="";
	
	// Création d'une nouvelle table = élément <table>
	var table = document.createElement("table");
	// force les propriétés de la feuille de style "simple"	
  table.className = "simple";
	
	// Création du corps de la table	
	var tableBody = document.createElement("tbody");
	
	// cas d'une réponse nulle
		
 			if (rep[0] == -1) {
 			
 			// Création d'une nouvelle ligne= élément <tr>
			var row = document.createElement("tr");
			  // Création d'une nouvelle cellule 
				var cell = document.createElement("td");
				// style
				cell.style.width= "240px";
 		    cell.style.borderWidth = '0';
			
				// Contenu de la cellule
				if (lang == 'cat'){
					cell.innerHTML= "    no s'ha trobat cap ocurrència"}
				else {
					cell.innerHTML= "    pas d'occurence trouvée"};
				// Ajoute la cellule dans la ligne	
				row.appendChild(cell);
					
			
				
				// Ajoute la ligne à la fin du corps du tableau
        tableBody.appendChild(row);	
				
				// Ajoute le corps du tableau dans la table
	table.appendChild(tableBody);
	
	// Ajoute la table dans l'élément parent ... ouf !
	parentElt.appendChild(table);
	}
	else {

// on a trouvé des réponses


	var row = document.createElement("tr");
		// Création d'une nouvelle cellule topo
				var cell = document.createElement("th");
				// style
				cell.style.width= "220px";
 		    cell.style.borderWidth = '0';
			  cell.style.fontWeight = "bold";
				// Contenu de la cellule
				if (lang == 'cat') {cell.innerHTML=  k +" topònims"} else {cell.innerHTML= k +" toponymes"};
				// Ajoute la cellule dans la ligne	
				row.appendChild(cell);
		// Création de la cellule Municipi
				var cell = document.createElement("th");
				cell.style.width= "220px";
				cell.style.borderWidth = '0';
			  cell.style.fontWeight = "bold";
				// Contenu de la cellule
				if (lang == 'cat') {cell.innerHTML= "Municipi"} else {cell.innerHTML= "Commune"};
				// Ajoute la cellule dans la ligne	
				row.appendChild(cell);	
				
					// Création de la cellule type
				var cell = document.createElement("th");
				cell.style.width= "40px";
				cell.style.borderWidth = '0';
	      cell.style.fontWeight = "bold";
				// Contenu de la cellule
				if (lang == 'cat') {cell.innerHTML= "Categoria"} else {cell.innerHTML= "Catégorie"};
				// Ajoute la cellule dans la ligne	
				row.appendChild(cell);
							
				// Ajoute la ligne à la fin du corps du tableau
        tableBody.appendChild(row);	
        	
 i=0;
 	while (i<k) {
 				
 			l = rep[i];
 			if((lang == 'cat') || ((lang == 'fr') && (TopF[l] != ''))) {
 				var row = document.createElement("tr");

				// Création d'une nouvelle cellule topo
				var cell = document.createElement("td");
				// style
				cell.style.width= "220px";
 		    cell.style.borderWidth = '0';
			
				// Contenu de la cellule
				if (lang == 'cat') {cell.innerHTML= Top[l]} else {cell.innerHTML= TopF[l]};
				// Ajoute la cellule dans la ligne	
				row.appendChild(cell);
				
				// Création de la cellule Municipi
				var cell = document.createElement("td");
				cell.style.width= "220px";
				cell.style.borderWidth = '0';
			
				// Contenu de la cellule
				if (lang == 'cat') {cell.innerHTML= Mun[l]} else {cell.innerHTML= MunF[l]};
				// Ajoute la cellule dans la ligne	
				row.appendChild(cell);
				
			// Création de la cellule type
				var cell = document.createElement("td");
				cell.style.width= "40px";
				cell.style.borderWidth = '0';
	
				// Contenu de la cellule
				if (lang == 'cat') {
					cell.innerHTML= Typ[l]
//					cell.innerHTML = i +', ' +l
				  } else {
  				cell.innerHTML= TypF[l].replace('indr.',"lieu").replace('nucli',"habit.").replace('barri',"quartier");

			  }
				// Ajoute la cellule dans la ligne	
				row.appendChild(cell);
							
				// Ajoute la ligne à la fin du corps du tableau
        tableBody.appendChild(row);	
      }  
        i++;    
	}
	}
			
	// Ajoute le corps du tableau dans la table
	table.appendChild(tableBody);
	
	// Ajoute la table dans l'élément parent ... ouf !
	parentElt.appendChild(table);
	
}

//------------------------------------------------------------------------
// appellée lorsqu'on modifie le formulaire

function Entree (f, bouton) {
	
	// on efface la zone de reponse
	var parentElt = window.document.getElementById('Rep_zone');
	parentElt.innerHTML="";
// et le tableau des reponses	
	rep[0] = -1;
	
// on memorise la fonction appelée
	mem_fonction = bouton;
	
	selObj = window.document.getElementById('a_chercher');	
	mot = selObj.value;
	
	if(mot!="") {
	
		mot = SansAccent(mot);
		// on remplace le ? par . et * par .* (format des REGEX)
  	mot = mot.replace(/\?/g,".").replace(/[*]/g,".*");
  	if (mot[0] !=".") {mot =".*" + mot;}

		j=Parcours_tables();
	}	
}

//------------------------------------------------------------------------
// appelée lorsqu'on clique sur les boutons français ou catalan

function clic() {
  selObj = window.document.getElementById('aide');
  if (lang == 'cat') {
  		
	    selObj.innerHTML = "El ? reemplaça qualsevol lletra, i el * qualsevol grup de lettras";
  }
  else {
   		
	    selObj.innerHTML = "Le ? remplace n'importe quelle lettre, et * n'importe quel groupe de lettres";
  }
  
// on force le calcul avec la dernière fonction appelée  
//  Entree(f,mem_fonction);
}
  
//------------------------------------------------------------------------
//appelée lorsqu'on change le type de tri
function clic_tri(f) {
 	if (f.tri[0].checked == true) 
 		{trier = 'par top'}
 		else 
 		{trier ='par mun'}	 
 	 		 
 	v= tri_alpha (trier);	
// on force le calcul avec la dernière fonction appelée  
  Entree(f,mem_fonction);
  
}


function exchange( Table,s1,s2) {
var Temp;
	
		Temp = Table[s1]
		Table[s1] = Table[s2];
		Table[s2] = Temp;

return 
}

//------------------------------------------------------------------------
// pour trier les toponymes par ordre alpha 
// le crit indique s'il faut trier par village ou par toponyme

function tri_alpha (crit) {


// toponymes catalans
if (lang == 'cat') {
		
	for (var r=0;r<size -1 ;r++) {
     for (var s= r + 1;s<size ;s++){
					if (((crit== 'par mun') && (Mun[r]>Mun[s])) ||
	         ((crit== 'par top') && (Top[r] >Top[s])))    {
							exchange(Top,r,s);
							exchange(Mun,r,s);
 						  exchange(Typ,r,s);

					}
			}
		}	
}

				
if (lang == 'fr') {
// toponymes français

	for (var r=0;r<size -1 ;r++) {
     for (var s= r + 1;s<size ;s++){
					if (((crit== 'par mun') && (MunF[r]>MunF[s])) ||
	         ((crit== 'par top') && (TopF[r] >TopF[s])))    {
							exchange(TopF,r,s);
							exchange(MunF,r,s);
 						  exchange(TypF,r,s);

					}
			}
		}	
}

 return;
 }

