
function verif(){
	
	var formulaire='devis';
	
	//indication des champs obligatoires
	var obligatoire=["type","reception", "date_reception_jour", "date_reception_mois", "date_reception_annee", "prestation", "boissons", "personnel", "services[]", "nom", "prenom", "adresse", "cp", "ville", "telephone", "email"];
	
	//indication des autres champs à vérifier si renseigner
	var autres=["detail_bossions"];
	
	//indication de la classe CSS d'erreur
	var class_error='erreur';
	
	//indication de la classe CSS normal
	var class_normal='';
	
	//réinitialisation du div contenant le message d'erreur
	document.getElementById('error').innerHTML='';
	
	//initialistation des styles CSS
	initialisation(obligatoire, class_normal);
	initialisation(autres, class_normal);
	
	//verification des champs
	var error_obligatoire=verification(formulaire, obligatoire, true, class_error);
	var error_autres=verification(autres, false, class_error);
	
	
			// --------------------------------------------------------------------------------------------------------------------------	
			// ---------------------------- Scripts spécifique --------------------------------------------------------------------------
			// --------------------------------------------------------------------------------------------------------------------------
				if(document.getElementById('autre_reception').checked && document.getElementById('txt_autre_reception').value=="")
					{
						document.getElementById('txt_autre_reception').className=class_error;
						error_obligatoire++;
					}
				else
					{
						document.getElementById('txt_autre_reception').className=class_normal;
					}
					
				if(document.getElementById('autre_prestation').checked && document.getElementById('txt_autre_prestation').value=="")
					{
						document.getElementById('txt_autre_prestation').className=class_error;
						error_obligatoire++;
					}
				else
					{
						document.getElementById('txt_autre_prestation').className=class_normal;
					}
				
				if(document.getElementById('autre_cuisine').checked && document.getElementById('txt_autre_cuisine').value=="")
					{
						document.getElementById('txt_autre_cuisine').className=class_error;
						error_autres++;
					}
				else
					{
						document.getElementById('txt_autre_cuisine').className=class_normal;
					}
				
				if(document.getElementById('boissons').checked==true)
					{
							var choisis=0;
							var tab_select=document.forms[formulaire].elements['type_boisson[]'];
							for(var j=0; j < tab_select.length; j++)
								{
								if(tab_select[j].checked==true)
									{
									choisis++;
									}
								}
							if(choisis==0)	
								{
									document.getElementById('type_boisson[]').parentNode.className = class_error;
									error_obligatoire++;
								}
							else
								{
									document.getElementById('type_boisson[]').parentNode.className = class_normal;
								}
					}
					else
								{
									document.getElementById('type_boisson[]').parentNode.className = class_normal;
								}
					
				if(document.getElementById('autre_boisson').checked && document.getElementById('txt_autre_boisson').value=="" && document.getElementById('boissons').checked==true)
					{
						document.getElementById('txt_autre_boisson').className=class_error;
						error_autres++;
					}
				else
					{
						document.getElementById('txt_autre_boisson').className=class_normal;
					}
				
				if(document.getElementById('autres_services').checked && document.getElementById('txt_autres_services').value=="")
					{
						document.getElementById('txt_autres_services').className=class_error;
						error_autres++;
					}
				else
					{
						document.getElementById('txt_autres_services').className=class_normal;
					}
				var expr = /^[0-9][0-9-.]*[0-9]$/;
				
				if(	expr.test(document.getElementById('budget_mini_societe').value)==false && expr.test(document.getElementById('budget_maxi_societe').value)==true)
					{
						document.getElementById('budget_mini_societe').className=class_error;
						error_autres++;
					}
				else
					{
						document.getElementById('budget_mini_societe').className=class_normal;
					}	
					
				if(	expr.test(document.getElementById('budget_mini_societe').value)==true && expr.test(document.getElementById('budget_maxi_societe').value)==false)
					{
						document.getElementById('budget_maxi_societe').className=class_error;
						error_autres++;
					}
				else
					{
						document.getElementById('budget_maxi_societe').className=class_normal;
					}
				
				if(	expr.test(document.getElementById('budget_mini_part').value)==false && expr.test(document.getElementById('budget_maxi_part').value)==true)
					{
						document.getElementById('budget_mini_part').className=class_error;
						error_autres++;
					}
				else
					{
						document.getElementById('budget_mini_part').className=class_normal;
					}	
					
				if(	expr.test(document.getElementById('budget_mini_part').value)==true && expr.test(document.getElementById('budget_maxi_part').value)==false)
					{
						document.getElementById('budget_maxi_part').className=class_error;
						error_autres++;
					}
				else
					{
						document.getElementById('budget_maxi_part').className=class_normal;
					}
			// ---------------------------------------------------------------------------------------------------------------------------
			// ----------------------------------------------------Fin du script spécifique ----------------------------------------------
			// ---------------------------------------------------------------------------------------------------------------------------


	if(error_obligatoire==0 && error_autres==0)
	{
		//affichage de la popup de confirmation et envoi du formaulire
		window.open('about:blank','confirm','toolbar=0, location=0, directories=0, status=0, scrollbars=1, resizable=0, copyhistory=0, menuBar=0, width=200, height=100, left=120, top=120');
		document.devis.submit();
	}
	else
	{
		//affichage du message d'erreur
		if(error_obligatoire>0)
		document.getElementById('error').innerHTML += '<p id="msg_erreur">Les champs obligatoires surlignés en rouge ont été mal ou non renseignés</p>';
		if(error_autres>0)
		document.getElementById('error').innerHTML += '<p id="msg_erreur">Les champs facultatifs surlignés en rouge ont été mal renseignés</p>';
	}
}

