
$(document).ready(
function() {
	// Date picker
	var today = new Date();
	//calcule date de fin -> (31 ou 30 ou 29)/MM-1/YYYY+1
	var nbJours =31;
	var mois =today.getMonth()-1;
	if(mois<0){
	  mois =11;
	}
	var annee = today.getFullYear()+1;
	if(mois==1){//fevrier
	   nbJours=28;
	   if(annee%4==0){
	     nbJours=29;
	   }
	}else{
	     if(mois==3 || mois==5 || mois==8 || mois==10){//avril,juin,septembre et novembre
	       nbJours=30; 
	     }
	}
    var dateFin = new Date(annee,mois,nbJours) ;
    
	//Apply date picker with calendar on input click
	hideSelect = function(){
	if(document.all && parseInt(navigator.appVersion.split(";")[1].replace("MSIE","")) < 7)
		{
		allSelect = document.getElementsByTagName('SELECT');
		for(i=0;i<allSelect.length;i++)
		allSelect[i].style.visibility="hidden";
		}
	}
	
	showSelect = function(){
	//On teste si on est sous IE (document.all) et si la version est inférieur au 7 
	if(document.all && parseInt(navigator.appVersion.split(";")[1].replace("MSIE","")) < 7)
		{
		allSelect = document.getElementsByTagName('SELECT');
		for(i=0;i<allSelect.length;i++)
		allSelect[i].style.visibility="visible";
		}
	}	
		
	hideSelectDepart = function(){
	  if(document.all && parseInt(navigator.appVersion.split(";")[1].replace("MSIE","")) < 7){
		if(document.getElementById("rangeDepart")){	
		  document.getElementById("rangeDepart").style.visibility="hidden";
		  document.getElementById("rangeRetour").style.visibility="hidden";
		  document.getElementById("nbSen").style.visibility="hidden";
		  document.getElementById("nbENF").style.visibility="hidden";
		}
	  }
	}

	hideSelectRetour = function(){
		if(document.all && parseInt(navigator.appVersion.split(";")[1].replace("MSIE","")) < 7){
		  if(document.getElementById("rangeRetour")){	
		    document.getElementById("rangeRetour").style.visibility="hidden";
		    document.getElementById("nbSen").style.visibility="hidden";
		    document.getElementById("nbENF").style.visibility="hidden";
		    document.getElementById("nbEtud").style.visibility="hidden";
		  }
		}
	}
	//&#x3c; <
	//&#x3e; >	
	
	var context= $("#contextPath").val();
	
	$.datepicker.regional['fr'] = {
		closeText: 'Fermer',
		prevText: '< PrÃ©c',
		nextText: 'Suiv >',
		currentText: 'Courant',
		monthNames: ['Janvier','FÃ©vrier','Mars','Avril','Mai','Juin',
		'Juillet','Aout','Septembre','Octobre','Novembre','DÃ©cembre'],
		monthNamesShort: ['Jan','FÃ©vr','Mar','Avr','Mai','Jun',
		'Jul','Aou','Sep','Oct','Nov','DÃ©c'],
		dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
		dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],
		dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'],
		weekHeader: 'Sm',
		dateFormat: 'dd/mm/yy',
		firstDay: 1,
		isRTL: false,
		showMonthAfterYear: false,
		yearSuffix: ''};
	$.datepicker.setDefaults($.datepicker.regional['fr']);	
    $("#dateDepart").datepicker({
                                 numberOfMonths:2,                                 
                                 showOn: 'both',                                  
                                 buttonImage: context+'/images/calendrier.gif',
                                 buttonImageOnly: true,
                                 minDate :'+1d',
                                 maxDate:dateFin,
                                 changeYear: true,
                                 changeMonth: true,
                                 hideIfNoPrevNext: true          
                                });
                                
    $("#dateRetour").datepicker({
                                 numberOfMonths:2,                                 
                                 showOn: 'both',                                  
                                 buttonImage: context+'/images/calendrier.gif',
                                 buttonImageOnly: true,
                                 minDate :'+7d',
                                 maxDate:dateFin,
                                 changeYear: true,
                                 changeMonth: true,
                                 hideIfNoPrevNext: true          
                                });                            
                                
    $("#dateDepart").datepicker('option', 'onSelect', function(dateText, inst){
            var selectedDate = getDate(dateText);         
            updateSelects(selectedDate, "Depart");
			updateRetour(selectedDate,dateFin);	
	 });  
    
    $("#dateDepart").datepicker('option', 'onChangeMonthYear', function(year, month, inst){         
           showSelect();			
		   hideSelectDepart();        
    });
    $("#dateDepart").datepicker('option', 'beforeShow', function(input){         
           showSelect();			
	       hideSelectDepart();   
    });
    $("#dateDepart").datepicker('option', 'onClose', function(dateText, inst){         
           showSelect();	
    });	
    
    $("#dateRetour").datepicker('option', 'onSelect', function(dateText, inst){
           var selectedDate = getDate(dateText);  
           updateSelects(selectedDate, "Retour");			
		   showSelect();
	 });  
    
    $("#dateRetour").datepicker('option', 'onChangeMonthYear', function(year, month, inst){         
           showSelect();			
		   hideSelectDepart();        
    });
    $("#dateRetour").datepicker('option', 'beforeShow', function(input){         
           showSelect();			
	       hideSelectDepart();   
    });
    $("#dateRetour").datepicker('option', 'onClose', function(dateText, inst){         
           showSelect();	
    });	
    
    /*$('select[name=jjDepart], select[name=mmDepart]')
	.bind(
		'change',
		function() {
			var j = $("select[name=jjDepart]").val();
			var mm = $("select[name=mmDepart]").val();
			var m = mm.substring(4,7);
			var y = mm.substring(0,4);
			if(m.charAt(0) == "0") {
				m = m.charAt(1);			
			}
			var d = new Date(parseInt(y), parseInt(m)-1, parseInt(j));						
			// set start and end date	       
            //un jour en milliseconde
            var  un_jour=1000*60*60*24 ;
            var todayDepart = new Date();            
            var diff = parseInt(d.getTime()) - parseInt(todayDepart.getTime());           
            if(diff>0){
               diff = Math.ceil(diff/un_jour);
            }else{
               diff = 1;
            }                             
			
			$("#dateDepart").datepicker('option', 'minDate',todayDepart.addDays(diff));         				           
            
			var todayRetour = new Date();
			var todayRetourPlusSept=todayRetour.addDays(diff+1);	
			
			if(parseInt(dateFin.getTime()) > parseInt(todayRetourPlusSept.getTime())){	          
	           $("#dateRetour").datepicker('option', 'minDate',todayRetourPlusSept); 
	        }else{	         
	           $("#dateRetour").datepicker('option', 'minDate',dateFin); 	          
	        }	            
	        updateRetour(d,dateFin);
		}
	);*/	
	
	/*$('select[name=jjRetour],select[name=mmRetour]')
	.bind(
		'change',
		function() {
			var jRet = $("select[name=jjRetour]").val();
			var mmRet = $("select[name=mmRetour]").val();
			var mRet = mmRet.substring(4,7);
			var yRet = mmRet.substring(0,4);
			if(mRet.charAt(0) == "0") {
				mRet = mRet.charAt(1);			
			}			
			var dRet = new Date(parseInt(yRet), parseInt(mRet)-1, parseInt(jRet));
			updateRetourRet(dRet);				
			var  un_jour=1000*60*60*24 ;
            var todayRet = new Date();            
            var diffRet = parseInt(dRet.getTime()) - parseInt(todayRet.getTime());           
            if(diffRet>0){
               diffRet = Math.ceil(diffRet/un_jour);               
            }else{
               diffRet = 7;
            }
	       $("#dateRetour").datepicker('option', 'minDate',todayRet.addDays(diffRet)); 	       
		}
	);*/
	
});


