var date_sort_asc = function (date1, date2) {
					
					
  // This is a comparison function that will result in dates being sorted in
  // ASCENDING order. As you can see, JavaScript's native comparison operators
  // can be used to compare dates. This was news to me.
  if (date1[0] > date2[0]) return 1;
  if (date1[0] < date2[0]) return -1;
  return 0;
};




function dateUS(madate){
	
	var dateSplit = madate.split('/');
	var newDate = new Date(dateSplit[2],dateSplit[1]-1,dateSplit[0]);
	return newDate;
}

function datePHP(madate){
	
	
	var annee = madate.getFullYear();
	var mois = madate.getMonth()+1;
	var jour = madate.getDate();
	
	if(mois  < 10)
	mois = "0"+mois;
	
	if(jour < 10)
	jour = "0"+jour;
	
	var newDate = annee+"-"+mois+"-"+jour;
	
	return newDate;
}


function addDays(d, j)
{
	return new Date(d.getTime() + (1000 * 60 * 60 * 24 * j));
}


function testDate(madate, myDateArray){
	
	
	var etatDate = 0;
	
	boucleperiode:
	for(i=0;i<myDateArray.length;i++){
		
		var datedebut = myDateArray[i][0];
		var datefin = myDateArray[i][1];
		var dispo = myDateArray[i][2];
		
		
		if(madate >= datedebut && madate <= datefin){
			
			switch(dispo){
				
				case "2":
				etatDate = 1;
				break;
				
				case "1":
				etatDate = 2;
				break boucleperiode;
				
				case "3":
				etatDate = 3;
				break;								
		
			}
			
		}
		
	}
	
	return etatDate;
	
}


function testDateWeek(madate, myDateArray){
	
	
	var valideDate = false;
	
	for(i=0;i<myDateArray.length;i++){
		
		var datedebut = myDateArray[i][0];
		var datefin = myDateArray[i][1];
						
								
		if(madate >= datedebut && madate <= datefin )
		valideDate = true;
		
		
	}
	
	return valideDate;
	
}


function getTarif(madate, myDateArray){
	
	
	
	var myTarif = false;
	
	
	for(i=0;i<myDateArray.length;i++){
		
		var datedebut = myDateArray[i][0];
		var datefin = myDateArray[i][1];
		var dispo = myDateArray[i][2];	
		var tarif = myDateArray[i][3];		
						
		if(madate>=datedebut && madate<= datefin && dispo != "2")
		myTarif = tarif
		
	}
	
	return myTarif;
	
}





function selectWeek(madate){
	
	
	
var debutSemaine = madate;
var finSemaine;						

//  LA DATE DE DEBUT N'EST PAS LE JOUR DE LOCATION
if(debutSemaine.getDay() != locaday){
	
	// ON REMONTE JUSQU'AU JOUR DE LOCATION 
	while(debutSemaine.getDay()  != locaday){
		
		debutSemaine = addDays(debutSemaine,-1);
		
		// ON VERIFIE QUE CHAQUE JOUR SOIT VALIDE POUR LES PERIODES DONNEES
		if(testDate(debutSemaine, dateArray) <2 )									
		return false;
		
	}					
	
}
else
if(selectedWeeks.length>0){
	
	// LA DATE DE DEBUT EST UN SAMEDI MAIS IL EXISTE DEJA UNE PERIODE SELECTIONNEE
	
	
		
	// LA DATE SELECTIONNEE SE TROUVE A LA FIN OU APRES LA PERIODE SELECTIONNEE
	if(debutSemaine.getTime() > selectedWeeks[0][1].getTime() ){
		
		
		debutSemaine = addDays(debutSemaine,-1);
		
		while(debutSemaine.getDay()  != locaday){
			
			debutSemaine = addDays(debutSemaine,-1);
			
			if(testDate(debutSemaine, dateArray) <2 ){
					
				debutSemaine = madate;
				break;
			}
			
			
		}
	
	}

	
	
	
}

// ON CALCULE LA DATE DE FIN DE LA SEMAINE PAR RAPPORT A LA DATE DE DEBUT TROUVEE
finSemaine = addDays(debutSemaine,1);
while(finSemaine.getDay() != locaday){
	
	finSemaine = addDays(finSemaine,1);
	if(testDate(finSemaine, dateArray) <2){
		
				
			return false;
		
	}
	

}

//alert(debutSemaine.getDate()+"/"+(debutSemaine.getMonth()+1)+"/"+debutSemaine.getFullYear()+" => "+finSemaine.getDate()+"/"+(finSemaine.getMonth()+1)+"/"+finSemaine.getFullYear());
		
if(selectedWeeks.length>0){			
		
			
		if(madate.getTime() >= selectedWeeks[0][0].getTime() && madate < selectedWeeks[0][1] ){
			
			var fin_premiere_semaine = addDays(selectedWeeks[0][0],7);
			var debut_derniere_semaine = addDays(selectedWeeks[0][1],-7);
			
			if(madate.getTime() >= fin_premiere_semaine.getTime() && debutSemaine.getTime() > selectedWeeks[0][0].getTime()){
				
				selectedWeeks = new Array(new Array(selectedWeeks[0][0],debutSemaine));
				return false;
				
			}
			else
			if(madate.getTime() < debut_derniere_semaine.getTime() && finSemaine.getTime() != selectedWeeks[0][1].getTime()){
				
				selectedWeeks = new Array(new Array(finSemaine,selectedWeeks[0][1]));
				return false;
				
			}
			else
			{
				selectedWeeks = new Array();							
				return false;
			}
		}		
		
	
								
		if(debutSemaine < selectedWeeks[0][0]){
			
			for(betweenDay = finSemaine; betweenDay < selectedWeeks[0][0] ; betweenDay = addDays(betweenDay,1)){
				if(testDate(betweenDay,dateArray) <2){
					selectedWeeks = new Array();							
					return selectWeek(debutSemaine);
				}
			}
			
			selectedWeeks = new Array(new Array(debutSemaine,selectedWeeks[0][1]));
		}else
		if(finSemaine > selectedWeeks[0][1]){
		
			for(betweenDay = selectedWeeks[0][1]; betweenDay < debutSemaine ; betweenDay = addDays(betweenDay,1)){
				if(testDate(betweenDay,dateArray) <2){
					selectedWeeks = new Array();							
					return selectWeek(debutSemaine);
				}
			}
			selectedWeeks = new Array(new Array(selectedWeeks[0][0],finSemaine));
		
		}
			
	
	}
	else					
	selectedWeeks.push(new Array(debutSemaine,finSemaine));
	
	selectedWeeks.sort(date_sort_asc);
	
	return true;
	//alert(debutSemaine.getDate()+"/"+(debutSemaine.getMonth()+1)+"/"+debutSemaine.getFullYear()+" => "+finSemaine.getDate()+"/"+(finSemaine.getMonth()+1)+"/"+finSemaine.getFullYear()); 
	
		
	
}
