﻿	/*
		var msg_1 = 'Erreur:';
		var_1[0] = new Array('nom','check','message_erreur',/regexp_1/);
  	var_1[1] = new Array('nom','check','message_erreur','');

			Explications:

				Paramètre 				Exemple 													Description 
				------------------------------------------------------------------------------------------------------
				name 							rue 															L'attribut name de l'élément qui doit être vérifié 
				check 	 					e 																Vérification qui doit être effectuée 
				message_erreur   	Vous n'avez pas mentionné de rue 	Message erreur pour l'élément concerné 
				regexp   					[0-9A-Za-z]{3,16} ou 20						Expression régulière  ou la taille
				msg   						Une erreur est survenue  					Titre personnalisé pour le message d'erreur
				 
	Lors d'une vérification d'après r l'expression régulière doit figurer entre 
	des barres obliques sans apostrophes (/[0-9A-Za-z]{3,16}/), 
	dans tous les autres cas doivent être notés ici des apostrophes sans contenu ('').

	Valeurs possibles pour check_n:

				Valeur 	Origine 		Vérification 
				-------------------------------------------------------------------------------------------------------
				e 			Non vide 		L'élément ne doit pas être vide 
				n 			Nombre 			L'élément doit être un nombre 
				m 			Mail 				Une adresse élctronique doit être exacte sur la forme 
				r 			Regexp 			La valeur doit correspondre à un modèle déterminé 
				p 			Prix 				La valeur doit se présenter sous la forme "10,00" (avec virgule) 
				p. 			Prix_Point 	La valeur doit se présenter sous la forme "10.00" (avec point) 
				c 			Capitalize 	Les noms propres doivent être corrigés 
 				t				Longueur		Contrôle si on dépasse pas la taille max
 				d				Date				Contrôle si le format date est correct

	L'appel :
		Il peut être appelé avec deux ou trois paramètres:

  		<form name="nom_formulaire" id="nom_formulaire" onSubmit="return validate(this,var_1)">
  		<form name="nom_formulaire" id="nom_formulaire" onSubmit="return validate(this,var_1,msg_1)">

	*/
	function validate(sender,myarray,err_hd) 
	{
		 //alert('Bienvenue dans le module de contrôle');
		var message_erreur = !err_hd?new Array('Les erreurs suivantes sont survenues:\n'):new Array(err_hd+'\n');
		
		var error = false;
		 //alert('nombre de contrôle : ' + myarray.length );
		for (i=0;i<myarray.length;i++) 
		{
		  field = document.forms[sender].elements[myarray[i][0]];

		/* Bloc 1 vérifie les champs qui doivent être renseignés */
		  if (myarray[i][1].indexOf('e')>-1) 
		  {
		    if (!field.value) {
		      error = true;
		      message_erreur.push(myarray[i][2]);
		    }
		  }
		  
		/* Bloc 2 vérifie si l'adresse électronique est correcte dans la forme */
		  else if (myarray[i][1].indexOf('m')>-1) {
		    if (field.value) {
		      var usr = "([a-zA-Z0-9][a-zA-Z0-9_.-]*|\"([^\\\\\x80-\xff\015\012\"]|\\\\[^\x80-\xff])+\")";
		      var domain = "([a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,5}";
		      var regex = "^"+usr+"\@"+domain+"$";
		      var myrxp = new RegExp(regex);
		      var check = (myrxp.test(field.value));
		        if (check!=true) {
		          error=true;
		          message_erreur.push(field.value+" "+myarray[i][2]);
		        }
		      }
		    }
	
		/* Bloc 3 vérifie les champs dont la valeur doit être numérique */
		  else if (myarray[i][1].indexOf('n')>-1) {
		    var num_error = false;
		    if(field.value) {
		      var myvalue = field.value;
		      var num = myvalue.match(/[^0-9,\.]/gi)
		      var dot = myvalue.match(/\./g);
		      var com = myvalue.match(/,/g);
		      if (num!=null) {
		        num_error = true;
		      }
		      else if ((dot!=null)&&(dot.length>1)) {
		        num_error = true;
		      }
		      else if ((com!=null)&&(com.length>1)) {
		        num_error = true;
		      }
		      else if ((com!=null)&&(dot!=null)) {
		        num_error = true;
		      }
		    }
		    if (num_error==true) {
		        error = true;
		        message_erreur.push(myvalue+" "+myarray[i][2]);
		    }
		  }
		
		/* Bloc 4 vérifie la valeur à l'aide d'une expression régulière sur un modèle déterminé */
		  else if (myarray[i][1].indexOf('r')>-1) {
		    var regexp = myarray[i][3];
		    if (field.value) {
		      if (!regexp.test(field.value)) {
		        error = true;
		        message_erreur.push(field.value+" "+myarray[i][2]);
		      }
		    }
		  }
		
		/* Bloc 5 vérifie les champs qui doivent être formatés comme des prix et modifie éventuellement le formatage */
		  else if (myarray[i][1].indexOf('p')>-1) {
		    var myvalue = field.value;
		    var reg = /,-{1,}|\.-{1,}/;
		    var nantest_value = myvalue.replace(reg,"");
		    var num = nantest_value.match(/[^0-9,\.]/gi)
		    sep = myarray[i][1].substr(1,1)?myarray[i][1].substr(1,1):',';
		    if (field.value) {
		      var myvalue = field.value.replace(/\./,',');
		      if (myvalue.indexOf(',')==-1) {
		        field.value = myvalue+sep+'00';
		      }
		      else if (myvalue.indexOf(",--")>-1) {
		        field.value = myvalue.replace(/,--/,sep+'00');
		      }
		      else if (myvalue.indexOf(",-")>-1) {
		        field.value = myvalue.replace(/,-/,sep+'00');
		      }
		      else if (!myvalue.substring(myvalue.indexOf(',') + 2)) {
		        error=true;
		        message_erreur.push(field.value+" "+myarray[i][2]);
		      }
		      else if (myvalue.substring(myvalue.indexOf(',') + 3)!='') {
		        error=true;
		        message_erreur.push(field.value+" "+myarray[i][2]);
		      }
		      else if (num!=null) {
		        error=true;
		        message_erreur.push(field.value+" "+myarray[i][2]);
		      }
		    }
		  }
		
		/* Bloc 6 vérifie les champs de nom et rectifie éventuellement la casse */
		  else if (myarray[i][1].indexOf('c')>-1) {
		    var noble = new Array(" d\'", "de","von","van","der","d","la","da","of");
		    var newvalue='';
		    var myvalue = field.value.split(/\b/);
		    for (k=0;k<myvalue.length;k++) {
		      newvalue+= myvalue[k].substr(0,1).toUpperCase()+myvalue[k].substring(1);
		    }
		    for(k=0;k<noble.length;k++){
		      var reg = new RegExp ("\\b"+noble[k]+"\\b","gi");
		      newvalue = newvalue.replace(reg,noble[k]);
		    }
		    field.value = newvalue;
		  }
		  
		/* Bloc 7 vérifie le nombre de caractère max */
		  else if (myarray[i][1].indexOf('t')>-1) 
		  {
		    var maxTaille = myarray[i][3];
		    if (field.value) {
		    	var taille = field.value.length
		      if ( taille > maxTaille ) {
		        error = true;
		        message_erreur.push(field.value+" "+myarray[i][2]);
		      }
		    }
		  }
		  
		/* Bloc 8 vérifie la date */
			else if  (myarray[i][1].indexOf('d')>-1)
			{
				if (field.value)
				{
					if( fctCtrlDate(field.value) == false)
					{
						error = true ;
						message_erreur.push(field.value+" "+myarray[i][2]);
					}
				}
			}
		}
		
		
		/* En cas d'erreur, les messages d'erreur récoltés sont exploités ici puis affichés.
		   Si le formulaire est correctement rempli, il est transmis */
		  if (error) {
		    message_erreur = message_erreur.join('\n\xB7 ');
		    alert(message_erreur);
		    return false;
		  }
		  else {
		    return true;
		  }
		}
		
