
//--- isLeapYear: verifie si l'annee est bisextile ---
function isLeapYear(Year)
{ 
	if (((Year % 4)==0) && ((Year % 100)!=0) || ((Year % 400)==0))
		return true;
	else 
		return false;
}

//--- verifDate: fonction, verifie la validite d'une date selon son format ---
function ControlDate(monChamp, monFormul, monFormat, dateEffet, dateMin, dateMax)
{
	var monJour, monMois, monAnnee;
	var dateC, jourC, moisC, anneeC;
var moisCPlus2;
	var temp;
	var res=true;
	var jourAnnee= new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	maDate=eval("document."+monFormul.name+"."+monChamp+".value");
	/*//--- Recuperation de la date courante ---
	dateC = new Date();
	anneeC = dateC.getYear();
	//--- Correctif pour netscape ---
	if (anneeC < 2000)
		anneeC+=1900;
	moisC = dateC.getMonth()+1;
	jourC = dateC.getDate();*/

jourC = parseInt(eval("document."+monFormul.name+".jourC.value"),10);
moisC = parseInt(eval("document."+monFormul.name+".moisC.value"),10);
anneeC = parseInt(eval("document."+monFormul.name+".anneeC.value"),10);


moisCPlus2=moisC+2;
if(moisCPlus2>12)
   moisCPlus2=moisCPlus2-12;

	if (maDate==monFormat) return false;
	if ((monFormat=="jjmm")||(monFormat=="JJMM")||(monFormat=="jj/mm")||(monFormat=="JJ/MM")) fmat="jjmm";
	if ((monFormat=="MMAA")||(monFormat=="mmaa")||(monFormat=="mm/aa")||(monFormat=="MM/AA")||(monFormat=="mmaaaa")||(monFormat=="MMAAAA")||(monFormat=="mm/aaaa")||(monFormat=="MM/AAAA")) fmat="mmaa";
	if ((monFormat=="JJMMAA")||(monFormat=="jjmmaa")||(monFormat=="JJ/MM/AA")||(monFormat=="jj/mm/aa")||(monFormat=="JJMMAAAA")||(monFormat=="jjmmaaaa")||(monFormat=="JJ/MM/AAAA")||(monFormat=="jj/mm/aaaa")) fmat="jjmmaa";
	//--- Verification suivant le format demande ---
	switch (fmat)
	{   
		case "jjmm":
		if (maDate!='')
		{
			switch (maDate.length)
			{
				case 4:
				if (isNaN(parseInt(maDate, 10))||(maDate.length!=4))
				{
					alert("Veuillez entrer une date sous un format correct ("+monFormat+")");
					res=false;
				}
					else
				{
					//--- Recuperation des informations sur la date ---
					monMois=parseInt(maDate, 10)%100;
					monJour=(parseInt(maDate, 10)-monMois)/100;
						
				}
				break;
				
				case 5:
				temp = maDate.split("/");
				if (temp.length!=2)
				{
					alert("Veuillez entrer une date sous un format correct ("+monFormat+")");
						res=false;
				}
				else
				{
					monJour=temp[0];
					monMois=temp[1];
					if ((monMois.length!=2)||(monJour.length!=2)||isNaN(parseInt(monMois,10))||isNaN(parseInt(monJour,10)))
					{
					alert("Veuillez entrer une date sous un format correct ("+monFormat+")");
						res=false;
					}
				
				}
				break;
				
				default :
				alert("Veuillez entrer une date sous un format correct ("+monFormat+")");
				res=false;
				break;
			}
			//--- Rejet des dates incorrects ---
			if ((monMois<1)||(monMois>12))
			{
				alert("Limite invalide, controler la date");
				res=false;
			}
			else
			{
				if ( (monJour<1) || (monJour>jourAnnee[monMois-1]) )
				{
					alert("Limite invalide, controler la date");
					res=false;
				}
			}
		}
		else
		{alert("Veuillez entrer une date sous un format correct ("+monFormat+")");
		res=false;}
		break;
		
		//----------------------------------
		case "mmaa":
		if (maDate!='')
		{
			switch (maDate.length)
			{
				case 4:
				if (isNaN(parseInt(maDate, 10))||(maDate.length!=4))
				{
					alert("Veuillez entrer une date sous un format correct ("+monFormat+")");
					res=false;
				}
					else
				{
					//--- Recuperation des informations sur la date ---
					monAnnee=parseInt(maDate, 10)%100;
					monMois=(parseInt(maDate, 10)-monAnnee)/100;
						
					//--- Passage l'annee au format AAAA (regle fixee par ctrlauto.js) ---
					if (monAnnee>20)
					monAnnee+=1900;
					else
					monAnnee+=2000;
				}
				break;
				
				case 5:
				temp = maDate.split("/");
				if (temp.length!=2)
				{
					alert("Veuillez entrer une date sous un format correct ("+monFormat+")");
						res=false;
				}
				else
				{
					monMois=temp[0];
					monAnnee=temp[1];
					if ((monMois.length!=2)||(monAnnee.length!=2)||isNaN(parseInt(monMois,10))||isNaN(parseInt(monAnnee,10)))
					{
					alert("Veuillez entrer une date sous un format correct ("+monFormat+")");
						res=false;
					}
					else
					{
						//--- Passage l'annee au format AAAA (regle fixee par ctrlauto.js) ---
						monAnnee=parseInt(monAnnee,10)
						if (monAnnee>20)
						monAnnee+=1900;
						else
						monAnnee+=2000;
					}
				}
				break;
				
				case 6:
				if (isNaN(parseInt(maDate, 10))||(maDate.length!=6))
				{
					alert("Veuillez entrer une date sous un format correct ("+monFormat+")"+monMois+"/"+monAnnee);
					res=false;
				}
				else
				{
					//--- Recuperation des informations sur la date ---
					monAnnee=parseInt(maDate, 10)%10000;
					monMois=(parseInt(maDate, 10)-monAnnee)/10000;
				}
				break;
				
				case 7:
				temp = maDate.split("/");
				if (temp.length!=2)
				{
					alert("Veuillez entrer une date sous un format correct ("+monFormat+")");
					res=false;
				}
				else
				{
					monMois=temp[0];
					monAnnee=temp[1];
					if ((monMois.length!=2)||(monAnnee.length!=4)||isNaN(parseInt(monMois,10))||isNaN(parseInt(monAnnee,10)))
					{
						alert("Veuillez entrer une date sous un format correct ("+monFormat+")");
						res=false;
					}
				}
				break;
				
				default :
				alert("Veuillez entrer une date sous un format correct ("+monFormat+")");
				res=false;
				break;
			}
			//--- Rejet des dates incorrects ---
			if ((monMois<1)||(monMois>12))
			{
				alert("Veuillez entrer une date sous un format correct ("+monFormat+")");
				res=false;
			}
			else
			{
				if (dateEffet!=1)
				{
					if ((monAnnee > anneeC)||(monAnnee < 1890)||((monAnnee==anneeC)&&(monMois>moisC)))
					{
						alert("Limite invalide, controler la date");
						res=false;
					}
				}
				else
				{
					temp = 0;
					if (dateMin)temp = dateMin.split("/");
					if (temp.length!=3)
					{
						if ((monAnnee < anneeC)||((monAnnee==anneeC)&&(monMois<moisC)))
						{
							alert("La date ne peut pas être antérieure");
							res=false;
						}
					}
					else
					{
						JourMin=temp[0];
						MoisMin=temp[1];
						AnneeMin=temp[2];
						if ((monAnnee < AnneeMin)||((monAnnee==AnneeMin)&&(monMois<MoisMin)))
						{
							alert("La date ne peut pas être antérieure à "+dateMin);
							res=false;
						}	
					}
					
					if (dateMax)temp = dateMax.split("/");
					if (temp.length==3)
					{
						JourMax=temp[0];
						MoisMax=temp[1];
						AnneeMax=temp[2];
						if ((monAnnee > AnneeMax)||((monAnnee==AnneeMax)&&(monMois>MoisMax)))
						{
							alert("La date ne peut pas être postérieure à "+dateMax);
							res=false;
						}	
					}
					
					
				}
			}
		}
		else
		{alert("Veuillez entrer une date sous un format correct ("+monFormat+")");
		res=false;}
		break;
		
		case "jjmmaa":
		if (maDate!='')
		{
			switch (maDate.length)
			{
				case 6:
				if (isNaN(parseInt(maDate, 10))||(maDate.length!=6))
				{
					alert("Veuillez entrer une date sous un format correct ("+monFormat+")");
					res=false;
				}
				else
				{
					//--- Recuperation des informations sur la date ---
					monAnnee=parseInt(maDate, 10)%100;
					Moitemp=parseInt(maDate, 10)%10000;
					monMois=(parseInt(Moitemp, 10)-monAnnee)/100;
					monJour=(parseInt(maDate, 10)-monAnnee-monMois*100)/10000;
					//--- Passage l'annee au format AAAA (regle fixee par ctrlauto.js) ---
					if (monAnnee>20)
					monAnnee+=1900;
					else
					monAnnee+=2000;
				}
				break;
				
				case 8:
				if (maDate.indexOf('/')>0)
				{
					temp = maDate.split("/");
					if (temp.length!=3)
					{
						alert("Veuillez entrer une date sous un format correct ("+monFormat+")");
						res=false;
					}
					else
					{
						monJour=temp[0];
						monMois=temp[1];
						monAnnee=temp[2];
						if ((monJour.length!=2)||(monMois.length!=2)||(monAnnee.length!=2)||isNaN(parseInt(monJour,10))||isNaN(parseInt(monMois,10))||isNaN(parseInt(monAnnee,10)))
						{
							alert("Veuillez entrer une date sous un format correct ("+monFormat+")");
							res=false;
						}
						//--- Passage l'annee au format AAAA (regle fixee par ctrlauto.js) ---
						monAnnee=parseInt(monAnnee,10)
						if (monAnnee>20)
						monAnnee+=1900;
						else
						monAnnee+=2000;
					}		
				} 
				else 
				{
					if (isNaN(parseInt(maDate, 10))||(maDate.length!=8))
					{
						alert("Veuillez entrer une date sous un format correct ("+monFormat+")");
						res=false;
					}
					else
					{
						//--- Recuperation des informations sur la date ---
						monAnnee=parseInt(maDate, 10)%10000;
						Moitemp=parseInt(maDate, 10)%1000000;
						monMois=(parseInt(Moitemp, 10)-monAnnee)/10000;
						monJour=(parseInt(maDate, 10)-monAnnee-monMois*10000)/1000000;
					}
				}
				break;
				
				case 10:
				temp = maDate.split("/");
				if (temp.length!=3)
				{
					alert("Veuillez entrer une date sous un format correct ("+monFormat+")")
					res=false;
				}
				else
				{
					monJour=temp[0];
					monMois=temp[1];
					monAnnee=temp[2];
					if ((monJour.length!=2)||(monMois.length!=2)||(monAnnee.length!=4)||isNaN(parseInt(monJour,10))||isNaN(parseInt(monMois,10))||isNaN(parseInt(monAnnee,10)))
					{
						alert("Veuillez entrer une date sous un format correct ("+monFormat+")");
						res=false;
					}
				}
				break;
				
				default :
				alert("Veuillez entrer une date sous un format correct ("+monFormat+")");
				res=false;
				break;
			}
			//--- Rejet des dates incorrects ---
			if ((monMois<1)||(monMois>12))
			{
				alert("Veuillez entrer une date sous un format correct ("+monFormat+")");
				res=false;
			}
			else
			{
				if (isLeapYear(monAnnee))
				jourAnnee[1]+=1;
				if ( (monJour<1) || (monJour>jourAnnee[monMois-1]) )
				{
					alert("Limite invalide, controler la date");
					res=false;
				}
				else
				{
					if (dateEffet!=1)
					{
						if ((monAnnee > anneeC) || ((monAnnee==anneeC)&&(monMois>moisC)) || ((monAnnee==anneeC)&&(monMois==moisC)&&(monJour>jourC)))
						{
							alert("Limite invalide, controler la date");
							res=false;
						}
					}
					else 
					{	temp = 0;
						if (dateMin) temp = dateMin.split("/");
						if (temp.length!=3)
						{
							if ((monAnnee < anneeC) || ((monAnnee==anneeC)&&(monMois<moisC)) || ((monAnnee==anneeC)&&(monMois==moisC)&&(monJour<jourC)))
							{
								alert("La date ne peut pas être antérieure à celle d'aujourd'hui");
								res=false;
							} 
						}
						else
						{
							JourMin=temp[0];
							MoisMin=temp[1];
							AnneeMin=temp[2];
							if ((monAnnee < AnneeMin) || ((monAnnee==AnneeMin)&&(monMois<MoisMin)) || ((monAnnee==AnneeMin)&&(monMois==MoisMin)&&(monJour<JourMin)))
							{
								alert("La date ne peut pas être antérieure à "+dateMin);
								res=false;
							}
							}
							if (dateMax){
							temp = dateMax.split("/");
							if (temp.length==3)
							{
								JourMax=temp[0];
								MoisMax=temp[1];
								AnneeMax=temp[2];
								if ((monAnnee > AnneeMax) || ((monAnnee==AnneeMax)&&(monMois>MoisMax)) || ((monAnnee==AnneeMax)&&(monMois==MoisMax)&&(monJour>JourMax)))
								{
									alert("La date ne peut pas être supérieure à "+dateMax);
									res=false;
								}
							}
/*
						}else if  ( (monAnnee > anneeC) || ( (monAnnee == anneeC)&&(monMois > (moisC + 2)) ) || ( (monAnnee == anneeC)&&(monMois == (moisC + 2))&&(monJour > jourC ) ))
*/
						}else if  (monAnnee >= anneeC+2 || (monAnnee == anneeC+1 && monMois > moisCPlus2) || (monAnnee == anneeC+1 && monMois == moisCPlus2 && monJour > jourC) || (monAnnee == anneeC && monMois > moisC+2) || (monAnnee == anneeC && monMois == moisC+2 && monJour > jourC))

     							{
     							   alert("La date saisie ne peut être postérieure de plus de 2 mois à la date d'aujourd'hui.");
     							   res=false;
   								}
					}
				}
			}
		}
		else
		{alert("Veuillez entrer une date sous un format correct ("+monFormat+")");
		res=false;}
		break;
		
		default :
		alert("Veuillez entrer une date sous un format correct ("+monFormat+")");
		res=false;
		break;
	}
	//--- Renvoi du resultat ---
	if (res)
	{
		switch (fmat)
		{
			case "jjmm":
			temp=""+monJour;
			if (temp.length==1)
			monJour="0"+monJour;
			temp=""+monMois;
			if (temp.length==1)
			monMois="0"+monMois;
			temp=monJour+"/"+monMois;
			res= temp;
			break;
			
			case "mmaa":
			temp=""+monMois;
			if (temp.length==1)
			temp="0"+monMois;
			temp+="/"+monAnnee;
			res= temp;
			break;
			
			case "jjmmaa":
			temp=""+monJour;
			if (temp.length==1)
			monJour="0"+monJour;
			temp=""+monMois;
			if (temp.length==1)
			monMois="0"+monMois;
			temp=monJour+"/"+monMois+"/"+monAnnee;
			res= temp;
			break;
			
			default:
			break;
		}
	}
	else
	res= "0";
	
	if (res=="0")
	{
		
		eval("document."+monFormul.name+"."+monChamp+".value='"+monFormat+"'");
		eval("document."+monFormul.name+"."+monChamp+".select()");
		eval("document."+monFormul.name+"."+monChamp+".focus()");
		
	}
	else
	eval("document."+monFormul.name+"."+monChamp+".value='"+temp+"'");
	
	return (res!="0");
}


