//------------------------------------------------------------------------------------//
// PROGRAMME : moteur.js
// DESCRIPTION : Fonction de gestion des moteurs javascripts
// HISTORIQUE DES VERSIONS :
// V0.1 - 26/07/2007 - Léonard - Création
// V0.1 - 30/11/2007 - Léonard - Passage en statique
//------------------------------------------------------------------------------------//

if (id_type_site != null)
{
	if (id_type_site == 4)
	{
		code_pere = "code_pays_iso";
		id_fils = "id_ville_onu";
		id_fils_rech = "id_ville_onu_rech";
		id_pere_rech = "code_pays_iso_rech";
	}
	else
	{
		code_pere = "id_reg";
		id_fils = "id_sta";
		id_fils_rech = "id_sta_rech";
		id_pere_rech = "id_reg_rech";
	}
}
else
{
	code_pere = "id_reg";
	id_fils = "id_sta";
	id_fils_rech = "id_sta_rech";
	id_pere_rech = "id_reg_rech";
}
function changer_station(champ, value)
{
    champ.value = value;
}

function changer_date(value,champ_hidden_debut,champ_hidden_fin)
{
	tab_date = value.split("/");
	if (tab_date.length==2)
	{
		champ_hidden_debut.value = tab_date[0];
		champ_hidden_fin.value = tab_date[1];
	}
}
function region_est_dedans(tab_region,id_region)
{
	for (f=0;f<tab_region.length;f++)
	{
		if (tab_region[f][1] == id_region) { return(true); }
	}
	return(false);
}
function changer_region(frm,id_site)
{

		var elements = document.getElementsByTagName("select");
	//===============================================
	cpt_reg = 0; //compteur region et statio
	treg = new Array();
	ts = new Array();
	r = st = 0; //indice du tableau sortant
	for (s=0;s < elements.length; s++)
	{
		if (elements[s].name.indexOf(code_pere) != -1)
		{
			cpt_reg++;
			if (cpt_reg!=0)
			{
				id_reg = elements[s][elements[s].selectedIndex].value;
				if ((id_reg != ""))
				{
					treg[r] = new Array(s,id_reg);
					r++;
				}
			}
		}
		if ((elements[s].name.indexOf(id_fils)!=-1)&&(elements[s].name.indexOf('depart')==-1)) //Ruse pour ne pas modifier le select des villes de départ
		{
			ts[st] = new Array(s,"");
			if(elements[s].length !=0)
			{
				id_sta = elements[s][elements[s].selectedIndex].value;
				if (id_sta == "") { id_sta = "no"; }
				ts[st][1] = id_sta;
			}
			st++;
		}
	}
	trf = new Array();
	p = 0;
	for (i=0;i < treg.length;i++)
	{
		if (!region_est_dedans(trf,treg[i][1]))
		{
			trf[p] = new Array(treg[i][0],treg[i][1]);
			p++;
		}
	}
	ch = "";
	for (i=0;i < treg.length;i++)
	{
		ch = ch +treg[i][0] + " => "+treg[i][1] + "\n";
	}
	if (trf.length == 0)
	{
		trf[0] = new Array(1,0); //utilisation du tableau region 0
	}
	for (f=0;f < ts.length; f++)
	{
		elements[ts[f][0]].options.length = 0; //raz du select
		for (g=0;g < trf.length; g++)
		{
			eval("tab = s"+id_site+"_tr"+trf[g][1]);
			z=elements[ts[f][0]].length; //init de la pos du select station
			for (i=0;i < tab.length; i++)
			{
				/*
				if (i==0)
				{
					optGroup = document.createElement('optgroup');
					optGroup.label = tab[i][1];
					frm.elements[ts[f][0]].appendChild(optGroup);
				}
				else
				{
				*/
					elements[ts[f][0]].options[z] = new Option(tab[i][1],tab[i][0]);
					z++;
				/*
				}
				*/
			}
		}
	}
}

function getParent(element, parentTagName)
{
	if ( ! element )
		return null;
	else if ( element.nodeType == 1 && element.tagName.toLowerCase() == parentTagName.toLowerCase() )
		return element;
	else
		return getParent(element.parentNode, parentTagName);
}

