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

var tab_err = new Array;
tab_err["good"] = '<b>Ce champ est correctement renseigné</b>';
tab_err["good_thumbails"] = '<b>Nous avons détecté un thumbails pour votre site.</b>';
tab_err["format"] = "<b style='color:#000;'>Le format de l'image doit être en jpg, gif, png</b>";
tab_err["nb_carac"] = "<b style='color:#000;'>Le nombre de caractères est inférieur à 150</b>";
tab_err["isNull"] = "<b style='color:#000;'>Ce champ doit être renseigné.</b>";
tab_err["isNotInt"] = "<b style='color:#000;'>Ce champ n'accepte que les valeurs numériques</b>";
tab_err["emailBad"] = "<b style='color:#000;'>Votre adresse email est erronée</b>";
tab_err["alpha"] = "<b style='color:#000;'>Ce champ n'accepte que les valeurs alphabétique</b>";
tab_err["presence"] = "<b style='color:#000;'>Ce site est déjà présent dans notre annuaire !</b>";

var cpt_err = 0;
var key = '';
var bool_calcul = true;
var thumbail = false;

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

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 cfi(v,VI){return check_format_image(v,VI);}
function cinc(v,VI,valNB){return check_input_nb_carac(v,VI,valNB);}
function cct(v,vI){change_color_table(v,vI);}
function ccte(bool,v){change_color_table_erreur(bool,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;
}

function check_format_image(valInput,valImg){
	if(!thumbail)
	{
		var bool = (check_image(valInput));
		(bool) ? cdi(valImg,true,"format") : cdi(valImg,false,"good");
		return bool;
	}
	else
	{
		var t = roi("f_url_image");
		var lien = '<br/>Vous pouvez le visualiser en cliquant sur ce <a href="'+t+'" target="_blank">lien</a>';
		cih(valImg,tab_img["good"]+tab_err["good_thumbails"]+lien);
		return false;
	}
}

function check_image(val){
	var t = roi(val);
	var f = t.substring(t.length-3,t.length);
	if(f == "jpg" || f == "gif" || f == "png" || f == "bmp")
		return false;
	else
		return true;
}

function check_input_nb_carac(val,valImg,valNB){
	var nb = compte_caract(val,valNB);
	(nb < 150) ? cdi(valImg,true,"nb_carac") : cdi(valImg,false,"good");
	var bool = (nb < 150) ? true : false;
	return bool;
}

function compte_caract(valT,valI){
	var t = roi(valT);
	var nb = t.length;
	ci(valI,nb);
	if(nb > 150)
		cdi('verif_seven',false,"good");
	return nb;
	return t.length;
}

/**
* 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);
}

/**
* 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");
}

/**
* 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 check_url_presence(){
	var t = roi("f_url_site");
	var data = "action=check_url_presence&f_url_site="+escape(t);
	var bool = goForm_php(data,'');
	if(bool)
	{
		cpt_err++;
		cih("verif_five",tab_img["bad"]+tab_err["presence"])
	}
}


function verif_form(){
	cpt_err = 0;
	var data = "action=inscription";

	/* Teste champ texte */
	var t = ros("id_cat");
	data += "&cle_cat="+escape(t["index"]);
	ccte(cii("f_nom","verif_two",false,"isNull"),'tr1');
	ccte(cii("f_email","verif_tree",true,"emailBad"),'tr2');
	ccte(cii("f_titre","verif_four",false,"isNull"),'tr3');
	ccte(cii("f_url_site","verif_five",false,"isNull"),'tr4');
	ccte(cfi('f_url_image','verif_six'),'tr5');
	ccte(cinc('f_description','verif_seven','nb_carac'),'tr6');
	check_url_presence();

	var ti = ri();
	for(i=0; i < ti.length ; i++)
	{
		if(ti[i].id.substring(0,2) == 'f_')
			data += "&"+ti[i].id+"="+escape(ti[i].value);
	}
	var desc = gd("f_description").value;
	data += "&desc="+escape(desc);
	if (cpt_err == 0)
		goForm_php(data,'result');
	else
		alert("Il reste des erreurs dans votre enregistrement.\nVeuillez les corriger s.v.p");
}

function change_color_table(valTr,valInput){
	 var tI = Array();
	 tI[0] = 'f_nom';
	 tI[1] = 'f_email';
	 tI[2] = 'f_titre';
	 tI[3] = 'f_url_site';
	 tI[4] = 'f_url_image';
	 tI[5] = 'f_description';
	 var tR = Array();
	 tR[0] = 'tr1';
	 tR[1] = 'tr2';
	 tR[2] = 'tr3';
	 tR[3] = 'tr4';
	 tR[4] = 'tr5';
	 tR[5] = 'tr6';

	 for(i=0; i < tI.length; i++)
	 	gd(tI[i]).style.backgroundColor = "#D1E7FF;";

	 for(i=0; i < tR.length; i++)
	 {
	 	if(gd(tR[i]).style.backgroundColor != "red")
	 		gd(tR[i]).style.backgroundColor = '#FFF';
	 }

	 /* assignation*/
	 gd(valTr).style.backgroundColor = '#D1E7FF';
	 gd(valInput).style.backgroundColor = '#FFF';
	 gd(valInput).style.color = '#000';
}
function change_color_table_erreur(bool,valTr){
	if(bool)
		gd(valTr).style.backgroundColor = 'red';
}

function aff_form(valSelect){
	var data = "action=select&val="+escape(valSelect);
	goForm_php(data,'colsel');
}

function check_img(){
	var t = roi("f_url_site");
	if(""==t || null == t)
		alert("Le champ url de votre site doit être renseigné pour utiliser cette fonctionnalité.");
	else
	{
		var data = "action=aff_image&url_site="+escape(t);
		var result = goForm_php(data,"");
		ci('f_url_image',result);
		if("" != result){
			thumbail = true;
			ccte(cfi('f_url_image','verif_six'),'tr5');
		}
		else
			alert("Désolé, nous n'avons pas trouvé de thumbnails pour votre site.");
	}
}

function recup_meta(){
	var t = roi("f_url_site");
	var data = "action=recup_meta&url_site="+escape(t);
	// Evite le cache
	data = "ms=" + new Date().getTime()+",&"+data;
	xhr = (window.XMLHttpRequest)? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
	xhr.open("POST", "xmlhttprequest.php", false);
	xhr.setRequestHeader("Cache-Control","no-cache");
	xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xhr.send(data);
	if(xhr.readyState == 4 && xhr.status == 200)
	{
			var retour = xhr.responseText;
			var tab = retour.split("****");
			if("" != tab[0])
				ci("f_titre",tab[0]);
			if("" != tab[1])
				ci("f_description",tab[1]);			
	}
}
