//* VALIDATION DES SAISIE *//

var validator = new FormValidator();

function FormValidator()
{
	this.func = new Array();
}
FormValidator.prototype.register = function (func)
{
	this.func.push(func);
}
FormValidator.prototype.check = function()
{
	for(i=0; i<this.func.length; i++)
	{
		if(eval(this.func[i]) == false)
			return false;
	}
	return true;
}
FormValidator.prototype.clean = function ()
{
	this.func = new Array();
}



// Indicateur d'erreur
function showError(input,mode){

	switch(mode)
		{
			case "ON":
				input.style.border = "1px #FF0000 solid"
			break;
			
			case "OFF":
				input.style.border = "0px"
			break;
		}
}

// Verification des valeurs nulles ou champs vides
function checkInt(input,err_mess){
	
	valeur = input.value;
	
	if(valeur != ""){
		if( !isNaN(valeur) ){
			showError(input,"OFF")
			return true
		}
		else{
			showError(input,"ON")
			alert('Une erreur a été détectée. Le champ "'+err_mess+'" doit contenir des chiffres.');
			return false
		}
	} else {
			showError(input,"OFF")
			return true
	}

}

// Verification des valeurs nulles ou champs vides
function checkString(input,err_mess){
	
	valeur = input.value;
	
	if(valeur != ""){
		if( (valeur.indexOf('0') == -1) && (valeur.indexOf('1') == -1) && (valeur.indexOf('2') == -1) && (valeur.indexOf('3') == -1) && (valeur.indexOf('4') == -1) && (valeur.indexOf('5') == -1) && (valeur.indexOf('6') == -1) && (valeur.indexOf('7') == -1) && (valeur.indexOf('8') == -1) && (valeur.indexOf('9') == -1) ){
			showError(input,"OFF")
			return true
		}
		else{
			showError(input,"ON")
			alert('Une erreur a été détectée. Le champ "'+err_mess+'" ne doit pas contenir des chiffres.');
			return false
		}
	} else {
			showError(input,"OFF")
			return true
	}

}


// Verification des valeurs nulles ou champs vides
function checkNull(input,err_mess){
	
	valeur = input.value;
	if(valeur != "" && valeur !=" " && valeur !="  " && valeur !="   " && valeur !="    " && valeur != null){
		showError(input,"OFF")
		return true
	}
	else{
		showError(input,"ON")
		alert('Une erreur a été détectée. Le champ "'+err_mess+'" est obligatoire.');
		return false
	}

}

// Verification des valeur comprise entre X et Y
function checkNumb(input, err_mess, mini, maxi){
	
	valeur = input.value;
	if(  (valeur != "")  && (valeur >= mini) && (valeur <= maxi) && (valeur.indexOf('.') == -1) ){
		showError(input,"OFF")
		return true
	}
	else{
		showError(input,"ON")
		alert('Une erreur a été détectée. Le champ "'+err_mess+'" est obligatore et doit contenir un entier compris entre '+mini+' et '+maxi+'.');
		return false
	}

}


// Verification des selections de liste
function checkSelection(input, err_mess){
	
	if(  input.selectedIndex != 0 ){
		showError(input,"OFF")
		return true
	}
	else{
		showError(input,"ON")
		alert('Une erreur a été détectée. Vous devez sélectionner une valeur du champs de selection "'+err_mess+'".');
		return false
	}

}

// Verification des selections de liste multiple
function checkSelection_Multiple(input, err_mess){
	
	if(  input.selectedIndex != -1 ){
		showError(input,"OFF")
		return true
	}
	else{
		showError(input,"ON")
		alert('Une erreur a été détectée. Vous devez sélectionner une ou plusieurs valeurs du champs de selection "'+err_mess+'".');
		return false
	}

}

function checkCheckbox(input, err_msg)
{
	if(  input.checked ){
		showError(input,"OFF")
		return true
	}
	else{
		showError(input,"ON")
		alert('Une erreur a été détectée. Vous devez cocher "'+err_msg+'".');
		return false
	}
}

