let airportlist = []; let TravellerDetails = { classType: 'Economy', Adult: 1, child: 0, Infant: 0, }; PaxCount('', ''); bindMultiCityFrom(); bindMultiCityFrom(); GetAirportList(undefined, null); let AdvanceShowBtn = false let advancedSerch = true; // async function GetAirportList(element, check) { let inpVal = check ? element.value ? element.value : 'BOM' : 'BOM'; if (inpVal.length >= 3) { const response = await fetch("https://adminapi.uat.futuretravelplatform.com/api/MasterSearch/GetAllMasterSearch/en/" + inpVal, { method: 'GET', headers: { 'Content-Type': 'application/json', 'OrgId': '2206040706597097092' } }); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const data = await response.json(); airportlist = await data; autobind(element, check, airportlist); } }; function autobind(element, check, obj) { check ? check == '0' ? element.closest(".searchBox").querySelector(".dropdown-content").classList.add('show') : element.closest(".searchBox").querySelector(".depart-content").classList.add('showdepart') : ''; let html = ''; let airlist = obj ? obj : airportlist; airlist.map(e => { html += ` ` }); element ? element.closest(".searchBox").querySelector(".dropdown-wrapper").innerHTML = html : ''; } function ApplyAirport(element) { let city_name = element.getAttribute("data-city-name"); let code = element.getAttribute("data-airport-code"); element.closest(".search-border").querySelector('input').value = city_name; element.closest(".search-border").querySelector('input').setAttribute("data-airport-code", code); let container = element.closest(".search-border").querySelector('input') if (!container.classList.contains('Origin')) { let nextform = element.closest('.MultiForm') ? element.closest('.MultiForm').nextElementSibling : ''; if (nextform) { if (nextform.querySelector('.Origin')) { nextform.querySelector('.Origin').value = city_name nextform.querySelector('.Origin').setAttribute("data-airport-code", code) }; }; } }; // // advancedField() function advancedField(elem) { console.log('asd') console.log(elem) elem.querySelector('.expand-less').classList.add('d-none'); elem.querySelector('.expand-more').classList.add('d-none'); if (advancedSerch) { advancedSerch = false; elem.closest('div').querySelector(".expander_more").classList.remove('d-none'); elem.querySelector('.expand-less').classList.remove('d-none'); } else { advancedSerch = true; elem.closest('div').querySelector(".expander_more").classList.add('d-none'); elem.querySelector('.expand-more').classList.remove('d-none'); } }; function PaxCount(pax, btn_name) { let Adul_num = parseInt(document.getElementById("adult").value); let child_Num = parseInt(document.getElementById("child").value); let Infant_child = parseInt(document.getElementById("infant").value); let adult_minus_btn = document.getElementsByClassName("adult_minus_btn")[0]; let adult_plus_btn = document.getElementsByClassName("adult_plus_btn")[0]; let child_plus_btn = document.getElementsByClassName("child_plus_btn")[0]; let child_minus_btn = document.getElementsByClassName("child_minus_btn")[0]; let infant_plus_btn = document.getElementsByClassName("infant_plus_btn")[0]; let infant_minus_btn = document.getElementsByClassName("infant_minus_btn")[0]; if (btn_name == 'add') { if (pax == "adult" || pax == "child") { if (Adul_num + child_Num < 9) { document.getElementById(pax).value = parseInt(document.getElementById(pax).value) + 1 Adul_num = parseInt(document.getElementById('adult').value); child_Num = parseInt(document.getElementById('child').value); } } if (pax == "infant") { if (Infant_child < Adul_num) { document.getElementById(pax).value = parseInt(document.getElementById(pax).value) + 1 Infant_child = parseInt(document.getElementById(pax).value); } } } else { if (pax == "adult") { if (Adul_num > 1) { document.getElementById(pax).value = parseInt(document.getElementById(pax).value) - 1 Adul_num--; } if (Infant_child > Adul_num) { if (btn_name == 'remove') { document.getElementById('infant').value = Infant_child - 1; Infant_child-- } } } else if (pax == "child") { if (child_Num > 0) { document.getElementById(pax).value = parseInt(document.getElementById(pax).value) - 1; child_Num--; } } else if (pax == "infant") { if (Infant_child > 0) { document.getElementById(pax).value = parseInt(document.getElementById(pax).value) - 1; Infant_child = parseInt(document.getElementById(pax).value); } } } Adul_num == 1 ? adult_minus_btn.classList.add("disableBtn") : adult_minus_btn.classList.remove("disableBtn"); child_Num == 0 ? child_minus_btn.classList.add('disableBtn') : child_minus_btn.classList.remove('disableBtn'); Infant_child == 0 ? infant_minus_btn.classList.add("disableBtn") : infant_minus_btn.classList.remove("disableBtn"); if (Adul_num + child_Num == 9) { adult_plus_btn.classList.add('disableBtn'); child_plus_btn.classList.add("disableBtn"); } else { adult_plus_btn.classList.remove('disableBtn'); child_plus_btn.classList.remove("disableBtn"); } if (Infant_child == Adul_num) infant_plus_btn.classList.add("disableBtn") else infant_plus_btn.classList.remove('disableBtn'); let travel_no1 = Adul_num + (child_Num + Infant_child); let paxSearch = document.getElementsByClassName('TravelerClassCount') for (let i = 0; i < paxSearch.length; i++) { paxSearch[i].innerHTML = `

