
/************************************************************************************/
/*		Ce fichier gère les interactions avec AJAX
/************************************************************************************/



/*****************************************************************************
/*	Fonction générique permettant de communiquer avec AJAX
/*		url : fichier que Ajax va appeler
/*		methode : 'post' ou 'get'
/*		params : les parametres à envoyer ('p1=v1&p2=v2' par exemple)
/*		type_reponse : à 'xml' si on veut un résultat xml, autre chose sinon
/*		fct_oncomplete : fonction a appelé quand ajax recoit le résultat
*/

	function sendToAjax(url, methode, params, type_reponse, fct_oncomplete){
		
		if( type_reponse.toLowerCase() == 'xml' ){
			var myAjax = new Request({url:url,method:methode,onComplete:fct_oncomplete}).send(params);
			
		}
		else{
			
			/*
			var myAjax = new Request(
						'div_pour_ajax',
						url, 
						{method: methode, parameters: params, onSuccess: }
			);
			*/
			
		}

		//myRequest = new Request({method: 'get', url: 'http://site.com/requestHandler.php'}).send('name=john&lastname=dorian');


		/*
		if( type_reponse.toLowerCase() == 'xml' ){
			var myAjax = new Ajax.Request(
						url, 
						{method: methode, parameters: params, onComplete: fct_oncomplete}
			);
		}
		else{
			var myAjax = new Ajax.Updater(
						'div_pour_ajax',
						url, 
						{method: methode, parameters: params, onComplete: fct_oncomplete}
			);
		}
		*/
	}



/*****************************************************************************
/*	Retourne la valeur du premier noeud xml du tableau  t_elts
/*	Renvoie '' si il ya qlqch qui cloche
*/

	function getNodeValue(t_elts){

		if(t_elts.length > 0 && t_elts[0].hasChildNodes() && t_elts[0].firstChild.nodeValue != '')
			return t_elts[0].firstChild.nodeValue;

		return '';
	}




/*****************************************************************************
/*	Appelée pour mettre à jour un SELECT, après une requête Ajax
/*	Le XML récupéré doit être du genre:
/*		<donnees>
/*			<select>id_du_select</select>
/*			<selected_value>valeur_a_selectionner</selected_value>
/*			<mess1>message1</mess1>
/*			<mess2>message2</mess2>
/*			<options>
/*				<option>
/*					<value>valeur1</value>
/*					<text>texte1</text>
/*				</option>
/*				...
/*			</options>
/*		</donnees>
*/

	function remplirSelectWithAjax(obj,xml){
		
		//alert("icif"+getNodeValue(xml.getElementsByTagName('select')));
		remplirSelectWithXML(
			getNodeValue(xml.getElementsByTagName('select')),
			getNodeValue(xml.getElementsByTagName('selected_value')),
			getNodeValue(xml.getElementsByTagName('mess1')),
			getNodeValue(xml.getElementsByTagName('mess2')),
			xml
		);
	}

	function remplirSelectWithAjaxVilleAthome(obj,xml){
		
		//alert("icif"+getNodeValue(xml.getElementsByTagName('select')));
		document.getElementById('bloc_ville_athome').style.display='none';
		remplirSelectWithXML(
			getNodeValue(xml.getElementsByTagName('select')),
			getNodeValue(xml.getElementsByTagName('selected_value')),
			getNodeValue(xml.getElementsByTagName('mess1')),
			getNodeValue(xml.getElementsByTagName('mess2')),
			xml
		);
		document.getElementById('ville_athome_loader').style.display='none';
		document.getElementById('bloc_ville_athome').style.display='';
	}


//	Cette fonction remplit des éléments SELECT
//	Le fichier XML récupéré doit être du type:
//		<options>	--> noeud root
//			<option>
//				<value>valeur1</value>
//				<text>texte1</text>
//			</option>
//			...
//		</options>
//
//		id_select : ID de l'element SELECT à remplir
//		selected_value : valeur de l'option à sélectionner
//		mess1 : message affiché en position 0 s'il y a au moins 1 résultat
//		mess2 : message affiché en position 0 s'il n'y a aucun résultat
function remplirSelectWithXML(id_select, selected_value, mess1, mess2, xml){


	var t_option = xml.getElementsByTagName('option');
	var oSelect = $(id_select);
	var elt, stop, i;

	
	//	Je vide ma liste
	stop = oSelect.options.length;
	for(i=0; i<stop; i++)
		oSelect.options[0] = null;

	
	//	Insertion d'un texte "d'accueil"
	elt = document.createElement('option');
	elt.text = (t_option.length==0 ? mess2 : mess1);
	elt.value = '';
	elt.selected = true;
	oSelect.options[0] = elt;

	//	Je remplis la liste si je peux
	if( t_option.length != 0 ){
		
		i = 1;	//	compteur dans l'élément SELECT: à 0 j'ai le texte d'accueil donc je commence à 1.
		while( i <= t_option.length ){
			elt = document.createElement('option');
			elt.text  = getNodeValue(t_option[i-1].getElementsByTagName('text')).replace(/&euro;/, '€');
			elt.value = getNodeValue(t_option[i-1].getElementsByTagName('value'));
			if( elt.value == selected_value )
				elt.selected = true;

			oSelect.options[i] = elt;
			i++;
		}
	}
}

/*******************************
/* 5.30 Fonction qui coche les checkbox selon le profil utilisateur selectionné
*******************************/

function cocheCheckboxProfil(responseTxt,responseXML){

	var xml = responseXML;
	document.getElementById('tableau_checkbox').innerHTML = responseTxt;
	
	return true;
}

