// + --------------------------------------------------------------------------------------
// + XHRConnection
// + V1.3
// + Thanh Nguyen, http://www.sutekidane.net
// + 20.10.2005
// + http://creativecommons.org/licenses/by-nc-sa/2.0/fr/deed.fr
// + --------------------------------------------------------------------------------------
function XHRConnection() {
	
	// + ----------------------------------------------------------------------------------
	var conn = false;
	var debug = false;
	var datas = new String();
	var areaId = new String();
	// Objet XML
	var xmlObj;
	// Type de comportement au chargement du XML
	var xmlLoad;
	
	// + ----------------------------------------------------------------------------------
	try {
		conn = new XMLHttpRequest();		
	}
	catch (error) {
		if (debug) { alert('Erreur lors de la tentative de création de l\'objet \nnew XMLHttpRequest()\n\n' + error); }
		try {
			conn = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch (error) {
			if (debug) { alert('Erreur lors de la tentative de création de l\'objet \nnew ActiveXObject("Microsoft.XMLHTTP")\n\n' + error); }
			try {
				conn = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch (error) {
				if (debug) { alert('Erreur lors de la tentative de création de l\'objet \nnew ActiveXObject("Msxml2.XMLHTTP")\n\n' + error); }
				conn = false;
			}
		}
	}

	// + ----------------------------------------------------------------------------------
	// + setDebugOff
	// + Désactive l'affichage des exceptions
	// + ----------------------------------------------------------------------------------
	this.setDebugOff = function() {
		debug = false;
	};

	// + ----------------------------------------------------------------------------------
	// + setDebugOn
	// + Active l'affichage des exceptions
	// + ----------------------------------------------------------------------------------
	this.setDebugOn = function() {
		debug = true;
	};
	
	// + ----------------------------------------------------------------------------------
	// + resetData
	// + Permet de vider la pile des données
	// + ----------------------------------------------------------------------------------
	this.resetData = function() {
		datas = new String();
		datas = '';
	};
	
	// + ----------------------------------------------------------------------------------
	// + appendData
	// + Permet d'empiler des données afin de les envoyer
	// + ----------------------------------------------------------------------------------
	this.appendData = function(pfield, pvalue) {
		datas += (datas.length == 0) ? pfield+ "=" + escape(pvalue) : "&" + pfield + "=" + escape(pvalue);
	};
	
	// + ----------------------------------------------------------------------------------
	// + setRefreshArea
	// + Indique quel elment identifié par id est valoris lorsque l'objet XHR reoit une réponse
	// + ----------------------------------------------------------------------------------
	this.setRefreshArea = function(id) {
		areaId = id;
	};
	
	// + ----------------------------------------------------------------------------------
	// + createXMLObject
	// + Méthode permettant de créer un objet DOM, retourne la réfrence
	// + Inspiré de: http://www.quirksmode.org/dom/importxml.html
	// + ----------------------------------------------------------------------------------
	this.createXMLObject = function() {
		try {
			 	xmlDoc = document.implementation.createDocument("", "", null);
				xmlLoad = 'onload';
		}
		catch (error) {
			try {
				xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
				xmlLoad = 'onreadystatechange ';
			}
			catch (error) {
				if (debug) { alert('Erreur lors de la tentative de création de l\'objet XML\n\n'); }
				return false;
			}
		}
		return xmlDoc;
	}
	
	// + ----------------------------------------------------------------------------------
	// + Permet de définir l'objet XML qui doit être valorisé lorsque l'objet XHR reoit une réponse
	// + ----------------------------------------------------------------------------------
	this.setXMLObject = function(obj) {
		if (obj == undefined) {
				if (debug) { alert('Paramètre manquant lors de l\'appel de la méthode setXMLObject'); }
				return false;
		}
		try {
			//xmlObj = this.createXMLObject();
			xmlObj = obj;
		}
		catch (error) {
				if (debug) { alert('Erreur lors de l\'affectation de l\'objet XML dans la méthode setXMLObject'); }
		}
	}
	
	// + ----------------------------------------------------------------------------------
	// + loadXML
	// + Charge un fichier XML
	// + Entrées
	// + 	xml			String		Le fichier XML à charger
	// + ----------------------------------------------------------------------------------
	this.loadXML = function(xml, callBack) {
		if (!conn) return false;
		// Chargement pour alimenter un objet DOM
		if (xmlObj && xml) {
			if (typeof callBack == "function") {
				if (xmlLoad == 'onload') {
					xmlObj.onload = function() {
						callBack(xmlObj);
					}
				}
				else {
					xmlObj.onreadystatechange = function() {
						if (xmlObj.readyState == 4) callBack(xmlObj)
					}
				}
			}
			xmlObj.load(xml);
			return;
		}		
	}

	// + ----------------------------------------------------------------------------------
	// + sendAndLoad
	// + Connexion à la page désirée avec envoie des données, puis mise en attente de la réponse
	// + Entrées
	// + 	Url			String		L'url de la page à laquelle l'objet doit se connecter
	// + 	httpMode		String		La méthode de communication HTTP : GET, HEAD ou POST
	// + 	callBack		Objet		Le nom de la fonction de callback
	// + ----------------------------------------------------------------------------------
	this.sendAndLoad = function(Url, httpMode, callBack) {
		httpMode = httpMode.toUpperCase();
		conn.onreadystatechange = function() {
			if (conn.readyState == 4 && conn.status == 200) {
				// Si une fonction de callBack a été définie
				if (typeof callBack == "function") {
					callBack(conn);
					return;
				}
				// Si une zone destinée à récupérer le résultat a été définie
				else if (areaId.length > 0){
					try {
						document.getElementById(areaId).innerHTML = conn.responseText;
					}
					catch(error) {
						if (debug) { alert('Echec, ' + areaId + ' n\'est pas un objet valide'); }
					}
					return;
				}
			}
		};
		switch(httpMode) {
			case "GET":
				try {
					Url = (datas.length > 0) ? Url + "?" + datas : Url;
					conn.open("GET", Url);
					conn.send(null);
				}
				catch(error) {
					if (debug) { alert('Echec lors de la transaction avec ' + Url + ' via la méthode GET'); }
					return false;
				}
			break;
			case "POST":
				try {
					conn.open("POST", Url); 
					conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
					conn.send(datas);
				}
				catch(error) {
					if (debug) { alert('Echec lors de la transaction avec ' + Url + ' via la mthode POST'); }
					return false;
				}
			break;
			default :
				return false;
			break;
		}
		return true;
	};
	return this;
}


function change_bloc(page, value) {
	var XHR = new XHRConnection();
	XHR.setRefreshArea('content-bloc1');
	XHR.sendAndLoad("content_bloc.php?p=" + page + "&value=" + value, "GET");
	
	var XHR2 = new XHRConnection();
	XHR2.setRefreshArea('content-nav');
	XHR2.sendAndLoad("content_nav.php?p=" + page + "&value=" + value, "GET");

	return true;
}

function change_bloc_actus(value) {
	var XHR = new XHRConnection();
	XHR.setRefreshArea('content-bloc1');
	XHR.sendAndLoad("content_bloc_actus.php?value=" + value, "GET");
	
	var XHR2 = new XHRConnection();
	XHR2.setRefreshArea('content-nav');
	XHR2.sendAndLoad("content_nav_actus.php?value=" + value, "GET");

	return true;
}

function change_bloc_temoignages(value, order) {
	var XHR = new XHRConnection();
	XHR.setRefreshArea('content-bloc1');
	XHR.sendAndLoad("content_bloc_temoignages.php?value=" + value + "&order=" + order, "GET");
	
	var XHR2 = new XHRConnection();
	XHR2.setRefreshArea('content-nav');
	XHR2.sendAndLoad("content_nav_temoignages.php?value=" + value + "&order=" + order, "GET");

	return true;
}


//////////////////////////////////////////
//////////////////////////////////////////

function creeZoneIntervention(id, token) {
	i_zone++;
	
	var XHR = new XHRConnection();
	XHR.setRefreshArea('zone-intervention' + id);
	XHR.sendAndLoad("ajax/getZoneIntervention.php?id=" + id + "&token=" + token, "GET");
	
	document.getElementById('zone-intervention' + id).className = 'displayed_div';

	return true;
}

function nextZoneIntervention(id) {
	
	if(document.getElementById('code_postal' + id).value != '' && document.getElementById('rayon' + id).value != '' && document.getElementById('rayon' + id).value >= 1) {	
		if(document.getElementById('agrement_cp' + id).value == '') {
			getZoneResultatsAll(id, document.getElementById('code_postal' + id).value, document.getElementById('rayon' + id).value);
			document.getElementById('zone-intervention-resultat-txt-agrement').className = "hidden_div";
			document.getElementById('zone-intervention-resultat-txt-all').className = "displayed_div";
		}
		else {
			getZoneResultatsAgrement(id, document.getElementById('code_postal' + id).value, document.getElementById('rayon' + id).value);
			document.getElementById('zone-intervention-resultat-txt-agrement').className = "displayed_div";
			document.getElementById('zone-intervention-resultat-txt-all').className = "hidden_div";
		}
	}
	else {
		alert("Vous n'avez pas rempli tous les champs.");
	}
}

function ajouterZoneIntervention(id, token) {
	if(document.getElementById('code_postal' + id).value != '' && document.getElementById('rayon' + id).value != '' && document.getElementById('rayon' + id).value >= 1) {	
		if(document.getElementById('agrement_cp' + id).value == '') {
			addZoneAll(id, document.getElementById('code_postal' + id).value, document.getElementById('rayon' + id).value, token);
		}
		else {
			addZoneAgrement(id, document.getElementById('code_postal' + id).value, document.getElementById('rayon' + id).value, token);
		}
	}
	else {
		alert("Vous n'avez pas rempli tous les champs.");
	}
	
	var XHR2 = new XHRConnection();	
	XHR2.setRefreshArea('zones-intervention-liste');
	XHR2.sendAndLoad("ajax/refreshzones.php?token=" + token, "GET");
	
	setTimeout("reload_p()", 700);
}

function reload_p() {
	window.location.reload();	
}


function getZoneResultatsAll(id, cp, rayon) {
	var XHR = new XHRConnection();
	XHR.setRefreshArea('zone-intervention-resultat' + id);
	XHR.sendAndLoad("ajax/getZoneResultatsAll.php?id=" + id + "&cp=" + cp + "&rayon=" + rayon, "GET");
	
	document.getElementById('zone-intervention-suite' + id).className = 'displayed_div';

	return true;
}

function getZoneResultatsAgrement(id, cp, rayon) {
	var XHR = new XHRConnection();
	XHR.setRefreshArea('zone-intervention-resultat' + id);
	XHR.appendData("agrement_cp" + id, document.getElementById('agrement_cp' + id).value);
	XHR.sendAndLoad("ajax/getZoneResultatsAgrement.php?id=" + id + "&cp=" + cp + "&rayon=" + rayon, "POST");
	
	document.getElementById('zone-intervention-suite' + id).className = 'displayed_div';

	return true;
}

function addZoneAll(id, cp, rayon, token) {
	var XHR = new XHRConnection();
	XHR.setRefreshArea('zone-intervention' + id);
	XHR.appendData("retirer_cp" + id, document.getElementById('retirer_cp' + id).value);
	XHR.appendData("ajouter_cp" + id, document.getElementById('ajouter_cp' + id).value);
	XHR.sendAndLoad("ajax/getAddZoneAll.php?id=" + id + "&cp=" + cp + "&rayon=" + rayon + "&token=" + token, "POST");
	
	return true;
}

function addZoneAgrement(id, cp, rayon, token) {	
	var XHR = new XHRConnection();	
	XHR.setRefreshArea('zone-intervention' + id);
	XHR.appendData("retirer_cp" + id, document.getElementById('retirer_cp' + id).value);
	XHR.appendData("ajouter_cp" + id, document.getElementById('ajouter_cp' + id).value);
	XHR.appendData("agrement_cp" + id, document.getElementById('agrement_cp' + id).value);
	XHR.sendAndLoad("ajax/getAddZoneAgrement.php?id=" + id + "&cp=" + cp + "&rayon=" + rayon + "&token=" + token, "POST");
	
	return true;
}

function supprimerZone(id, token) {
	if(confirm("Etes-vous certain(e) de vouloir supprimer cette zone d'intervention ?")) {
	   //document.getElementById('zone' + id).className = "hidden_div";
	   
	   var XHR = new XHRConnection();	
	   XHR.sendAndLoad("ajax/delzone.php?id=" + id, "GET");
	   
	   setTimeout("reload_p()", 500);
	}
	
	
	return true;
}


function supprimerIntervenant(id, token) {
	if(confirm("Etes-vous certain(e) de vouloir supprimer cet intervenant ?")) {
	   document.getElementById('intervenant' + id).className = "hidden_div";
	   
	   var XHR = new XHRConnection();	
	   XHR.sendAndLoad("ajax/delintervenant.php?id=" + id, "GET");
	}
	
	return true;
}


//////////////////////////////////////////
//////////////////////////////////////////


function changePageMandant(value) {
	
	var page = 1;
	
	if(value == 1) page = 1;
	if(value == 2) page = 2;
	if(value == 3) page = 3;
	if(value == 4) page = 5;
	if(value == 5) page = 6;
	if(value == 6) page = 8;
	if(value == 7) page = 10;	
	
	window.location.replace('compte_prestataire_infos' + page + '.php');
}

function getPlanning_noRepeat(token_devis) {
	
	document.getElementById('planning').style.display = 'block';
	document.getElementById('planning').style.zIndex = 9999999;


	
	var XHR = new XHRConnection();
	XHR.setRefreshArea('planning');
	XHR.sendAndLoad("calendar.php?page=clientnorepeat&token=" + token_devis, "GET");
	
	
	tb_show('', '', '');	
}

function getPlanning_Repeat(token_devis) {
	
	document.getElementById('planning').style.display = 'block';
	document.getElementById('planning').style.zIndex = 9999999;


	
	var XHR = new XHRConnection();
	XHR.setRefreshArea('planning');
	XHR.sendAndLoad("calendar.php?page=clientrepeat&token=" + token_devis, "GET");
	
	
	tb_show('', '', '');		
}



//////////////// EDITION ///////////////////////
function getPlanning_noRepeat_edit(id) {
	
	tb_show('', '', '');	
	
	document.getElementById('planning').style.display = 'block';
	document.getElementById('planning').style.zIndex = 9999999;

	
	var XHR = new XHRConnection();
	XHR.setRefreshArea('planning');
	XHR.sendAndLoad("calendar_edit.php?page=clientnorepeat&id=" + id + "&reset=true", "GET");
	
	
		
}


// Récurrente
function getPlanning_Repeat_edit(id) {
	
	document.getElementById('planning').style.display = 'block';
	document.getElementById('planning').style.zIndex = 9999999;

	
	var XHR = new XHRConnection();
	XHR.setRefreshArea('planning');
	XHR.sendAndLoad("calendar_edit.php?page=clientrepeat&id=" + id, "GET");
	
	
	tb_show('', '', '');		
}


function timetable_edit_change(id, calendrier) {
	
	document.getElementById('planning').style.display = 'block';
	document.getElementById('planning').style.zIndex = 9999999;

	
	var XHR = new XHRConnection();
	XHR.setRefreshArea('planning');
	
	if(calendrier == "customerrepeat") XHR.sendAndLoad("calendar_edit.php?page=clientrepeat&id=" + id, "GET");
	else if(calendrier == "customernorepeat") XHR.sendAndLoad("calendar_edit.php?page=clientnorepeat&id=" + id, "GET");
	
	
	tb_show('', '', '');		
}


function timetable_edit_reload(id) {
	
	document.getElementById('planning').style.display = 'block';
	document.getElementById('planning').style.zIndex = 9999999;

	
	var XHR = new XHRConnection();
	XHR.setRefreshArea('planning');
	
	XHR.sendAndLoad("calendar_edit.php?page=clientnorepeat&id=" + id + "&reset=false", "GET");
	
	
	tb_show('', '', '');		
}




//////////////// DISPOS ///////////////////////
function getPlanning_noRepeat_dispos(id) {
	
	document.getElementById('planning').style.display = 'block';
	document.getElementById('planning').style.zIndex = 9999999;

	
	var XHR = new XHRConnection();
	XHR.setRefreshArea('planning');
	XHR.sendAndLoad("calendar_dispos.php?page=clientnorepeat&id=" + id, "GET");
	
	
	tb_show('', '', '');		
}

function getPlanning_Repeat_dispos(id) {
	
	document.getElementById('planning').style.display = 'block';
	document.getElementById('planning').style.zIndex = 9999999;

	
	var XHR = new XHRConnection();
	XHR.setRefreshArea('planning');
	XHR.sendAndLoad("calendar_dispos.php?page=clientrepeat&id=" + id, "GET");
	
	
	tb_show('', '', '');		
}

function getPlanning_noRepeat_dispos_fixe(id, nb_intervenants) {
	
	document.getElementById('planning').style.display = 'block';
	document.getElementById('planning').style.zIndex = 9999999;

	
	var XHR = new XHRConnection();
	XHR.setRefreshArea('planning');
	XHR.sendAndLoad("calendar_dispos_fixe.php?page=clientnorepeat&id=" + id + "&nb_intervenants=" + nb_intervenants, "GET");
	
	
	tb_show('', '', '');		
}

function getPlanning_Repeat_dispos_fixe(id, nb_intervenants) {
	
	document.getElementById('planning').style.display = 'block';
	document.getElementById('planning').style.zIndex = 9999999;

	
	var XHR = new XHRConnection();
	XHR.setRefreshArea('planning');
	XHR.sendAndLoad("calendar_dispos_fixe.php?page=clientrepeat&id=" + id + "&nb_intervenants=" + nb_intervenants, "GET");
	
	
	tb_show('', '', '');		
}


function aff_plannings_details(fixe, id_zone) {
	if(fixe == 1) {
		document.getElementById('fixe1_' + id_zone).style.color = '#000000';
		document.getElementById('fixe2_' + id_zone).style.display = 'block';	
		
		document.getElementById('relatif1_' + id_zone).style.color = '#666666';
		document.getElementById('relatif2_' + id_zone).style.display = 'none';
	}
	else if(fixe == 2) {
		document.getElementById('fixe1_' + id_zone).style.color = '#666666';
		document.getElementById('fixe2_' + id_zone).style.display = 'none';	
		
		document.getElementById('relatif1_' + id_zone).style.color = '#000000';
		document.getElementById('relatif2_' + id_zone).style.display = 'block';
	}
}

function planningFixe(id, fixe, id_zone) {
	
	aff_plannings_details(fixe, id_zone);
	
	var XHR = new XHRConnection();
	XHR.sendAndLoad("ajax/type_dispo.php?id="+ id +"&fixe=" + fixe + "&nb_intervenants=" + document.getElementById('nb_ressources_' + id_zone).value, "GET");		
}

////////////////////////////////////////////////////////////////



function timetable_change_freq(type, value) {
	var XHR = new XHRConnection();
	XHR.setRefreshArea('memorize');
	XHR.appendData("value", value);
	XHR.sendAndLoad("ajax/change_freq.php?type=" + type, "POST");
	
	return true;
}


function goToRecurrent(id) {
	if(confirm("Souhaitez vous enregistrer les modifications effectuees sur le planning ?")) {
		timetable_save_dispos_fixe('customernorepeat', '0');
	}
	
	closePlanning();
	getPlanning_Repeat_dispos_fixe(id, 1);	
}

function affdispos(id) {
	popup_id = window.open('http://www.alfredetpoppins.fr/calendar_dispos_fixe_popup.php?page=clientnorepeat&id=' + id, 'Planning', config='height=770, width=530, toolbar=no, menubar=no, scrollbars=no, resizable=yes, location=no, directories=no, status=no');
}

function affcalendrier(id) {
	popup_id = window.open('http://www.alfredetpoppins.fr/calendar_edit_popup.php?id=' + id, 'Calendrier', config='width=600, toolbar=no, menubar=no, scrollbars=no, resizable=yes, location=no, directories=no, status=no');
}

function affmodeemploi() {
	popup_id = window.open('http://www.alfredetpoppins.fr/popup_mode_emploi.php', 'Planning', config='height=250, width=400, toolbar=no, menubar=no, scrollbars=no, resizable=yes, location=no, directories=no, status=no');
}


function timetable_memorize(action, value)
{
	var XHR = new XHRConnection();
	XHR.setRefreshArea('memorize');
	XHR.sendAndLoad('ajax/memorize.php?' + action + '=' + value, "GET");
	
	return true;
}


function closePlanning() {	
	document.getElementById('planning').style.display = 'none';	
	tb_remove();
}


///// PARRAINAGE

function get_promotion_detail(id_token)
{
	var XHR = new XHRConnection();
	XHR.setRefreshArea('promotion_infos');
	XHR.sendAndLoad('ajax/promotion_infos.php?id=' + id_token, "GET");
	
	return true;
}