// fonction d'initialisation des classes des champs
function initialisation(tableau, classe)
	{
	for(var i=0; i < tableau.length; i++)
		{
		switch (document.getElementById(tableau[i]).getAttribute("type"))
			{
			case "radio":
			document.getElementById(tableau[i]).parentNode.className = classe;
			break;
			case "checkbox":
			document.getElementById(tableau[i]).parentNode.className = classe;
			break;
			default:
			document.getElementById(tableau[i]).className = classe;	
			break;
			}
		}	
	}
	
// fonction de vérification des champs
function verification(formulaire, tableau, required, classe)
	{
	var error=0;
	for(var i=0; i < tableau.length; i++)
		{
		switch(tableau[i])
			{
			// verificarton pour un champs date
			case 'date': //valeur à modifier si nécessaire
				var date = /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/;
				error=verifRegExp(tableau[i], date, required, classe, error);
   			break;		
				
			// verificarton pour un code postal
			case 'cp': //valeur à modifier si nécessaire
				var codepostal=/^([A-Z]+[A-Z]?\-)?[0-9]{1,2} ?[0-9]{3}$/;
				error=verifRegExp(tableau[i], codepostal, required, classe, error);
   			break;	
			
			// verification pour une adresse email
			case 'email': //valeur à modifier si nécessaire
				var email=/^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$/;
				error=verifRegExp(tableau[i], email, required, classe, error);
   			break;
			
			// verification pour unnuméro de téléphone
			case 'telephone': //valeur à modifier si nécessaire
				var tel=/^(0[1234568])[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$/;
				error=verifRegExp(tableau[i], tel, required, classe, error);
			break;	
			
			// verification pour un numéro de téléphone protable
			case 'portable': //valeur à modifier si nécessaire
				var tel=/^(0[1234568])[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$/;
				error=verifRegExp(tableau[i], tel, required, classe, error);
			break;	
			
			// verification pour un numéro de fax
			case 'fax': //valeur à modifier si nécessaire
				var fax=/^(0[1234568])[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$/;
				error=verifRegExp(tableau[i], fax, required, classe, error);
			break;	
			
			case 'nombre': //valuer  à modifier si nécessaire
				var nombre = /^[0-9][0-9-.]*[0-9]$/;
				error=verifRegExp(tableau[i], nombre, required, classe, error);
			break;
			
			default:
				switch (document.getElementById(tableau[i]).getAttribute("type"))
					{
					// si le champs est de type radio	
					case "radio":
					if(required)
						{
							var choisis=0;
							var tab_select=document.forms[formulaire].elements[tableau[i]];
							for(var j=0; j < tab_select.length; j++)
								{
									if(tab_select[j].checked==true)
										{
										choisis++;
										}
								}
							if(choisis==0)	
								{
									document.getElementById(tableau[i]).parentNode.className = 'erreur';
									error++;
								}
						}
					break;
					// si le champs est du type checkbox
					case "checkbox":
					if(required)
						{
							var choisis=0;
							var tab_select=document.forms[formulaire].elements[tableau[i]];
							for(var j=0; j < tab_select.length; j++)
								{
									if(tab_select[j].checked==true)
										{
										choisis++;
										}
								}
							if(choisis==0)	
								{
									document.getElementById(tableau[i]).parentNode.className = 'erreur';
									error++;
								}
						}
					break;
					// sinon
					default:
					if(required)
						{
						if(document.getElementById(tableau[i]).value=="")
							{
							if(document.getElementById(tableau[i]).nodeName=="SELECT")
							{
							document.getElementById(tableau[i]).parentNode.className = 'erreur';	
							}
							else
							{
							document.getElementById(tableau[i]).className = 'erreur';
							}
							error++;
							}
						}
					break;	
					}
			break;
			}
		}
	return error;	
	}
	
// fonction de verification par expression régulière
function verifRegExp(element, expreg, required, classe, error)
	{
		if(required)
				{
				if(expreg.test(document.getElementById(element).value)==false)
					{
					document.getElementById(element).className = classe;
					error++;
					}
				}
				else
				{
				if(expreg.test(document.getElementById(element).value)==false && document.getElementById(element).value != "")
					{
					document.getElementById(element).className = classe;
					error++;
					}
				}
			return error;	
	}