/*****************************************************************************
/*	Appellée suite à une requête Ajax, cette fonction permet de remplir automatiquement des champs HTML.
/*	En effet, si le fichier xml est construit de la manière suivante:
/*			<infos>  --> infos est le noeud root
/*				<champ1>valeur</champ1>
/*				<champ2>valeur</champ2>
/*			</infos>
/*	nous allons parcourir tous les ss-noeuds de infos, dont les tagname sont le nom des champs
*/

	function remplirChampsWithAjax(responseTxt,responseXML){
	
		var xml = responseXML;
		var root = xml.getElementsByTagName('infos');
		
		if( root.length > 0 ){
			var t_enfants = root[0].childNodes, i = 0, valeur;
			while( i < t_enfants.length ){
				if( t_enfants[i].hasChildNodes() )
					valeur = t_enfants[i].firstChild.nodeValue.replace(/&euro;/, '€');
				else
					valeur = '';

				//alert(t_enfants[i].nodeName);
				if( document.getElementsByName(t_enfants[i].nodeName).length > 0  &&  document.getElementsByName(t_enfants[i].nodeName)[0] )
					document.getElementsByName(t_enfants[i].nodeName)[0].value = valeur;
				i++;
			}

			//	Je regarde su j'ai un attribut impliquant une action spéciale
			if( root[0].getAttribute('action') != null ){
			}		
		}
	}
	
	/*function retourneMessageSession(responseTxt,responseXML)
	{
		alert(responseXML);
	}*/

	var loaderName;
	var validForm=true;
	var messageToDisplay;

	function retourneMessage(responseTxt,responseXML)
	{
		var xml = responseXML;
		var root = xml.getElementsByTagName('infos');
		var t_enfants = root[0].childNodes, i = 0, valeur;
		if( t_enfants[i].hasChildNodes() )
			valeur = t_enfants[i].firstChild.nodeValue.replace(/&euro;/, '€');
		else
			valeur = '';

		if(valeur=='1'){
			alert('Référence déjà éxistante !');
			validForm=false;
			uniqReference = false;
		}else {
			validForm=true;
			uniqReference = true;
		}
		document.getElementById(loaderName).style.display='none';
	}

	var uniqProject;
	function retourneUniqProject(responseTxt,responseXML)
	{
		
		var xml = responseXML;
		var root = xml.getElementsByTagName('infos');
		var t_enfants = root[0].childNodes, i = 0, valeur;
		if( t_enfants[i].hasChildNodes() )
			valeur = t_enfants[i].firstChild.nodeValue.replace(/&euro;/, '€');
		else
			valeur = '';

		if(valeur=='1'){
			alert(messageToDisplay);
			validForm=false;
			uniqProject = false;
		}else {
			validForm=true;
			uniqProject = true;
		}
		messageToDisplay = '';
		document.getElementById(loaderName).style.display='none';
	}
	var name_bloc_doublon='';
	//5.23
	// Recherche de correspondance sur le numéro de téléphone
	function retourneMessageClient(responseTxt,responseXML)
	{
		
		if(name_bloc_doublon =='')
			name_bloc = '';
		else
			name_bloc = name_bloc_doublon;
		var client_existant = document.getElementById('client_existant'+name_bloc);
		var client_equivalent = document.getElementById('client_equivalent'+name_bloc);
		var title_client_equivalent = document.getElementById('title_client_equivalent'+name_bloc);

		if(responseTxt!=='0')
		{
			title_client_equivalent.innerHTML = "Client(s) poss&eacute;dant d&eacute;j&acirc; ce num&eacute;ro :";
			client_equivalent.innerHTML=responseTxt;
			client_existant.style.display = '';
			if(typeof(submit_ok)!='undefined'){
					submit_ok = false;
			}
		}
		else
		{
			title_client_equivalent.innerHTML = "Client(s) poss&eacute;dant d&eacute;j&acirc; ce num&eacute;ro :";
			client_existant.style.display = 'none';
			client_equivalent.innerHTML='';
			
			if(typeof(submit_ok)!='undefined'){
				submit_ok = true;					
			}
		
		}
		
		document.getElementById(loaderName).style.visibility='hidden';
		name_bloc_doublon = '';
	}
	var doublon_client=false;
	function retourneDoublon(responseTxt,responseXML)
	{
		//alert(responseTxt);
		if(responseTxt!=='0' && responseTxt!=='')
		{
			doublon_client=true;
			document.getElementById('clients_doublon_bloc').innerHTML = responseTxt;
			afficheDivAction(true,'bloc_clients_doublons');
			
		}
		else
		{
			doublon_client=false;
			document.forms['form_client'].submit();
		}	
	}

	function retourneDoublonFromBien(responseTxt,responseXML)
	{
		if(responseTxt!=='0')
		{
			submit_ok=false;			
		}
		else
		{
			submit_ok=true;	
			//verifFormAddClient();
			
		}	
	}




function refreshWindow(){
	window.location.reload(true);
}

function reloadPhotos(id,pige){
			
		document.getElementById('bloc_photos_ajax').innerHTML += '<center style="padding-top:50px;padding-bottom:50px;"><img src="images/rappro_loader.gif" alt="Chargement"/><br/>Chargement des photos en cours ...</center>';
		if(!pige)
			sendToAjax('ajax_requetes.php', 'post', 'action=reload_photos&id='+id+"&page_actu="+url_page_actu, 'xml', rechargePhotos);
		else
			sendToAjax('ajax_requetes.php', 'post', 'action=reload_photos&id='+id+'&pige=1'+"&page_actu="+url_page_actu, 'xml', rechargePhotos);
}


function rechargePhotos(responseTxt,responseXML){
	if(typeof(responseTxt)!='undefined'){
		document.getElementById('bloc_photos_ajax').innerHTML = responseTxt;
		Slimbox.scanPage();
	}
	
}
