ns4 = (document.layers)? true:false
ie4 = (document.all && !document.getElementById)? true:false
dom = (document.getElementById)? true:false

var Taille_comment = 1000;	// Taille du champ de commentaire 
var Taille_prof = 1500;		// Taille du champ parcours professionnel
var Taille_motiv = 2000;	// Taille du champ motivations

language = new Array();
language["header"]	= "Erreur dans les informations saisies:";
language["start"]	= "->";
language["field"]	= " Le champ ";
language["require"]	= " ne peut être laissé vide";
language["min"]		= " et doit contenir au moins ";
language["exact"]	= " et doit contenir ";
language["max"]		= " et ne peut contenir plus de ";
language["minmax"]	= " et pas plus de ";
language["chars"]	= " caractères";
language["select"]	= " doit être selectionné";
language["radio"]	= " doit être selectionné";
language["num"]		= " doit être numérique";
language["email"]	= " doit contenir une adresse e-mail valide";
language["telephone"]	= " doit contenir un numero de téléphone valide";
language["date"]	= " doit contenir une date valide";


form_name = '';


function limite(champ,taille) { 
	if(champ.value.length >= taille) { 
		alert ("Vous avez dépassé le nombre maximum de caractères"); 
		champ.value = champ.value.substr(0, taille); 
		return false; 
		} 
	} 



checkObjects = new Array();

function define(element_name,type,HTMLname,min,max){
	eval("V_"+element_name+" = new formResult(document.forms[form_name].elements[element_name],type,HTMLname,min,max);");
	checkObjects[eval(checkObjects.length)] = eval("V_"+element_name);
	}



function formResult(form,type,HTMLname,min,max){
	this.form = form;
	this.type = type;
	this.HTMLname = HTMLname;
	this.min  = min;
	this.max  = max;
	}
	


function validate(id){

	checkObjects = new Array();
	eval('init_form'+id+'()');

	errors = "";
	
	if(checkObjects.length>0){
	
		for(i=0;i<checkObjects.length;i++){
		
			validateObject = new Object();
			validateObject.form = checkObjects[i].form;
			validateObject.HTMLname = checkObjects[i].HTMLname;
			validateObject.type = checkObjects[i].type;
			validateObject.min = checkObjects[i].min;
			validateObject.max = checkObjects[i].max;
			
			if (validateObject.type == "select" && ns4){		
				validateObject.val = validateObject.form.options[validateObject.form.selectedIndex].value;
				validateObject.len = validateObject.val.length;
				}
			else if (validateObject.type == "radio"){
				val=""
				for (j=0;j<validateObject.form.length;j++){
					if (validateObject.form[j].checked){val=validateObject.form[j].value}
					}
				validateObject.val = val;
				validateObject.len = validateObject.val.length;
				} 
			else {
				validateObject.val = checkObjects[i].form.value;
				validateObject.len = checkObjects[i].form.value.length;
				}
							
			
	
			if ( validateObject.type == "string" ){
			
				if ( validateObject.len < 0 ){ 
					errors += language['start'] + language['field'] + validateObject.HTMLname + language['require'] + "\n";
					}
					
				else if ( validateObject.len < validateObject.min ){ 
					errors += language['start'] + language['field'] + validateObject.HTMLname + language['require'] + language['min'] + validateObject.min + language['chars'] + "\n";
					} 
					
				else if ( validateObject.len > validateObject.max ){
					errors += language['start'] + language['field'] + validateObject.HTMLname + language['require'] + language['max'] + validateObject.max + language['chars'] + "\n";
					} 
					
				else if ( validateObject.min == validateObject.max && validateObject.len != validateObject.min ){
					errors += language['start'] + language['field'] + validateObject.HTMLname + language['require'] + language['exact'] + validateObject.max + language['chars']+"\n"; 
					} 
										
				} 
				
			else if ( validateObject.type == "num" ){
			
				re = /^[0-9\s]+$/g
				if ( validateObject.val.search(re) != 0 ){
					errors += language['start'] + language['field'] + validateObject.HTMLname + language['num'] + "\n";
					}
															
				else if ( validateObject.len < validateObject.min ){ 
					errors += language['start'] + language['field'] + validateObject.HTMLname + language['require'] + language['min'] + validateObject.min + language['chars'] + "\n";
					} 
					
				else if ( validateObject.len > validateObject.max ){
					errors += language['start'] + language['field'] + validateObject.HTMLname + language['require'] + language['max'] + validateObject.max + language['chars'] + "\n";
					} 
					
				} 
				
			else if ( validateObject.type == "select" ){
			
				if ( validateObject.val == "" || validateObject.val == -1 ){
					errors += language['start'] + language['field'] + validateObject.HTMLname + language['select']+"\n";
					} 
															
				} 
				
			else if ( validateObject.type == "telephone" ){
			
				re = /^[0-9()\+\s]+$/g
				if (validateObject.val.search(re) != 0 || validateObject.len < validateObject.min || validateObject.len > validateObject.max ){
					errors += language['start'] + language['field'] + validateObject.HTMLname + language['telephone'] + "\n";
					}
																			
				} 
				
			else if ( validateObject.type == "email" ){
			
				re = /^[a-zA-Z0-9\.\-_]+@[a-zA-Z0-9\.\-_]+\.[a-zA-Z]+$/g
				re2 = /\.[a-zA-Z]{2,4}$/
				if (validateObject.val.search(re) != 0 || validateObject.val.search(re2)==-1){
					errors += language['start'] + language['field'] + validateObject.HTMLname + language['email'] + "\n";
					}
					
				}
				
			else if ( validateObject.type == "date" ){
			
				re = /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/g
				if (validateObject.val.search(re) != 0 || validateObject.val.substr(0,2)>31 || validateObject.val.substr(3,2)>12 || validateObject.val.substr(6,4)>2000 || validateObject.val.substr(6,4)<1900 ){
					errors += language['start'] + language['field'] + validateObject.HTMLname + language['date'] + "\n";
					}
					
				}
				
			else if ( validateObject.type == "radio" ){
			
				if (validateObject.val == ""){
					errors += language['start'] + language['field'] + validateObject.HTMLname + language['radio'] + "\n";
					}
					
				}
			}
		}
	
	if (errors) {
		alert(language["header"].concat("\n"+errors));
		return false;
		} 
	else {
		return true;
		}
	
	
	}