/**
* Ajout d'une ligne de formulaire, 
* link représente le lien <a> sur lequel l'utilisateur a cliqué.
* Cette fonction clone le bloc div entourant le <a> et le <select>.
* Le select doit avoir un nom sous la forme 
*	id_reg_<id_site>-<n°> id_sta_<id_site>-<n°> id_for_<id_site>-<n°> id_cri_<id_site>-<n°>
*/
function addLigne(link)
{
	var div = link.parentNode;
	var form = div.parentNode;
	var newDiv = div.cloneNode(true);
	form.insertBefore(newDiv,div.nextSibling);
	newDiv.style.display = "block"; 
	links = newDiv.getElementsByTagName('a');
	links[1].style.display = "inline"; 
	links[0].style.display = "none"; 
	select = newDiv.getElementsByTagName('select');
	tmpId = div.getElementsByTagName('select');
	tmpIdarr = tmpId[0].id.split('-');
	if (tab_ligne[tmpIdarr[0]] == null)
	{
		tab_ligne[tmpIdarr[0]] = Array();
		tab_ligne[tmpIdarr[0]][tab_ligne[tmpIdarr[0]].length] = tmpIdarr[tmpIdarr.length-1];
	}	
	tmpId = tab_ligne[tmpIdarr[0]][tab_ligne[tmpIdarr[0]].length-1];
	tmpId++;
	tab_ligne[tmpIdarr[0]][tab_ligne[tmpIdarr[0]].length] = tmpId;
	select[0].id = tmpIdarr[0]+"-"+tmpId;
}
function delLigne(link,nom,id_site)
{
	var div = link.parentNode;
	select = div.getElementsByTagName('select');
	if (select[0].name==code_pere+"[]") 
	{
		changer_region(nom,id_site); 
	}
	var form = div.parentNode;
	form.removeChild(div);
}
function selectOption(objSelect,value)
{
	var i=0;
	for (i=0;i<objSelect.options.length;i++)
	{
		if (objSelect.options[i].value == value)
		{
			objSelect.options[i].selected = true;
			break;
		}
	}
}
function valid_form(frm)
{
	id_frm = frm.name.split('_');
	if (id_frm.length > 1)
	{
		id_frm = '_'+id_frm[id_frm.length-1];
	}
	else
	{
		id_frm = '';
	}
	exp = /centre$/g ;
	exp2 = /express$/g ;
	if (document.getElementById('lesdates'+id_frm) != null)
	{
		if (document.getElementById('lesdates'+id_frm).value == "") 
		{ 
			alert(wrd_erreur_date); 
			document.getElementById('lesdates'+id_frm).focus();
			return(false); 
		} 
	}
	return (true);
}
function soumettre_form(frm)
{
	if (valid_form(frm))
	{
		frm.submit();
	}
	else
	{
		return (false);
	}
}
function show_hide_site(id_site)
{
	// On cache les autres div
	for (site in tab_site)
	{
		if (id_site != site)
		{
			document.getElementById(tab_site[site]).style.display="none";
			document.getElementById('o_'+site).className="";
		}
	}
	// On affiche la langue passée en paramètre
	document.getElementById(tab_site[id_site]).style.display="block";
	document.getElementById('o_'+id_site).className="on";
}
function select_moteur(id_site)
{
	forms = document.getElementsByTagName('form');
	for (i=0;i<forms.length;i++)
	{
		if ((forms[i].name.indexOf('recherche_') != -1)&&(forms[i].name.indexOf('express')==-1)&&(forms[i].name.indexOf('centre')==-1))
		{
			id_site_en_cours = forms[i].name.split('_');
			id_site_en_cours = id_site_en_cours[id_site_en_cours.length-1];
			if (forms[i].name.indexOf('recherche_'+id_site) != -1)
			{
				forms[i].style.display = 'block';
				document.getElementById('o_'+id_site_en_cours).className="on";
			}
			else
			{
				forms[i].style.display = 'none';
				document.getElementById('o_'+id_site_en_cours).className="";
			}
		}
	}
}
//AJAX
function rechercher(chaine)
{
	document.getElementById("expressresult").style.display="block";
	if(chaine != '')
	{
		document.getElementById("expressresult").style.display="block";
		document.getElementById("expressresult").style.visibility="visible";
		if(chaine.length<2)
		{
			writediv('<a class="expressresult" href="#" onclick="javascript:document.getElementById(\'rech\').value=\'\';document.getElementById(\''+id_fils_rech+'\').value=\'\';document.getElementById(\'rech\').value=\'0\';document.getElementById(\'expressresult\').style.display=\'none\';return (false);">.: Fermer :.<\/a><ul class="expressresult"><li class="expressresult"><b>'+chaine+' :<\/b> le texte recherché est trop court<\/li><\/ul>');

		}
		else if (texte = file(url_site + 'scripts/ajax_destination_express.php?chaine='+escape(chaine)))
		{
			if (texte != 0)
			{
				
				var update = new Array();
				if(texte.indexOf('|' != -1))
				{
					update = texte.split('|');
				}
				var msg = "<a class=\"expressresult\" href=\"#\" onclick=\"javascript:document.getElementById('rech').value='';document.getElementById('"+id_fils_rech+"').value='';document.getElementById('expressresult').style.display='none';return (false);\">.: Fermer :.<\/a>";
				msg += "<ul class=\"expressresult\">";
				var region = "";
				var finUl = "";
				for (i=0;i < update.length;i++)
				{
					var val = update[i].split('#');
					if (region != val[3])
					{
						region = val[3];
//						msg += finUl + "<li><b><a href=\"#\" onclick=\"javascript:document.getElementById('expressresult').style.display='none';document.getElementById('rech').value='"+val[3]+"';document.getElementById('"+id_pere_rech+"').value='"+val[2]+"';document.getElementById('"+id_fils_rech+"').value='0';return (false);\">"+val[3]+"<\/a><\/b><ul>";
						msg += finUl + "<li><b>"+val[3]+"<\/b><ul>";
						finUl = "<\/li><\/ul>";
					}
					if (val[0] != '0')
					{
						var reg=new RegExp("("+chaine+")", "gi");
						msg += "<li class=\"expressresult\">";
						msg += "<a class=\"expressresult\" href=\"#\" onclick=\"javascript:document.getElementById('expressresult').style.display='none';document.getElementById('rech').value='"+val[1]+"';document.getElementById('"+id_fils_rech+"').value='"+val[0]+"';document.getElementById('"+id_pere_rech+"').value='0';return (false);\">";
						msg += val[1].replace(reg,"<span class=\"txtrougesouligne\">$1<\/span>");
						msg += "<\/a><\/li>";
					}
				}
				msg += "<\/ul>";
				writediv(msg);
			}
			else
			{
				writediv('<a class=\"expressresult\" href=\"#\" onclick=\"javascript:document.getElementById(\'rech\').value=\'\';document.getElementById(\''+id_fils_rech+'\').value=\'\';document.getElementById(\'expressresult\').style.display=\'none\'\">.: Fermer :.<\/a><ul class=\"expressresult\"><li class=\"expressresult\"><b>'+chaine+' :<\/b> Aucun résultat<\/li><\/ul>');
			}
		}
	}
	else
	{
		document.getElementById('rech').value = '';
		document.getElementById(id_fils_rech).value = '';
		document.getElementById("expressresult").style.display="none";
		document.getElementById("expressresult").style.visibility="hidden";
	}
	function writediv(texte)
	{
		document.getElementById('expressresult').innerHTML = texte;
	}
	function file(fichier)
	{
		if(window.XMLHttpRequest) // FIREFOX
		xhr_object = new XMLHttpRequest();
		else if(window.ActiveXObject) // IE
		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
		else
		return(false);
		xhr_object.open("GET", fichier, false);
		xhr_object.send(null);
		if(xhr_object.readyState == 4) return(xhr_object.responseText);
		else return(false);
	}
}		
//FIN AJAX


function submitRecherche(){
	var region = searchElement('id_reg','select');
	var station = searchElement('id_sta','select');
	var formule = searchElement('id_for','select');
	var offre = searchElement('id_cri_ofr','select');
	var dateDebut = document.getElementById('ladate_1');
	var dateFin = document.getElementById('date_fin_1');

	var nbr = searchElement('nb','select');
	var url = "http://www.location-vacances-express.com/scripts/comparaison.php?moteur_req_int=deporte&http_referrer=www.meteocity.com";
	url = url + "&id_reg[]=" + region.value + "&id_sta[]=" + station.value + "&id_for[]=" + formule.value + "&id_cri_ofr[]=" + offre.value;
    url = url + "&lesdates=" + dateDebut.value + "%2F" + dateFin.value + "&ladate=" + dateDebut.value + "&date_fin=" + dateFin.value + "&nb_max_log=" + nbr.value;

	window.open(url);
}