📄 upsale.js
字号:
/** * Objet javascript permettant de gérer les données d'affichage * du de la page des Upsales. */var class_technique = "techPrice" ; var UpsaleBloc = { bookingEngineViewBean: null, upsaleViewBean: null, /** * Liste des noms d'objets à utiliser. */ getBeans: function() { return "BookingEngineViewBean;UpsaleViewBean"; }, /** * Initialisation de la variable JSON */ initJSON: function() { var num; try { for( num in beans) { if("BookingEngineViewBean" == beans[num].nom) { bookingEngineViewBean = beans[num].bean; } if("UpsaleViewBean" == beans[num].nom) { upsaleViewBean = beans[num].bean; } } } catch(e) { alert(e); } }, /** * Retourne la variable de classe instanciée. */ getBookingEngineViewBean: function() { return bookingEngineViewBean; }, getUpsaleViewBean: function() { return upsaleViewBean; }, getUpsaleCurrency: function() { var bean = this.getUpsaleViewBean(); if (bean.roomUpsale) { return bean.roomUpsale[bean.currentRoom].currencyCode; } return "EUR"; }, /** * Ecrivez votre code sur l'initialisation des affichage de la page * ici. * Cette méthode est appelée sur le onload de la page. */ rewrite: function() { this.setInfoRatesLinks(); this.upsaleIframe = frames['iframe-upsale']; var c = this.getUpsaleCurrency(); Currencies.setOriginalCurrency(c); Currencies.setCrtCurrency(c); Currencies.doSelectCurrency("s_devise", Currencies.CrtCurrency); this.setRatesDetailsLinks(); this.adapUpsaleIframeForContentHeight(); Event.observe( $("iframe-upsale"), "load", function() { UpsaleBloc.adapUpsaleIframeForContentHeight(); UpsaleBloc.clickCheckBoxControl(); UpsaleBloc.clickSelectControl(); UpsaleBloc.setRatesDetailsLinks(); Currencies.doSelectCurrency("s_devise", Currencies.CrtCurrency); Event.observe( $("iframe-upsale").contentWindow.document.getElementById("delete-upsales"), "click", function(e) { UpsaleBloc.deleteUpsales(e); Event.stop(e); } ); UpsaleBloc.refreshTotal(); } ); if ($('s_devise')) { Currencies.observeSelect( $('s_devise'), "UpsaleBloc.refreshSums();if(Currencies.CrtCurrency == Currencies.OriginalCurrency) { try { ReservationSummary.writeRoomPrice();} catch(e) { alert(e); } }"); } Event.observe( $("iframe-upsale").contentWindow.document.getElementById("delete-upsales"), "click", function(e) { UpsaleBloc.deleteUpsales(e); Event.stop(e); } ); this.clickCheckBoxControl(); this.clickSelectControl(); Event.observe( $("validate-link"), "click", function(e) { if(!e.target && e.srcElement)/* Débuggage IE */ { e.target = e.srcElement; } var hrefPortions = e.target.href.split("?"); var hrefParmasSplit = hrefPortions[1].split("&"); var hrefParmas = {}; for (var i = hrefParmasSplit.length - 1; i >= 0; i--) { var duo = hrefParmasSplit[i].split("="); hrefParmas[duo[0]] = duo[1]; }; /* if(hrefParmas.packCodes.length == 0 || hrefParmas.tariffCodes.length == 0) { //$("must-choose-upsale").style.display = "block"; //Event.stop(e); //return; $("validate-link").href = $("no-option-link").href; } */ $("must-choose-upsale").style.display = "none"; } ); UpsaleBloc.refreshTotal(); }, /** * Indique si l'iframe a déjà été chargée (ce n'est pas le cas lors du chargement initial de la page) * * @return boolean */ isTarifsIframeLoaded: function() { if($("iframe-upsale")) { if($("iframe-upsale").contentWindow.location.href == "about:blank") { return false; } return true; } }, setRatesDetailsLinks : function(){ if(this.isTarifsIframeLoaded() === false || !$("iframe-upsale")) { return; } var iframe_document = $("iframe-upsale").contentWindow.document; // repas var iframe_rates_sales_links_main_parent = $(iframe_document.getElementById('mealUpsale')); if(iframe_rates_sales_links_main_parent) { var iframe_rates_sales_links_containers = iframe_rates_sales_links_main_parent.select("p.detail"); iframe_rates_sales_links_containers.each( function(element) { var link0 = element.getElementsByTagName('a')[0]; if (link0!=null) Event.observe( link0, 'click', function(e) {Event.stop(e); DivPopup.openPopup('rates_sales_policies', 500, 400, null, link0+"¤cyCode="+Currencies.CrtCurrency); } ); }.bind(this) ); } // chambres iframe_rates_sales_links_main_parent = $(iframe_document.getElementById('roomsUpsale')); if(iframe_rates_sales_links_main_parent) { iframe_rates_sales_links_containers = iframe_rates_sales_links_main_parent.select("div.detail"); iframe_rates_sales_links_containers.each( function(element) { var link0 = element.getElementsByTagName('a')[0]; if (link0!=null) Event.observe( link0, 'click', function(e) {Event.stop(e); DivPopup.openPopup('rates_sales_policies', 500, 400, null, link0+"¤cyCode="+Currencies.CrtCurrency); } ); }.bind(this) ); } }, /** * Controle le click sur l'ensemble du texte et non pas seulement sur la checkbox */ clickCheckBoxControl:function() { 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 Event.observe( uls[0], "click", function(e) { if(!e.target && e.srcElement) { e.target = e.srcElement; } if(e.target.nodeName == "UL") { return; } if(e.target.nodeName != "INPUT") { var li = e.target; if(li.nodeName != "LI") { while(typeof(li.nodeName) != "undefined" && li.nodeName != "LI") { li = li.parentNode; } } var inputs = $A(li.getElementsByTagName( "INPUT" )).map(Element.extend); // pour IE var input = inputs[0]; if(input.checked == true) { input.checked = false; } else { input.checked = true; } } else { var input = e.target; } UpsaleBloc.checkboxAsRadio(input); UpsaleBloc.refreshTotal(); } ) } }, clickSelectControl:function() { 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++) { Event.observe( selects[i], "change", function(e) { UpsaleBloc.refreshTotal(); } ) } } }, /** * Redimensionnement de l'iframe en fonction du contenu pour éviter les assenceurs */ adapUpsaleIframeForContentHeight: function() { if(document.getElementById("iframe-upsale").contentWindow.document.getElementsByTagName("body")) { var height = $("iframe-upsale").contentWindow.document.getElementsByTagName("body")[0].clientHeight; $("iframe-upsale").style.height = (height + 35)+"px"; // UpsaleBloc.checkSelectedPrice(); } }, /** * Au chargement de l'iframe, attache des listener sur les options de tri et de sélection de chambre * * Lance également refreshTotal() */ checkSelectedPrice: function() // cette fonction ne sert à rien { for (var i = $("iframe-upsale").contentWindow.document.getElementsByTagName("input").length - 1; i >= 0; i--) { if(document.getElementById("iframe-upsale").contentWindow.document.getElementsByTagName("input")[i].type == "radio") { Event.observe( $("iframe-upsale").contentWindow.document.getElementsByTagName("input")[i], "click", function(e) { this.dealSorter(Event.element(e)); } ); } else if(document.getElementById("iframe-upsale").contentWindow.document.getElementsByTagName("input")[i].type == "checkbox") { /* Event.observe( $("iframe-upsale").contentWindow.document.getElementsByTagName("input")[i], "click", function(e) { if(!e.target && e.srcElement) { e.target = e.srcElement; } this.checkboxAsRadio(e.target); UpsaleBloc.refreshTotal(); } ); */ } } Event.observe( $("iframe-upsale").contentWindow.document.getElementById("delete-upsales"), "click", function(e) { UpsaleBloc.deleteUpsales(e); Event.stop(e); } ); UpsaleBloc.refreshTotal(); }, /** * Exécuté lors d'un clic sur un bouton checkboxs de sélection de chambre * Règle le comportement des checkboxs de sélection de chambre comme s'il sagissait de boutons radio * * @param input Element input qui vient d'être cliqué */ checkboxAsRadio: function(input) { if(input.checked === true && input.getAttribute("name") == "room") { for (var i = $("iframe-upsale").contentWindow.document.getElementsByTagName("input").length - 1; i >= 0; i--) { if( $("iframe-upsale").contentWindow.document.getElementsByTagName("input")[i].type == "checkbox" && $("iframe-upsale").contentWindow.document.getElementsByTagName("input")[i].name == "room" && $("iframe-upsale").contentWindow.document.getElementsByTagName("input")[i].value != input.value ) { $("iframe-upsale").contentWindow.document.getElementsByTagName("input")[i].checked = false; } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -