/* ******************************************************************************************** */
/* Tableau des champs obligatoires. Il est construit dans le Framework. On lui affecte ci-dessous les valeurs présentes quel que soit le contexte. Toute autre valeur doit être ajouté dans le fichier headers.php du module concerné  */
var champs_obligatoires = new Array('nom','prenom','code_postal','tel','email');
var champs_non_valides = new Array();

var t_Valeurs_Checkbox = new Array();
var t_Valeurs_Radios = new Array();
/* ******************************************************************************************** */

function f_Switch_Image(p_Obj_Img, p_Valeur_Off, p_Valeur_On) {
	//tableau des src
	v_Chemin_Courant = document.getElementById(p_Obj_Img).src;
	t_Chemin_Courant = v_Chemin_Courant.split("/");
	v_Valeur_Courante = t_Chemin_Courant[t_Chemin_Courant.length-1];
	//alert (v_Valeur_Courante);
	var v_Valeur_Sortie;
	var v_Valeur_Return;
	switch (v_Valeur_Courante) {
		case p_Valeur_Off :
			v_Valeur_Sortie = p_Valeur_On;
			v_Valeur_Return = true;
			break;
		case p_Valeur_On :
			v_Valeur_Sortie = p_Valeur_Off;
			v_Valeur_Return = false;
			break;
		default:
			v_Valeur_Sortie = p_Valeur_Off;
			v_Valeur_Return = false;
			break;
	}
	t_Chemin_Courant[t_Chemin_Courant.length-1] = v_Valeur_Sortie;
	//var v_Chemin_Sortie = document.getElementById(p_Obj).src.split(v_Valeur_Courante)[0]+v_Valeur_Sortie;
	var v_Chemin_Sortie = t_Chemin_Courant.join("/");
	document.getElementById(p_Obj_Img).src = v_Chemin_Sortie;
	
	return v_Valeur_Return;
}

// ###################### Gestion CHECKBOX / RADIO #######################

function f_Cocher(p_Obj_Frm, p_Obj_Img, p_Valeur_Off, p_Valeur_On, p_Valeur_Frm) {
	if (f_Switch_Image(p_Obj_Img,p_Valeur_Off,p_Valeur_On)) {
			if (!t_Valeurs_Checkbox[p_Obj_Frm])
				t_Valeurs_Checkbox[p_Obj_Frm] = new Array();
			t_Valeurs_Checkbox[p_Obj_Frm][t_Valeurs_Checkbox[p_Obj_Frm].length] = p_Valeur_Frm; 
	}
	else {
		t_Valeurs_Checkbox[p_Obj_Frm] = fw_effacer_elmt_tab(t_Valeurs_Checkbox[p_Obj_Frm],p_Valeur_Frm);
	}
}

function f_Radioter(p_Obj_Frm, p_Obj_Img, p_Valeur_Off, p_Valeur_On, p_Valeur_Frm) {
	
		if (t_Valeurs_Radios[p_Obj_Frm]) {
			if (t_Valeurs_Radios[p_Obj_Frm].length > 0) {
				t_Valeurs_Radios[p_Obj_Frm] = new Array();
				var i = 1;
				while (document.getElementById(p_Obj_Frm+"_"+i)) {
					f_Switch_Image(p_Obj_Frm+"_"+i,p_Valeur_Off,p_Valeur_Off);
					i++;
				}
			}
			//t_Valeurs_Radios[p_Obj_Frm][t_Valeurs_Radios[p_Obj_Frm].length] = p_Valeur_Frm;
		}
		else {
			t_Valeurs_Radios[p_Obj_Frm] = new Array();
		}

		f_Switch_Image(p_Obj_Img,p_Valeur_Off,p_Valeur_On)
		t_Valeurs_Radios[p_Obj_Frm][t_Valeurs_Radios[p_Obj_Frm].length] = p_Valeur_Frm;
	
}

