📄 upsale.js
字号:
}, refreshSums: function() { $("iframe-upsale").contentWindow.document.getElementById("total-price").innerHTML = (Number($("iframe-upsale").contentWindow.document.getElementById("total-only-price").innerHTML) + Number($("iframe-upsale").contentWindow.document.getElementById("total-options-price").innerHTML)).toFixed(2); $('prix_total').down('.techPrice').innerHTML = $("iframe-upsale").contentWindow.document.getElementById("total-only-price").innerHTML ; }, /** * Récupère les options cochées par le visiteur et met à jour les différents champs de prix en conséquence */ refreshTotal: function() { var roomPrice = Number(document.getElementById("room-price").innerHTML); var upsalesPrice = 0; var breakfastPrice = 0 ; var packCodes = []; var tariffCodes = []; var mealCodes = []; var mealQuantities = []; var ups = this.getUpsaleViewBean() ; var mot = this.getBookingEngineViewBean(); var rooms = mot.roomsNb ; if (this.getUpsaleCurrency() == Currencies.CrtCurrency) { Currencies.purgeTarifs(); // vide le tableau de tarifs Currencies.registerEverythingFromPage(Currencies.CrtCurrency); // on enregistre les données } // sinon on est dnas une autre devise, on ne touche pas à ce qu'on a ! if ($("iframe-upsale").contentWindow.document.getElementById("roomUpsale")) { // var inputs = $("iframe-upsale").contentWindow.document.getElementById("roomUpsale").getElementsByTagName("input") ; // var inputs = $("iframe-upsale").contentWindow.document.getElementById("roomUpsale").select('input'); var inputs = $A($("iframe-upsale").contentWindow.document.getElementById("roomUpsale").getElementsByTagName("input")).map(Element.extend); for (var i = inputs.length - 1; i >= 0; i--) { if(inputs[i].type == "checkbox") { var li = inputs[i]; if(li.checked === true) { var optionsVars = li.value.split("_"); while(li.nodeName != "LI") { li = li.parentNode; } li.className = ""; $("must-choose-upsale").style.display = "none"; packCodes.push(optionsVars[0]); tariffCodes.push(optionsVars[1]); li.className = "selected"; var spans = li.getElementsByTagName("span"); for (var j = spans.length - 1; j >= 0; j--) { if(spans[j].className.indexOf ( "mtarif_by_day") != -1) { upsalesPrice += Number(spans[j].innerHTML) * Number(mot.nightsNumber); } }; } else { while(li.nodeName != "LI") { li = li.parentNode; } li.className = ""; } } } } var recapLeft = $('prix_total').down('.techPrice') ; if (recapLeft && recapLeft.className.indexOf('doNotRegister') == -1 ) recapLeft.className += " doNotRegister" ; // if ($("iframe-upsale").contentWindow.document.getElementById("mealUpsale")) { // un seul petit dej, plusieurs chambres var breakfasts = 0; if (packCodes.length > 0) crtRoom = packCodes[0]; else crtRoom = ups.currentRoom ; if (ups.mealsLowestUpsale == null || ups.mealsUpsale == null || ups.mealsLowestUpsale[crtRoom] == null || ups.mealsUpsale[crtRoom] == null) { $("iframe-upsale").contentWindow.document.getElementById("mealUpsale").style.display ="none"; HTprice = 0 ; TTCpriceTotal = 0 ; } else { var meals = $("iframe-upsale").contentWindow.document.getElementById("mealUpsale") ; meals.style.display ="block"; thisBF = ups.mealsLowestUpsale[crtRoom] ; thisBFtotal = ups.mealsUpsale[crtRoom]; showFrom = thisBF.lowestPrice ; HTprice = (thisBF.priceWithoutTaxes) ; TTCpriceTotal = (thisBFtotal.priceWithTaxes) ; // puis convertir si necessaire if (this.getUpsaleCurrency() != Currencies.CrtCurrency ) { HTprice = Currencies.convert(HTprice, thisBF.currencyCode, Currencies.CrtCurrency); TTCpriceTotal = Currencies.convert(TTCpriceTotal, thisBF.currencyCode, Currencies.CrtCurrency); } var selects = $A(meals.getElementsByTagName( "select" )).map(Element.extend); // pour IE var nb = selects.length; for (var i = 0 ; i < nb ; i++) { var li = selects[i]; var nbbf = li.value; ///mealCode=MBREAK|MBREAK|MBREAK&mealQuantity=2|0|1 ///only if not 0|0|0 mealQuantities.push(nbbf); breakfasts +=Number(nbbf); } if ($("iframe-upsale").contentWindow.document.getElementById("fromPrice")) if (showFrom ) $("iframe-upsale").contentWindow.document.getElementById("fromPrice").style.visibility = "visible" ; else $("iframe-upsale").contentWindow.document.getElementById("fromPrice").style.visibility = "hidden" ; if (breakfasts>0) { breakfastPrice = breakfasts * Number(TTCpriceTotal); for(i=0 ; i<mealQuantities.length ; i++) mealCodes.push('MBREAK'); } var spans = $A(meals.getElementsByTagName( "span" )).map(Element.extend); // pour IE for (var j = 0 ; j < spans.length; j++) { if (spans[j].hasClassName ("mtarif_by_day")) { //if (!spans[j].hasClassName ("doNotRegister")) spans[j].className += " doNotRegister" ; if (spans[j].className.indexOf('doNotRegister') == -1 ) spans[j].className += " doNotRegister" ; spans[j].innerHTML = Number (HTprice).toFixed(2) ; } } } // } if($("iframe-upsale").contentWindow.document.getElementById("taxes")) { var taxElement = $("iframe-upsale").contentWindow.document.getElementById("taxes") ; var bftx = 0 ; if (breakfasts > 0) { // Les taxes thisBFtotal = null ; if (ups.mealsUpsale[crtRoom] != null) thisBFtotal = ups.mealsUpsale[crtRoom]; if (thisBFtotal != null) bftx = breakfasts * Number (thisBFtotal.priceWithTaxes - thisBFtotal.priceWithoutTaxes) ; } thisUpsTotal = ups.roomUpsale[crtRoom]; taxes = bftx + rooms * Number(thisUpsTotal.priceWithTaxes - thisUpsTotal.priceWithoutTaxes) if (this.getUpsaleCurrency() != Currencies.CrtCurrency ) { taxes = Currencies.convert(taxes, this.getUpsaleCurrency() , Currencies.CrtCurrency); taxElement.innerHTML = taxes; } else taxElement.innerHTML = taxes.toFixed(2); if (taxElement.className.indexOf ("doNotRegister") == -1) taxElement.className += " doNotRegister" ; } if ($("iframe-upsale").contentWindow.document.getElementById("total-only-price")) { elt = $("iframe-upsale").contentWindow.document.getElementById("total-only-price") ; // if (elt.className.indexOf ("doNotRegister") == -1) elt.className += " doNotRegister" ; elt.innerHTML = roomPrice.toFixed(2) ; } if ($("iframe-upsale").contentWindow.document.getElementById("total-options-price")) { elt = $("iframe-upsale").contentWindow.document.getElementById("total-options-price") ; if (elt.className.indexOf ("doNotRegister") == -1) elt.className += " doNotRegister" ; elt.innerHTML = (upsalesPrice * rooms + breakfastPrice).toFixed(2); } var totalPrice = (roomPrice + upsalesPrice * rooms + breakfastPrice); if ($("iframe-upsale").contentWindow.document.getElementById("total-price")) { elt = $("iframe-upsale").contentWindow.document.getElementById("total-price") ; if (elt.className.indexOf ("doNotRegister") == -1) elt.className += " doNotRegister" ; elt.innerHTML = totalPrice.toFixed(2); } // modification lien var validateHref = top.document.getElementById("validate-link").getAttribute("href").split("?"); var optionHref = ''; if (packCodes.length >0 ) { optionHref += "packCodes=" + packCodes.join(";") + "&tariffCodes=" + tariffCodes.join(";") + "&" ; } else { optionHref += "packCode=" + ups.currentRoom + "&tariffCode=" + ups.currentRate + "&" ; } if (mealCodes.length >0 ) { optionHref += "mealCode=" + mealCodes.join(";") + "&mealQuantity=" + mealQuantities.join(";") + "&" ; } top.document.getElementById("validate-link").setAttribute("href", validateHref[0]+"?"+optionHref + "action=display"); }, /** * Remet à zéro tous les champs de l'iframe (lien "supprimer ma sélection") */ deleteUpsales: function(e) { if($("iframe-upsale").contentWindow.document.getElementById("mealUpsale")) { var meal = $("iframe-upsale").contentWindow.document.getElementById("mealUpsale"); var selects = $A(meal.getElementsByTagName( "select" )).map(Element.extend); // pour IE for (i= 0 ; i < selects.length ; i++) { selects[i].value= 0; } } if($("iframe-upsale").contentWindow.document.getElementById("roomUpsale")) { var room = $("iframe-upsale").contentWindow.document.getElementById("roomUpsale") ; var uls = $A(room.getElementsByTagName( "ul" )).map(Element.extend); // pour IE var inputs = $A(uls[0].getElementsByTagName( "input" )).map(Element.extend); // pour IE for (i= 0 ; i < inputs.length ; i++) { inputs[i].checked = false; } }/* for (var i = $("iframe-upsale").contentWindow.document.getElementsByTagName("li").length - 1; i >= 0; i--) { $("iframe-upsale").contentWindow.document.getElementsByTagName("li")[i].className.replace("selected", ""); }; for (var i = $("iframe-upsale").contentWindow.document.getElementsByTagName("input").length - 1; i >= 0; i--) { if( $("iframe-upsale").contentWindow.document.getElementsByTagName("input")[i].name == "room" || $("iframe-upsale").contentWindow.document.getElementsByTagName("input")[i].name == "restauration" ) { $("iframe-upsale").contentWindow.document.getElementsByTagName("input")[i].checked = false; } }*/ UpsaleBloc.refreshTotal(); }, /** * Vérifie si le clic sur une option de tri nécessite un rechargement de l'iframe * * @param input Element input cliqué par le visiteur */ dealSorter : function(input) { if(input.value == UpsaleBloc.getIframeParam('sort')) { return; } else { UpsaleBloc.loadIframe({sort: input.value}); } }, /** * Permet de récupérer la valeur d'un paramètre passé à l'iframe par son param * * @param paramName Chaine, nom du paramètre de l'url à récupérer * @return Chaine, valeur du paramètre demandé (null si non trouvé) */ getIframeParam: function(paramName) { var base_document = $("iframe-upsale").contentWindow; var portions = base_document.location.href.split("?"); var params = portions[1].split("&"); for (var i = params.length - 1; i >= 0; i--) { var paramData = params[i].split("="); if(paramData[0] == paramName) { return paramData[1]; } } return null; }, /** * Charge l'iframe "tarifs" avec les paramètres passés * * @param unamaned Objet facultatif contenant des paires de paramètres / valeurs à ajouter à l'url * &example UpsaleBloc.loadTarifsIframe({param1: "value1", param2: "value2"... }); */ loadIframe: function() { var iframeParams = {}; if(UpsaleBloc.getIframeParam("sort") != null) { iframeParams.sort = UpsaleBloc.getIframeParam("sort"); } else { iframeParams.sort = "service"; } if(arguments.length > 0 && typeof(arguments[0]) === "object") { for(var i in arguments[0]) { iframeParams[i] = arguments[0][i]; } } var href_iframe = document.location.protocol; href_iframe += "//"; href_iframe += document.location.hostname+"/"; href_iframe += "reservation/iframe-upsale.jsp?"; var tabParams = []; for(var i in iframeParams) { tabParams.push(i+"="+iframeParams[i]); } href_iframe += tabParams.join("&"); $("iframe-upsale").contentWindow.location.href = href_iframe; }, /** * Accroche la popup internet-sales-conditions.html */ setInfoRatesLinks: function() { var link = $("infos-rates-popup-link"); Event.observe( link, 'click', function(e) { Event.stop(e); DivPopup.openPopup('rates_sales_policies', 500, 400, null, "internet-sales-conditions.html", cgv_title(), 17); } ); }}core.push(UpsaleBloc);/** * Mettez ci-dessous les méthodes utilisées par la page, utilisant le JSON. * Toute méthode n'ayant pas de rapport avec le JSON ne sera pas acceptée. */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -