1/** 2 * Quicksearch Tosc 5 3 * 4 * @description: Handle quicksearch input and reformat for tosc4 5 */ 6 7/** 8 * test if sessionStorage works (iOS has a quota of 0B in private mode) 9 * 10 * @returns {boolean} 11 */ 12function isSessionStorageNameSupported() { 13 var testKey = 'test'; 14 try { 15 sessionStorage.setItem(testKey, '1'); 16 sessionStorage.removeItem(testKey); 17 return true; 18 } catch (error) { 19 return false; 20 } 21} 22 23$(function() { 24 25 $('.selectChildren').on('change', function() { 26 var _this = $(this); 27 var form = _this.closest('form.js-quicksearch--tosc5'); 28 var countChildren = _this.val(); 29 30 form.find('.select-age').addClass('hide'); 31 32 for (var i = 0; i < countChildren; i++) { 33 (form.find('.select-age')[i]).classList.remove('hide'); 34 } 35 36 // if (countChildren < 1) { 37 // wrapper.addClass('hide'); 38 // firstChildAge.find('.childAge').attr('disabled', 'disabled'); 39 // } 40 // else { 41 // firstChildAge.find('select').removeAttr('disabled'); 42 /*if (countChildren > 1) { 43 for (var i = 2; i <= countChildren; i++ ) { 44 var newItem = firstChildAge.clone().insertAfter($('.select-age:last')).addClass('cloned-select-age'); 45 newItem.find('.select-age__index').html(i); 46 var newItemName = 'childAge' + i; 47 newItem.find('select').attr('name', newItemName); 48 } 49 }*/ 50 // wrapper.removeClass('hide'); 51 // } 52 }); 53 54 $('.selectChildren').trigger('change'); 55 56 $('.js-quicksearch--tosc5').each(function(i) { 57 58 var storageSupported = isSessionStorageNameSupported() && $(this).data('use-session-storage'); 59 60 if (storageSupported) { 61 if (sessionStorage.getItem('neustaibesearch_date_start')) { 62 $(this).find('.js-dateFrom').val(sessionStorage.getItem('neustaibesearch_date_start')); 63 } 64 if (sessionStorage.getItem('neustaibesearch_date_end')) { 65 $(this).find('.js-dateTo').val(sessionStorage.getItem('neustaibesearch_date_end')); 66 } 67 if (sessionStorage.getItem('neustaibesearch_adults')) { 68 $(this).find('.js-adults').val(sessionStorage.getItem('neustaibesearch_adults')); 69 } 70 if (sessionStorage.getItem('neustaibesearch_children')) { 71 var children = sessionStorage.getItem('neustaibesearch_children').split(','); 72 $(this).find('.selectChildren').val(children.length); 73 74 for(var j = 0; j < children.length; j++) { 75 $(this).find('.select-age') 76 .eq(j) 77 .removeClass('hide') 78 .find('.childAge').val(children[j]); 79 } 80 } 81 } 82 83 $(this).on('submit', function(e) { 84 e.preventDefault(); 85 var _this = $(this);
86 var saveFormValuesInStorage = function () { 87 if (storageSupported) { 88 var startDate = _this.find('.js-dateFrom').val(); 89 sessionStorage.setItem('neustaibesearch_date_start', startDate); 90 var endDate = _this.find('.js-dateTo').val(); 91 sessionStorage.setItem('neustaibesearch_date_end', endDate); 92 var adults = _this.find('.js-adults').val(); 93 sessionStorage.setItem('neustaibesearch_adults', adults); 94 } 95 }; 96 97 var tosc5submit = function(linkKey, dateFrom, dateTo, units, adults, children, callbackPath) { 98 var guestDataObj = { 99 dateFrom: new Date(dateFrom), 100 dateTo: new Date(dateTo), 101 occupancy1: { 102 units: units, 103 adults: adults, 104 children: children 105 }, 106 searchFilterObjectId: 'limACCCAT=5edbcde9-ccf8-445f-9db4-ae8f918f0d1b' 107 }; 108 dw.accommodationQuickFind( 109 linkKey, 110 guestDataObj, 111 function() { 112 window.location.href = callbackPath; 113 }); 114 }; 115 116 var reformatDateForTosc = function(date) { 117 var dateParts = null; 118 119 if(typeof date === 'string') { 120 dateParts = date.split('.'); 121 } else { 122 return date.toISOString().split('T')[0]; 123 } 124 125 return dateParts[2] + '-' + dateParts[1] + '-' + dateParts[0]; 126 }; 127 128 var dateStart = reformatDateForTosc($(this).find('.js-dateFrom').val()); 129 var dateEnd = reformatDateForTosc($(this).find('.js-dateTo').val()); 130 var adults = parseInt($(this).find('.js-adults').val()); 131 var children = parseInt($(this).find('.js-children').val()); 132 var childrenAge = []; 133 var tosc5Path = $(this).data('tosc5-path'); 134 var tosc5LinkKey = $(this).data('tosc5-linkkey'); 135 var units = 1; 136 137 for(var i = 0; i < children; i++) { 138 var age = parseInt($(this).find('[name="childAge' + (i + 1) + '"]').val()); 139 if(!age && age !== 0) { 140 age = 0; 141 } 142 childrenAge.push(age); 143 } 144 145 if (storageSupported) { 146 sessionStorage.setItem('neustaibesearch_children', childrenAge); 147 } 148
149 saveFormValuesInStorage(); 150 tosc5submit(tosc5LinkKey, dateStart, dateEnd, units, adults, childrenAge, tosc5Path); 151 }); 152 }); 153});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.