	YAHOO.namespace("recherche.calendar");

	YAHOO.recherche.calendar.init = function() {

         var dayOfWeek = ["Sunday", "Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];

   		function handleSelect1(type,args,obj) {
   		
   			var dates = args[0];
   			var date = dates[0];
   			var year = date[0], month = date[1], day = date[2];

   			var date_arrivee = document.getElementById("date_arrivee");
   			var fromday = document.getElementById("fromday");
   			var frommonth = document.getElementById("frommonth");
   			var fromyear = document.getElementById("fromyear");
        date_arrivee.value = day + "/" + month + "/" + year;
        fromday.value = day;
        frommonth.value = month;
        fromyear.value = year;
            
   			YAHOO.recherche.calendar.cal1.hide();
	
            var tmpDate = new Date(year, month-1, day);

            document.getElementById('fromDayOfWeekLabel').innerHTML = dayOfWeek[tmpDate.getDay()]; // set fromDayOfWeekLabel
            tmpDate.setDate(tmpDate.getDate()+1);
            var tmpMonth = tmpDate.getMonth()+1;

            YAHOO.recherche.calendar.cal2.cfg.setProperty("pagedate", tmpMonth + "/" + tmpDate.getFullYear());
            YAHOO.recherche.calendar.cal2.cfg.setProperty("selected", tmpMonth + '/' + tmpDate.getDate() + '/' + tmpDate.getFullYear() );
            YAHOO.recherche.calendar.cal2.cfg.setProperty("mindate", tmpMonth + '/' + tmpDate.getDate() + '/' + tmpDate.getFullYear() );
            YAHOO.recherche.calendar.cal2.render();

            // si date to <= date from, on decale date to à date from + 1
   			var selToMonth = document.getElementById("tomonth");
   			var selToDay   = document.getElementById("today");
   			var selToYear  = document.getElementById("toyear");

   			var toMonth = parseInt(selToMonth.options[selToMonth.selectedIndex].value);
   			var toDay = parseInt(selToDay.options[selToDay.selectedIndex].value);
   			var toYear = parseInt(selToYear.options[selToYear.selectedIndex].value);

				var dateTo = new Date(toYear, toMonth-1, toDay);
            var tmpToTime = dateTo.getTime();
            var tmpFromTime = tmpDate.getTime();
            if(tmpToTime <= tmpFromTime)
            {
      			selToMonth.selectedIndex = tmpMonth-1;
      			selToDay.selectedIndex = tmpDate.getDate()-1;

      			for (var y=0;y<selToYear.options.length;y++) {
      				if (selToYear.options[y].text == tmpDate.getFullYear()) {
      					selToYear.selectedIndex = y;
      					break;
      				}
      			}
               // set toDayOfWeekLabel
               var tmpDateTo = new Date(year, month-1, day);
               tmpDateTo.setDate(tmpDateTo.getDate()+1);
               document.getElementById('toDayOfWeekLabel').innerHTML =  dayOfWeek[tmpDateTo.getDay()];

            }
        
   		}

   		function updateCal1() {
   			var selMonth = document.getElementById("frommonth");
   			var selDay = document.getElementById("fromday");
   			var selYear = document.getElementById("fromyear");

   			var month = parseInt(selMonth.options[selMonth.selectedIndex].value);
   			var day = parseInt(selDay.options[selDay.selectedIndex].value);
   			var year = parseInt(selYear.options[selYear.selectedIndex].value);

   			if (! isNaN(month) && ! isNaN(day) && ! isNaN(year)) {
   				var date = month + "/" + day + "/" + year;

   				YAHOO.recherche.calendar.cal1.select(date);
   				YAHOO.recherche.calendar.cal1.cfg.setProperty("pagedate", month + "/" + year);
   				YAHOO.recherche.calendar.cal1.render();

               var tmpDate = new Date(year, month-1, day);
               document.getElementById('fromDayOfWeekLabel').innerHTML = dayOfWeek[tmpDate.getDay()]; // set toDayOfWeekLabel

               tmpDate.setDate(tmpDate.getDate()+1);
               var tmpMonth = tmpDate.getMonth()+1;

               YAHOO.recherche.calendar.cal2.cfg.setProperty("pagedate", tmpMonth + "/" + tmpDate.getFullYear());
               YAHOO.recherche.calendar.cal2.cfg.setProperty("selected", tmpMonth + '/' + tmpDate.getDate() + '/' + tmpDate.getFullYear() );
               YAHOO.recherche.calendar.cal2.cfg.setProperty("mindate", tmpMonth + '/' + tmpDate.getDate() + '/' + tmpDate.getFullYear() );
               YAHOO.recherche.calendar.cal2.render();

               // si date to <= date from, on decale date to à date from + 1
      			var selToMonth = document.getElementById("tomonth");
      			var selToDay = document.getElementById("today");
      			var selToYear = document.getElementById("toyear");

      			var toMonth = parseInt(selToMonth.options[selToMonth.selectedIndex].value);
      			var toDay = parseInt(selToDay.options[selToDay.selectedIndex].value);
      			var toYear = parseInt(selToYear.options[selToYear.selectedIndex].value);

   				var dateTo = new Date(toYear, toMonth-1, toDay);
   				var dateFrom = new Date(year, month-1, day);
               var tmpToTime = dateTo.getTime();
               var tmpFromTime = dateFrom.getTime();
               if(tmpToTime <= tmpFromTime)
               {
         			selToMonth.selectedIndex = tmpMonth-1;
         			selToDay.selectedIndex = tmpDate.getDate()-1;

         			for (var y=0;y<selToYear.options.length;y++) {
         				if (selToYear.options[y].text == tmpDate.getFullYear()) {
         					selToYear.selectedIndex = y;
         					break;
         				}
         			}
                  // set fromDayOfWeekLabel
                  document.getElementById('toDayOfWeekLabel').innerHTML =  dayOfWeek[tmpDate.getDay()];
               }
   			}

   		}


   		function handleSelect2(type,args,obj) {
   			var dates = args[0];
   			var date = dates[0];
   			var year = date[0], month = date[1], day = date[2];

   			var date_depart = document.getElementById("date_depart");
        var today = document.getElementById("today");
        var tomonth = document.getElementById("tomonth");
        var toyear = document.getElementById("toyear");

   			date_depart.value = day + "/" + month + "/" + year;
        today.value = day;
        tomonth.value = month;
        toyear.value = year;
        
   			YAHOO.recherche.calendar.cal2.hide();

            var tmpDate = new Date(year, month-1, day);
            document.getElementById('toDayOfWeekLabel').innerHTML = dayOfWeek[tmpDate.getDay()]; // set toDayOfWeekLabel
            tmpDate.setDate(tmpDate.getDate()-1);
            var tmpMonth = tmpDate.getMonth()+1;

            YAHOO.recherche.calendar.cal1.cfg.setProperty("pagedate", tmpMonth + "/" + tmpDate.getFullYear());
            YAHOO.recherche.calendar.cal1.cfg.setProperty("selected", tmpMonth + '/' + tmpDate.getDate() + '/' + tmpDate.getFullYear() );
            YAHOO.recherche.calendar.cal1.cfg.setProperty("maxdate", tmpMonth + '/' + tmpDate.getDate() + '/' + tmpDate.getFullYear() );
            YAHOO.recherche.calendar.cal1.render();

            // si date from >= date to, on decale date from à date to - 1
   			var selFromMonth = document.getElementById("frommonth");
   			var selFromDay = document.getElementById("fromday");
   			var selFromYear = document.getElementById("fromyear");

   			var fromMonth = parseInt(selFromMonth.options[selFromMonth.selectedIndex].value);
   			var fromDay = parseInt(selFromDay.options[selFromDay.selectedIndex].value);
   			var fromYear = parseInt(selFromYear.options[selFromYear.selectedIndex].value);

				var dateFrom = new Date(fromYear, fromMonth-1, fromDay);
            var tmpFromTime = dateFrom.getTime();
            var tmpToTime = tmpDate.getTime();
            if(tmpFromTime >= tmpToTime)
            {
      			selFromMonth.selectedIndex = tmpMonth-1;
      			selFromDay.selectedIndex = tmpDate.getDate()-1;

      			for (var y=0;y<selFromYear.options.length;y++) {
      				if (selFromYear.options[y].text == tmpDate.getFullYear()) {
      					selFromYear.selectedIndex = y;
      					break;
      				}
      			}
               // set toDayOfWeekLabel
               var tmpDateFrom = new Date(year, month-1, day);
               tmpDateFrom.setDate(tmpDateFrom.getDate()+1);
               document.getElementById('fromDayOfWeekLabel').innerHTML =  dayOfWeek[tmpDateFrom.getDay()];

            }
   		}

   		function updateCal2() {
   			var selMonth = document.getElementById("tomonth");
   			var selDay = document.getElementById("today");
   			var selYear = document.getElementById("toyear");

   			var month = parseInt(selMonth.options[selMonth.selectedIndex].value);
   			var day = parseInt(selDay.options[selDay.selectedIndex].value);
   			var year = parseInt(selYear.options[selYear.selectedIndex].value);

   			if (! isNaN(month) && ! isNaN(day) && ! isNaN(year)) {
   				var date = month + "/" + day + "/" + year;

   				YAHOO.recherche.calendar.cal2.select(date);
   				YAHOO.recherche.calendar.cal2.cfg.setProperty("pagedate", month + "/" + year);
   				YAHOO.recherche.calendar.cal2.render();

               var tmpDate = new Date(year, month-1, day);
               document.getElementById('toDayOfWeekLabel').innerHTML = dayOfWeek[tmpDate.getDay()]; // set toDayOfWeekLabel

               tmpDate.setDate(tmpDate.getDate()-1);
               var tmpMonth = tmpDate.getMonth()+1;

               YAHOO.recherche.calendar.cal1.cfg.setProperty("pagedate", tmpMonth + "/" + tmpDate.getFullYear());
               YAHOO.recherche.calendar.cal1.cfg.setProperty("selected", tmpMonth + '/' + tmpDate.getDate() + '/' + tmpDate.getFullYear() );
               YAHOO.recherche.calendar.cal1.cfg.setProperty("maxdate", tmpMonth + '/' + tmpDate.getDate() + '/' + tmpDate.getFullYear() );
               YAHOO.recherche.calendar.cal1.render();

               // si date from >= date to, on decale date from à date to - 1
      			var selFromMonth = document.getElementById("frommonth");
      			var selFromDay = document.getElementById("fromday");
      			var selFromYear = document.getElementById("fromyear");

      			var fromMonth = parseInt(selFromMonth.options[selFromMonth.selectedIndex].value);
      			var fromDay = parseInt(selFromDay.options[selFromDay.selectedIndex].value);
      			var fromYear = parseInt(selFromYear.options[selFromYear.selectedIndex].value);

   				var dateFrom = new Date(fromYear, fromMonth-1, fromDay);
   				var dateTo = new Date(year, month-1, day);
               var tmpFromTime = dateFrom.getTime();
               var tmpToTime = dateTo.getTime();
               if(tmpFromTime >= tmpToTime)
               {
         			selFromMonth.selectedIndex = tmpMonth-1;
         			selFromDay.selectedIndex = tmpDate.getDate()-1;

         			for (var y=0;y<selFromYear.options.length;y++) {
         				if (selFromYear.options[y].text == tmpDate.getFullYear()) {
         					selFromYear.selectedIndex = y;
         					break;
         				}
         			}
                  // set fromDayOfWeekLabel
                  document.getElementById('fromDayOfWeekLabel').innerHTML =  dayOfWeek[tmpDate.getDay()];
               }
   			}
   		}

      var minDate = new Date();
      var tmpMinMonth = minDate.getMonth()+1;
      var tmpMinDayCal1 = minDate.getDate(); // (+6: on décale de 6 jours)
      var tmpMinDayCal2 = minDate.getDate()+1; // (+7: on décale d'une semaine )
      var strMinDate = tmpMinMonth + '/' + tmpMinDayCal1 + '/' + minDate.getFullYear();
      var strMinDateCal2 = tmpMinMonth + '/' + tmpMinDayCal2 + '/' + minDate.getFullYear();

      var maxDate = new Date();
      maxDate.setDate(maxDate.getDate()+365);
      var tmpMaxMonth = minDate.getMonth()+1;
      var tmpMaxDayCal2 = maxDate.getDate()+1;
      var strMaxDate = tmpMaxMonth + '/' + maxDate.getDate() + '/' + maxDate.getFullYear();
      var strMaxDateCal2 = tmpMaxMonth + '/' + tmpMaxDayCal2 + '/' + maxDate.getFullYear();

   	YAHOO.recherche.calendar.cal1 = new YAHOO.widget.CalendarGroup("cal1","cal1Container", {PAGES:2,
   	                                                                                 selected:strMinDate,
                                                                                       mindate:strMinDate,
                                                                                       maxdate:strMaxDate,
                                                                                       title:"Select the arrival date  :",
                                                                                       close:true
                                                                                       });
                                                                                       
      YAHOO.recherche.calendar.cal1.cfg.setProperty("MONTHS_LONG",    ["January ", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]);
      YAHOO.recherche.calendar.cal1.cfg.setProperty("WEEKDAYS_SHORT",["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]);

      YAHOO.recherche.calendar.cal1.selectEvent.subscribe(handleSelect1, YAHOO.recherche.calendar.cal1, true);
      YAHOO.recherche.calendar.cal1.render();
      YAHOO.util.Event.addListener("show1up", "click", YAHOO.recherche.calendar.cal1.show, YAHOO.recherche.calendar.cal1, true); 		// Listener to show the 2 page Calendar when the button is clicked
      YAHOO.util.Event.addListener(["frommonth","fromday","fromyear"], "change", updateCal1);




      /* Calendar 2 */
      YAHOO.recherche.calendar.cal2 = new YAHOO.widget.CalendarGroup("cal2","cal2Container", {PAGES:2,
                                                                                       selected:strMinDateCal2,
                                                                                       mindate:strMinDateCal2,
                                                                                       maxdate:strMaxDateCal2,
                                                                                       title:"Sélectionnez la date de départ :",
                                                                                       close:true
                                                                                       });
      YAHOO.recherche.calendar.cal2.cfg.setProperty("MONTHS_LONG",    ["January ", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]);
      YAHOO.recherche.calendar.cal2.cfg.setProperty("WEEKDAYS_SHORT",["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]);

      YAHOO.recherche.calendar.cal2.selectEvent.subscribe(handleSelect2, YAHOO.recherche.calendar.cal2, true);
      YAHOO.recherche.calendar.cal2.render();
      YAHOO.util.Event.addListener("show2up", "click", YAHOO.recherche.calendar.cal2.show, YAHOO.recherche.calendar.cal2, true); // Listener to show the 2 page Calendar when the button is clicked
      YAHOO.util.Event.addListener(["tomonth","today","toyear"], "change", updateCal2);

      // init labels
      var now = new Date();
      document.getElementById('fromDayOfWeekLabel').innerHTML = dayOfWeek[now.getDay()]; // set toDayOfWeekLabel
      now.setDate(now.getDate()+1);
      document.getElementById('toDayOfWeekLabel').innerHTML = dayOfWeek[now.getDay()]; // set toDayOfWeekLabel

	}


	YAHOO.util.Event.onDOMReady(YAHOO.recherche.calendar.init);

