//Tableau contenant les différents formats à respecter.
formats = new Array();
messages = new Array();
formats["email"] = /^[\w.-]{3,}@[\w.-]+\.[a-zA-Z]{2,6}$/;
formats["cp"] = /^[0-9]{5}$/;
formats["tel"] = /^[0-9]{10}$/;
formats["message"] = /[^Please, leave a message.]/;
messages["email"] = "ex: xxxx(.xxx)@xxxxx(.xxx).xx";
messages["cp"] = "ex: 45200";
messages["tel"] = "ex: 03XXXXXXXX";
messages["message"] = "";

//Fonction appelée lorsque l'utilisateur arrive sur la page chargée.
function init()
{
	var conteneurForm = document.getElementById("TextePage");
	var Formulaire = document.getElementsByTagName("p");
	//Nous recuperons les éléments de type paragraphe.
	for(i=0; i < Formulaire.length; i++)
	{
		//S'il s'agit d'une ligne...
		if(Formulaire[i].className == "Ligne")
		{
			//Nous vérifions son contenu.
			for(j = 0; j < Formulaire[i].childNodes.length;j++)
			{
				//Nous regardons pour chaque fils s'il s'agit d'un élément du formulaire.
				with(Formulaire[i].childNodes[j])
				{
					//Si le type est indéfini cela signifie que ce n'est pas un contrôle de formulaire.
					if(typeof(type) != 'undefined')
					{
						//Puis en fonction du type de controle, nous lui ajoutons les évènements.
						switch(type)
						{
							case 'text':
								onblur = function (){ controleid(this.id); };
								break;
							case 'radio':
								onblur = function (){ controleid(this.id); };
								break;
							case 'checkbox':
								onblur = function (){ controleid(this.id); };
								break;
							case 'textarea':
								onfocus = function vider(){ if(this.value == "Please, leave a message."){this.value = '';} };
								onblur = function remplir(){
										reg = new RegExp("^(\s|\n)*$|^$");
										expression = reg.test("FormEnvoiMessage");
										if(expression){this.value = "Please, leave a message.";}
										controleid(this.id);
									};
								break;
							case 'button':
								onclick = function(){
										res = verif("FormEnvoiMessage");
								
										if(res == true){ 
											res = confirm("Please, confirm to send your email, or cancel.");
											
											if(res == true){
												document.getElementById("FormEnvoiMessage").submit(); 
											}
										}
									};
								break;
						}
					}
				}
			}
		}
	}
}

function controleFormat(obj, pattern)
{
	info = document.getElementById("info-"+obj.id);
	info.innerHTML = "";

	reg = new RegExp(formats[pattern]);
	expression = reg.test(obj.value);

	if(!expression)
	{
		info.innerHTML = "<img src='ImagesQ4md/validerincorrect.png' alt='Non' />";
		
		if(messages[pattern].length > 0)
			info.innerHTML += "<br />"+messages[pattern]+"<br />";
			
		return(false);
	}
	else
	{
		info.innerHTML = "<img src='ImagesQ4md/validercorrect.png' alt='OK' />";
	}
	
	return(true);
}

function estRempli(obj)
{
	info=document.getElementById("info-"+obj.id);
	info.innnerHTML="";
	
	if(((obj.type=='radio'||obj.type=='checkbox')&& !obj.checked)||(!obj.value))
	{
		info.innerHTML = "<img src='ImagesQ4md/validerincorrect.png' alt='Non' />";
		return false;
	}
	else
	{
		info.innerHTML = "<img src='ImagesQ4md/validercorrect.png' alt='OK' />";
	}
	 
	return true;				  
}  

function controleid(id)
{
	var res = true;
	var id = document.getElementById(id);
	
	if( typeof(id) != "undefined" && typeof(id.className) != "undefined" )
	{
		expression = id.className.match(/(format-|requis-)([a-z]+)|(requis)/);	
		
		if(expression)
		{
			if(expression[1] == "format-" && id.value)
				res = controleFormat(id, expression[2]) && res;
			else if(expression[1] == "requis-")
				res = estRempli(id) && controleFormat(id, expression[2]) && res;
			else if(expression[0] == "requis")
				res = estRempli(id) && res;
		}
	}
	
	return(res);
}
			
function verif(idform)
{
	var res = true;
	var elements = document.getElementById(idform).elements;
	
	for(i = 0; i < elements.length; i++)
	{
		if( typeof(elements[i].className) != "undefined" )
		{
			expression = elements[i].className.match(/(format-|requis-)([a-z]+)|(requis)/);	
			
			if(expression)
			{
				if(expression[1] == "requis-")
					res = estRempli(elements[i]) && controleFormat(elements[i], expression[2]) && res;
				else if(expression[1] == "format-" && elements[i].value)
					res = controleFormat(elements[i], expression[2]) && res;
				else if(expression[0] == "requis")
					res = estRempli(elements[i]) && res;
			}
		}
	}
	
	return(res);
}

window.onload = init;

