Untitled
unknown
plain_text
3 years ago
12 kB
6
Indexable
(function () {
try {
var debug = 0;
var variation_name = '';
function waitForElement(selector, trigger) {
var interval = setInterval(function () {
if (document && document.querySelector(selector) && document.querySelectorAll(selector).length > 0) {
clearInterval(interval);
trigger();
}
}, 50);
setTimeout(function () {
clearInterval(interval);
}, 10000);
}
var cabinData = {
ultramarine: {
'explorer triple': 'hair dryer, bathrobe, slippers, shampoo, conditioner, shower gel, complimentary water bottle.',
'explorer suite': 'hair dryer, bathrobe, slippers, shampoo, conditioner, shower gel, complimentary water bottle.',
'balcony suite': 'hair dryer, bathrobe, slippers, shampoo, conditioner, shower gel, complimentary water bottle.',
'deluxe balcony suite': 'hair dryer, bathrobe, slippers, shampoo, conditioner, shower gel, complimentary water bottle.',
'solo panorama': 'hair dryer, bathrobe, slippers, shampoo, conditioner, shower gel, complimentary water bottle.',
'deluxe balcony suite': 'hair dryer, bathrobe, slippers, shampoo, conditioner, shower gel, complimentary water bottle.',
'terrace suite': 'hair dryer, bathrobe, slippers, shampoo, conditioner, shower gel, complimentary water bottle.',
"owner's suite": 'hair dryer, bathrobe, slippers, shampoo, conditioner, shower gel, complimentary water bottle.',
'ultra suite': 'hair dryer, bathrobe, slippers, shampoo, conditioner, shower gel, complimentary water bottle.',
'penthouse suite': 'hair dryer, bathrobe, slippers, shampoo, conditioner, shower gel, complimentary water bottle.',
},
'ocean adventurer': {
'lower deck twin': '2 lower beds, bedside table, desk w/chair, safe, 21" TV, closets, bathroom w/shower, porthole',
triple: '2 lower beds, 1 Pullman, bedside table, desk w/chair, safe, 21" TV, closets, bathroom w/shower, porthole',
'main deck twin porthole': '2 lower beds, bedside table, desk w/chair, safe, 21" TV, closets, bathroom w/shower, porthole',
'main deck twin window': '2 lower beds, bedside table, desk w/chair, safe, 21" TV, closets, bathroom w/shower, window',
superior: '2 lower beds, bedside table, desk w/chair, safe, 21" TV, closets, bathroom w/shower, window',
deluxe: '2 lower beds (convertible), bedside table, desk w/chair, safe, 32" TV, closets, bathroom w/shower, window, fridge, USB ports in bedside lamps',
suite: '1 double bed (convertible), bedside table, desk w/chair, safe, 32" TV, closets, bathroom w/shower, window, USB ports in bedside lamps, separate sitting area with sofabed',
"owner's suite": '1 double bed (convertible), bedside table, desk w/chair, safe, 32" TV, closets, bathroom w/shower, window, fridge, USB ports in bedside lamps, separate sitting area with sofabed',
},
'ocean diamond': {
triple: 'A refrigerator, TV, and DVD player are included in each cabin',
'single obstructed view': 'A refrigerator, TV, and DVD player are included in each cabin',
'single porthole': 'A refrigerator, TV, and DVD player are included in each cabin',
'twin obstructed view': 'A refrigerator, TV, and DVD player are included in each cabin',
'twin window': 'A refrigerator, TV, and DVD player are included in each cabin',
suite: 'A refrigerator, TV, and DVD player are included in each cabin',
'balcony suite': 'A refrigerator, TV, and DVD player are included in each cabin',
},
'world explorer': {
triple: 'A separate combo sitting area/bedroom with a sofa bed and additional closet is around the corner, and a refrigerator, TV, state of the art “infotainment” system, and private bathroom with shower is also featured in each cabin.',
'infinity suite': 'A sitting area with sofa, refrigerator, TV, state of the art “infotainment” system, and private bathroom with shower is also featured in each cabin.',
'veranda suite': 'sitting area with sofa, refrigerator, TV, state of the art “infotainment” system, and private bathroom with shower is also featured in each cabin.',
'superior suite': 'sitting area with sofa, refrigerator, TV, state of the art “infotainment” system, and private bathroom with shower is also featured in each cabin.',
'deluxe suite': 'sitting area with sofa, refrigerator, TV, state of the art “infotainment” system, and private bathroom with shower is also featured in each cabin.',
"owner's suite": 'separate sitting area with sofa, refrigerator, TV, state of the art “infotainment” system, and private bathroom with shower, dual vanity, and bathtub is also featured in each cabin.',
},
};
function init() {
document.querySelectorAll('.departure-card-inner .departure-card__cabins-btn').forEach(function (item) {
item.addEventListener('click', function () {
if (this.getAttribute('aria-expanded') == 'false') {
var self = this;
var cabinContainer = self.closest('.departure-card-inner');
var interval = setInterval(function () {
if (self.closest('.departure-card-inner').querySelectorAll('.cabin-selector__slider .cabin-selector__cabin-slide').length > 0) {
clearInterval(interval);
self
.closest('.departure-card-inner')
.querySelectorAll('.departure-card__cabin-selector .cabin-selector__cabin-details[data-item]')
.forEach(function (el) {
el && el.remove();
});
var count = 0;
var rowEls = [];
var waitInterval = setInterval(function () {
cabinContainer.querySelectorAll('.cabin-selector__slider .cabin-selector__cabin-slide')[count].click();
setTimeout(function () {
rowEls.push(cabinContainer.querySelector('.departure-card__cabins .cabin-selector__cabin-details').cloneNode(true));
}, 50);
count++;
}, 100);
setTimeout(function () {
clearInterval(waitInterval);
rowEls.forEach(function (item, index) {
item.setAttribute('data-item', index);
cabinContainer.querySelector('.departure-card-inner .cabin-selector').insertAdjacentElement('afterend', item);
});
addEvent(cabinContainer);
}, cabinContainer.querySelectorAll('.cabin-selector__slider .cabin-selector__cabin-slide').length * 100);
}
}, 50);
setTimeout(function () {
clearInterval(interval);
}, 8000);
}
});
});
}
function addEvent(cabinContainer) {
cabinContainer.querySelectorAll('.cabin-selector__form .cabin-selector__occupancy').forEach(function (item) {
item.addEventListener('change', function () {
if (this.value != -1) {
this.parentNode.nextElementSibling.disabled = false;
} else {
this.parentNode.nextElementSibling.disabled = true;
}
});
});
cabinContainer.querySelectorAll('.departure-card__cabin-selector > .cabin-selector__cabin-details .cabin-selector__book-btn').forEach(function (item) {
item.addEventListener('click', function (e) {
e.preventDefault();
var idx = this.closest('.cabin-selector__cabin-details').getAttribute('data-item');
document.querySelectorAll('.cabin-selector__slider .cabin-selector__cabin-slide')[idx].click();
var selectedValue = this.closest('.cabin-selector__cabin-details').querySelector('.cabin-selector__occupancy').value;
var departure_id = this.closest('.departure-card__cabins').getAttribute('id').split('-').pop();
var cabin_index = document.querySelectorAll('.cabin-selector__slider .cabin-selector__cabin-slide')[idx].classList[1].split('-').pop();
window.location.href = 'https://www.quarkexpeditions.com/booking?expedition_id=9141&departure_id=' + departure_id + '&cabin=' + selectedValue + '&cabin_index=' + cabin_index;
});
});
cabinContainer.querySelectorAll('.cabin-selector__cabin-details[data-item]').forEach(function (item) {
var html = '';
item.querySelectorAll('.cabin-selector__cabin-stat').forEach(function (stat) {
html += stat.querySelector('.cabin-stat__value').innerHTML + '<span>|</span>';
});
item.querySelector('.cabin-selector__cabin-price-wrapper').insertAdjacentHTML('beforebegin', '<div class="qa-description">' + html + '</div>');
if (item.querySelector('.sold-out')) {
item.querySelector('.cabin-selector__cabin-name').insertAdjacentHTML('beforeend', '<span class="qa-badge">Sold Out</span>');
}
item.querySelectorAll('.cabin-selector__cabin-body > p').forEach(function (para) {
if (para.querySelector('strong') && para.querySelector('strong').innerHTML.includes('Standard Amenities')) {
para.style.display = 'none';
}
});
var cabinName = item.querySelector('.cabin-selector__cabin-name').innerHTML.toLowerCase();
var shipName = item.closest('.departure-card-inner').querySelector('.detail--field-ship .detail__value').innerHTML.toLowerCase();
var amenitiesText = cabinData[shipName] && cabinData[shipName][cabinName];
// console.log(amenitiesText, amenitiesText.length);
if (amenitiesText) {
item.querySelector('.cabin-selector__cabin-price-wrapper').insertAdjacentHTML('beforebegin', '<p><strong>Cabin Amenities</strong>: ' + amenitiesText + '</p>');
}
var viewCTA = document.createElement('button');
viewCTA.classList.add('qa-view-cta');
viewCTA.innerHTML = 'Book This Cabin';
viewCTA.addEventListener('click', function () {
item.classList.toggle('active');
if (item.classList.contains('active')) {
this.innerHTML = 'Hide All Details';
} else {
this.innerHTML = 'Book This Cabin';
}
});
item.querySelector('.qa-view-cta') && item.querySelector('.qa-view-cta').remove();
item.querySelector('.cabin-selector__cabin-stats').insertAdjacentElement('beforebegin', viewCTA);
});
}
/* Initialise variation */
waitForElement('.departure-card-inner .departure-card__cabins-btn', init);
} catch (e) {
if (debug) console.log(e, 'error in Test' + variation_name);
}
})();
.departure-card__cabin-selector .cabin-details__close {
display: none;
}
.departure-card-inner .cabin-selector {
display: none;
}
.departure-card-inner .departure-card__cabins {
padding-left: 0px;
padding-right: 0px;
}
.qa-description {
margin: 10px 0px;
font-size: 14px;
}
.qa-description > span {
margin: 0 10px;
}
.qa-description > span:last-child {
display: none;
}
.cabin-selector__cabin-details .cabin-selector__cabin-stats {
display: none;
}
span.qa-badge {
font-size: 16px;
text-transform: uppercase;
padding: 10px;
background: #b4b6bd;
color: #fff;
margin-left: 20px;
font-family: system-ui;
}
.cabin-selector__cabin-details .cabin-selector__cabin-offers,
.cabin-selector__cabin-details .cabin-selector__occupancy-prices,
.cabin-selector__cabin-details .cabin-selector__cabin-body,
.cabin-selector__cabin-details .cabin-selector__cabin-footer {
display: none;
}
.cabin-selector__cabin-details.active .cabin-selector__cabin-offers,
.cabin-selector__cabin-details.active .cabin-selector__occupancy-prices,
.cabin-selector__cabin-details.active .cabin-selector__cabin-body,
.cabin-selector__cabin-details.active .cabin-selector__cabin-footer {
display: block;
}
.cabin-selector__cabin-details__right > img {
margin-bottom: 0px;
}
button.qa-view-cta {
border: none;
background: #f2a900;
font-size: 0.75rem;
font-weight: 700;
height: 2.5rem;
line-height:0.625rem;
margin-top: 10px;
font-family: Nunito Sans,sans-serif;
padding: 7px 12px 7px 12px;
text-align: left;
border-radius: 2px;
text-transform: uppercase;
}
button.qa-view-cta + * {
clear: both;
}Editor is loading...