// Boucle de validation
function validateForm(form,title) 
{
	var err=0;
	var msg='<fieldset id="error" class="vis"><legend>' + title + '</legend><ul>';
	return_validateInput = validateInput(document.getElementsByTagName("input"));
	err+=return_validateInput[0];
	msg+=return_validateInput[1];
	return_validateInput = validateInput(document.getElementsByTagName("select"));
	err+=return_validateInput[0];
	msg+=return_validateInput[1];
	validateInput(document.getElementsByTagName("textarea"));
	err+=return_validateInput[0];
	msg+=return_validateInput[1];
	if (err==0) 
	{return(true);}
	else
	{
	msg+="</ul></fieldset>";
	document.getElementById("error").innerHTML=msg;
	return false;
	}
}
function validateInput(domElements) 
{	
	var validateInput_err=0;	
	var validateInput_msg='';
	for (i = 0; i < domElements.length; i++) 
		{
			if (domElements[i].className=="oblig") 
			{
				if (!(isNotEmpty(domElements[i]))) 
				{
				validateInput_err++;validateInput_msg+="<li>" + domElements[i].title + "</li>";
				continue;
				}
			}
			if (domElements[i].name.substring(0,5)=="eMail")
			{
				if (!(isEMailAddr(domElements[i])))
				{
				validateInput_err++;validateInput_msg+="<li>" + domElements[i].title + "</li>";
				continue;
				}
			}
			if (domElements[i].name.substring(0,4)=="Date")
			{
				if (!(isDate(domElements[i])))
				{
				validateInput_err++;validateInput_msg+="<li>" + domElements[i].title + "</li>";
				continue;
				}
			}
			if (domElements[i].name.substring(12,17)=="Futur")
			{
				if (!(isDateFuture(domElements[i])))
				{
				validateInput_err++;validateInput_msg+="<li>" + domElements[i].title + "</li>";
				continue;
				}
			}
			if (domElements[i].name.substring(12,17)=="_Past")
			{
				if (!(isDatePast(domElements[i])))
				{
				validateInput_err++;validateInput_msg+="<li>" + domElements[i].title + "</li>";
				continue;
				}
			}
			if (domElements[i].name.substring(12,17)=="Min18")
			{
				if (!(isDateMin18(domElements[i])))
				{
				validateInput_err++;validateInput_msg+="<li>" + domElements[i].title + "</li>";
				continue;
				}
			}
			if (domElements[i].name.substring(0,4)=="nbre")
			{
				if (!(isNumber(domElements[i])))
				{
				validateInput_err++;validateInput_msg+="<li>" + domElements[i].title + "</li>";
				continue;
				}
			}
		}
	return_validateInput = new Array();
	return_validateInput[0] = validateInput_err;
	return_validateInput[1]	= validateInput_msg;
	return return_validateInput;
}
// Vérifie si un champ a bien été renseigne
function isNotEmpty(elem) 
{	
	var str = elem.value;
	//var re = /.+/;
	var re = /^\w/;
	if(!str.match(re))
	{
		setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
		return false;
    } 
    else 
    {
     return true;
    }
}
// Vérifie si l'adresse e-mail est valide
function isEMailAddr(elem) 
{
	isNotEmpty(elem);
	var str = elem.value;
    var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
    if (!str.match(re)) 
    {
        //elem.form.error.className='vis';
        setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
        return false;
    } 
    else 
    {
        return true;
    }
}
function isDate(elem) 
{
	isNotEmpty(elem);
	var str = elem.value;
    var re = /^[0-9][0-9]\/[0-9][0-9]\/[0-9][0-9][0-9][0-9]$/;
    if (!str.match(re)) 
    {
        //elem.form.error.className='vis';
        setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
        return false;
    } 
    else 
    {
        return true;
    }
}
//Vérifie si un champ ne contient que des chiffres
function isNumber(elem) 
{
	isNotEmpty(elem);
	var str = elem.value;
    var re = /^[-]?\d*\.?\d*$/;
    str = str.toString();
    if (!str.match(re)) 
    {
        /*alert("Veuillez respecter le format de date de naissance suivant : '05031970' pour '5 mars 1970'.");*/
		//elem.form.error.className='vis';
        setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
        return false;
    }
    else
    {
    return true;
    }
}

// Vérifie si un champ contient 8 caractères
function isLen8(elem) 
{
	var str = elem.value;
    var re = /\b.{8}\b/;
    if (!str.match(re)) 
    {
        elem.form.error.className='vis';
        setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
        return false;
    } 
    else 
    {
        return true;
    }
}

// Positionne le curseur dans un champ donné
function focusElement(formName, elemName) 
{
	var elem = document.forms[formName].elements[elemName];
    elem.focus();
    //elem.select();
}
function getDate(strDate){	  
	    day = strDate.substring(0,2);
		month = strDate.substring(3,5);
		year = strDate.substring(6,10);
		d = new Date();
		d.setDate(day);
		d.setMonth(month-1);
		d.setFullYear(year); 
		return d;  
}
function getDateMin18(strDate){	  
	    day = strDate.substring(0,2);
		month = strDate.substring(3,5);
		year = strDate.substring(6,10);
		d = new Date();
		d.setDate(day);
		d.setMonth(month-1);
		d.setFullYear(year); 
		return d;  
}
	  
function compare(date_1, date_2){
	  //Retourne:
	  //   0 si date_1=date_2
  	  //   1 si date_1>date_2
	  //  -1 si date_1<date_2	  
	    diff = date_1.getTime()-date_2.getTime();
	    return (diff==0?diff:diff/Math.abs(diff));
	  }

function isDateFuture(elem)
{datedujour = new Date();
	if (!(compare(getDate(elem.value),datedujour)==1)) 
    {
        //elem.form.error.className='vis';
        setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
        elem.value='';
		return false;
    } 
    else 
    {
        return true;
    }
	}

function isDatePast(elem)
{datedujour = new Date();
	if (!(compare(getDate(elem.value),datedujour)==-1)) 
    {
        //elem.form.error.className='vis';
        setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
        elem.value='';
		return false;
    } 
    else 
    {
        return true;
    }
	}
	
function isDateMin18(elem)
{datedujour = new Date();
dateMin18 = new Date(datedujour.getFullYear()-18, datedujour.getMonth(), datedujour.getDay(), datedujour.getHours(), datedujour.getMinutes(), datedujour.getSeconds());
	if (!(compare(getDate(elem.value),dateMin18)==-1)) 
    {
        //elem.form.error.className='vis';
        setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
        elem.value='';
		return false;
    } 
    else 
    {
        return true;
    }
	}