var tab_img = new Array;
tab_img["good"] = '<img src="img/devis/good.jpg" title="Ce champ est correctement renseigné" alt="Ce champ est correctement renseigné"/>';
tab_img["bad"] = '<img src="img/devis/bad.jpg" alt="Erreur sur ce champ" title="Erreur sur ce champ"/>';

var tab_err = new Array;
tab_err["good"] = '<b class="green">Correct</b>';
tab_err["isNull"] = '<b class="red">Ce champ ne peut être vide</b>';
tab_err["isNotInt"] = "<b class=\"red\">Ce champ n'accepte que les valeurs numériques</b>";
tab_err["emailBad"] = '<b class="red">Votre adresse email est erronée</b>';
tab_err["dateJour"] = '<b class="red">Le jour doit être compris en 1 et 31</b>';
tab_err["dateMois"] = '<b class="red">Le mois doit être compris en 1 et 12</b>';
tab_err["alpha"] = "<b class=\"red\">Ce champ n'accepte que les valeurs alphabétique</b>";
tab_err["cgv"] = "";

var cpt_err = 0;
var key = '';
var bool_calcul = true;
/**
* Récupère le survol sur les balises input textarea
* Pour IE mais pas Opéra hack input:hover
*/
if(!window.Event){
	document.onmouseover=function(){
		x=window.event.srcElement
		if(x.tagName=="INPUT" && x.className!="rad" && x.className!="sub" && x.className!="sp")x.className="hoverInput_IE";
		if(x.tagName=="TEXTAREA")x.className="hoverInput_IE";
	}
	document.onmouseout=function(){
		if(x.tagName=="INPUT" && x.className!="rad" && x.className!="sub" && x.className!="sp")x.className="";
		if(x.tagName=="TEXTAREA")x.className="";
	}
}

function goForm_php(data,valResult){
	var data_recue = null;
	// Evite le cache
	data = "ms=" + new Date().getTime()+",&"+data;
	xhr = (window.XMLHttpRequest)? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
//	xhr.onload = null;
	xhr.open("POST", "xmlhttprequest.php", true);
	xhr.onreadystatechange = function() {
			if(xhr.readyState == 4 && xhr.status == 200 )
			{
				cih(valResult,xhr.responseText);
				if(valResult == "resul_form")
					gd("resul_form").style.display = 'block';
			}
	}
	xhr.setRequestHeader("Cache-Control","no-cache");
	xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xhr.send(data);
}

function gd(v){return get_document(v);}
function ce(v){return check_email(v);}
function cl(v,VI){check_login(v,VI);}
function clim(v,l){return check_limit(v,l);}
function cs(v,a){return check_select(v,a);}
function ciin(v){return check_input_is_null(v);}
function ciit(v){return check_input_int(v);}
function cimn(v,VI){check_input_num_nul(v,VI);}
function ccgv(v,VI){check_cgv(v,VI);}
function ci(v,c){change_input(v,c);}
function cdi(v,e,t){change_div_img(v,e,t);}
function cih(v,c){change_innerHTML(v,c);}
function cii(v,vI,m,t){return change_image_input(v,vI,m,t);}
function ri(){return recup_all_input();}
function roc(v){return recup_one_checkbox(v);}
function ras(){return recup_all_select();}
function roi(v){return recup_one_input(v);}
function ros(v){return recup_one_select(v);}

/**
* Function générique
*/
function get_document(val){
	return (null != val) ? document.getElementById(val) : '';
}
/**
* Function récupérant une balise html
* @param: val // id de la balise
*/
function recup_one_input(val){
	return gd(val).value;
}
/**
* Function récupérant les balises input
* @return: tab // tableau des inputs
*/
function recup_all_input(){
	return document.getElementsByTagName('input');
}
/**
* Function récupérant une balise select html
* @param: val // id de la balise select
* @return Array [index,libelle]
*/
function recup_one_select(valSelect){
	var c  = gd(valSelect);
	var t = new Array;
	t["index"]= c.options[c.selectedIndex].value;
	t["libelle"]= c.options[c.selectedIndex].text;
	return t;
}
/**
* Function récupérant les balises input
* @return: tab // tableau des select
*/
function recup_all_select(){
	return document.getElementsByTagName('select');
}