var updateRetour = function(selectedDate,dateFin) {		 
		 selectedDate = new Date(selectedDate);	
		 var selectedDatePlusSept = selectedDate.addDays(7);		 
		 if(parseInt(dateFin.getTime()) < parseInt(selectedDatePlusSept.getTime())){	
		     updateSelects(dateFin, "Retour") ;		    
		 }else{
		     updateSelects(selectedDatePlusSept, "Retour") ;		    
		 }
}

//update Retour apres avoir modifié la date de retour
/*var updateRetourRet = function(selectedDate) {		 
		 selectedDate = new Date(selectedDate);		
		 updateSelectsRet(selectedDate) ;
}*/

/*var updateSelectsRet = function (selectedDate)	{
		selectedDate = new Date(selectedDate);
		var d = selectedDate.getDate()-1;
		var m = selectedDate.getMonth() + 1;
		var y = selectedDate.getFullYear();
		var aaaaMM = "";
		if(m < 10) {
			aaaaMM = String(y)+ String(0) + String(m);			
		} else {
			aaaaMM = String(y) + String(m);
		}
						
		updateJJRetour(aaaaMM);	
		($("select[name=jjRetour]")[0]).selectedIndex = d;
		$("select[name=mmRetour]").val(aaaaMM);			
}*/

var updateSelects = function (selectedDate, trajet)	{
		selectedDate = new Date(selectedDate);
		//var d = selectedDate.getDate() - 1;
		var d = selectedDate.getDate();
		var m = selectedDate.getMonth() + 1;
		var y = selectedDate.getFullYear();
		var aaaaMM = "";
		/*if(m < 10) {
			aaaaMM = String(y)+ String(0) + String(m);			
		} else {
			aaaaMM = String(y) + String(m);
		}*/
		if(d<10){
		  d= '0'+d;
		}
		if(m<10){
		   m= '0'+m;
		}
				
		//($("select[name=jj"+trajet+"]")[0]).selectedIndex = d;
		//$("select[name=mm"+trajet+"]").val(aaaaMM);
		$("#date"+trajet).val(d+'/'+m+'/'+y);
		if(trajet=="Depart"){
		    var retourMin= new Date(y,m-1,d);
		    $("#dateRetour").datepicker('option', 'minDate',retourMin.addDays(1)); 
		}
		// met à jour les derniers jours du mois dans la liste déroulante des jours		
		/*if(trajet!=null && trajet=="Depart"){
			updateJJDepart(aaaaMM);
		}else if(trajet!=null && trajet=="Retour"){
			updateJJRetour(aaaaMM);
		}*/
		//($("select[name=jj"+trajet+"]")[0]).selectedIndex = d;		
}

var getDate = function (dateText){
  var tab = dateText.split("/",3);
  date = new Date(tab[2],tab[1]-1,tab[0]);  
  return date;
}