function f_Construire_Inputs() {
	var v_Str = "";
	var b_construction = false;
	
	// Checkboxes
		for(question in t_Valeurs_Checkbox) {
			for (j=0;j<t_Valeurs_Checkbox[question].length;j++) {
				v_Str+='<input type="hidden" name="'+question+'[]" id="'+question+'[]" value="'+t_Valeurs_Checkbox[question][j]+'">\n';
				//alert(question+' = '+t_Valeurs_Checkbox[question][j]);
				b_construction = true;
			}
		}
	// Radios

		for(question in t_Valeurs_Radios) {
			for (j=0;j<t_Valeurs_Radios[question].length;j++) {
				v_Str+='<input type="hidden" name="'+question+'[]" id="'+question+'[]" value="'+t_Valeurs_Radios[question][j]+'">\n';
				b_construction = true;
			}
		}

	
	//v_Flux = document.getElementById('div_form_inputs').innerHTML;
	v_Flux = v_Str;
	document.getElementById('div_form_inputs').innerHTML = v_Flux;
	
	return b_construction;
}

// ####################################
// GESTION AJAX
// ####################################

var response;

function f_Callback_Ajax(p_Response,p_Cible) {
	switch(p_Response) {
	case 'erreur' :
		if (document.getElementById(p_Cible))
			document.getElementById(p_Cible).innerHTML = 'Service indisponible';
		else 
			alert('Service indisponible');
		break;
	default:
		if (document.getElementById(p_Cible))
			document.getElementById(p_Cible).innerHTML = p_Response;
		else 
			alert(p_Response);
		break;
	}
}

function f_Create_Object_XMLHTTP(p_Cible,p_is_async) {
	var req;
	if(window.XMLHttpRequest)
	{
		// Firefox, Safari, Opera...
		req = new XMLHttpRequest();
	} else if(window.ActiveXObject) { 
		// Internet Explorer 5+
		req = new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		alert('Impossible de charger AJAX ! veuillez réessayer svp.');
	}
	
	if (p_is_async) {
	
		req.onreadystatechange = function() {
			if(req.readyState == 4 && req.status == 200) {
				response = req.responseText;
				//alert(http.responseText);
				if(response) {
					
					f_Callback_Ajax(response,p_Cible);
					//document.getElementById(div).innerHTML = response;
					
				}else
				{
					f_Callback_Ajax('erreur',p_Cible);
				}
			}
		}
	}
	
	return req;
}
	
function f_Execute_Ajax(p_Cible,p_Is_Async,p_Url_Appel,p_Method_Appel,p_Valeur){
	var http = f_Create_Object_XMLHTTP(p_Cible, p_Is_Async);
	var texte='';
	if(p_Valeur==0 || p_Valeur == "") {
		texte='Veuillez saisir une valeur...';
		return;
	}
	else {
		texte='<img src=\"../images/pic_pleasewait.gif\" border=\"0\"><span style="color:blue">chargement...</span>';
		if (document.getElementById(p_Cible)) 
			document.getElementById(p_Cible).innerHTML = texte;
	}
	
	http.open(p_Method_Appel, p_Url_Appel + p_Valeur, p_Is_Async);
	http.send(null);
	if (!p_Is_Async) {
		f_Callback_Ajax(http.responseText,p_Cible);
	}
	//document.getElementById('f[ville]').style.width="auto";
}

//#################################################


function event_cp(cp) {
	var reg = new RegExp("^[0-9]{5}$");
	if (reg.test(cp)) {
		f_Execute_Ajax('div_ville',true,'../modules/hexaposte/detail_ville_ajax.php?code_postal=','get',cp);
	}
	return cp;
}


function mise_en_majuscule(str) {
	return str.toUpperCase();
}


function fw_chercher_elmt_tab (tab,elmt) {
	var trouve = false;
	for (i=0;i<tab.length;i++) {
		if (tab[i] == elmt)
			trouve = true;
	}
	return trouve;
}


function fw_effacer_elmt_tab (tab,valeur) {
	var pos = 0;
	var trouve = false;
	for (i=0;i<tab.length;i++) {
		if (tab[i] == valeur)
			pos = i;
			trouve = true;
	}
	if (trouve == true) {
		var output=[]
		var j=0;
		for(var i in tab){
		    if (i!=pos){
		      output[j]=tab[i];
		      j++;
		    }
		}
	}
	else {
		var output = tab;
	}
	return output;
}