/**
* Function récupérant une balise html checkbox
* @param: val // id de la balise select
* @return: si coché TRUE ou pas FALSE
*/
function recup_one_checkbox(valCheckbox){
	return gd(valCheckbox).checked;
}

/**
* Function checkant si un input est vide
* @param: val // id de la balise input
* @return: boolean
*/
function check_input_is_null(val){
	return ("" == roi(val) || null == roi(val)) ? true : false;
}
/**
* Test si le le param passé est un entier
* @param val //id balise input html
* @return true  = c'est pas un int ou false c'est un int
*/
function check_input_int(val){
	return (isNaN(roi(val)));
}
/**
* Test le champ email est valide
* @param val //id balise input html
* @return true ou false
*/
function check_email(val){
	var exp = new RegExp("^([a-zA-Z0-9_-])+([.]?[a-zA-Z0-9_-]{1,})*@([a-zA-Z0-9-_]{2,}[.])+[a-zA-Z]{2,4}$");
	var b = (exp.test(roi(val))) ? false : true;
	return b;
}
/**
* Test si une checkbox est cochée
* @param val //id balise html
* @return true ou false
*/
function check_select(valSelect,aff){
	var t = ros(valSelect);
}
/**
* Test si une checkbox est cochée ou non
*/
function check_cgv(valCheckbox,valImg){
	(!roc(valCheckbox)) ? change_div_img(valImg,true,"cgv") : change_div_img(valImg,false,"cgv");
}
/**
* Function changeant le contenu d'un input
* @param: val // id de la balise input
* @param: cont // new contenu
*/
function change_input(val,cont){
	gd(val).value = cont;
}
/**
* Function changeant le contenu d'un input
* @param: val // id de la balise html
* @param: cont // new contenu
*/
function change_innerHTML(val,cont){
	gd(val).innerHTML = cont;
}
/**
* Test si un champ est correct ou non, affiche une image dans le div donné
* @param: valInput // id input
* @param: valImg // id img
* @param: email // Si la valeur a tester est email
* @param: texte // texte explicatif de l'erreur
*/
function change_image_input(valInput,valImg,email,texte){
	(email) ? cdi(valImg,ce(valInput),texte) : cdi(valImg,ciin(valInput),texte);
	var bool = (email) ? ce(valInput) : ciin(valInput);
	return bool;
}
/**
* Funtion affichant une image good ou bad
* @param: val // id de la balise div html
* @param: e // boolean true = erreur
* @param: texte // indice d'erreur
*/
function change_div_img(val,e,texte){
	(e) ? cih(val,tab_img["bad"]+tab_err[""+texte]) : cih(val,tab_img["good"]+tab_err["good"]);
	if(e) cpt_err++;
}

/**
* Funtion affichant une image good ou bad
* Champ integer
*/
function check_input_num_nul(valInput,valImg){
	if(ciin(valInput))
		cdi(valImg,true,"isNull");
	else
		cdi(valImg,ciit(valInput),"isNotInt");
}

/**
* Test si le champ login est :
* non vide, s'il contient que des caracteres corrects
* et si il est pas encore utilisé
*/
function check_login(valInput,valImg){
	if(ciin(valInput))
		cdi(valImg,true,"isNull");
	else
	{
		var data = "action=verif_login&login="+escape(roi(valInput));
		goForm_php(data,valImg);
	}
}

/**
* Teste la valeur numérique d'un champ par rapport à une limit
*/
function check_limit(valInput,limit){
	return (roi(valInput) > limit || roi(valInput) == 0) ? false : true;
}