${travel_no1} Traveller

${TravellerDetails.classType}

` }; TravellerDetails.Adult = Adul_num; TravellerDetails.child = child_Num; TravellerDetails.Infant = Infant_child; }; function ClassType(Btn, name) { document.querySelectorAll('.classBtn').forEach(box => box.classList.remove('classTypeBorder')); Btn.classList.add('classTypeBorder'); TravellerDetails.classType = name; PaxCount('', ''); }; // traveller div show and hide function ShowPaxCounter() { document.getElementById('TravellerCount').classList.remove('travel-content'); document.getElementById('TravellerCount').classList.remove('d-none') } function ApplyTraveller() { document.getElementById('TravellerCount').classList.add('travel-content'); } /// multi city function bindMultiCityFrom() { var searchList = document.querySelectorAll(".MultiForm"); let html = '' if (searchList.length < 6) { let RemoveHtml = `
close
` html = `
Flight 1
sync_alt
${searchList.length >= 2 ? RemoveHtml : ''} ` document.getElementById('multiCityForm').insertAdjacentHTML("beforebegin", html); var searchList = document.querySelectorAll(".MultiForm"); let index = searchList.length == 2 ? 1 : searchList.length - 1 let date = searchList.length == 1 ? new Date : document.getElementById(`MultiCity-${+ (index)}`).value console.log(date) caleran("#MultiCity-" + (searchList.length), { singleDate: true, calendarCount: 1, showHeader: false, showFooter: false, autoCloseOnSelect: true, format: 'DD MMM YYYY', minDate: date, onafterselect: function (instance, start, end) { CheckMultiDate(start, searchList.length) } }); } if (searchList.length >= 5) document.getElementById("addMultiCityForm").style.visibility = 'hidden'; }; function CheckMultiDate(Date, index) { var searchList = document.querySelectorAll(".MultiForm") console.log(searchList) for (let i = index; i < searchList.length; i++) { caleran("#MultiCity-" + (i + 1), { singleDate: true, calendarCount: 1, showHeader: false, showFooter: false, autoCloseOnSelect: true, format: 'DD MMM YYYY', minDate: Date._d, onafterselect: function (instance, start, end) { CheckMultiDate(start, (index + 1)) } }); }; }; function removeMultiCityForm(elem) { elem.closest(".MultiForm").remove(); document.getElementById("addMultiCityForm").style.visibility = 'visible'; }; let tripKey = 'IRT'; function ChangeTab(type) { tripKey = type; } function hideToaster(element) { setTimeout(function () { element.classList.add('d-none'); element.querySelector('span').innerHTML = ''; }, 1500); } /// drop down async function GetAirlineList(inp) { console.log(inp.value) let html = '' if (inp.value.length >= 2) { const response = await fetch("https://adminapi.uat.futuretravelplatform.com/api/MasterSearch/GetAllAirline/en/" + inp.value, { method: 'GET', headers: { 'Content-Type': 'application/json', 'OrgId': '2206040706597097092' } }); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const data = await response.json(); // = await data; data.map(e => { html += `
  • ${e.airline_name}
  • ` }) console.log(data) inp.closest('div').querySelector('.PrefferedAirline').innerHTML = html; }; inp.closest('div').querySelector('.PrefferedAirline').classList.remove('aiplineDropdown'); } function ExchangeValue(elmnt) { let element = elmnt.closest('.toFromSearchWrapper'); let From = element.querySelector('.Origin'); let To = element.querySelector('.depart'); var from1 = From.value; var form2 = From.getAttribute('data-airport-code'); element.querySelector('.Origin').value = To.value; element.querySelector('.Origin').setAttribute('data-airport-code', To.getAttribute('data-airport-code')); element.querySelector('.depart').value = from1; element.querySelector('.depart').setAttribute('data-airport-code', form2); } // caleran js for calender caleran("#OW_Calender", { singleDate: true, calendarCount: 1, showHeader: false, showFooter: false, autoCloseOnSelect: true, format: 'DD MMM YYYY', minDate: new Date, }); var startDate, endDate, startInstance, endInstance; var fillInputs = function () { startInstance.elem.value = startDate ? startDate.locale(startInstance.config.format).format('DD MMM YYYY') : ""; endInstance.elem.value = endDate ? endDate.locale(endInstance.config.format).format('DD MMM YYYY') : ""; }; document.querySelector("#flightStart").value = moment().format('DD MMM YYYY'); document.querySelector("#flightEnd").value = moment().format('DD MMM YYYY'); caleran("#flightStart", { startEmpty: document.querySelector("#flightStart").value === "", startDate: document.querySelector("#flightStart").value, endDate: document.querySelector("#flightEnd").value, enableKeyboard: false, minDate: new Date, oninit: function (instance) { startInstance = instance; if (!instance.config.startEmpty && instance.config.startDate) { instance.elem.value = instance.config.startDate.locale(instance.config.format).format('DD MMM YYYY'); startDate = instance.config.startDate.clone(); } }, onbeforeshow: function (instance) { if (startDate) { startInstance.config.startDate = startDate; endInstance.config.startDate = startDate; } if (endDate) { startInstance.config.endDate = endDate.clone(); endInstance.config.endDate = endDate.clone(); } fillInputs(); instance.updateHeader(); instance.reDrawCells(); }, onfirstselect: function (instance, start) { startDate = start.clone(); startInstance.globals.startSelected = false; startInstance.hideDropdown(); endInstance.showDropdown(); endInstance.config.minDate = startDate.clone(); endInstance.config.startDate = startDate.clone(); endInstance.config.endDate = null; endInstance.globals.startSelected = true; endInstance.globals.endSelected = false; endInstance.globals.firstValueSelected = true; endInstance.setDisplayDate(start); if (endDate && startDate.isAfter(endDate)) { endInstance.globals.endDate = endDate.clone(); } endInstance.updateHeader(); endInstance.reDrawCells(); fillInputs(); } }); caleran("#flightEnd", { startEmpty: document.querySelector("#flightEnd").value === "", startDate: document.querySelector("#flightStart").value, endDate: document.querySelector("#flightEnd").value, enableKeyboard: false, autoCloseOnSelect: true, minDate: new Date, oninit: function (instance) { endInstance = instance; if (!instance.config.startEmpty && instance.config.endDate) { instance.elem.value = (instance.config.endDate.locale(instance.config.format).format('DD MMM YYYY')); endDate = instance.config.endDate.clone(); } }, onbeforeshow: function (instance) { if (startDate) { startInstance.config.startDate = startDate; endInstance.config.startDate = startDate; } if (endDate) { startInstance.config.endDate = endDate.clone(); endInstance.config.endDate = endDate.clone(); } fillInputs(); instance.updateHeader(); instance.reDrawCells(); }, onafterselect: function (instance, start, end) { startDate = start.clone(); endDate = end.clone(); endInstance.hideDropdown(); startInstance.config.endDate = endDate.clone(); startInstance.globals.firstValueSelected = true; fillInputs(); endInstance.globals.startSelected = true; endInstance.globals.endSelected = false; } }); // Flight Search query string function Searchflight(elem) { let checkValidation = true; let main_div = elem.closest('.CommonSearch'); let airlinelist = document.querySelectorAll(".airlinelist"); let airline_code = []; if (airlinelist.length != 0) { airlinelist.forEach(e => { airline_code.push(e.getAttribute('data-airline-code')); }); } var querystring = { "adult": TravellerDetails.Adult, "child": TravellerDetails.child, "infant": TravellerDetails.Infant, "langcode": "EN", "ref": document.getElementById('Refundable').checked, "direct": document.getElementById('DirectFlights').checked, "key": tripKey, "triptype": CheckTriptype(tripKey), 'curr': 'AED', "airlines": airline_code.length != 0 ? airline_code.join(',') : '', } let cl = checkClassType() let origin = main_div.querySelector('.Origin').getAttribute("data-airport-code"); let depart = main_div.querySelector('.depart').getAttribute("data-airport-code"); if (tripKey == 'OW' || tripKey == 'IRT') { let list = tripKey == 'OW' ? 1 : 2 for (let i = 0; i < list; i++) { let start = tripKey == 'OW' ? document.getElementById('OW_Calender').value : document.getElementById('flightStart').value if (!validator(origin, depart)) { checkValidation = false } let end = document.getElementById('flightEnd').value querystring[`dep${i + 1}`] = i == 0 ? origin : depart; querystring[`ret${i + 1}`] = i == 0 ? depart : origin; querystring[`cl${i + 1}`] = cl; querystring[`dtt${i + 1}`] = tripKey == 'OW' ? moment(start).format('DD-MMM-YYYY') : i == 0 ? moment(start).format('DD-MMM-YYYY') : moment(end).format('DD-MMM-YYYY'); } } else if (tripKey == 'NMC') { var searchList = main_div.querySelectorAll(".MultiForm"); searchList.forEach((e, i) => { let Origin = e.getElementsByClassName('Origin')[0].getAttribute("data-airport-code"); let depart = e.getElementsByClassName('depart')[0].getAttribute("data-airport-code"); if (!validator(Origin, depart)) { checkValidation = false } querystring[`dep${i + 1}`] = Origin; querystring[`ret${i + 1}`] = depart; querystring[`dtt${i + 1}`] = moment(e.querySelector(`#MultiCity-${i + 1}`).value).format('DD-MMM-YYYY'); // changes querystring[`cl${i + 1}`] = cl; }) } if (!checkValidation) { return } sessionStorage.setItem('SerachReqQueryObj', JSON.stringify(querystring)); const urlParams = new URLSearchParams(window.location.search); var query = Object.keys(querystring).map(key => key + '=' + querystring[key]).join('&'); window.location.href = 'https://travel.neuholidays.com/Flight/search?' + query; } // validation function validator(origin, depart) { let element = document.getElementsByClassName('toast-warning')[0] if (origin == depart) { element.classList.remove('d-none') element.querySelector('span').innerHTML = 'Departure must be different from arrival' hideToaster(element) return false } if (!origin || !depart) { element.classList.remove('d-none') element.querySelector('span').innerHTML = 'Please enter departure and arrival city or airport' hideToaster(element) return false } else return true }; // common function function CheckTriptype(tripKey) { if (tripKey == 'NMC') { return '3' } else if (tripKey == 'IRT') { return '2' } else if (tripKey == 'OW') { return '1' } }; function checkClassType() { if (TravellerDetails.classType == 'FirstClass') { return 'F' } else if (TravellerDetails.classType == 'BusinessClass') { return 'C' } else if (TravellerDetails.classType == 'PremiumEconomy') { return 'W' } else if (TravellerDetails.classType == 'Economy') { return 'Y' } } /// multi selector function Close(e) { e.closest('.multiSelect').querySelector(".SelectList").classList.remove("ShowAirlineList"); e.closest("span").remove(); let check = document.querySelectorAll(".airlinelist"); if (check.length == 0) { e.closest('.multiSelect').querySelector(".SearchBox").classList.add('multiInp') } } function showAirlineList(elem) { elem.closest('.multiSelect').querySelector(".SelectList").classList.add("ShowAirlineList"); elem.closest('.multiSelect').querySelector("input").focus(); } function bindAirLine(airlinelist, elem) { let html = ""; airlinelist.map((e, i) => { html += `
  • (${e.airline_code}) ${e.airline_name}
  • ` }) elem.closest('.SelectList').querySelector('.ListItem').innerHTML = html; } async function GetAirlineDetails(elem) { let key = window.event let list = document.getElementsByClassName('selectAirline') ? document.getElementsByClassName('selectAirline')[0] : ''; if (list) { if (key.keyCode == 38) { console.log('low') var prev = list.previousElementSibling; if (prev) { list.classList.remove("selectAirline"); prev.classList.add("selectAirline"); } } else if (key.keyCode == 40) { console.log('high') var next = list.nextElementSibling; if (next) { list.classList.remove("selectAirline"); next.classList.add("selectAirline"); }; }; }; let val = elem.value; if (val.length >= 2 && !(key.keyCode == 38) && !(key.keyCode == 40)) { const response = await fetch("https://adminapi.uat.futuretravelplatform.com/api/MasterSearch/GetAllAirline/en/" + val, { method: 'GET', headers: { 'Content-Type': 'application/json', 'OrgId': '2206040706597097092' } }); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const data = await response.json(); let obj = await data; obj ? bindAirLine(obj, elem) : '' } if (key.keyCode == 13) { AddAirline(document.getElementsByClassName('selectAirline')[0]) } }; function AddAirline(val) { let check = document.querySelectorAll(".airlinelist"); if (check.length <= 2) { let code = val.getAttribute("data-airline-code"); let name = val.getAttribute("data-airline-name"); let html = ` (${code}) ${name} `; val.closest('.multiSelect').querySelector(".SearchBox").insertAdjacentHTML("beforeend", html); let maindiv = val.closest('.multiSelect').querySelector('input') val.closest('.multiSelect').querySelector("input").value = ''; val.closest('div').classList.remove("ShowAirlineList"); val.closest('.multiSelect').querySelector(".SearchBox").classList.remove('multiInp'); val.remove(); bindAirLine([], maindiv); } }; function resetAllPaxCounter() { document.getElementById("infant").value = 0; document.getElementById("child").value = 0; document.getElementById("adult").value = 1; TravellerDetails.Adult = 1; TravellerDetails.child = 0; TravellerDetails.Infant = 0; ClassType(document.getElementsByClassName('EconomyClass')[0] , 'Economy'); };