//* VALIDATION DES SAISIE *//

// Indicateur d'erreur
function showError(input,mode){

	switch(mode)
		{
			case "ON":
				input.style.border = "1px #FF0000 solid";
			break;
			
			case "OFF":
				input.style.border = "1px #CCCCCC solid";
			break;
		}
}

// Verification des valeurs nulles ou champs vides
function checkInt(input,err_mess){
	valeur = input.value;
	
	if(valeur != ""){
		if( !isNaN(valeur) ){
			showError(input,"OFF");
			input.focus();
			return true
		}
		else{
			showError(input,"ON");
			alert('Une erreur a été détectée. Le champ "'+err_mess+'" doit contenir des chiffres.');
			input.focus();
			return false
		}
	} else {
			showError(input,"OFF");
			return true
	}

}

// Verification des valeurs code postal
function checkCodePostal(input){
	valeur = input.value;
	
	if(valeur != ""){		
		var vfcp = /^[0-9]{5}$/;
		if(vfcp.test(valeur)==false)  {
			showError(input,"ON")
			alert('Une erreur a été détectée. Le champ Code Postal doit contenir 5 chiffres.');
			input.focus();
			return false;
		}		
		else {
			showError(input,"OFF");
			return true;				
		}
	} else {
			showError(input,"OFF");
			return true;
	}

}

// Verification des valeurs telephne
function checkTelephone(input, err_mess){
	valeur = input.value;
	
	if(valeur != ""){		
		var vftel = /^[0-9][0-9] [0-9][0-9] [0-9][0-9] [0-9][0-9] [0-9][0-9]$/;
		if(vftel.test(valeur)==false)  {
			showError(input,"ON")
			alert('Une erreur a été détectée. La valeur saisie pour le champ "'+err_mess+'" est invalide.');
			input.focus();
			return false;
		}		
		else {
			showError(input,"OFF");
			return true;				
		}
	} 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('Le champ "'+err_mess+'" ne doit pas contenir des chiffres.');
			input.focus();
			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 != "" ){
		showError(input,"OFF");
		return true;
	}
	else{
		showError(input,"ON");
		alert('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('Le champ "'+err_mess+'" est obligatore et doit contenir un entier compris entre '+mini+' et '+maxi+'.');
		input.focus();
		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('Vous devez sélectionner une valeur du champ de sélection "'+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('Vous devez sélectionner une ou plusieurs valeurs du champ de sélection "'+err_mess+'".');
		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('Vous devez sélectionner un ou plusieurs choix pour le  champ : "'+err_mess+'".');
	}
	
	return checking;

}

function DaysIn( inMONTH, inYEAR )
 {
  var m = 0;
  if (("§0§§2§§4§§6§§7§§9§§11§").indexOf("§" + inMONTH + "§") >= 0) {
   m = 31;
  } else if (("§3§§5§§8§§10§").indexOf("§" + inMONTH + "§") >= 0) {
   m = 30;
  } else {
   if (this.IsLeap(inYEAR)) {
    m = 29;
   } else {
    m = 28;
   }
  }
  return m;
 };
 
 function IsLeap( inYEAR )
 {
  if (inYEAR % 400 == 0) {
   return true;
  } else if ((inYEAR % 4 == 0) && (inYEAR % 100 != 0)){
   return true;
  } else {
   return false;
  }
 };

 function checkDateValue( inDATE )
 {
  var aD, dD, dM, dY, s, dYDigit;
  s = inDATE;
  aD = s.split("/");
  dD = Math.round(parseFloat(aD[0]));
  dM = Math.round(parseFloat(aD[1])) - 1;
  dY = Math.round(parseFloat(aD[2]));
  s = dY + "";
  dYDigit = s.length;
  if (isNaN(dD) || isNaN(dM) || isNaN(dY) || (dY < 1) || (dD < 1) || (dM < 0) || (dM > 11) || (dYDigit != 4) || (dD > this.DaysIn(dM, dY))){
   return false;
  } else{
   if (dM == 1) {
    if (!this.IsLeap(dY) && dD == 29) {
     return false;
    } else {
     return true;
    }
   } else {
    return true;
   }
  }
 };

// Verification des dates
function checkDate(input, err_mess){
	date = input.value;
	
	if(date != ''){
		var vfdate = /^[0-9][0-9]\/[0-9][0-9]\/[0-9][0-9][0-9][0-9]$/;
		if(vfdate.test(date)==false)  {
			showError(input,"ON");
			alert('Le champ "'+err_mess+'" ne contient pas une date valide.');
			return false;
		}
		else {
			if(checkDateValue(date) == false) {
				showError(input,"ON");
				alert('Le champ "'+err_mess+'" ne contient pas une date valide.');
				return false;				
			}
			else {
				showError(input,"OFF");
				return true;
			}
		}
		
		/*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('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('Le champ "'+err_mess+'" ne peut être ultérieure à la date du jour.');
				return false;
			}
			
		}else{
				showError(input,"ON");
				alert('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":
			demand_f.value = "";
			demand_f.disabled = true;
		break;
		
		case "13":
			demand_f.value = "";
			demand_f.disabled = true;
		break;
		
		case "14":
			demand_f.value = "";
			demand_f.disabled = true;
		break;
		
		default:
			demand_f.disabled = false;
		break;
	}
}

function checkHour(input, err_mess){
	heure = input.value;
	
	if(heure != ''){		
		var vfhour = /^[0-9][0-9]:[0-9][0-9]$/;
		if(vfhour.test(heure)==false)  {
			showError(input,"ON")
			alert('Le champ "'+err_mess+'" est invalide.');
			input.focus();
			return false;
		}	
		else {
			strHeure = parseInt(heure.substr(0, 2));
			strMinute = parseInt(heure.substr(3, 2));
			if(strHeure < 0 || strHeure > 23)   {
				showError(input,"ON")
				alert('Le champ "'+err_mess+'" est invalide.');
				input.focus();
				return false;
			}	
			else {
				if(strMinute < 0 || strMinute > 59)  {
					showError(input,"ON")
					alert('Le champ "'+err_mess+'" est invalide.');
					input.focus();
					return false;
				}							
				else {
					showError(input,"OFF");
					return true;					
				}
			}
		}
					
	
		/*if( (heure.indexOf(':') == -1) ){
			
				showError(input,"ON")
				alert('Le champ "'+err_mess+'" est invalide.");
				return false;
			
		} else {
			h = heure.split(":");
			
			if( !isNaN(h[0]) && !isNaN(h[1]) ){
				
				showError(input,"OFF")
				return true
				
			} else {
				
				showError(input,"ON")
				alert('Le champ "'+err_mess+'" est invalide.");
				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;
	}

}

// Date : 17/05/2010 - Fait par FD
// Objet : Vérification d'une liste d'emails séparés par le caractère ;
function checkEmailMulti(input,err_mess){
	
	valeur = input.value;
	
	if(valeur != ''){
		tabEmail = valeur.split(";");
		for(intCompteur = 0; intCompteur < tabEmail.length; intCompteur++) {
			strEmail = tabEmail[intCompteur];
			if((strEmail.indexOf('@') == -1) || (strEmail.indexOf('.') == -1) ){
				showError(input,"ON");
				alert("L'adresse email '" + tabEmail[intCompteur] + "' est invalide.");
				return false;
			}
		}

		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. Les adresses internet doivent être précédées 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 = extension;
	checking = false;
	if(file.value != ""){		
		checking = false;
		
		strFile = file.value;
		// Ce tableau liste tous les itérations séparées par des .
		var tableau = strFile.split(".");
		// On contrôle la dernière occurence (qui doit correspondre à l'extension)
		strExtension = tableau[tableau.length - 1];
		strExtension = strExtension.toUpperCase();
		
		for(e=0; e<=ext_permit.length; e++){
			if(ext_permit[e] == strExtension){
				checking = true;
				break;
			} 
		}			
		
		if( !checking ) {
			showError(file,"ON");
			alert('Attention, ce type fichier n\'est pas autorisé.');
			checking = false;
		} else {
			showError(file,"OFF");
			checking = true;
		}
			
	} else {
		checking = true;
	}
	return checking;	
}

// comparation des dates
function comparDateHeure(fr_date_debut, fr_date_fin, fr_heure_debut, fr_heure_fin, err_mess) {
	fr_date_d = fr_date_debut.value;
	fr_date_f = fr_date_fin.value;
	
	fr_heure_d = fr_heure_debut.value;
	fr_heure_f = fr_heure_fin.value;
	
	if((fr_date_d != '') && (fr_date_f != '')) {	
		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(date_d.getTime() <= date_f.getTime()) {	
			if(date_d.getTime() == date_f.getTime()) {	
				if(fr_heure_f != '') {
					fr_elmt_hd = fr_heure_d.split(":");
					fr_elmt_hf = fr_heure_f.split(":");
					
					heure_d = new Date();
					heure_d.setHours(fr_elmt_hd[0]);
					heure_d.setMinutes(fr_elmt_hd[1]);	
					
					heure_f = new Date();
					heure_f.setHours(fr_elmt_hf[0]);
					heure_f.setMinutes(fr_elmt_hf[1]);						
					
					if(heure_d.getTime() <= heure_f.getTime()) {
						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;					
				}
			}
			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 fctVerifNbeHeureAction(input, strMessage){
	valeur = input.value;
	
	if(valeur != ""){		
		var vfcp = /^[0-9]{1,5}$/;
		if(vfcp.test(valeur)==false)  {
			showError(input,"ON")
			alert(strMessage + ' doit être un nombre entier.');
			input.focus();
			return false;
		}		
		else {
			showError(input,"OFF");
			return true;				
		}
	} else {
			input.value = "0";
			showError(input,"OFF");
			return true;
	}
}

function fctVerifNbeMinuteAction(input, strMessage){
	valeur = input.value;
	
	if(valeur != ""){		
		var vfcp = /^[0-9]{1,2}$/;
		if(vfcp.test(valeur)==false)  {
			showError(input,"ON")
			alert(strMessage + ' doit être un nombre entier.');
			input.focus();
			return false;
		}		
		else {
			if(valeur > 59) {
				showError(input,"ON")
				alert(strMessage + ' doit être compris entre 0 et 59.');
				input.focus();
				return false;				
			}
			else {
				showError(input,"OFF");
				return true;			
			}
		}
	} else {
			input.value = "00";		
			showError(input,"OFF");
			return true;
	}
}