// JavaScript Document
//##############################


//Cette fonction renvoie la longueur d'une chaine
function length(A)
{
	return A.length
}

//Fonction TRIM enleve les espaces avant et aprés
function trim(myString){ 
	return myString.replace(/^\s+/g,'').replace(/\s+$/g,'') 
} 

//Impose un nombre de décimale à une valeur
function decimal(valeur,nbrdecimal){

	var nbrzero=""
	for (i=1; i<=nbrdecimal; i++){ 
		nbrzero = nbrzero + "0"
	} 
	Diviseur = parseInt("1" + nbrzero)
	
	return Math.round(Diviseur*parseFloat(valeur))/Diviseur;
	
	
}
function HeureDiff(heuredeb,heurefin){
	hd=heuredeb.split(":");
	hf=heurefin.split(":");
	hd[0]=eval(hd[0]);
	hd[1]=eval(hd[1]);
	if (hd[2] != undefined){
		hd[2]=eval(hd[2]);
	}
	hf[0]=eval(hf[0]);
	hf[1]=eval(hf[1]);
	if (hf[2] != undefined){
		hf[2]=eval(hf[2]);
	}
	if (hf[2] != undefined){
		if(hf[2]<hd[2]){
			hf[1]=hf[1]-1;
			hf[2]=hf[2]+60;
		}
	}
	if(hf[1]<hd[1]){
		hf[0]=hf[0]-1;
		hf[1]=hf[1]+60;
	}
	if(hf[0]<hd[0]){
		hf[0]=hf[0]+24;
	}
	heure1 = hf[0]-hd[0]
	heures = "00"+heure1.toString(10)
	minute1 = hf[1]-hd[1]
	minutes = "00"+minute1.toString(10)
	if (hf[2] != undefined){
		seconde1 = hf[2]-hd[2]
		secondes = "00"+seconde1.toString(10)
	}
	if (hf[2] != undefined){
		return Right(heures,2) + ":" + Right(minutes,2) + ":" + Right(secondes,2);
	}else{
		return Right(heures,2) + ":" + Right(minutes,2);
	}

}

function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}
function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}


//##############################
//Cette fonction permet de déterminé si une chaine est vide
function IsEmpty(A) 
{
 
 var B = "";
 for(i=0;i<=A.length;i++)
 {

  c=A.charAt(i); 
  if(c!=" ")
   B+=c;
  
 }
 return (B.length==0);
}
//#############################
//Cette fonction permet de déterminer si le chaine ne contient que du texte
function IsAlpha(A)
{

 if (A.length==0) return false;

 Alpha=" abcdefghijklmnopqrstuvwxyzéçèëöüïäù-ôûîêâ";
 Alpha=Alpha+Alpha.toUpperCase();

 for(i=0;i<=A.length;i++)

 {

  if (Alpha.indexOf(A.charAt(i))==-1)
  {

   return false;
  }

 }
 
return true;
}
//#############################
//fonction permettant de déterminer si la chaine est numérique et/ou un réel
//Format 0.25 ou +100 ou -10.5 mais pas .5 ou E+1.10 ou 10,5
function IsNumeric(A) {
	Digit="1234567890";
	coma=false;
	if (A.length==0) return false;
	c=A.charAt(0);
	if ((A.length==1) && ((c == "+") || (c =="-"))) return false;
	if ((Digit.indexOf(c) != -1) || (c == "+") || (c =="-"))
	{
		for (i = 1;i<=A.length;i++)
		{
			c=A.charAt(i);
			if (c==".")
			{
				if (coma) 
					return false;
				else
					coma=true;
			}
			else
			{				
				if (Digit.indexOf(c) == -1)
					return false;
			}
			
		}
		return true;
	}
	return false;
}

//#############################
//fonction permettant de déterminer si la chaine est un entier numérique
function IsInteger(A)
{

 Digit="1234567890";
 if (A.length==0) return false;
 c=A.charAt(0);
 if ((A.length==1) && ((c == "+") || (c =="-"))) return false;
 if ((Digit.indexOf(c) != -1) || (c == "+") || (c =="-"))
 {
	 for(i=1;i<=A.length;i++)
	 {
	  	if (Digit.indexOf(A.charAt(i))==-1)
	   	return false;
	 }
	return true;
 }
 return false;
}