/*
 !--------------------------------------------------------------!
 ! Fonction permettant de controler le format de la date 	!
 !------------------------------------------------------------!
*/
 function fctCtrlDate(dteTemp)
{
// Contrôle de la longeur de la chaine (10)
	if (dteTemp.length !=10 )
	{
//		alert ("Pas la bonne longeur");
		return false ;
	}
// Controle des caractères intermédiaire
	if ( dteTemp.substr(2,1) != "/"  || dteTemp.substr(5,1) != "/" )
	{
//		alert ("Pas le bon caractère");
		return false ;
	}
// Controle du Mois de 1 a 12
	if ( dteTemp.substr(3,2) < "01"  || dteTemp.substr(3,2) > "12" )
	{
//		alert ("Pas le bon mois");
		return false ;
	}
// Controle du jour : 31
	if ( dteTemp.substr(3,2) == "01" || dteTemp.substr(3,2) == "03" || dteTemp.substr(3,2) == "05" || dteTemp.substr(3,2) == "07" || dteTemp.substr(3,2) == "08" || dteTemp.substr(3,2) == "10" || dteTemp.substr(3,2) == "12" )
	{
		if ( dteTemp.substr(0,2) < "01" || dteTemp.substr(0,2) > "31" )
		{
	//		alert ("Pas le bon Jours");
			return false ;
		}
  	}
// Controle du jour : 30
	if ( dteTemp.substr(3,2) == "04" || dteTemp.substr(3,2) == "06" || dteTemp.substr(3,2) == "09"|| dteTemp.substr(3,2) == "11" )
	{
		if ( dteTemp.substr(0,2) < "01" || dteTemp.substr(0,2) > "30" )
		{
		//	alert ("Pas le bon Jours");
			return false ;
		}
	}
// Controle du jour : mois de Février
	if ( dteTemp.substr(3,2) == "02" )
	{
		if ( dteTemp.substr(0,2) < "01" || dteTemp.substr(0,2) > "29" )
		{
	//		alert ("Pas le bon Jours (b)");
			return false ;
		}
		if (dteTemp.substr(6, dteTemp.length-6) % 4 !=0 && dteTemp.substr(0,2) > "28" )
		{
//			alert ("Pas le bon Jours");
			return false ;
		}
	}
	return true ;
}	

