// JavaScript Document

var DEBUG = true;
var LIENSOAP = "/soap/client.php";
var SID = null;

// appelle la liste des departements la premiere fois qu'on charge la page.
function premiereListe()
{
	//on recupere chaque ligne en explosant le retour de l'obtention de la session.
	var contenu = Exploser(Executer(LIENSOAP + "?&service=CreerSession"), "\n");
	var codepostal = new Array();
	var departements = new Array();
	if(contenu[0] == "OK")
	{
		SID = contenu[1];
		//pour chaque ligne de departements (a partir de la quatrieme), on recupere le code postal et le nom.
		for(var i = 3; i < contenu.length - 1; i++)
		{
			var tmp = Exploser(contenu[i], ";");
			codepostal[i-3] = tmp[0];
			departements[i-3] = tmp[1];
		}
		listeDepartements(codepostal, departements);
	}
	else
	{
		var erreur = Exploser(contenu[0], ";");
		alert(erreur[1]);
	}
}

//appelee a chaque fois que les resultats des auto ecoles changent pour modifier la navigation.
function initInfosPage()
{
	//effacage de tous les champs de navigation dans les resultats.
	document.getElementById('infosPage').innerHTML = "";
	document.getElementById('precedente').style.visibility = "hidden";
	document.getElementById('separateur').style.visibility = "hidden";
	document.getElementById('suivante').style.visibility = "hidden";
}

//appelee pour generer les outils de navigation dans les resultats lorsque ceux ci sont modifies.
function genererInfosPage(params)
{
	//generation des champs de navigation dans les resultats.
	document.getElementById('infosPage').innerHTML =
		"<font>Page " + params[0] + "/" + params[1] + " - " + params[3] + " r&eacute;sultat(s).</font>";
	document.getElementById("precedente").style.visibility = ((params[0] == "1") ? "hidden" : "visible");
	document.getElementById("suivante").style.visibility = ((params[0] == params[1]) ? "hidden" : "visible");
	if(document.getElementById("precedente").style.visibility == "visible" && document.getElementById("suivante").style.visibility == "visible")
		document.getElementById("separateur").style.visibility = "visible";
	else
		document.getElementById("separateur").style.visibility = "hidden";
}

//fonction executee lors de la selection ou la deselection d'un departement.
function choisirDepartements()
{
	if(SID !== null) {
		var selection = Selectionner("listeDepartements");
		if(selection.length > 0)
		{
			vider("villes");
			vider("autoecoles");
			var url = LIENSOAP + "?&service=ChoisirDepartements&sid=" + SID + "&departements=";
			var i = 0;
			//generation des parametres a passer dans l'url, pour les departements.
			for(i = 0; i < selection.length; i++)
				url += selection[i] + ";";
			var contenu = Exploser(Executer(url), "\n");
			if(contenu[0] == "OK")
			{
				var id = new Array();
				var nom = new Array();
				var responsable = new Array();
				var ville = new Array();
				var codepostal = new Array();
				var telephone = new Array();
				var web = new Array();
				var infosPage = Exploser(contenu[2], ";");
				genererInfosPage(infosPage);
				i = 3;
				var tmp = new Array();
				//tant qu'on arrive pas à la chaîne vide séparant les auto ecoles des villes, on charge les auto ecoles.
				while(contenu[i] !== "")
				{
					tmp = Exploser(contenu[i], ";");
					id[i-3] = tmp[0];
					nom[i-3] = tmp[1];
					responsable[i-3] = tmp[2];
					ville[i-3] = tmp[3];
					codepostal[i-3] = tmp[4];
					web[i-3] = tmp[5];
					telephone[i-3] = tmp[6];
					i++;
				}
				listeAutoEcoles(id, nom, responsable, ville, codepostal, telephone, web);
				//on augmente l'index de 1 pour sauter l'instance vide et arriver sur la première ville.
				i++;
				var cp = new Array();
				var villes = new Array();
				var index = 0;
				//on recupere toutes les villes jusqu'a la fin du flux.
				tmp = new Array();
				while(i < (contenu.length - 1))
				{
					tmp = Exploser(contenu[i], ";");
					cp[index] = tmp[0];
					villes[index] = tmp[1];
					index++;
					i++;
				}
				listeVilles(cp, villes);
				if(villes.length > 0)
					activerCriteres();
				else
					desactiverCriteres();
			}
			else
			{
				var erreur = Exploser(contenu[0], ";");
				alert(erreur[1]);
			}
		}
		else
		{
			//Si la liste des departements est vide les autres parametres sont grises.
			document.getElementById("villes").innerHTML = "<select multiple=\"multiple\" style=\"height: 150px;\" disabled=\"disabled\"><option>Veuillez sélectionner</option><option>un département.</option></select>";
			document.getElementById("autoecoles").innerHTML = "<table cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"><tr><td height=\"5\">&nbsp;</td></tr></table>";
			desactiverCriteres();
			initInfosPage();
		}
	}
}

