📄 multirates.js
字号:
/*** Objet javascript permettant de gérer les données d'affichage* de la page d'affichage des tarifs.*/var class_technique = "techPrice" ; var MultiRates = { bookingEngineViewBean: null, roomsListViewBean: null, originViewBean: null, /** * Liste des noms d'objets à utiliser. */ getBeans: function() { return "RoomsListViewBean;BookingEngineViewBean;OriginViewBean"; }, /** * Initialisation de la variable JSON */ initJSON: function() { var num; try { for( num in beans) { if("RoomsListViewBean" == beans[num].nom) { roomsListViewBean = beans[num].bean; } if("BookingEngineViewBean" == beans[num].nom) { bookingEngineViewBean = beans[num].bean; } if("OriginViewBean" == beans[num].nom) { originViewBean = beans[num].bean; } } } catch(e) { alert(e); } }, /** * Retourne la variable de classe instanciée. */ getRoomsListViewBean: function() { return roomsListViewBean; }, getBookingEngineViewBean: function() { return bookingEngineViewBean; }, getMultirateCurrency: function() { return this.beanRoomsListe[this.tab_type][0].currency ; }, /** * 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.loadRooms(); // chargement des chambres du bean this.setRoomClick(); // bind de sélection d'une autre chambre this.displayRoomsList(); this.tabClickControl(); // Popups this.setLegendRatesPopupLinks(); this.setRatesSalesPoliciesRatesDetailsLinks(); //this.setMoreInfosLinks(); // lien +infos supprimé du cahier des charges this.setDescRoomsLinks(); // lien de descriptions des chambres d'hotels this.setInfoRatesLinks(); this.switchDisplayInTarifIframe(); this.adaptTabIframeForContentHeight(); // enregistre la currency renvoyée // ce code supplémentaire est obligé par le fait que l'iframe est reloadée sans consideration des changements de devise // => il faut tout reconvertir si on clique sur "Autres chambres dispo" var c = this.getMultirateCurrency(); Currencies.setOriginalCurrency(c) ; Currencies.setCrtCurrency(c) ; this.tarifsIframe = frames['tarifs']; /* if (navigator.userAgent.indexOf('Firefox/3') > -1) { frames['tarifs'].location.reload(true); // forces (re)load of frame in case FF3 and back (do you know how to detect a "back" loading ? } */ //deals with re-assigning event handlers when the iframe has been reloaded Event.observe( $("tarifs"), "load", function() { this.loadRooms(); this.displayRoomsList(); if(typeof(setupRollOversIframe) != "undefined") { setupRollOversIframe(); } this.bindActiveTabAndContent(); this.setRatesSalesPoliciesRatesDetailsLinks(); this.switchDisplayInTarifIframe(); this.adaptPriceMarginHeight(); this.adaptTabIframeForContentHeight(); this.bindTheIframeFlexPopup(); this.bindTheIframeValidateButtons(); // bind des boutons "Valider" de l'iframe this.changeStyles(); //toggle the action (fetch url) set on the extend stay validate link (based on the dates set in the arrival and departure fields) //this is done here because it has to be done after the binding which is done in bindTheIframeValidateButtons (so that we unbind if necessary) if(typeof(this.tab_type) != "undefined" && this.tab_type == "packages") { if(this.tarifsIframe.ExtendPackageStayDates) this.tarifsIframe.ExtendPackageStayDates.toggleExtendStayValidateButtonAction(); } var c = this.getMultirateCurrency(); Currencies.setOriginalCurrency(c) ; Currencies.purgeTarifs(); // vide le tableau de tarifs Currencies.doSelectCurrency("s_devise", Currencies.CrtCurrency); // renvoi des données apres conversion (ex : clic sur autre chambres apres avoir converti) Currencies.registerEverythingFromPage(Currencies.OriginalCurrency); // on enregistre les données non converties (renvoyées) if (Currencies.CrtCurrency != Currencies.OriginalCurrency) { Currencies.convertEverythingFromPage(Currencies.OriginalCurrency, Currencies.CrtCurrency); } $("autre_devise").innerHTML = Currencies.CrtCurrency ; if(frames['tarifs'].$ != null) Currencies.observeSelect(frames['tarifs'].$('s_devise')); }.bind(this) ); if(navigator.userAgent.indexOf('Safari') != -1) { if($('tarifs')){ //$('tarifs').style.width="695px"; } } }, changeStyles: function (){ if( navigator.userAgent.search(/MSIE 6/) != -1 && navigator.userAgent.search(/opera/) == -1 ) { for(var i = $("tarifs").contentWindow.document.getElementsByTagName("li").length - 1; i >= 0; i--) { var li = $("tarifs").contentWindow.document.getElementsByTagName("li")[i]; if(li.className.search(/chambre/) !== -1) { var height = $(li).getHeight(); var spanBottom = li.getElementsByTagName("span")[li.getElementsByTagName("span").length-1]; spanBottom.style.bottom = "auto"; spanBottom.style.top = (height-14)+"px"; } } var last = $("tarifs").contentWindow.document.getElementsByTagName("span").length-1; var span = $("tarifs").contentWindow.document.getElementsByTagName("span")[last]; if(span.className.search(/extra-bottom/) !== -1) { var height = $("tarifs").getHeight(); span.style.bottom = "auto"; span.style.top = (height-14)+"px"; } } }, /** * Gère les clics sur les onglet de la page * L'iframe correspondant à l'onglet n'est pas rechargée si l'onglet est déjà sélectionné */ tabClickControl: function() { if($("multirates_tabs")) { for (var i = $("multirates_tabs").getElementsByTagName("a").length - 1; i >= 0; i--) { Event.observe( $("multirates_tabs").getElementsByTagName("a")[i], "click", function(e) { if(!e.target && e.srcElement)/* Débuggage IE */ { e.target = e.srcElement; } if(e.target.nodeName != "A") { return; } var urlParts = e.target.href.split("?"); var params = urlParts[1].split("&"); var iframeAlreadyLoaded = true; for (var j = params.length - 1; j >= 0; j--) { var paramData = params[j].split("="); if(MultiRates.getTarifsIframeParam(paramData[0]) != paramData[1]) { iframeAlreadyLoaded = false; } if(paramData[0] == "type") { MultiRates.tab_type = paramData[1]; } }; if(iframeAlreadyLoaded === true) { Event.stop(e); } } ); }; } }, /** * Lors du chargement de l'iframe, ajoute la classe "current" à l'onglet correspondant (pour mise en avant) */ bindActiveTabAndContent: function() { var tabs = $("multirates_tabs").immediateDescendants("LI"); if(MultiRates.isTarifsIframeLoaded() === false) { tabs[0].className = "current"; tabs[1].className = ""; } else { switch(MultiRates.getTarifsIframeParam('type')) { case 'packages': tabs[0].className = ""; tabs[1].className = "current"; break; case 'nopackages': default: tabs[0].className = "current"; tabs[1].className = ""; break; } } }, /** * Redimensionnement de l'iframe sous les onglets en fonction du contenu pour éviter les ascenseurs */adaptTabIframeForContentHeight: function() { if(MultiRates.isTarifsIframeLoaded() === false) { return; } var height = $("tarifs").contentWindow.document.getElementsByTagName("body")[0].clientHeight; $("tarifs").style.height = (height+10)+"px"; if(navigator.userAgent.search(/MSIE 7/) != -1 ) { var height = $("tarifs").contentWindow.document.getElementsByTagName("body")[0].clientHeight; $("tarifs").style.height = (height+10)+"px"; } if(navigator.userAgent.search(/MSIE 6/) != -1 && navigator.userAgent.search(/opera/) == -1) { var last = $("tarifs").contentWindow.document.getElementsByTagName("span").length-1; var span = $("tarifs").contentWindow.document.getElementsByTagName("span")[last]; if(span.className.search(/extra-bottom/) !== -1) { var height2= $("tarifs").getHeight(); span.style.bottom = "auto"; span.style.top = (height2)+"px"; } } if(navigator.userAgent.search(/Safari/) != -1 ) { var last = $("tarifs").contentWindow.document.getElementsByTagName("span").length-1; var span = $("tarifs").contentWindow.document.getElementsByTagName("span")[last]; if(span.className.search(/extra-bottom/) !== -1) { var height= $("tarifs").getHeight(); span.style.bottom = "auto"; span.style.top = (height-10)+"px"; } } }, /** * Gère le texte à afficher dans l'iframe en fonction de l'onglet sélectionné */ switchDisplayInTarifIframe: function() { if(MultiRates.isTarifsIframeLoaded() === false) { return; } $("tarifs").contentWindow.$("sort-"+MultiRates.getTarifsIframeParam('sort')).checked = true; Event.observe( $("tarifs").contentWindow.$("sort-tariff"), "click", function() { MultiRates.dealSorter(this); }.bind($("tarifs").contentWindow.$("sort-tariff")) ); Event.observe( $("tarifs").contentWindow.$("sort-price"), "click", function() { MultiRates.dealSorter(this); }.bind($("tarifs").contentWindow.$("sort-price")) ); var currentTab = MultiRates.getTarifsIframeParam('type'); $("tarifs").contentWindow.document.getElementsByTagName("body")[0].className = currentTab; switch(currentTab) { case "packages": $("tarifs").contentWindow.$("nopackages").style.display = "none"; break; case "nopackages": default: $("tarifs").contentWindow.$("packages").style.display = "none"; break; } }, /** * 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($("tarifs")) { if($("tarifs").contentWindow.location.href == "about:blank") { return false; } return true; } }, /** * Permet de récupérer l'ensemble des paramètres passés à l'iframe * * @return object Objet contenant toute les paire pamètres / valeur présents dans l'url */ getTarifsIframeParams: function() { if(MultiRates.isTarifsIframeLoaded() === false) { throw new Error("iframe not loaded"); } var base_document = $("tarifs").contentWindow; var portions = base_document.location.href.split("?"); var params = portions[1].split("&"); var paramList = {}; for (var i = params.length - 1; i >= 0; i--) { var paramData = params[i].split("="); paramList[paramData[0]] = paramData[1]; } return paramList; }, /** * Permet de récupérer la valeur d'un paramètre passé à l'iframe par son param * * @param paramName Nom du paramètre à récupérer * @return mixed Contient la valeur correspondant au paramètre demandé (null si paramètre absent) */ getTarifsIframeParam: function(paramName) { if(MultiRates.isTarifsIframeLoaded() === false) { throw new Error("iframe not loaded"); } var base_document = $("tarifs").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];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -