  ////////////////////////////////////////////////    
  // FONCTIONS POUR LE XML REQUEST (AJAX)  //
 ////////////////////////////////////////////////
 
var xmlHttp;
var requete_liste; //requete qui sera fabriquee pour etre envoye à la liste pour trier les pays et villes selon les critere de filtrage

var actionFiltre='map';

var impTextEff='xxx';
var tmpVille='';

var winCharge=false;

var filtreCharge=false;

var act;

var map;

function Lister(str, page, id, variable, fonction,parent,idvia)
{ 
//alert('0');
//alert(str);
//alert("Chaine envoyee : "+str+ "\n\n Page appellee : "+page+".php\n\n Id le resultat s'affiche : "+id+"\n\n Type de variable attendu (p ou q) : "+variable+" \n\n Est-ce que on veut imprimer apres : "+fonction);
//alert(page);

str=str.replace("é","e");
str=str.replace("è","e");
str=str.replace("ê","e");
str=str.replace("à","a");
str=str.replace("ë","e");
str=str.replace("û","u");
str=str.replace("ü","u");


	if(page=="contenu" || page=="contenu_info" || page=="contenu_infoimp")
	{
		filtreCharge=true;
		$('filtre_transport').style.visibility="visible";
		//$('filtre_transport').style.display="block";
	}else{
		filtreCharge=false;
		$('filtre_transport').style.visibility="hidden";
		//$('filtre_transport').style.display="none";	
	}

	actionFiltre=page;
	
	xmlHttp=GetXmlHttpObject()
	if (xmlHttp==null)
	{
		alert ("Votre navigateur ne supporte pas le HTTP Request")
		return
	}
	var url="./pages/"+page+".php"
	
	if (!winCharge && (page=='map' || page=='contenu')) {
		winCharge=true;
		fenetre();
	}
	
	if(variable == 'q')
		url=url+"?q="+str
	else if(variable == 'p')
		url=url+"?p="+str
	
	url=url+"&sid="+Math.random()+"&pa="+parent+"&idvia="+idvia
	if(id != 0)
		xmlHttp.onreadystatechange=getStateChanged(id, fonction);
	else
		xmlHttp.onreadystatechange=getStateChanged(0, fonction);
	xmlHttp.open("GET",url,true)
	xmlHttp.send(null)
}

function getStateChanged(id, fonction)
{
	if (id != 0)
	{
		if (typeof(id) === 'string')
		{
			id = document.getElementById(id);
		}
		return function() 
		{
			if (xmlHttp.readyState==4)
			{
				
				if(fonction == 'imprime'){
					id.innerHTML = xmlHttp.responseText;
					imprime(id);
					id.innerHTML = "";
				}else{ 
					id.innerHTML = xmlHttp.responseText;
				}
			}
		}
	}
	else
	{
		return function() 
		{
			if (xmlHttp.readyState==4)
			{		
				
				if(fonction == 'imprime'){
					act.setContent(xmlHttp.responseText);
					imprime();	
					act.setContent("");
				}else{ 
					act.setContent(xmlHttp.responseText);
				}
			}
		}
	}
}