function init_champs() {
	var champ_id = "";
	//alert(champs_obligatoires.length);
	if (champs_obligatoires.length > 0) {
		if (document.getElementById('msgbox_plus')) {
			document.getElementById('msgbox_plus').innerHTML = "Tous les champs obligatoires sont précédés d'une astérique";
		}
	}
	for (j=0;j<champs_obligatoires.length;j++) {
		champ_id = 'frm_'+champs_obligatoires[j];
		label_id = 'label_'+champs_obligatoires[j];
		//alert(champ_id);
		if (document.getElementById(champ_id)) {
			if (document.getElementById(champ_id).value == '' || parseInt(document.getElementById(champ_id)) == 0) {
				champs_non_valides.push(champs_obligatoires[j]);
			}
		}
		if (document.getElementById(label_id)) {
			document.getElementById(label_id).innerHTML = '* ' + document.getElementById(label_id).innerHTML;
		}
	}
	//alert(champs_non_valides.join(','));
}


function gerer_champ_non_valide(item,mode) {
	if (mode == false) {
		if (!fw_chercher_elmt_tab(champs_non_valides,item)) {
			champs_non_valides.push(item);
		}
	}
	else {
		if (fw_chercher_elmt_tab(champs_non_valides,item)) {
			champs_non_valides = fw_effacer_elmt_tab(champs_non_valides,item);
		}
	}
}


function vider_champs_obligatoires() {
	champs_obligatoires = new Array();
}


function ajouter_champ_obligatoire(item) {
	champs_obligatoires.push(item);
}