function verif_form_compo(f){
	cpt_err = 0;
	/* Teste champ texte */
	cii("c_passwd","insc_VC1",false,"isNull");
	cii("c_email","insc_VC2",true,"emailBad");
	cii("c_nom","insc_VC3",false,"isNull");
	cii("c_prenom","insc_VC4",false,"isNull");
	cii("c_adresse","insc_VC5",false,"isNull");
	cii("c_ville","insc_VC7",false,"isNull");
	cii("c_ville_nais","insc_VC11",false,"isNull");
	/* Teste champ numérique */
	if(!cii("c_dept","insc_VC6",false,"isNull"))
		cdi("insc_VC6",ciit("c_dept"),"isNotInt");
	if(!cii("c_tel","insc_VC8",false,"isNull"))
		cdi("insc_VC8",ciit("c_tel"),"isNotInt");
	if(!cii("c_date_naisJ","insc_VC12",false,"isNull")){
		//erreur pas int
		if(ciit("c_date_naisJ"))
			cdi("insc_VC12",true,"isNotInt");
		//bon alors on teste le champ suivant
		else{
			if(!cii("c_date_naisM","insc_VC12",false,"isNull") && !(clim("c_date_naisM",12))){
				if(ciit("c_date_naisM"))
					cdi("insc_VC12",true,"isNotInt");
				else{
					if(!cii("c_date_naisA","insc_VC12",false,"isNull"))
							cdi("insc_VC12",ciit("c_date_naisA"),"isNotInt");
				}
			}
		}
	}
	if(!clim("c_date_naisJ",31)){
		cpt_err++;
		cdi("insc_VC12",true,"dateJour");
	}
	if(!clim("c_date_naisM",12)){
		cpt_err++;
		cdi("insc_VC12",true,"dateMois");
	}
	cii("c_natio","insc_VC13",false,"isNull");
	/* Check login */
	cl("c_login","insc_VC0");
	/* Check CGV */
	ccgv("c_verif_cgv","insc_VC15");
	if (cpt_err == 0)
	{
		var data = "action=inscription&type=compo&var="+escape(roi("c_login"));
		var ti = ri();
		for(i=0; i < ti.length ; i++){
			if(ti[i].id.substring(0,2) == 'c_')
				data += "&"+ti[i].id+"="+escape(ti[i].value);
		}
		goForm_php(data,'resul_form');
		gd("compositeur").style.display = 'none';
		gd("avirer").style.display = 'none';
	}
}

function verif_form_pro(f){
	cpt_err = 0;
	/* Teste champ texte */
	cii("p_passwd","insc_V1",false,"isNull");
	cii("p_email","insc_V2",true,"emailBad");
	cii("p_nom","insc_V4",false,"isNull");
	cii("p_prenom","insc_V5",false,"isNull");
	cii("p_adresse","insc_V6",false,"isNull");
	cii("p_ville","insc_V8",false,"isNull");
	cii("p_pays","insc_V9",false,"isNull");
	if(!cii("p_dept","insc_V7",false,"isNull"))
		cdi("insc_V7",ciit("p_dept"),"isNotInt");
	if(!cii("p_tel","insc_V10",false,"isNull"))
		cdi("insc_V10",ciit("p_tel"),"isNotInt");
	/* Check login */
	cl("p_login","insc_V0");
	/* Check CGV */
	ccgv("p_verif_cgv","insc_V12");

	var data = "action=inscription&type=pro&var="+escape(roi("p_login"));
	var temp = ros("sel_interet");
	var cle_sel = temp["index"];
	var ti = ri();
	for(i=0; i < ti.length ; i++)
	{
		if(ti[i].id.substring(0,2) == 'p_')
			data += "&"+ti[i].id+"="+escape(ti[i].value);
	}
	data += "&p_sel="+escape(cle_sel);
	if (cpt_err == 0)
	{
		goForm_php(data,'resul_form');
		gd("producteur").style.display = 'none';
		gd("avirer").style.display = 'none';
	}
}