// Verification des selections de checkbox multiple
function checkBox_Multiple(id, nb, err_mess){
	 
	for(i=1; i<=nb; i++){
		
		input = document.getElementById(id+i)
		
		if(  input.checked ){
			showError(input,"OFF")
			checking = true
			break;
		}
		else{
			checking = false
		}
	}
	
	
	if(!checking){
		showError(input,"ON")
		alert('Une erreur a été détectée. Vous devez sélectionner un ou plusieurs choix pour le  champs : "'+err_mess+'".');
	}
	
	return checking;

}


// Verification des dates
function checkDate(input, err_mess){


	date = input.value
	nbrElmt = date.split("/");
	
	d = new Date()
	d.setYear(nbrElmt[2])
	d.setMonth(nbrElmt[1] - 1)
	d.setDate(nbrElmt[0])
	
	if(date != ''){
	
		if(  !isNaN(d.valueOf()) ){
			showError(input,"OFF")
			return true
		}else{
			showError(input,"ON")
			alert('Une erreur a été détectée. Le champ "'+err_mess+'" ne contient pas une date valide.');
			return false
		}
		
	} else {
			showError(input,"OFF")
			return true
	}

}

function checkDateDebut(input, err_mess){
	
	date = input.value
	nbrElmt = date.split("/");
	
	d = new Date()
	d.setYear(nbrElmt[2])
	d.setMonth(nbrElmt[1] - 1)
	d.setDate(nbrElmt[0])
	
	t = new Date()
	t.getYear()
	t.getMonth()
	t.getDate()
	
	if(date != ''){
		
		if(  !isNaN(d.valueOf()) ){
			
			if(  d.getTime() <= t.getTime()  ){
				showError(input,"OFF")
				return true
			} else {
				showError(input,"ON")
				alert('Une erreur a été détectée. Le champ "'+err_mess+'" ne peut être ultérieure à la date du jour.');
				return false
			}
			
		}else{
				showError(input,"ON")
				alert('Une erreur a été détectée. Le champ "'+err_mess+'" ne contient pas une date valide.');
				return false
		}
		
	} else {
				showError(input,"OFF")
				return true
	}

}

// comparation des dates
function comparDate(fr_date_debut, fr_date_fin, laps, err_mess){

	fr_date_d = fr_date_debut.value;
	fr_date_f = fr_date_fin.value;

	fr_elmt_d = fr_date_d.split("/");
	fr_elmt_f = fr_date_f.split("/");
	
	date_d = new Date();
	date_d.setYear(fr_elmt_d[2])
	date_d.setMonth(fr_elmt_d[1] - 1)
	date_d.setDate(fr_elmt_d[0])
	
	date_f = new Date();
	date_f.setYear(fr_elmt_f[2])
	date_f.setMonth(fr_elmt_f[1] - 1)
	date_f.setDate(fr_elmt_f[0])
	
	if( (fr_date_d != '') && (fr_date_f != '') ){
	
		if(date_d.getTime() <= date_f.getTime())
		{
			
			if(laps > 0){
				
				lapsTime = laps * 24 * 3600 * 1000;
				if( ( date_f.getTime() - date_d.getTime() ) <= lapsTime  ){
					showError(fr_date_debut,"OFF")
					showError(fr_date_fin,"OFF")
					return true
				} else {
					showError(fr_date_debut,"ON")
					showError(fr_date_fin,"ON")
					alert('Une incohérence a été détectée sur les champs date '+err_mess+'. L\'écart maximal autorisé entre ces deux dates est de : '+laps+' jours.');
					return false	
				}
				
			} else {
				showError(fr_date_debut,"OFF")
				showError(fr_date_fin,"OFF")
				return true
			}
		}
		else
		{
			showError(fr_date_debut,"ON")
			showError(fr_date_fin,"ON")
			alert('Une incohérence a été détectée sur les champs date '+err_mess);
			return false	
		}
	} else {
			showError(fr_date_debut,"OFF")
			showError(fr_date_fin,"OFF")
			return true
	}

}