function Retour(){
	window.history.go(-1)
}

function CtrlSurDate(myObj)
{//Controle de la date pour paiement par cheque 
	var date1,date2,temp1,temp2,a1,a2,m1,m2,j1,j2,ecart;
	//date courante 
	dateeffet=myObj.form.DATE_EFFET
	date1 = new Date();
	j1 = parseInt(myObj.form.jourC.value,10);  
	m1 = parseInt(myObj.form.moisC.value,10) - 1;  
	a1 = parseInt(myObj.form.anneeC.value,10);
   	date1.setUTCFullYear(a1,m1,j1);
   
	if ( dateeffet.value == '' || dateeffet.value == 'jj/mm/aaaa' )
	{
		myObj.checked = false;
		alert( "Saisissez votre date d'effet");
		dateeffet.focus();
        return;
	}
	else
	 if (myObj.value!="CB")
	{
		strdate2 = dateeffet.value;
		 
		temp2 = strdate2.split('/'); 
		j2 = parseInt(temp2[0],10);
		m2 = parseInt(temp2[1],10) - 1;
		a2 = parseInt(temp2[2],10);
	
		date2 = new Date() ;
		date2.setUTCFullYear(a2,m2,j2);
	
		ecart = (date2.valueOf() - date1.valueOf())/86400000;
	
		//alert( "j2" + j2 + "m2" + m2 + "a2" + a2);
		//alert(ecart);
		if ( ecart < 15 )
		{
			myObj.checked = false;
			dateeffet.focus();
			alert("La date d'effet choisie est inférieure à 15 jours. Veuillez choisir une date superieure ou choisissez CB");
		}
	}
}

