${inc.val}
${inc.lbl}
function TripSearcher(opts) { var me = this; var defaults = {ctr:null, showSB:true, inPopup:false, isPgChgInSrch:false, srchPrms:'', trpSrchTout:30000, isFxdSrch:false, sbOpt:{ctr:null, smryMd:true}, pgSz:50, isDsbPrcSort:false, allowHistPushState:false}; this.opts = $jQ.extend(true, {}, defaults, opts || {}); this.curSort = {nm:JS_UTIL.getTranslated("Recommended"), fld:'rscr', asc:true}; this.init = function() { me.ctrJ = $jQ(me.opts.ctr); me.srchCtr = $jQ(".tSrchBxCtr", me.ctrJ); me.rsltCtr = $jQ(".tSrchRsltCtr", me.ctrJ); me.rsltMsgCtr = $jQ(".tSrchRsltMsgCtr", me.ctrJ); if (!me.opts.sbOpt.ctr) { me.opts.sbOpt.ctr = me.srchCtr; } if (!me.opts.sbOpt.srchCallback) { me.opts.sbOpt.srchCallback = function(el) { me.fetchResults.call(me, me.tSrchBx.getQueryJSON(), {isUpdHist:true, isReplaceHist:false, fltPrms:$jQ.param(me.tSrchBx.getQueryFiltersJSON())}); } } me.tSrchBx = new TripSearchBox(me, me.opts.sbOpt); me.tRsltO = new TripSearchResults(me, me.rsltCtr); if (me.opts.allowHistPushState) { HISTUTIL.bind(function(state) { if (!state || !state.srchO) return; me.tSrchBx.populateFields(state.srchO, state.srchFltrA); if (me.opts.sbOpt.srchCallback){ me.fetchResults.call(me, me.tSrchBx.getQueryJSON(), {isUpdHist:false, fltPrms:state.fltPrms}); } }); } } this.showSearchView = function(srchO, opts) { opts = $jQ.extend({}, {showSB:false, sbOpts:{smryMd:true}}, opts || {}); if (srchO) { me.opts.sbOpts = opts.sbOpts; me.tSrchBx.populateFields(srchO, null); if (opts.sbOpts.smryMd) me.tSrchBx.setSummaryMode(true, srchO); } if (opts.showSB) { me.tSrchBx.show(opts.sbOpts); } } this.parseAndShowResults = function(srchO, rsltO, opts) { opts = $jQ.extend({}, {loadClbk:null, isFltr:false, fltPrms:'', isUpdHist:false, isReplaceHist:false, isDsbScrl:true}, opts || {}); me.ctrJ.addClass('trpSrchWRslt'); if (opts.isUpdHist) { me.updateInHistory(srchO, {isReplace:opts.isReplaceHist, fltPrms:opts.fltPrms, srchPrms:me.opts.srchPrms}); opts.isReplaceHist = false; } opts.fltPrms = ''; me.parseResults(rsltO, opts); me.showResults(opts); } this.fetchResults = function(srchO, opts) { opts = $jQ.extend({}, {loadClbk:null, isFltr:false, fltPrms:'', isUpdHist:false, isReplaceHist:false}, opts || {}); if (!srchO) {srchO = me.tRsltO.srchO}; if (!srchO) srchO = me.tSrchBx.getQueryJSON(); var successFetch = function(a, m) { var rsltO = JS_UTIL.parseJSON(m); me.parseResults(rsltO, opts); me.showResults(opts); MODAL_PANEL.hide(); } AJAX_UTIL.abortAjaxRequest(this.trpSrchRequest); var prmO = me.tSrchBx.getQueryParams(srchO), fltPrms = opts.fltPrms; if (opts.isFltr && me.tRsltO.tFltrs) fltPrms = me.tRsltO.tFltrs.getAppliedFiltersQueryParams().join('&'); me.ctrJ.addClass('trpSrchWRslt'); opts.fltPrms = ''; this.trpSrchRequest = AJAX_UTIL.asyncCall('/t/search-x', {params: $jQ.param(prmO)+(fltPrms?'&'+fltPrms:'')+(me.opts.srchPrms?'&'+me.opts.srchPrms:''), timeout: 120000, scope: me, wait: {inDialog:true, showProgress:true, msg:JS_UTIL.getTranslated('Searching') + '...'}, success: {handler:successFetch, parseMsg:true}, error:{inDialog:false, handler:function(a, m) {MODAL_PANEL.hide(); me.showSearchMessage(m, true);}} }); if (opts.isUpdHist) { me.updateInHistory(srchO, {isReplace:opts.isReplaceHist, fltPrms:fltPrms, srchPrms:me.opts.srchPrms}); opts.isReplaceHist = false; } if (!opts.isFltr) me.showSearchMessage($jQ(`
${inc.lbl}
${JS_UTIL.getTranslated("Hotel")}`);
else $jQ('.stars', subJ).remove();
if (subO.oprcD) $jQ('.oprcD', subJ).html(subO.oprcD);
else $jQ('.oprcD', subJ).remove();
$jQ('.prcD', subJ).html(subO.prcD);
$jQ('.prcQ', subJ).html(subO.prcQ);
$jQ('.trp-act a', subJ).attr('href', subO.url);
if (subO.infA) {
$jQ('.trp-inf-ctr', me.node).html(`${subO.infA.map((infO) => `
`).join('')}`);
else $jQ('.trp-sub--nm .stars', subJ).remove();
if (subO.mtchT) $jQ('.trp-sub--cnt', subJ).append(`