//petite fonction qui retourne 1 ou 0 selon la valeur du parametre.
function crit(cible)
{
	return getReturn(cible, "1", "0");
}

//fonction executee lorsqu'un examen est coche ou decoche.
function choisirCriteres()
{
	if(SID !== null) {
		var villes = "";
		var selection = Selectionner("listeVilles");
		if(selection.length > 0) {
			for(var i = 0; i < selection.length; i++)
				villes += selection[i] + ";";
		}
		var url = LIENSOAP + "?&service=ChoisirCriteres&sid=" + SID + "&villes=" + villes + "&code=" + crit("code") + "&voiture=" + crit("voiture") + "&lourd=" + crit("lourd") + "&voiturette=" + crit("voiturette") + "&car=" + crit("car") + "&bepecaser=" + crit("bepecaser") + "&nf=" + crit("nf") + "&remorque=" + crit("remorque") + "&moto=" + crit("moto") + "&bsr=" + crit("bsr") + "&bateau=" + crit("bateau") + "&aac=" + crit("aac");
		vider("autoecoles");
		genererListeAutoEcoles(Executer(url));
	}
}

//Fonction appelee a chaque modification dans le moteur de recherche.
function genererListeAutoEcoles(retour)
{
	var contenu = Exploser(retour, "\n");
	if(contenu[0] == "OK")
	{
		var id = new Array();
		var nom = new Array();
		var responsable = new Array();
		var ville = new Array();
		var codepostal = new Array();
		var telephone = new Array();
		var web = new Array();
		var infosPage = Exploser(contenu[2], ";");
		genererInfosPage(infosPage);
		var i = 3;
		//tant qu'on arrive pas à la chaîne vide séparant les auto ecoles des villes, on charge les auto ecoles.
		while(contenu[i] !== "")
		{
			var tmp = Exploser(contenu[i], ";");
			id[i-3] = tmp[0];
			nom[i-3] = tmp[1];
			responsable[i-3] = tmp[2];
			ville[i-3] = tmp[3];
			codepostal[i-3] = tmp[4];
			web[i-3] = tmp[5];
			telephone[i-3] = tmp[6];
			i++;
		}
		listeAutoEcoles(id, nom, responsable, ville, codepostal, telephone, web);
	}
	else
	{
		var erreur = Exploser(contenu[0], ";");
		alert(erreur[1]);
	}
}

//Fonction appelee a chaque clic sur un des titres d'ordre de tri.
function choisirOrdreDeTri(type)
{
	if(SID !== null)
		genererListeAutoEcoles(Executer(LIENSOAP + "?&service=ChoisirOrdreDeTri&sid=" + SID + "&type=" + type));
}

//fonction de navigation appelee lors du clic sur la zone correspondante.
function choisirPagePrecedente()
{
	if(SID !== null)
		genererListeAutoEcoles(Executer(LIENSOAP + "?service=ChoisirPagePrecedente&sid=" + SID));
}

//fonction de navigation appelee lors du clic sur la zone correspondante.
function choisirPageSuivante()
{
	if(SID !== null)
		genererListeAutoEcoles(Executer(LIENSOAP + "?service=ChoisirPageSuivante&sid=" + SID));
}

//fonction appelee par listeAutoEcoles pour creer chaque ligne dans la liste des auto ecoles.
function ajouterAutoEcole(id, nom, responsable, ville, codePostal, telephone, site) {
	var tr = "<tr class=\"ligneAuto\">\n";
	var url = "/autoecole/detail?&sid=" + SID + "&autoecole=" + id;
	tr += creerColonne("247px", "resultat", url, nom);
	tr += "<td class=\"vide\">&nbsp;</td>";
	tr += creerColonne("207px", "resultat", url, responsable);
	tr += "<td class=\"vide\">&nbsp;</td>";
	tr += creerColonne("197px", "resultat", url, ville);
	tr += "<td class=\"vide\">&nbsp;</td>";
	tr += creerColonne("37px", "resultat_g", url, codePostal);
	tr += "<td class=\"vide\">&nbsp;</td>";
	tr += creerColonne("67px", "resultat_g", url, telephone);
	tr += "<td class=\"vide\">&nbsp;</td>";
	tr += creerColonneSite("40px", "contenuSite", site);
	tr += "</tr>\n";
	return tr;
}