function disabledDateFin(){
	
	demand_f	= document.getElementById('fin_demand');
	contrat 	= document.getElementById('typecontrat');
	contratValue = contrat[contrat.selectedIndex].value

	switch(contratValue){
		case "1": // contrat CDI
			demand_f.value = ""
			demand_f.disabled = true
		break;
		
		case "13": // contrat  CIRMA CDI
			demand_f.value = ""
			demand_f.disabled = true
		break;
		
		case "14": // contrat  CIE CDI
			demand_f.value = ""
			demand_f.disabled = true
		break;
		
		default:
			demand_f.disabled = false
		break;
	}
}

function checkHour(input, err_mess){
	
	heure = input.value
	
	if(heure != ''){
		
		if( (heure.indexOf(':') == -1) ){
			
				showError(input,"ON")
				alert('Une erreur a été détectée. Le champ "'+err_mess+" n'est pas valide.");
				return false
			
		} else {
			h = heure.split(":");
			
			if( !isNaN(h[0]) && !isNaN(h[1]) ){
				
				showError(input,"OFF")
				return true
				
			} else {
				
				showError(input,"ON")
				alert('Une erreur a été détectée. Le champ "'+err_mess+" n'est pas valide.");
				return false
				
			}
		}
		
	} else {
				showError(input,"OFF")
				return true
	}
	
	
}

// Verification des email
function checkEmail(input,err_mess){
	
	valeur = input.value;
	
	if(valeur != ''){
		if(  (valeur.indexOf('@') == -1) || (valeur.indexOf('.') == -1) ){
			showError(input,"ON")
			alert('Cette adresse email est invalide.');
			return false
		}
		else{
			showError(input,"OFF")
			return true
		}
	} else {
			showError(input,"OFF")
			return true
	}

}

// Verification des url
function checkUrl(input,err_mess){
	
	valeur = input.value;

	if(valeur != ''){
		if(  (valeur.indexOf('http://') == -1) || (valeur.indexOf('.') == -1) ){
			showError(input,"ON")
			alert('Cette adresse internet est invalide. Toute adresse internet doivent être précédée de http://');
			return false
		}
		else{
			showError(input,"OFF")
			return true
		}
	} else {
			showError(input,"OFF")
			return true
	}

}


// verification des extensions
function checkFile(file, extension){

	//ext_permit 	= new Array('doc', 'DOC', 'xls', 'XLS', 'ppt', 'PPT', 'pdf', 'PDF', 'jpg', 'JPG', 'jpeg', 'JPEG', 'gif', 'GIF', 'zip', 'ZIP', 'rar', 'RAR');
	ext_permit = extension;
	checking = false;
	if(file.value != ""){
		
			checking = false;
			fileValue	= file.value;
			filePart	= fileValue.split('.');
			fileExt		= filePart[1];
			
			for(e=0; e<=ext_permit.length; e++){
				if(ext_permit[e] == fileExt){
					checking = true;
					break;
				} 
			}
			
			if( !checking ) {
				showError(file,"ON")
				alert('Attention, ce fichier n\'est pas valide.');
				checking = false;
			} else {
				showError(file,"OFF")
				checking = true;
			}
			
	} else {
		checking = true;
	}
	return checking;
	
}

function checkMdp(input, input_verif)
{
	if(!checkNull(input, 'mot de passe') || !checkNull(input_verif, 'vérification du mot de passe'))
		return false;
		
	if(input.value == input_verif.value)
	{
		return true
	}
	else
	{
		showError(input_verif,"ON")
		alert('Le mot de passe n\'est pas identique dans les deux champs.');
		return false;
	}
}