///////////////////////////
// Sous-routines de calcul
function FormatDateMA(Mois, Annee)
{
   var result;
   
   if(Mois<10)
     result="0" + Mois+"/"+Annee;
   else   
     result=""+Mois+"/"+Annee;
   return result;
}

function CompareDateMA(strIn1, strIn2)
{
   var ind1,mm1,aa1,mm2,aa2;
   ind1 = strIn1.indexOf('/');
   mm1 = strIn1.substr(0,ind1);
   aa1 = strIn1.substr(ind1+1,9999);
   ind1 = strIn2.indexOf('/');
   mm2 = strIn2.substr(0,ind1);
   aa2 = strIn2.substr(ind1+1,9999);
   if ( (aa1-aa2) > 0 ) { return 1 };
   if ( (aa1-aa2) < 0 ) { return -1 };
   if ( (mm1-mm2) > 0 ) { return 1 };
   if ( (mm1-mm2) < 0 ) { return -1 };
   return 0;
}

function AddDateMA(strIn1, strIn2)
{
   var ind1,mm1,aa1,mm2,aa2;
   ind1 = strIn1.indexOf('/');
   mm1 = strIn1.substr(0,ind1);
   aa1 = strIn1.substr(ind1+1,9999);
   ind1 = strIn2.indexOf('/');
   mm2 = strIn2.substr(0,ind1);
   aa2 = strIn2.substr(ind1+1,9999);
   mm1=parseInt(mm1, 10)+parseInt(mm2,10);
   aa1=parseInt(aa1,10)+parseInt(aa2,10)+Math.floor((mm1-1)/12);
   mm1-=Math.floor((mm1-1)/12)*12;
   return FormatDateMA(mm1, aa1);
}
 