//Verification de la validité d'une date avec plusieurs format possible
function IsDate3(Q,format){
		var f;
		switch(format) {
			case 0 : u="jj/mm/aaaa";break;
			case 4 : u="mm/aaaa";break;
			case 5 : u="aaaa";break;
			case 6 : u="[jj/]mm/aaaa";break;
			case 7 : u="[jj/mm/]aaaa";break;
		}
		//f="<%=Label(457,session("CodeLangue"))%> "+u 
		Datestr=Q.value;	
		switch (format) {
			case 4 : {
				if (Datestr.length==7)
					Datestr='15/'+Datestr;
				break;
			}
			
			case 5 : {
				if (Datestr.length==4)
					Datestr='15/06/'+Datestr;
				break;
			}
			
			case 6 : {
				if (Datestr.length==7)
					Datestr='15/'+Datestr;
				break;
			}

			case 7 : {
				if (Datestr.length==4)
					Datestr='15/06/'+Datestr;
				else if (Datestr.length==7)
					Datestr='15/'+Datestr;
				break;
			}
		}
		
		if (IsEmpty(Datestr))
			return false;

		if ((!IsDate1(Datestr)) || (Datestr.length<10) || (Datestr.substr(2,1)!='/') || (Datestr.substr(5,1)!='/'))
		{
			//alert(f);
			Q.value=Q.oldValue;
			return false;
		}
		return true;	
}






//#############################
//Fonction permettant de savoir si la champs est une date valide de type JJ/MM/AAAA (ex : 05/02/2000)
function IsDate1(DateData) {
	correct = true;
		//alert("tt");

if ( (DateData.length < 11) && (DateData.length > 7) ) {

		j = DateData.substring(0,2);
		m = DateData.substring(3,5);
		a = DateData.substring(6,DateData.length);
		if (!IsInteger(a)) return false;
			
		bi = ((parseInt(a) % 4) == 0);


		if (  ( (m == "01") || (m == "03") || (m == "05") || (m == "07") || (m == "08") || (m == "10") || (m == "12") ) && ( (Math.round(j) >= 1) && (Math.round(j) <= 31) ) ) {
			correct = true;
		}
		else {
			if (  ( (m == "04") || (m == "06") || (m == "09") || (m == "11") ) && ( (Math.round(j) >= 1) && (Math.round(j) <= 30) ) ) {
				correct = true;
			}
			else {
				if (bi)  {
					correct = (  ( (Math.round(j) >= 1) && (Math.round(j) <= 29) ) && (m == "02") );
				}
				else {
					correct = ( ( (Math.round(j) >= 1) && (Math.round(j) <= 28) ) && (m == "02")  );
				}
			}
		}
		if ((Math.round(a)<=1900) || (Math.round(a)>=2100)) 
			correct = false;
	}
	else {
		correct = false;
	}
	return correct;
}

//#############################
//Fonction permettant de savoir si le champs est une heure valide du type HH:MM (ex : 14:02)
function IsHeure1(HeureData) {
	if (HeureData.length == 5)	{
		h = HeureData.substring(0,2);
		m = HeureData.substring(3,5);
		return ((HeureData.substring(2,3)==":") && (h<24) && (m<60) && (h>=0) && (m>=0) && (IsInteger(h)) && (IsInteger(m)))
	}
	return false
}

//#############################
//Fonction permettant de savoir si le champs est une heure valide du type HH:MM:SS (ex : 14:02:00)
function IsHeure2(HeureData) 
{
	if (HeureData.length == 8) 
	{
		h = HeureData.substring(0,2);
		m = HeureData.substring(3,5);
		s = HeureData.substring(6,8);
		return ((HeureData.substring(2,3)==":") && (HeureData.substring(5,6)==":") && (h<24) && (m<60) && (h>=0) && (m>=0) && (s<60) && (s>=0) && (IsInteger(h)) && (IsInteger(m)) && (IsInteger(s)))
	
	}
	return false
}
//############################
function IsDate2(j,m,a)
//Fonction permettant de savoir si le champs contient une date valide de type J/M/AAAA (5/1/2000) 
{

	D=new Date(m+"/"+j+"/"+a);

	if (parseInt(m)!=D.getMonth()+1) return false
	if (parseInt(j)!=D.getDate()) return false
	if (a.substr(0,2)=="19")
		if (parseInt(a.substr(2,2))!=D.getYear()) return false
	else
		if (parseInt(a.substr(0,4))!=D.getYear()) return false

return true
}

//#############################
// function permettant de déterminé si la viariable A est compris entre D et F
function InNumRange(A,D,F)
{
return (parseFloat(A)>=parseFloat(D)&&parseFloat(A)<=parseFloat(F));
}

//#############################
// fonction permettant de déterminé si la date A est compris entre les dates D et F
function InDateRange(A,D,F)
{

DateA= new Date(A)
DateD=new Date(D)
DateF=new Date(F)
return (DateA.getTime()>=DateD.getTime()&&DateA.getTime()<=DateF.getTime())
}

//#############################
// fonction permettant de déterminé le nombre de jour entre 2 dates de type "JJ/MM/AAAA" ou "MM/AAAA"

