📄 multirates.js
字号:
} } return null; }, /** * 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 == MultiRates.getTarifsIframeParam('sort')) { return; } else { $('multirates_tabs').getElementsBySelector('li a').each( function(elem) { elem.href = elem.href.replace("sort="+MultiRates.getTarifsIframeParam('sort'), "sort="+input.value); } ); MultiRates.loadTarifsIframe({sort: input.value}); } }, /** * Sélection d'une chambre : mise en avant sur la page, rafraichissement des iframes */ selectRoom: function(reload) { for (var i = 0, j = $("liste-chambres").getElementsByTagName("LI").length; i < j; i++) { // On raffiche la chambre précédemment sélectionée $("liste-chambres").getElementsByTagName("LI")[i].style.height="auto";//réaffichage de la chambre cachée dans la liste $("liste-chambres").getElementsByTagName("LI")[i].style.overflow="auto";//réaffichage de la chambre cachée dans la liste if($("liste-chambres").getElementsByTagName("LI")[i].getAttribute("code") == MultiRates.beanRoomsListe[MultiRates.tab_type].selectedRoomCode) { liSelected = $("liste-chambres").getElementsByTagName("LI")[i]; $("liste-chambres").getElementsByTagName("LI")[i].style.height="0px";// On cache de la liste la chambre sélectionnée ok pour IE $("liste-chambres").getElementsByTagName("LI")[i].style.overflow="hidden";// On cache de la liste la chambre sélectionnée ok pour IE // On garde le code de la chambre sélectionnée selectedRoom = MultiRates.beanRoomsListe[MultiRates.tab_type][i]; MultiRates.roomsSelectedIndex = i; // On renseigne l'entête avec les infos de la chambre sélectionnée if($$("#chambre-entete h2").size()) { $$("#chambre-entete h2")[0].innerHTML = selectedRoom.label; } if($$("#chambre-entete img").size() && selectedRoom.pictureUrl != null && selectedRoom.pictureUrl.length) { $$("#chambre-entete img")[0].src = selectedRoom.pictureUrl; $$("#chambre-entete img")[0].removeClassName("hide"); } else if($$("#chambre-entete img").size()) { //$$("#chambre-entete img")[0].src = ""; $$("#chambre-entete img")[0].addClassName("hide"); } if($$("#chambre-entete p").size() && selectedRoom.description != null && selectedRoom.description.length) { $$("#chambre-entete p")[0].innerHTML = selectedRoom.description; $$("#chambre-entete p")[0].removeClassName("hide"); } else if($$("#chambre-entete p").size()) { $$("#chambre-entete p")[0].innerHTML = ""; $$("#chambre-entete p")[0].addClassName("hide"); } } } // On modifie les urls des onglets var maReg = new RegExp("packCode=.*&", "") ; if(typeof(MultiRates.beanRoomsListe.packages) != "undefined" && MultiRates.beanRoomsListe.packages != null ) { if( typeof(MultiRates.beanRoomsListe.packages.selectedRoomCode) == "undefined" || MultiRates.beanRoomsListe.packages.selectedRoomCode == null ) { var packCodePackage = MultiRates.beanRoomsListe.packages[0].code; } else { var packCodePackage = MultiRates.beanRoomsListe.packages[0].code; } document.getElementById("packages").getElementsByTagName("a")[0].href = document.getElementById("packages").getElementsByTagName("a")[0].href.replace(maReg, "packCode="+packCodePackage+"&"); } if( (typeof(MultiRates.beanRoomsListe.nopackages.selectedRoomCode) != "undefined" && MultiRates.beanRoomsListe.nopackages.selectedRoomCode != null) ) { var packCodeRooms = MultiRates.beanRoomsListe.nopackages.selectedRoomCode; } else if(MultiRates.beanRoomsListe.nopackages.size() != 0) { var packCodeRooms = MultiRates.beanRoomsListe.nopackages[0].code; } document.getElementById("no-packages").getElementsByTagName("a")[0].href = document.getElementById("no-packages").getElementsByTagName("a")[0].href.replace(maReg, "packCode="+packCodeRooms+"&"); if(reload === true) { // On modifie la source de l'iframe MultiRates.loadTarifsIframe({packCode: MultiRates.beanRoomsListe[MultiRates.tab_type].selectedRoomCode}); } }, /** * Charge l'iframe "tarifs" avec les paramètres passés * * @param objet Paire de paramètre / valeur à ajouter à l'url * @example MultiRates.loadTarifsIframe({param1: "value1", param2: "value2"... }); */ loadTarifsIframe: function() { var iframeParams = { type: MultiRates.tab_type, packCode: "", sort: roomsListViewBean.sort }; if(MultiRates.isTarifsIframeLoaded() === true) { var loadedParams = MultiRates.getTarifsIframeParams(); for (var i in loadedParams) { iframeParams[i] = loadedParams[i]; }; } 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-multirates.jsp?"; var tabParams = []; for(var i in iframeParams) { tabParams.push(i+"="+iframeParams[i]); } href_iframe += tabParams.join("&"); $("tarifs").contentWindow.location.href = href_iframe; }, /** * Chargement des chambres correspondnat au lien "Autres chambres disponibles" * La première à mettre en avant est sélectionnée */ loadRooms: function() { if(typeof(MultiRates.beanRoomsListe) == "undefined") { MultiRates.beanRoomsListe = { nopackages: roomsListViewBean.rooms, packages: roomsListViewBean.packages }; //Par défaut, on choisit le premier onglet if(MultiRates.beanRoomsListe.nopackages.size() != 0) { MultiRates.tab_type = "nopackages"; } else { document.getElementById("no-packages").style.display = "none"; MultiRates.tab_type = "packages"; } if(roomsListViewBean.packages == null) { document.getElementById("packages").style.display = "none"; } } // On prépare le contenu de la popup Descriptif var multi = MultiRates.beanRoomsListe[MultiRates.tab_type]; if(typeof(multi.selectedRoomCode) == "undefined" || multi.selectedRoomCode == null) { multi.selectedRoomCode = multi[0].code; } /* On charge le contenu de la popup "Descriptif des chambres" */ if ( typeof(multi) != "undefined" && multi != null && multi.size() ) { var html = ''; var len = multi.size(); for(i=0; i < len ; i++) { /** Dans les lignes suivantes, on teste la présence des variables à afficher * puis on modifie la structure en conséquence (ajout classe no-detail si aucune précision) */ var isThumb = false; var tarifCrt = multi[i] ; // MultiRates.beanRoomsListe[MultiRates.tab_type][i]; if ( tarifCrt.pictureUrl!=null && tarifCrt.pictureUrl.length ) { isThumb = true; } var isDescription = false; if ( tarifCrt.description!=null && tarifCrt.description.length ) { isDescription = true; } var isZoom = false; if(tarifCrt.zoom!=null && tarifCrt.zoom.length) { isZoom = true; } var isVisite = false; if(tarifCrt.virtualVisitUrl!=null && tarifCrt.virtualVisitUrl.length) { var isVisite = true; } var isDetails = false; if( isThumb === true || isDescription === true || isZoom === true || isVisite === true ) { var isDetails = true; } var htmlChambre = ""; var classeLigne = ''; if(tarifCrt.code == multi.selectedRoomCode){ classeLigne = 'chambre chambre-selected'; } else { classeLigne = 'autre-chambre'; } if(isDetails === false) { classeLigne += ' no-detail'; } htmlChambre+= '<li class="'+classeLigne+'">'; htmlChambre+= '<span class="extra-top"></span><h3>' + tarifCrt.label + '</h3>'; classPrix = 'prix-total' ; if(tarifCrt.famillyOffer) { classPrix += ' prix-famillyOffer'; } htmlChambre+= '<p class="tarifs"><span class="'+classPrix +'">'; if(tarifCrt.free) htmlChambre+= I18N._('multirates','Complimentary'); else if(tarifCrt.onRequest) htmlChambre+= I18N._('multirates','OnRequest'); else { htmlChambre+= '<span class="' + class_technique + ' mtarif tarif">' + tarifCrt.price + '</span> '; htmlChambre+= '<span class="mdevise devise">' + tarifCrt.currency + '</span>' } htmlChambre+= '</span>'; if(tarifCrt.famillyOffer) htmlChambre+= '<span class="roomQuantity prix-famillyOffer">'+ I18N._('multirates','For 2 rooms') +'</span>' ; htmlChambre+= '</p>'; htmlChambre+= '<div class="detail">'; /** Print thumb image **/ if ( isThumb === true ) { htmlChambre+= '<img width="108" src="'+ tarifCrt.pictureUrl +'" alt="Room ' + tarifCrt.code + '">'; } htmlChambre+= '<div>'; /** Print description **/ if (isDescription === true) { htmlChambre+= '<p>' + tarifCrt.description + '</p>'; } if( isZoom === true || isVisite === true ) { htmlChambre+= '<ul>'; } /** Print "ZOOM" link to picture **/ if(isZoom === true) { htmlChambre+= '<li><a id="pictureUrl_'+ i +'" href="#" onclick="window.open(\'' + tarifCrt.zoom + '\'); return false;" class="pictureUrl">Zoom</a></li>'; } /** Print link to virtual visit **/ if(isVisite === true) { htmlChambre+= '<li><a id="virtualVisitUrl_'+ i +'" href="#" onclick="window.open(\'' + tarifCrt.virtualVisitUrl + '\', \'_blank\',\'width=500, height=400, top=200, left=200 \'); return false;" class="virtualVisitUrl">Visite virtuelle</a></li>'; } if( isZoom === true || isVisite === true ) { htmlChambre+= '</ul>'; } htmlChambre+= '</div></div><p class="submit"><span>'; htmlChambre+= '<a class="select-room" href="#" onclick="top.MultiRates.refreshFromListDetails(\''+ tarifCrt.code +'\'); top.Windows.close(\'POPUP_ID\'); return false">'; if(tarifCrt.code == multi.selectedRoomCode){ htmlChambre+= I18N._('multirates','Back to prices'); } else { htmlChambre+= I18N._('multirates','See prices for this room'); } htmlChambre+= '</a></span></p>'; htmlChambre+= '<span class="extra-bottom"></span></li>'; if(tarifCrt.code == multi.selectedRoomCode){ html = htmlChambre + html; } else { html = html + htmlChambre; } } if($("old-desc-rooms")) $("old-desc-rooms").update(html); } if(multi != null && multi.size()) { //On affiche dans la liste "autres chambres disponibles" TOUTES les chambres de l'hôtel var ulRooms = $("liste-chambres"); if(ulRooms) { ulRooms.innerHTML = ""; var li = ""; var len = multi.size() ; for(i = 0; i < len; i++) { var tarifCrt = multi[i]; offer = multi[i] ; // MultiRates.beanRoomsListe[MultiRates.tab_type][i]; li += "<li code='"+ offer.code+"'"; if (offer.famillyOffer) { li += " class=\"family\"" ; $('family_legend').style.display ='block'; } li +="><a href='#'><span class='desc'>"; li += offer.label + "</span> <span class='prix'>"; if(offer.free) li += I18N._('multirates','Complimentary'); else if(offer.onRequest) li += I18N._('multirates','OnRequest'); else li += "<span class='"+class_technique+" mtarif'>"+ offer.price + "</span>*"; if (offer.famillyOffer) li += "*" ; li += "</span></a></li>"; } ulRooms.innerHTML = li; MultiRates.selectRoom(!MultiRates.isTarifsIframeLoaded()); } } }, /** * Gère le clic sur une chambre de la liste "Autres chambres disponibles" */ setRoomClick: function() { if($("chambre-et-tarif")) { Event.observe( $("liste-chambres"), "click", function(e) { if(!e.target && e.srcElement) //Débuggage IE { e.target = e.srcElement; } var liSelected = e.target; while(liSelected.nodeName != "LI" && liSelected.nodeName != "UL") { liSelected = liSelected.parentNode; } if(liSelected.nodeName == "LI") { MultiRates.beanRoomsListe[MultiRates.tab_type].selectedRoomCode = liSelected.getAttribute("code"); MultiRates.selectRoom(true); Event.stop(e); } }.bind(this) );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -