// JavaScript Document
function checkEmail(email) {

	email = email + "";
	var reg = /^([_a-z0-9-]+(\.[_a-z0-9-]+)*)@([_a-z0-9-]+(\.[_a-z0-9-]+)*)\.([a-z]{2,6})$/i;

	return reg.test(email);

}

function IsURL(string){
    return (/^(((ht|f)tp(s?))\:\/\/)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/.test(string.toLowerCase()));
};


function affichageErreur(strDiv, strChaine){
	// construction de l'objet en fonction du DOM
	obj_Texte = new Object;
	if (document.getElementById){
		obj_Texte = document.getElementById(strDiv);
	} else if (document.layers){
		obj_Texte = document.layers[strDiv]; 	
	} else if (document.all){
		obj_Texte = document.all[strDiv]; 
	}
	obj_Texte.style.display='inline';
	// ecriture du message d'erreur
	obj_Texte.innerHTML = strChaine;
}

function isValidPostalcode(postalcode) {
      if (postalcode.length == 6 && postalcode.search(/^[a-zA-Z]\d[a-zA-Z]\d[a-zA-Z]\d$/) != -1){
		  retour=true;
	  }
      else if (postalcode.length == 7 && postalcode.search(/^[a-zA-Z]\d[a-zA-Z](-|\s)\d[a-zA-Z]\d$/) != -1) {
		  retour=true;
	  }
      else {
		  retour=false;
	  }
	return retour;
}





function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}


function trouverNbJourDandMois(mois) {
		var nbJours= 31 ;
		if (mois==4 || mois==6 || mois==9 || mois==11) { nbJours = 30}
		if (mois==2) {nbJours = 29}
  return nbJours;
}








function validerDate(date,quand){
//si quand est egale a p, la date doit etre inferieur a la date du jour
//si quand est egale a f, la date doit etre superieur a la date du jour
//si quand est egale a t, la date peut etre inferieur ou superieur a la date du jour


var separateur="-";
var dateDuJour = new Date();
var dateAverifier=new Date();
var dateLimitInf=new Date();
var dateLimitSup=new Date();

dateLimitInf.setDate(01); dateLimitInf.setMonth(0); dateLimitInf.setFullYear(1900);
dateLimitSup.setDate(01); dateLimitSup.setMonth(0); dateLimitSup.setFullYear(2100);

if (quand=="f"){
dateLimitInf=new Date();
}
else if (quand=="p"){
dateLimitSup=new Date();
}




//verifie que c'est le bon séparateur et qu'il y a bien 10 caracteres
if (date.indexOf(separateur)!=-1 && date.length==10){
	//verifie que les separateur sont bien placé
	var pos1=date.indexOf(separateur)
	var pos2=date.indexOf(separateur,pos1+1)
	var strYear=date.substring(0,pos1)
	var strMonth=date.substring(pos1+1,pos2)
	var daysInMonth = trouverNbJourDandMois(strMonth);
	var strDay=date.substring(pos2+1)
	dateAverifier.setDate(strDay); dateAverifier.setMonth(strMonth-1); dateAverifier.setFullYear(strYear);
	//verifie que les separateur sont bien placé et qu'il n'y a que des chiffres entre les séparateur
	if (pos1!=-1 && pos2!=-1 && !isNaN(strYear) && !isNaN(strMonth)  && !isNaN(strDay)){
		if (strYear.length != 4){
		return false;
		}
		else if (strMonth.length!=2 || strMonth<1 || strMonth>12){
		return false;
		}
		else if (strDay.length!=2 || strDay<1 || strDay>31 || (strMonth==2 && strDay>daysInFebruary(strYear)) || strDay > daysInMonth){
		return false;
		}
		else if (dateAverifier<dateLimitInf || dateAverifier>dateLimitSup){
		return false;
		}
		else{
		return true;	
		}
	}
	else{
		return false;
	}
}
else{
	return false;
}


}