function MaH()
{

    ToDay = new Date ;
    strDATEHEURE = "";
    
    Inter  = ToDay.getDate() ;
    if (Inter <10) strDATEHEURE += "0";
    strDATEHEURE += Inter + "/" ;
    Inter  = ToDay.getMonth() + 1;
    if (Inter <10) strDATEHEURE += "0";
    strDATEHEURE += Inter + "/" ;
    Inter  = ToDay.getFullYear() ;
    if (Inter <10) strDATEHEURE += "0";
    strDATEHEURE += Inter + " - " ;
    Inter  = ToDay.getHours() ;
    if (Inter <10) strDATEHEURE += "0";
    strDATEHEURE += Inter + ":" ;
    Inter  = ToDay.getMinutes () ;
    if (Inter <10) strDATEHEURE += "0";
    strDATEHEURE += Inter + ":" ;
    Inter  = ToDay.getSeconds() ;
    if (Inter <10) strDATEHEURE += "0";
    strDATEHEURE += Inter + "" ;
    
    setTimeout("MaH()",60);
    return strDATEHEURE;
}

function AffDate()
{

    ToDay = new Date ;
    strDATEHEURE = "";
    
    Inter  = ToDay.getDate() ;
    if (Inter <10) strDATEHEURE += "0";
    strDATEHEURE += Inter + "/" ;
    Inter  = ToDay.getMonth() + 1;
    if (Inter <10) strDATEHEURE += "0";
    strDATEHEURE += Inter + "/" ;
    Inter  = ToDay.getFullYear() ;
    if (Inter <10) strDATEHEURE += "0";
    strDATEHEURE += Inter + "" ;

    return strDATEHEURE;
}

// Script by Jean-Pascal Budliger (Jean-Pascal@CyberBud.com) Lausanne-Suisse (c) 2000
function getVar (nomVariable)
{
	var infos = location.href.substring(location.href.indexOf("?")+1, location.href.length)+"&"
	//alert (infos);
	if (infos.indexOf("#")!=-1)
		infos = infos.substring(0,infos.indexOf("#"))+"&"
	var variable=0
	{
		nomVariable = nomVariable + "="
		var taille = nomVariable.length
		if (infos.indexOf(nomVariable)!=-1)
			variable = infos.substring(infos.indexOf(nomVariable)+taille,infos.length).substring(0,infos.substring(infos.indexOf(nomVariable)+taille,infos.length).indexOf("&"))
	}
	return variable
}
