/* ******************************************************************************************** */
/* 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','code_postal','email');

var champs_non_valides = new Array();
/* ******************************************************************************************** */


function mise_en_majuscule(str) {
	return str.toUpperCase();
}


function event_cp(cp) {
	var reg = new RegExp("^[0-9]{5}$");
	if (reg.test(cp)) {
		f_Recherche_Ville(cp,true);
	}
	return cp;
}


function chercher_elmt_tab (tab,elmt) {
	var trouve = false;
	for (i=0;i<tab.length;i++) {
		if (tab[i] == elmt)
			trouve = true;
	}
	return trouve;
}


function 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) {
		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 = 'f['+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 (!chercher_elmt_tab(champs_non_valides,item)) {
			champs_non_valides.push(item);
		}
	}
	else {
		if (chercher_elmt_tab(champs_non_valides,item)) {
			champs_non_valides = 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,e) {

	var saisie = window.event ? e.keyCode : e.which;
	//alert(saisie);
	
	if (saisie == "undefined" || (saisie != 39 && saisie != 37 && saisie != 8 && saisie != 46)) {
	
		var msg = "";
		var class_visible = "msgbox_off";
		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-9\s\-\.]/;
				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]$/;
				msg_except = "Le CP ne doit contenir que des chiffres";
				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)) {
			class_visible = "msgbox_on";
			val = val.replace(reg_except,"");
			obj.value = val;
			if (document.getElementById('msgbox_'+id)) {
				document.getElementById('msgbox_'+id).innerHTML = msg_except;
				document.getElementById('msgbox_'+id).className = class_visible;
			}
			else {
				alert(msg_except);
			}
		}
		else {
			if (fct_event != '') {
				str_event = "val = "+fct_event+"(val);";
				eval(str_event);
				obj.value = val;
			}
		}
	}
}



function valider_champ(obj,id,type)
{
   	var val = obj.value;
	var msg = "";
	var champ_validation = 'valide['+id+']';
	var class_visible = "msgbox_off";
	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;
		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 (chercher_elmt_tab(champs_obligatoires,id)) {
				valid = false;
			}
			else {
				valid = true;
			}
		}
		else {
			if (reg.test(val) == ctrl_reg) {
				valid = false;
				class_visible = "msgbox_on";
			}
			else {
				valid = true;
			}
		}
	}
	else {
		if (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 (class_visible == "msgbox_on") {
		document.getElementById('msgbox_'+id).innerHTML = msg;
		document.getElementById('msgbox_'+id).className = class_visible;
	}
}


function valider_form(id_form, action_page) {
	var str_msg = "";
	if (champs_non_valides.length > 0) {
		str_msg = 'Avant de continuer : <br><br>';
		for (i=0;i<champs_non_valides.length;i++) {
			str_msg += 'Le champ '+champs_non_valides[i]+' est mal renseigné.<br>';
			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();
	}
}

/* ########################################## */
/* GESTION AJAX */
/* ########################################## */

var response;
var call_way = "ajax/";
var b_Retour_Valid = true;

function callback(response,cible) {
	switch(response) {
	case 'erreur' :
		document.getElementById(cible).innerHTML = '<div style="color:#316ac5;vertical-align:middle;margin-top:12px;">Service indisponible</div>';
		b_Retour_Valid = false;
		break;
	default:
		document.getElementById(cible).innerHTML = response;
		b_Retour_Valid = true;
		break;
	}

}

function createQCObject1(div,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 (is_async) {
	
		req.onreadystatechange = function() {
			if(req.readyState == 4 && req.status == 200) {
				response = req.responseText;
				//alert(http.responseText);
				if(response) {
					
					callback(response,div);
					//document.getElementById(div).innerHTML = response;
					
				}else
				{
					callback('erreur',div);
				}
			}
		}
	}
	
	return req;
}

function f_Recherche_Ville(p_Valeur,p_Is_Async){
	//alert(p_Valeur);
	var http = createQCObject1('cible_ville', p_Is_Async);
	var texte='';
	if(p_Valeur=="") {
		texte='Saisissez un code postal...';
		document.getElementById('cible_ville').innerHTML = texte;
		return;
	}
	else {
		texte='<img src=\"images/pic_pleasewait.gif\" border=\"0\">&nbsp;chargement...';
		document.getElementById('cible_ville').innerHTML = texte;
	}
		
	http.open('get',call_way + 'hexaposte.php?code_postal=' + p_Valeur, p_Is_Async);
	http.send(null);
	if (!p_Is_Async) {
		callback(http.responseText,'cible_ville');
	}
	//document.getElementById('f[ville]').style.width="auto";
}

function f_AfficherMasquer(p_id) {
	if (document.getElementById(p_id).style.display == 'none')
		document.getElementById(p_id).style.display = 'block';
	else 
		document.getElementById(p_id).style.display = 'none';
}