function validerDateHeure(date,quand){
//si quand est egale a p, la date doit etre inferieur a la date du jour
//si quand est egale a f, la date doit etre superieur a la date du jour
//si quand est egale a t, la date peut etre inferieur ou superieur a la date du jour


var separateur="-";
var separateurMin=":";
var separateurDateHeure=" ";
var dateDuJour = new Date();
var dateAverifier=new Date();
var dateLimitInf=new Date();
var dateLimitSup=new Date();

dateLimitInf.setDate(01); dateLimitInf.setMonth(0); dateLimitInf.setFullYear(1900);
dateLimitSup.setDate(01); dateLimitSup.setMonth(0); dateLimitSup.setFullYear(2100);

/*if (quand=="f"){
dateLimitInf=new Date();
}
else if (quand=="p"){
dateLimitSup=new Date();
}*/




//verifie que c'est le bon séparateur et qu'il y a bien 10 caracteres
if (date.indexOf(separateur)!=-1 && date.indexOf(separateurMin)!=-1 && date.indexOf(separateurDateHeure)!=-1 && date.length==16){
	//verifie que les separateur sont bien placé
	var pos1=date.indexOf(separateur)
	var pos2=date.indexOf(separateur,pos1+1)
	var pos3=date.indexOf(separateurMin,pos2+1)
	var pos4=date.indexOf(separateurDateHeure,pos1+1)
	var strYear=date.substring(0,pos1)
	var strMonth=date.substring(pos1+1,pos2)
	var daysInMonth = trouverNbJourDandMois(strMonth);
	var strDay=date.substring(pos2+1,pos4)
	var strMin=date.substring(pos3+1);
	var strHeure=date.substring(pos4+1,pos3);
	dateAverifier.setDate(strDay); dateAverifier.setMonth(strMonth-1); dateAverifier.setFullYear(strYear);
	//verifie que les separateur sont bien placé et qu'il n'y a que des chiffres entre les séparateur
	if (pos1!=-1 && pos2!=-1 && pos3!=-1 && !isNaN(strYear) && !isNaN(strHeure) && !isNaN(strMonth)  && !isNaN(strDay) && !isNaN(strMin)){
		
		if (strYear.length != 4){
		return false;
		}
		else if (strMonth.length!=2 || strMonth<1 || strMonth>12){
		
		return false;
		}
		else if (strDay.length!=2 || strDay<1 || strDay>31 || (strMonth==2 && strDay>daysInFebruary(strYear)) || strDay > daysInMonth){
			
		return false;
		}
		else if (strHeure.length!=2 || strHeure<0 || strHeure>23){
			
		return false;	
		}
		else if (strMin.length!=2 || strMin<0 || strMin>59){
		
		return false;	
		}
		/*else if (dateAverifier<dateLimitInf || dateAverifier>dateLimitSup){
		return false;
		}*/
		else{
		return true;	
		}
	}
	else{

		return false;
	}
}
else{

	return false;
}
}







function validerHeure(heure){
var separateurMin=":";

//verifie que c'est le bon séparateur et qu'il y a bien5 caracteres
if (heure.indexOf(separateurMin)!=-1 && heure.length==5){
	//verifie que les separateur sont bien placé
	var pos1=heure.indexOf(separateurMin)
	var strHeure=heure.substring(0,pos1)
	var strMin=heure.substring(pos1+1);

	if (pos1!=-1 && !isNaN(strHeure)  && !isNaN(strMin)){
		
		if (strHeure.length!=2 || strHeure<0 || strHeure>23){	
		return false;	
		}
		else if (strMin.length!=2 || strMin<0 || strMin>59){
		return false;	
		}
		/*else if (dateAverifier<dateLimitInf || dateAverifier>dateLimitSup){
		return false;
		}*/
		else{
		return true;	
		}
	}
	else{
		return false;
	}
}
else{

	return false;
}
}













function comparerDate(dateDebut,dateFin){
	var dateDecomposerDebut=DecomposeDate(dateDebut);
	var dateDecomposerFin=DecomposeDate(dateFin);
	var dateDebutAVerifier=new Date();
	var dateFinAVerifier=new Date();
	dateDebutAVerifier.setDate(dateDecomposerDebut[2]); 
	dateDebutAVerifier.setMonth(dateDecomposerDebut[1]-1); 
	dateDebutAVerifier.setFullYear(dateDecomposerDebut[0]);
	
	dateFinAVerifier.setDate(dateDecomposerFin[2]); 
	dateFinAVerifier.setMonth(dateDecomposerFin[1]-1); 
	dateFinAVerifier.setFullYear(dateDecomposerFin[0]);
	if (dateFinAVerifier<=dateDebutAVerifier){
		return false;
	}
	else{
		return true;	
	}
}



function DecomposeDate(date){ 
var separateur="-";
var pos1=date.indexOf(separateur)
	var pos2=date.indexOf(separateur,pos1+1)
	var strYear=date.substring(0,pos1)
	var strMonth=date.substring(pos1+1,pos2)
	var daysInMonth = trouverNbJourDandMois(strMonth);
	var strDay=date.substring(pos2+1)


LeRetour = new Array(3);
LeRetour[0]=strYear;
LeRetour[1]=strMonth;
LeRetour[2]=strDay;
return LeRetour;
}