function GetXmlHttpObject()
{
	var xmlHttp=null;
	try
	{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e)
	{
		//Internet Explorer
		try
		{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}
   ///////////////////////////////////////////////////
  // FONCTIONS POUR LES TYPES DE TRANSPORTS ///
 ///////////////////////////////////////////////////

function init_transport(){
	for (i=0;i<=n-1;i++)
	{
		TabVisible[i] = 1;
		$(''+TabImage1[i]).src='./images/'+TabImage1[i];
	}
}

function filtre(id, etat, refresh_list)
{
	requete_liste = '';

	if($('indicateur_ville').value != '*' && id)
		var requete = "SELECT dess.id AS Id, dess.nom AS Nom, dess.id_operateur AS Id_Operateur, dess.frequence, dest.ville AS Ville, o.nom AS Operateur, tf.libelle AS Type_Frequence, mt.libelle AS Mode_Transport, mt.couleur AS Couleur, tf.libelle_en AS Type_Frequence_en, mt.libelle_en AS Mode_Transport_en, p.nom as Pays_Destination FROM desserte dess,operateur o, destination dest, type_frequence tf, mode_transport mt, pays p WHERE dest.id_pays=p.id and dest.id = dess.id_destination AND o.id = dess.id_operateur AND tf.id = dess.id_type_frequence AND mt.id = dess.id_mode_transport AND mt.visible = 1 AND mt.visible = 1 AND id_destination = " + $('indicateur_ville').value;
	else
		var requete = "SELECT dess.id AS Id, dess.nom AS Nom, dess.id_operateur AS Id_Operateur, dess.frequence, dest.ville AS Ville, o.nom AS Operateur, tf.libelle AS Type_Frequence, mt.libelle AS Mode_Transport, mt.couleur AS Couleur, tf.libelle_en AS Type_Frequence_en, mt.libelle_en AS Mode_Transport_en, p.nom as Pays_Destination FROM desserte dess,operateur o, destination dest, type_frequence tf, mode_transport mt, pays p WHERE dest.id_pays=p.id and dest.id = dess.id_destination AND o.id = dess.id_operateur AND tf.id = dess.id_type_frequence AND mt.id = dess.id_mode_transport AND mt.visible = 1 AND mt.visible = 1";

			
	for (i=0;i<=n-1;i++)
	{
		if(refresh_list == 1)
		{
			if (TabId[i]==id) // Si etat = 0, la ligne correspondant au tableau JS prend la valeur 0
			{
				if (!etat)
				{
					TabVisible[i] = 0;
				}
				else // Si etat = 1, la ligne correspondant au tableau JS prend la valeur 1
				{
					TabVisible[i] = 1;
				}
			}
		}
		if(TabVisible[i] == 0)
		{
			requete +=  ' AND dess.id_mode_transport <> ' + TabId[i];
			var increment_i = i+1;
			requete_liste += ' AND dess.id_mode_transport <> ' + increment_i;
		}
	}

	if($('indicateur_ville').value == '*') // Si la valeur de l'input hidden est egal a une etoile (=tout), on va tri toutes les dessertes par le nom de la ville
		requete += ' ORDER BY Ville';
	
	if(refresh_list == 1)
	{
		if($('indicateur_ville').value != ''){ // Verification: Si on clique sur les filtres sans avoir clique sur une villes, les criteres s'appliquent mais rien ne s'affiche (car aucune ville choisi)
			Lister(requete, 'contenu', 0, 'p', 'refresh','filtre');
		}else{
	
			Lister(requete_liste, 'recherche', 'resultat', 'p', 0,'filtre');
		}
	}
	else
		Lister(requete, 'contenu', 0, 'p', 0,'Filtre');
		
}  
   /////////////////////////////////////////////
  // FONCTION POUR CREER UNE FENeTRE //
 /////////////////////////////////////////////
function fenetre(titre)
{		wm = new UI.WindowManager({ container: 'gauche_absolute' });
		//act = new UI.URLWindow({height: 540, width: 545, top: 0, left: 0, url: './pages/index.php',minimize: false, maximize: false, close:false, windowManager: wm}).setHeader(titre).addButton('refresh').show();
		act = new UI.URLWindow({height: 540, width: 545, top: 0, left: 0, url: './pages/index.php', windowManager: wm}).setHeader(titre).addButton('refresh').show();
		//act.maximize(); 
		act.observe("hidden", function(){ winCharge=false;$('filtre_transport').style.visibility="hidden";});
}

function fenetreaide()
{		
		wm2 = new UI.WindowManager({ container: 'gauche_absolute' });
		act2 = new UI.URLWindow({height: 420, width: 445, top: 0, left: 0, url: './pages/help.php',windowManager: wm2}).setHeader("AIDE").addButton('refresh').show();
		//act.maximize();
}

   ///////////////////////////////////////////////////////////////////////////////////
  // FONCTION QUI AFFICHE OU NON LE CONTENU DU DIV QUI EST EN PARAMETRE //
 ///////////////////////////////////////////////////////////////////////////////////
function deploie(id, nom, div_contenu, divid, bool, num_id, fonction, text)
{
	if(bool){
		Lister(nom, div_contenu, divid, 'q', fonction,'deploie');
	}else{
		$('fenetre2_'+num_id).innerHTML='<br>';
	}
		
	if (fonction!='imprime'){
		$(id).innerHTML = text;
	}
	
}


function imprime(lid)
{

	var zi = $(tmpObj).innerHTML;

	var f = window.open("", "ZoneImpr", "height=500, width=525,toolbar=0, menubar=0, scrollbars=1, resizable=1,status=0, location=0, left=10, top=10");
	f.document.body.style.color = '#000000';
	f.document.body.style.backgroundColor = '#FFFFFF';
	f.document.body.style.padding = "10px";
	f.document.body.style.font.family="Verdana,Arial,helvetica,sans serif";
	f.document.title = tmpTitre;
	f.document.body.innerHTML += "" + zi + "";
	return true;
}

function init()
{
	act.destroy();
	$('indicateur_ville').value = '';
	fenetre();
}

function devellopper(id, id_image, image_del)
{	
		Effect.toggle(id,'blind',{ afterFinish: function() 
		{
			chemin = document[id_image].src;
			var temp = new Array();
			var nb_max = 0;
			temp = chemin.split('/');
			
			for(var i=0; i<20; i++)
			{
				if (temp[i] != undefined)
					nb_max = i;
				else
					break;
			}
			if(temp[nb_max] != 'fleche_bas.png')
				document[id_image].src = './images/fleche_bas.png';
			else
				document[id_image].src = './images/fleche_haut.png';
				
			if(image_del)
			{
				if($(image_del).style.display == 'none')
					$(image_del).style.display = 'block';
				else
					$(image_del).style.display = 'none';
			}
		}, duration: 0.7});
		return false;
}

function creer_nom()
{
	var operateur = $('new_operateur').value;
	var destination = $('new_destination').value;
	var new_name = operateur+' - '+destination;
	$('new_nom').innerHTML = new_name;
}

function showAddress() {
		var geo;
		var reasons=[];
		geo = new GClientGeocoder();
		reasons[G_GEO_SUCCESS]            = "Succes";
		reasons[G_GEO_MISSING_ADDRESS]    = "Adresse manquant: L'adresse saisie est manquante ou n'a pas de valeur.";
		reasons[G_GEO_UNKNOWN_ADDRESS]    = "Adresse inconnu : Aucun lieu geographique ne peut etre trouve pour l'adresse rentrees.";
		reasons[G_GEO_UNAVAILABLE_ADDRESS]= "Adresse incorrecte: Le geocode pour l'adresse donnee ne peut pas etre retourne pour des raisons legales ou contractuelles.";
		reasons[G_GEO_BAD_KEY]            = "Mauvaise cle: La cle API saisie est incorrect.";
		reasons[G_GEO_TOO_MANY_QUERIES]   = "Surcharge: Le quota de requete pour ce site a ete surpasse.";
		reasons[G_GEO_SERVER_ERROR]       = "Erreur serveur: La requete de geocoding na pas pe s'executer correctement.";

        var search = $('rechercher').value;
        //Fonction permettant de recuperer le nom ( result.Placemark[i].address) etles coordonnees (result.Placemark[i].Point.coordinates[i])
        geo.getLocations(search+', Europe', function (result)
          {
            if (result.Status.code == G_GEO_SUCCESS) {
			//$('no_result').innerHTML = '';
              //Plus d'un resutat
             // if (result.Placemark.length > 1) { 
                //On affiche les resultat 1 par 1 via une boucle
                for (var i=0; i<result.Placemark.length; i++) {
		  var adresse = result.Placemark[i].address;
		  
                  $('no_result').innerHTML += '<div class="villes" style="cursor: pointer" onclick="Lister(\''+adresse+'\', \'map\', 0, \'q\', 0)">'+adresse+'</div>';
                }
             // }
              // 1 seul resultat envoye par google ==> Direct sur la google map
             // else {
             // 	alert(result.Placemark[0].address);
             //   Lister(result.Placemark[0].address, 'map', 0, 'q', 0);
             // }
            }
            // Erreur, gestion, affichage par un alert
            else {
              var reason="Code "+result.Status.code;
              if (reasons[result.Status.code]) {
                reason = reasons[result.Status.code]
              } 
              alert('Ne trouve pas "'+search+ '"\n\n ' + reason);
            }
          }
        );
      }