function DiffDateMA(strIn1,strIn2)
{
   var ind1,mm1,aa1,mm2,aa2;
   ind1 = strIn1.indexOf('/');
   mm1 = strIn1.substr(0,ind1);
   aa1 = strIn1.substr(ind1+1,9999);
   ind1 = strIn2.indexOf('/');
   mm2 = strIn2.substr(0,ind1);
   aa2 = strIn2.substr(ind1+1,9999);
   mm1=parseInt(mm1, 10)-parseInt(mm2,10);
   aa1=parseInt(aa1,10)-parseInt(aa2,10)+Math.floor((mm1-1)/12);
   mm1-=Math.floor((mm1-1)/12)*12;
   return FormatDateMA(mm1, aa1);
}


function CheckDateMA(strRef)
{
	var strIn,ind1,mm,aaaa, dt;

   strIn=document.formTaxi[strRef].value;
   if ( strIn.length == 0 ) { return true };
   // Extraction des parties mois-année
   ind1 = strIn.indexOf('/');
   if ( ind1 == -1 ) 
   {
      if ( (strIn.length == 3) || (strIn.length == 5))
      {
	     mm=strIn.substr(0,1);
		 aaaa=strIn.substr(1,9999)
	  }
      else
	  {
	     if( (strIn.length == 4) || (strIn.length == 6))
		 {
            mm=strIn.substr(0,2);
            aaaa=strIn.substr(2,9999)
         }
		 else
         {
            alert("Veuillez rentrer une date sous un format correct (MMAA)");
            document.formTaxi[strRef].value = '';
            return false;
         }
      }
   }
   else
   {
      ind1 = strIn.indexOf('/');
      mm = strIn.substr(0,ind1);
	  aaaa = strIn.substr(ind1+1,9999);
   }
   if ( isNaN(mm) || isNaN(aaaa))
   {
      alert("Veuillez rentrer une date sous un format correct (MMAA)");
      document.formTaxi[strRef].value = '';
      return false;
   }
   mm=parseInt(mm,10);
   aaaa=parseInt(aaaa,10);
   
   // Ajustement des années a 2 chiffres
   if ( aaaa < 100 && aaaa>=0)
   {
      if ( (aaaa >= 0 ) && (aaaa < 21))
         aaaa += 2000;
      else
         aaaa += 1900;
   }
   // Test de la validité de la date
   if ( (mm > 12) || (mm < 1) || (aaaa<1900))
   {
      alert("Veuillez rentrer une date sous un format correct (MMAA)");
      document.formTaxi[strRef].value = '';
      return false;
   }


   if ( CompareDateMA(FormatDateMA(mm, aaaa),GetCurDateMA()) >0)
   {
      alert("Limite invalide, controler la date");      
      document.formTaxi[strRef].value = '';
      return false;
   }
   // Retour de la date reformatée 
   document.formTaxi[strRef].value=FormatDateMA(mm, aaaa);
   return true;
}