function verifier_champ(obj,id,type,fct_event) {

	var msg = "";
	var visible = "none";
	var val = obj.value;
	var reg_except;
	var msg_except = "";
	
	switch(type) {
		case 'text' :
			reg_except = /[^A-Za-z0-9\-\.'\s]/g;
			msg_except = "Les caractères spéciaux ne sont pas autorisés";
			break;
		case 'adresse' :
			reg_except = /[^A-Za-z0-9éèàêçôî\-\.',\s]/g;
			msg_except = "Les caractères spéciaux ne sont pas autorisés";
			break;
		case 'email' :
			reg_except = /[^A-Za-z0-9_@\-\.]/g;
			msg_except = "Le format de l'email est incorrect";
			break;
		case 'tel' :
			reg_except = /^[^0]{1}|[0]{2}|[^0-9]$/;
			msg_except = "Le Tel ne doit contenir que des chiffres et doit être écrit dans un bon format (ex: 0491234567)";
			break;
		case 'cp' :
			reg_except = /^[9]{2}|[^0-9]$/g;
			msg_except = "Le CP ne doit contenir que des chiffres";
			break;
		case 'chiffre' :
			reg_except = /[^0-9]/;
			msg_except = "Seuls les chiffres sont autorisés";
			break;
		default :
			reg_except = /[^A-Za-z0-9\-\.'\s]/g;
			msg_except = "Les caractères spéciaux ne sont pas autorisés";
			break;
	}
	
	if (reg_except.test(val)) {
		visible = "block";
		val = val.replace(reg_except,"");
	}
	else {
		if (fct_event != '') {
			str_event = "val = "+fct_event+"(val);";
			eval(str_event);
		}
	}
	
	if (msg_except != "" && visible == "block") {
		if (document.getElementById('msgbox_'+id)) {
			document.getElementById('msgbox_'+id).innerHTML = msg_except;
			document.getElementById('msgbox_'+id).style.display = visible;
		}
		else {
			alert(msg_except);
		}
	}
	obj.value = val;
}



function valider_champ(obj,id,type)
{
   	var val = obj.value;
	var msg = "";
	var visible = "none";
	var retour;
	
	switch(type) {
		case 'text' :
			reg = /[^A-Za-z0-9\-\.'\s]/g;
			msg = "Les caractères spéciaux ne sont pas autorisés";
			ctrl_reg = true;
			break;
		case 'adresse' :
			reg = /[^A-Za-z0-9éèàêçôî\-\.',\s]/g;
			msg = "Les caractères spéciaux ne sont pas autorisés";
			ctrl_reg = true;
			break;
		case 'email' :
			//reg = /^[A-Za-z0-9\-\.']$/g;
			//reg = /^([a-zA-Z0-9_\\-])+(\\.([a-zA-Z0-9_\\-])+)*@((\\[(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5]))\\]))|((([a-zA-Z0-9])+(([\\-])+([a-zA-Z0-9])+)*\\.)+([a-zA-Z])+(([\\-])+([a-zA-Z0-9])+)*))$/;
			reg = new RegExp("^([a-zA-Z0-9_\\-])+(\\.([a-zA-Z0-9_\\-])+)*@((\\[(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5]))\\]))|((([a-zA-Z0-9])+(([\\-])+([a-zA-Z0-9])+)*\\.)+([a-zA-Z])+(([\\-])+([a-zA-Z0-9])+)*))$");
			msg = "Le format de l'email est incorrect";
			ctrl_reg = false;
			break;
		case 'tel' :
			reg = /^[0-9]{10}$/;
			msg = "Le Tel doit contenir 10 chiffres";
			ctrl_reg = false;
			break;
		case 'cp' :
			reg = /^[0-9]{5}$/;
			msg = "Le CP doit contenir 5 chiffres";
			ctrl_reg = false;
			break;
		case 'chiffre' :
			reg = /[0-9]/;
			msg = "Seuls les chiffres sont autorisés";
			ctrl_reg = false;
			break;
		default :
			reg = /[^A-Za-z0-9\-\.'\s]/g;
			msg = "Les caractères spéciaux ne sont pas autorisés";
			ctrl_reg = true;
			break;
	}
	
	if (type != "") {
		if (val == "") {
			if (fw_chercher_elmt_tab(champs_obligatoires,id)) {
				valid = false;
			}
			else {
				valid = true;
			}
		}
		else {
			if (reg.test(val) == ctrl_reg) {
				valid = false;
				visible = "block";
			}
			else {
				valid = true;
			}
		}
	}
	else {
		if (fw_chercher_elmt_tab(champs_obligatoires,id)) {
			if (val == "" || parseInt(val) == 0) {
				valid = false;
			}
			else {
				valid = true;
			}
		}
		else {
			valid = true;
		}
	}
	
	gerer_champ_non_valide(id,valid);
	
	if (msg != "" && visible == "block") {
		if (document.getElementById('msgbox_'+id)) {
			document.getElementById('msgbox_'+id).innerHTML = msg;
			document.getElementById('msgbox_'+id).style.display = visible;
		}
		else {
			alert(msg);
		}
	}
}



function valider_form(id_form, action_page) {
	var str_msg = "";

	champs_non_valides = fw_effacer_elmt_tab(champs_non_valides,"diagnostic à réaliser");
	if (!f_Construire_Inputs())
		champs_non_valides.push("diagnostic à réaliser");
	
	if (champs_non_valides.length > 0) {
		str_msg = 'Avant de continuer : \n\n';
		for (i=0;i<champs_non_valides.length;i++) {
			str_msg += 'Le champ '+champs_non_valides[i]+' est mal renseigné.\n';
			if (document.getElementById('label['+champs_non_valides[i]+']')) {
				//document.getElementById('label['+champs_non_valides[i]+']').style.background = "#eeeeee";
				document.getElementById('label['+champs_non_valides[i]+']').style.color = "red";
			}
		}
		if (document.getElementById('msgbox_form')) {
			document.getElementById('msgbox_form').innerHTML = str_msg;
			document.getElementById('msgbox_form').style.display = 'block';
		}
		else
			alert(str_msg);
	}
	else {
		if (action_page != "") {
			document.forms[id_form].action = action_page;
		}
		document.forms[id_form].submit();
	}
}