function DateDiff(D1,D2) {

	 if ((D1.length==7) || (D2.length==7)) {
	 	if (D1.length==7)
	 		D1='15/'+D1
		else if (D1.length==10)
	 		D1='15/'+D1.substring(3,10)

		if (D2.length==7)
	 		D2='15/'+D2
		else if (D2.length==10)
	 		D2='15/'+D2.substring(3,10)
	 }

	if ((!(IsDate1(D1))) || (!(IsDate1(D2)))) 
		return 'A'; //astuce pour que la comparaison de l'expression de niveau superieur soit toujours false

	 var j1 = D1.substring(0,2);
	 var m1 = D1.substring(3,5);
	 var a1 = D1.substring(6,D1.length);

	 var j2 = D2.substring(0,2);
	 var m2 = D2.substring(3,5);
	 var a2 = D2.substring(6,D2.length);

    var tD1 = new Date(m1+"/"+j1+"/"+a1);
    var tD2 = new Date(m2+"/"+j2+"/"+a2);
	
    var compYearD1 = (tD1.getYear()>99 && tD1.getYear()<1970) ? tD1.getYear()+1900 : tD1.getYear();
	var compYearD2 = (tD2.getYear()>99 && tD2.getYear()<1970) ? tD2.getYear()+1900 : tD2.getYear();
	
    var dd1 = Date.UTC (compYearD1,tD1.getMonth(),tD1.getDate(),0,0,0);
    var dd2 = Date.UTC (compYearD2,tD2.getMonth(),tD2.getDate(),0,0,0);
    //alert(compYearD2);alert(tD2.getMonth());alert(tD2.getDate())
	return (Math.ceil(((dd1-dd2)/(24*3600000))));
	
}


//#############################
// fonction permettant de déterminé le nombre de jour entre 2 dates de type "JJ/MM/AAAA"

function DateDiffold (D1,D2) {
    var tD1 = new Date(D1);
	var tD2 = new Date(D2);
	
    var compYearD1 = (tD1.getYear()>99 && tD1.getYear()<1970) ? tD1.getYear()+1900 : tD1.getYear();
	var compYearD2 = (tD2.getYear()>99 && tD2.getYear()<1970) ? tD2.getYear()+1900 : tD2.getYear();
	
    var dd1 = Date.UTC (compYearD1,tD1.getMonth(),tD1.getDate(),0,0,0);
    var dd2 = Date.UTC (compYearD2,tD2.getMonth(),tD2.getDate(),0,0,0);
    //alert(compYearD2);alert(tD2.getMonth());alert(tD2.getDate())
	return (Math.ceil(((dd1-dd2)/(24*3600000))));
}

//############################
//fonction permettant de savoir si la chaine contient une adresse e-mail
function IsMail2(MailData) {
	correct = true;
	p = MailData.indexOf("@");
	if (p != -1) {
		correct = (MailData.indexOf(".",p) != -1);
	}
	else {
		correct = false;
	}
	return correct;
}

	function IsMail(mail) {
	  var ret = true;
	  var car = "";
	  var carAfter = "";
	  var carBefore = "";
	  var nbrcar = mail.length;
	  var nbrarobase = 0;
	  var nbrpoint = 0;
	  var goodcar = "@0123456789.-_abcdefghijklmnopqrstuvwxyz";
	  for(cnt=0;cnt<nbrcar;cnt++) {
		var car = mail.substr(cnt,1).toLowerCase();
		if(goodcar.indexOf(car) >= 0) {
		  carAfter = "";
		  carBefore = "";
		  if(car == "@") {
			if((cnt-1) >= 0) {
			  carBefore = mail.substr((cnt-1),1);
			}
			if((cnt+1)<nbrcar) {
			 carAfter = mail.substr((cnt+1),1);
			}
			if(cnt>0 && nbrarobase==0 && cnt<(nbrcar-4) && !(carBefore==".") && !(carAfter==".") && !(carBefore=="-") && !(carAfter=="-") && !(carBefore=="_") && !(carAfter=="_")) {
			  nbrarobase++;
			} else {
			 ret = false;
			 break;
			}
		  }
		  if(car == ".") {
			if((cnt-1) >= 0) {
			  carBefore = mail.substr((cnt-1),1);
			}
			if((cnt+1)<nbrcar) {
			 carAfter = mail.substr((cnt+1),1);
			}
			if(cnt>0 && cnt<(nbrcar-2) && !(carBefore==".") && !(carAfter==".")) {
			  nbrpoint++;
			} else {
			  ret = false;
			  break;
			}
		  }
		} else {
		  ret = false;
		  break;
		}
	  }
	  if(nbrarobase == 0 || nbrpoint == 0 || mail.substr(0,1) == "." || mail.substr(0,1) == "-" || mail.substr(0,1) == "_" || mail.substr((nbrcar-1),1) == "." || mail.substr((nbrcar-1),1) == "-" || mail.substr((nbrcar-1),1) == "_") {
		ret = false;
	  }
	  return ret;
	}