function GetCurDateMA()
{ 
	moisC = document.forms[0].moisC.value; 
	anneeC = document.forms[0].anneeC.value;
	return FormatDateMA(moisC, anneeC);

}


function init_DATE_EFFET_SVR(theForm)
{
	jourC = theForm.jourC.value; 
	moisC = theForm.moisC.value; 
	anneeC = theForm.anneeC.value;
		
	temp=jourC+"/"+moisC+"/"+anneeC;
	
	theForm.DATE_EFFET.value=temp;
	}      

function init_DATE_EFFET_SVR2(theForm)
{
  var jourAnnee= new Array(31,28,31,30,31,30,31,31,30,31,30,31);

	jourC = parseInt(theForm.jourC.value,10); 
	moisC = parseInt(theForm.moisC.value,10); 
	anneeC = parseInt(theForm.anneeC.value,10);
	if (isLeapYear(anneeC))jourAnnee[1]=29;
	
	jourC = jourC + 1;
	if(jourC>jourAnnee[moisC-1])
	   {
	   jourC=1;
	   moisC=moisC+1;
	   if(moisC>12)
	      {
	      moisC=1;
	      anneeC = anneeC + 1;
	      }
	   }
  if(jourC<10)
     jourC="0"+jourC;	   
  if(moisC<10)
     moisC="0"+moisC;	   
	temp=jourC+"/"+moisC+"/"+anneeC;
	
	theForm.DATE_EFFET.value=temp;
	}      

//-->      