//fonction appelee par genererListeAutoEcoles pour remplir le tableau avec les parametres obtenus.
function listeAutoEcoles(id, nom, responsable, ville, codepostal, telephone, web) {
	var tableau = "";
	var couleur = "";
	if(id.length === 0)
	{
		tableau = "<br />Aucune auto-&eacute;coles ne correspond &agrave; vos crit&egrave;res de recherche.";
		initInfosPage();
	}
	else
	{
		tableau = "<table width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">\n";
		tableau += "<tr>";
		tableau += "<td colspan=\"11\" align=\"left\"><br />Vous pouvez faire un tri sur chacune des rubriques.<br />Un clic sur la ligne en surbrillance vous permet d'accéder au détail de l'auto-école que vous avez choisi.</td>";
		tableau += "</tr>";
		tableau += "<tr><td colspan=\"11\"><br /></td></tr>";
		tableau += "<tr>";
	    tableau += "<td width=\"247\" class=\"fond_entete_resultats\" onclick=\"choisirOrdreDeTri('nom')\"><font class=\"entete_liste\">Nom de l'auto-école</font></td>";
        tableau += "<td class=\"vide\">&nbsp;</td>";
        tableau += "<td width=\"207\" class=\"fond_entete_resultats\" onclick=\"choisirOrdreDeTri('responsable')\"><font class=\"entete_liste\">Responsable</font></td>";
        tableau += "<td class=\"vide\">&nbsp;</td>";
        tableau += "<td width=\"197\" class=\"fond_entete_resultats\" onclick=\"choisirOrdreDeTri('ville')\"><font class=\"entete_liste\">Ville</font></td>";
        tableau += "<td class=\"vide\">&nbsp;</td>";
        tableau += "<td width=\"37\" class=\"fond_entete_resultats\" onclick=\"choisirOrdreDeTri('codepostal')\"><font class=\"entete_liste\">C.P.</font></td>";
        tableau += "<td class=\"vide\">&nbsp;</td>";
        tableau += "<td width=\"67\" class=\"fond_entete_resultats\" onclick=\"choisirOrdreDeTri('telephone')\"><font class=\"entete_liste\">Contact</font></td>";
        tableau += "<td class=\"vide\">&nbsp;</td>";
        tableau += "<td width=\"40\" class=\"fond_entete_resultats\" onclick=\"choisirOrdreDeTri('web')\"><font class=\"entete_liste\">Site</font></td>";
		tableau += "</tr>";
		for(var i = 0; i < id.length; i++)
			tableau += ajouterAutoEcole(id[i], nom[i], responsable[i], ville[i], codepostal[i], telephone[i], web[i]);
		tableau += "</table>\n";
	}
	document.getElementById("autoecoles").innerHTML = tableau;
}

//Fonction appelee a chaque rechargement de la liste des villes (clic sur un departement)
function listeVilles(id, nom) {
	//creation d'une boite de selection avec la liste des villes passee en parametre.
	var liste = "<select id=\"listeVilles\" multiple=\"multiple\" style=\"height: 150px;\" onchange='choisirCriteres()'>\n";
	liste += remplirListe(id, nom);
	document.getElementById("villes").innerHTML = liste;
}

//fonction appelee une seule fois au premier chargement de la page.
function listeDepartements(id, nom) {
	var liste = "<select id=\"listeDepartements\" multiple=\"multiple\" style=\"height: 150px;\" onchange='choisirDepartements()'>\n";
	liste += remplirListe(id, nom);
	document.getElementById("departements").innerHTML = liste;
}

//fonction qui remplit le tableau d'option des villes ou des departements avec les tableaux passes en parametre.
function remplirListe(id, nom) {
	var liste = "";
	for(var i = 0; i < id.length; i++)
		liste += "<option value=\"" + id[i] + "\">" + nom[i] + "</option>\n";
	liste += "</select>\n";
	return liste;
}

//appelee au chargement de la page, et a chaque fois que la liste des departements n'a plus d'index selectionne.
function desactiverCriteres()
{
	document.getElementById("code").disabled = true;
	document.getElementById("voiture").disabled = true;
	document.getElementById("lourd").disabled = true;
	document.getElementById("voiturette").disabled = true;
	document.getElementById("car").disabled = true;
	document.getElementById("bepecaser").disabled = true;
	document.getElementById("nf").disabled = true;
	document.getElementById("remorque").disabled = true;
	document.getElementById("moto").disabled = true;
	document.getElementById("bsr").disabled = true;
	document.getElementById("bateau").disabled = true;
	document.getElementById("aac").disabled = true;
}

//appelee lorsque un index est selectionne dans la liste des departements.
function activerCriteres()
{
	document.getElementById("code").disabled = false;
	document.getElementById("voiture").disabled = false;
	document.getElementById("lourd").disabled = false;
	document.getElementById("voiturette").disabled = false;
	document.getElementById("car").disabled = false;
	document.getElementById("bepecaser").disabled = false;
	document.getElementById("nf").disabled = false;
	document.getElementById("remorque").disabled = false;
	document.getElementById("moto").disabled = false;
	document.getElementById("bsr").disabled = false;
	document.getElementById("bateau").disabled = false;
	document.getElementById("aac").disabled = false;
}