📄 reservationsummary.js
字号:
*/ arrivalDateOnselect: function(input_calendar_text, cal, date) { //console.log("arrivalDateOnselect args: ", arguments); //computes departure date (date selected + nights number selected) if(!this.departure_date) this.departure_date = new Date(); this.departure_date.setTime(cal.date.getTime() + (this.nights_select_index+1)*Date.DAY + Date.HOUR); // ajout d'une heure pour compenser le cas du passage de l'heure d'été à l'heure d'hiver //if departure date out of bounds => do nothing if(!this.checkDate(this.departure_date)) { return false; } if(cal.dateClicked) { this.arrival_date = cal.date; this.setDateHiddenFieldsValue(cal.date); if($(input_calendar_text).previous('span.jour')) $(input_calendar_text).previous('span.jour').innerHTML = Calendar._DN[cal.date.getDay()]; this.updateDepartureDate(); $(input_calendar_text).value = date; cal.hide(); } return true; }, /** * methd used by Calendar to disable dates that are before current day and after current + max reservation period * * @see Calendar class documentation * * @return Boolean * */ disableDates: function(dDate, y, m, d) { var now = new Date(); if(dDate.getTime() < now.getTime()-Date.DAY) { return true; } var max_period = now.getTime() + (Date.DAY*((bookingEngineViewBean.hotelMaxPeriod)? bookingEngineViewBean.hotelMaxPeriod : 405)) - (Date.DAY* (this.nights_select_index+1)); if(dDate.getTime() > max_period) { return true; } return false; }, /** * * check whether the passed date is within reservation bounds * * @return Boolean * */ checkDate : function(date) { var b = true; var msg = null; var now = new Date(); //if date is anterior to current day and date.month is not the current month //the last check (current month check)is done so that we don't get an alert when switching to current month //in this case an onSelect event is triggered and the date passed is the month previoulsy selected day //so this day can be anterior to the current day //but we still want to be able to select a day in the current month if(date.getTime() < now.getTime() && date.getMonth() != now.getMonth()) { b = false; msg = I18N._('calendar',"outOfMinDate"); var min_date = new Date(); min_date.setTime(now.getTime()); window.calendar.setDate(min_date); } //compputes max reservation date (in time format) var max_period = now.getTime() + (Date.DAY*((bookingEngineViewBean.hotelMaxPeriod)? bookingEngineViewBean.hotelMaxPeriod : 405)); //check if date is greater than max reservation date if(date.getTime() >= max_period) { b = false; var max_period_date = new Date(max_period); msg = I18N._('calendar',"outOfMaxDate") + " " + ((max_period_date.getDate() < 10)? "0" : "") + max_period_date.getDate() + '/' + ((max_period_date.getMonth() < 9)? "0" : "") + (max_period_date.getMonth()+1) + '/' + max_period_date.getFullYear(); var safe_date = new Date(); safe_date.setTime(max_period - ((this.nights_select_index+1)*Date.DAY)); window.calendar.setDate(safe_date); } if(!b) alert(msg); return b; }, /** * * sets the values for hidden dates field * * @return void * */ setDateHiddenFieldsValue : function(date) { $("jour_arrivee").value = date.getDate(); $("mois_arrivee").value = date.getMonth()+1; // janvier=0 $("annee_arrivee").value = date.getFullYear(); }, /** * adds the number of options to the nb_nuit select box based on the json var * also writes the nb of nights where appropriate * * @return void * */ setupMaxStayDropDown: function(id_select_input) { var select = $(id_select_input); var maxStay = bookingEngineViewBean.hotelMaxStay; var options_array = select.descendants(); var count = 0; //empty select box if not empty if(options_array.length) { options_array.each( function(option) { $(option).remove(); } ) } //fill select box with bean maxStay value and set default selected value based on bookingEngineViewBean.nightsNumber for(var i = 1; i <= maxStay; i++) { var selected; if(bookingEngineViewBean.nightsNumber == i) { selected = true; this.nights_select_index = i-1; } else { selected = false; this.nights_select_index = 0; } var option = new Option(i,i, selected); //3rd parameter seems to be ignored by ie //select.options.add(option); try { select.add(option, null); } catch(ex) { select.add(option); } if(selected) var selected_index = i-1; //new Insertion.Top(select, '<option value="' + i + '">' + i + '</option>');//does not work in ie } //for ie if(select.options[selected_index]) select.options[selected_index].selected = true; //listens to events and bind appropriate handler Event.observe( select, "change", function(e) { this.maxStayNightsNbSelectAction(select); }.bind(this) ); Event.observe( select, "keyup", function(e) { this.maxStayNightsNbSelectAction(select); }.bind(this) ); }, /** * * max stay select box handler * * @return void * * */ maxStayNightsNbSelectAction: function(select) { var date = new Date(); if(bookingEngineViewBean.freeNight == true && select.id == "nb_nuit"){ var day = $('rooms-dates-stay-dates').select('input')[1].value; var month = $('rooms-dates-stay-dates').select('input')[2].value; var year = $('rooms-dates-stay-dates').select('input')[3].value; this.arrival_date = new Date(year, month-1, day); } else if (this.arrival_date) { date.setTime(this.arrival_date.getTime()); } else { alert("Error : No arrival date set"); } date.setTime(date.getTime() + Date.DAY*select.options[select.selectedIndex].value); if(!this.checkDate(date)) { select.selectedIndex = this.nights_select_index; return false; } this.nights_select_index = select.selectedIndex; this.nights_nb = Number(select.options[select.selectedIndex].value); this.updateDepartureDate(); }, /** * * updates departure date and displays it based on arrival date and number of nights * * @return void * */ updateDepartureDate: function() { if(this.arrival_date == undefined) { alert("Selectionnez une date d'arrivee"); return false; } /*var params2update = ['nb_nuit_display', 'nb_nuit', 'nb_nuit_calendar_side']; for(var i = params2update.length-1; i >= 0; i--) { if($(params2update[i])) { var select = $(params2update[i]); //console.log("param départ", params2update[i].replace("nb_nuit", "depart")); var departure_date_display_element = $(params2update[i].replace("nb_nuit", "depart")); //var week_day = departure_date_display_element.down("span.jour"); var date = departure_date_display_element.down("span.date"); //compute new date var nights_stay_in_days = parseInt(this.nights_nb); var nights_stay_in_ms = nights_stay_in_days * Date.DAY; if(!this.departure_date) this.departure_date = new Date(); this.departure_date.setTime( this.arrival_date.getTime() + nights_stay_in_ms ); //if(week_day) week_day.innerHTML = Calendar._DN[this.departure_date.getDay()]; var day_unit_zero = (this.departure_date.getDate() < 10)? "0" : ''; var month_unit_zero = ((Number(this.departure_date.getMonth())+1) < 10)? "0" : ''; date.innerHTML = this.departure_date.print(Calendar._TT["DEF_DATE_FORMAT"]); } }*/ if($('nb_nuit_display')) { var select = $('nb_nuit_display'); var departure_date_display_element = $("depart_display"); //var week_day = departure_date_display_element.down("span.jour"); var date = departure_date_display_element.down("span.date"); //compute new date var nights_stay_in_days = parseInt(this.nights_nb); var nights_stay_in_ms = nights_stay_in_days * Date.DAY; if(!this.departure_date) this.departure_date = new Date(); this.departure_date.setTime( this.arrival_date.getTime() + nights_stay_in_ms + Date.HOUR // ajout d'une heure pour compenser le cas du passage de l'heure d'été à l'heure d'hiver ); //if(week_day) week_day.innerHTML = Calendar._DN[this.departure_date.getDay()]; var day_unit_zero = (this.departure_date.getDate() < 10)? "0" : ''; var month_unit_zero = ((Number(this.departure_date.getMonth())+1) < 10)? "0" : ''; date.innerHTML = this.departure_date.print(Calendar._TT["DEF_DATE_FORMAT"]); } if(document.getElementById('arrivee_calendar_side')) { //alert("calendar side"); var select = $('nb_nuit_calendar_side'); var departure_date_display_element = $("depart_calendar_side"); //var week_day = departure_date_display_element.down("span.jour"); var date = departure_date_display_element.down("span.date"); //compute new date var nights_stay_in_days = parseInt(this.nights_nb); var nights_stay_in_ms = nights_stay_in_days * Date.DAY; if(!this.departure_date) this.departure_date = new Date(); this.departure_date.setTime( this.arrival_date.getTime() + nights_stay_in_ms + Date.HOUR // ajout d'une heure pour compenser le cas du passage de l'heure d'été à l'heure d'hiver ); // if(week_day) week_day.innerHTML = Calendar._DN[this.departure_date.getDay()]; var day_unit_zero = (this.departure_date.getDate() < 10)? "0" : ''; var month_unit_zero = ((Number(this.departure_date.getMonth())+1) < 10)? "0" : ''; date.innerHTML = this.departure_date.print(Calendar._TT["DEF_DATE_FORMAT"]); } if(this.getBookingEngineViewBean().displayDate == true && document.body.id == "dates-et-nb-chambres") { var select = $('nb_nuit'); var departure_date_display_element = $("depart"); var week_day = departure_date_display_element.down("span.jour"); var date = departure_date_display_element.down("span.date"); //compute new date var nights_stay_in_days = parseInt(this.nights_nb); var nights_stay_in_ms = nights_stay_in_days * Date.DAY; if(!this.departure_date) this.departure_date = new Date(); this.departure_date.setTime( this.arrival_date.getTime() + nights_stay_in_ms + Date.HOUR // ajout d'une heure pour compenser le cas du passage de l'heure d'été à l'heure d'hiver ); if(week_day) week_day.innerHTML = Calendar._DN[this.departure_date.getDay()]; var day_unit_zero = (this.departure_date.getDate() < 10)? "0" : ''; var month_unit_zero = ((Number(this.departure_date.getMonth())+1) < 10)? "0" : ''; date.innerHTML = this.departure_date.print(Calendar._TT["DEF_DATE_FORMAT"]); } }, /** * displays a link to open the user basket popup * the link is displayed if the basketViewBean.displayBasket ppty is set to true * the url of the popup is retrieved from: basketViewBean.basketUrl * * @return void * */ setupBasketLink: function() { var basket_link_container = $('basket_link_container'); if(basket_link_container) { var basket_link_element = basket_link_container.down('a'); } var basket_bean = this.getBasketViewBean(); //do not display the link to view the user basket if we are on these two pages if((document.body.id != 'detail-clients') && (document.body.id != 'confirmation')){ if((basket_bean && basket_bean.displayBasket) && basket_link_element) { basket_link_container.setStyle({display: 'block'}); Event.observe( basket_link_element, 'click', function(e) { Event.stop(e); if(this.basket_popup) { this.basket_popup.close(); } this.basket_popup = window.open(basket_bean.basketUrl,'basket_popup','width=750,height=300'); }.bind(this) ); } else if(basket_link_container) { basket_link_container.hide(); } } }, /* mise à jour du titre de la page */ setTitle: function() { var url = location.host; var brand = url.split("."); brand = brand[1].toLowerCase(); switch(brand) { case "accorhotels": var tit = 'AccorHotels.com'; break; case "all-seasons-hotels": var tit = 'Hôtels all seasons'; break; case "etaphotel": var tit = 'Etap Hotel'; break; case "hotelformule1": var tit = 'Hotel Formule 1'; break; case "ibishotel": var tit = 'Ibis'; break; case "mercure": var tit = 'Mercure'; break; case "novotel": var tit = 'Novotel'; break; case "sofitel": var tit = 'Sofitel Hotels'; break; case "suitehotel": var tit = 'Suite Hotel'; break; case "accorthalassa": var tit = 'Accor Thalassa'; break; case "pullmanhotels": var tit = 'Pullman'; break; default : var tit = 'AccorHotels.com'; break; } tit+=": "+I18N._('title-reservation','title'); document.title=tit; } }core.push(ReservationSummary);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -