var MotorBusca = function (chave, opt) { var itjq = $ ? $ : jQuery var boo = typeof opt === 'boolean' || !opt if (boo) { opt = { stMostraCodigo: opt ? opt : false } } opt = Object.assign( {}, { stMostraCodigo: false, sgEmpresa: null, nmDominio: null, nmDominioMotor: null, stAgencia: false, iframe: false, target: null, queryParams: null, }, opt ) var B2C_AGENCIA = typeof AGENCY !== 'undefined' ? AGENCY : false var nmDominio = opt.nmDominio var http = '//' var stMostraCodigo = opt.stMostraCodigo var url = itjq('script[src*="motorv2.js"]').attr('src') var isB2cUpper = url.indexOf('/B2C/motor/motorv2.js') > -1 if (!nmDominio) { url = url .replace('/b2c/resources/js/motorv2.js', '') .replace('/b2c/motor/motorv2.js', '') .replace('/b2c/public/motor/motorv2.js', '') .replace('/B2C/motor/motorv2.js', '') .replace('/B2C/public/motor/motorv2.js', '') nmDominio = url.replace('http://', '').replace('https://', '').replace('//', '') if (nmDominio.indexOf('?') > -1) { var ver = nmDominio.substring(nmDominio.indexOf('?'), nmDominio.length) nmDominio = nmDominio.replace(ver, '') } http = url.indexOf('https://') > -1 ? 'https://' : http } else { http = nmDominio.indexOf('https://') > -1 ? 'https://' : http nmDominio = nmDominio.replace('http://', '').replace('https://', '').replace('//', '') } if (!opt.nmDominioMotor) { opt.nmDominioMotor = 'https://motorv2.infotravel.com.br' } if ( 'reservas-hml.ctrq.com.br;reservas.rioquente.com.br;reservas.aviva.com.br;reservas.costadosauipe.com.br;avivahml.infotravel.com.br'.includes( nmDominio ) ) { opt.nmDominioMotor = 'https://reservas.aviva.com.br' } if (!opt.sgEmpresa || opt.sgEmpresa == null) { const getSGEmpresa = function () { if ('reservas.urbietorbi.com.br'.includes(nmDominio)) { return 'URBI' } else if ( 'online.centralthermas.com.br;reservas.termasdeolimpia.com.br;online.termasdeolimpia.com.br;online.centralcaldas.com.br;reservas.centralthermas.com.br'.includes( nmDominio ) ) { return 'CTTHERMAS' } else if ('online.flot.com.br;flot.infotravel.com.br'.includes(nmDominio)) { return 'FLOT' } else if ('g7operadora.infotravel.com.br;localhost'.includes(nmDominio)) { return 'G7OPER' } else if ( 'vresorts.infotravel.com.br;app.viajar.tur.br;reservas.viajarresorts.com.br;orcamento.viajarresorts.com.br;reservas.uniquebrasil.com.br;orcamento.uniquebrasil.com.br'.includes( nmDominio ) ) { return 'VRESORTS' } else if ('novaoperadora.infotravel.com.br'.includes(nmDominio)) { return 'NOVAOPERA' } else if ('viacapi.infotravel.com.br'.includes(nmDominio)) { return 'VIACAPI' } else if ('terramundi.infotravel.com.br'.includes(nmDominio)) { return 'TERRAMUNDI' } else if ( 'hresorts.infotravel.com.br;b2c.olimpiahoteiseparques.com.br;orcamentos.hoteiseresorts.com'.includes( nmDominio ) ) { return 'HRESORTS' } else if ('soultraveler.infotravel.com.br'.includes(nmDominio)) { return 'SOULTRAVELER' } else if ('uneworld.infotravel.com.br'.includes(nmDominio)) { return 'UNEWORLD' } else if ( 'condortravel.infotravel.com.br;reservas.journeyou.com.br;reservas.agil.tur.br'.includes(nmDominio) ) { return 'CONDOR' } else if ( 'sueds.infotravel.com.br;reservas.sueds.com.br;reservas.teff.com.br;reservas.agenciaportoseguro.com.br'.includes( nmDominio ) ) { return 'SUEDS' } else if ('ciamaritima.infotravel.com.br'.includes(nmDominio)) { return 'CIA_MARITIMA' } else if ('mg3.infotravel.com.br'.includes(nmDominio)) { return 'MG3' } else if ('diversa.infotravel.com.br;reserva.astraviagens.com.br;e1.adlazer.com.br'.includes(nmDominio)) { return 'DIVERSA' } else if ('megatravel.infotravel.com.br'.includes(nmDominio)) { return 'MEGA_TRAVEL' } else if ('schultz.infotravel.com.br'.includes(nmDominio)) { return 'SCHULTZ' } else if ('mercosur.infotravel.com.br'.includes(nmDominio)) { return 'MERCOSUR' } else if ('bpark.infotravel.com.br;reservas.beachpark.com.br'.includes(nmDominio)) { return 'BEACHPARK' } else if ( 'reservas.litoralverde.com.br;reservas.resortspelobrasil.com.br;reservas.resortsallinclusive.com.br;reservas.litoralverderesorts.com.br'.includes( nmDominio ) ) { return 'LITORAL' } else if ( 'reservasonline.rcaturismo.com.br;reservasbrasil.econotravel.com.br;reservasbrasil.ingressosrca.com.br;reservasbrasil.rcaturismo.com.br'.includes( nmDominio ) ) { return 'RCA' } else if ('reservas.incomumviagens.com.br'.includes(nmDominio)) { return 'INCO' } else if ( 'passaportebrasil.infotravel.com.br;i.passaportebrasil.infotravel.com.br;transamericacomandatuba.infotravel.com.br'.includes( nmDominio ) ) { return 'PASSBR' } else if ('viagenspromo.infotravel.com.br'.includes(nmDominio)) { return 'VGPROMO' } else if ('reservas.fuinessaviagem.com'.includes(nmDominio)) { return 'FNVIAGEM' } else if ('reservas.lejardincaldasnovas.com.br'.includes(nmDominio)) { return 'MJARDIN' } else if ('reservas.wembrasiloperadora.com.br'.includes(nmDominio)) { return 'WEM' } else if ( 'rol.infotravel.com.br;reservas.natal.com.br;reservas.resortsonline.com.br;reservas.hoteisdecharme.com;reservas.hoteisemportodegalinhas.com.br;reservas.hoteisemjericoacoara.com.br;reservas.comandatuba.com.br'.includes( nmDominio ) ) { return 'MULTROL' } else if ('reservas.hoteisemportodegalinhas.com.br'.includes(nmDominio)) { return 'RESORTS' } else if ('americantravel.infotravel.com.br;reservas.americantravel.tur.br'.includes(nmDominio)) { return 'AMETRL' } else if ('portal.mondialeturismo.com.br'.includes(nmDominio)) { return 'MONDI' } else if ('chicviagens.infotravel.com.br'.includes(nmDominio)) { return 'CHIC' } else if ( 'reservas.cativaoperadora.com.br;reservas.girovip.com.br;reservas.girotrip.com.br'.includes(nmDominio) ) { return 'CATI' } else if ('online.orinter.com.br;b2c.ottravel.com.br'.includes(nmDominio)) { return 'ORI' } else if ( 'bwt.infotravel.com.br;b2c.bwtoperadora.com.br;b2b.bwtoperadora.com.br;reservas.bwtoperadora.com.br;'.includes( nmDominio ) ) { return 'BWT' } else if ( 'tektraveler.infotravel.com.br;bookings.tektraveler.com;online.sohoteis.com.br;online.lodgesonly.com'.includes( nmDominio ) ) { return 'TEK' } else if ( 'reservas-hml.ctrq.com.br;reservas.rioquente.com.br;reservas.aviva.com.br;reservas.costadosauipe.com.br;avivahml.infotravel.com.br'.includes( nmDominio ) ) { return 'AVIVA' } } opt.sgEmpresa = getSGEmpresa() } if (!opt.sgEmpresa || opt.sgEmpresa == null) { console.log('motorv2.js ERROR:', 'sgEmpresa não informado.') return } var urlMotorIntegra = opt.nmDominioMotor + '/integra/api/' var urlMotorIntegraLayout = urlMotorIntegra + 'layout/busca/' + opt.sgEmpresa + '/' var urlMotorIntegraMotorPacote = urlMotorIntegra + 'motorPacote/pesquisar/' + opt.sgEmpresa + '/' var pathB2c = isB2cUpper ? '/B2C/' : '/b2c/' opt.nmDominioB2C = opt.nmDominioB2C || http + nmDominio.replace(':8080', '') + pathB2c opt.nmDominioB2C = opt.nmDominioB2C.replace('https://', 'http://').replace('http://', '//') this.opt = opt var SG_IDIOMA = opt.sg_idioma || 'pt_BR' const messages = { en_US: { fechar: 'Close', anterior: 'Prev', proximo: 'Next', hoje: 'Today', janeiro: 'January', fevereiro: 'February', marco: 'March', abril: 'April', maio: 'May', junho: 'June', julho: 'July', agosto: 'August', setembro: 'September', outubro: 'October', novembro: 'November', dezembro: 'December', jan: 'Jan', fev: 'Feb', mar: 'Mar', abr: 'Apr', mai: 'May', jun: 'Jun', jul: 'Jul', ago: 'Aug', set: 'Sep', out: 'Oct', nov: 'Nov', dez: 'Dec', domingo: 'Sunday', segunda: 'Monday', terca: 'Tuesday', quarta: 'Wednesday', quinta: 'Thursday', sexta: 'Friday', sabado: 'Saturday', dom: 'Sun', seg: 'Mon', ter: 'Tue', qua: 'Wed', qui: 'Thu', sex: 'Fri', sab: 'Sat', anos: 'years', ano: 'year', noites: 'nights', noite: 'night', carregando: 'Loading', naoDisponivel: 'Not available', favorSelecioneORetorno: 'Please select check-out date', favorSelecioneODestino: 'Please select destination', aereoporto: 'Airport', aeroportos: 'Airports', destino: 'Destination', destinos: 'Destinations', hotel: 'Hotel', hoteis: 'Hotels', municipio: 'City', municipios: 'Cities', trem: 'Train', porto: 'Port', nenhumDestinoEncontrado: 'No results found', nenhumaOrigemEncontrada: 'No results encontrada', selecione: 'Select', motorNaoDisponivel: 'Engine not available', codigo: 'Code', }, pt_BR: { fechar: 'Fechar', anterior: 'Anterior', proximo: 'Próximo', hoje: 'Hoje', janeiro: 'Janeiro', fevereiro: 'Fevereiro', marco: 'Março', abril: 'Abril', maio: 'Maio', junho: 'Junho', julho: 'Julho', agosto: 'Agosto', setembro: 'Setembro', outubro: 'Outubro', novembro: 'Novembro', dezembro: 'Dezembro', jan: 'Jan', fev: 'Fev', mar: 'Mar', abr: 'Abr', mai: 'Mai', jun: 'Jun', jul: 'Jul', ago: 'Ago', set: 'Set', out: 'Out', nov: 'Nov', dez: 'Dez', domingo: 'Domingo', segunda: 'Segunda-feira', terca: 'Terça-feira', quarta: 'Quarta-feira', quinta: 'Quinta-feira', sexta: 'Sexta-feira', sabado: 'Sábado', dom: 'Dom', seg: 'Seg', ter: 'Ter', qua: 'Qua', qui: 'Qui', sex: 'Sex', sab: 'Sab', anos: 'anos', ano: 'ano', noites: 'noites', noite: 'noite', carregando: 'carregando', naoDisponivel: 'Não disponível', favorSelecioneORetorno: 'Favor selecione o retorno', favorSelecioneODestino: 'Favor selecione o destino', aereoporto: 'Aereoporto', aeroportos: 'Aeroporto', destino: 'Destino', destinos: 'Destinos', hotel: 'Hotel', hoteis: 'Hoteis', municipio: 'Municipio', municipios: 'Municipios', trem: 'Trem', porto: 'Porto', nenhumDestinoEncontrado: 'Nenhum destino encontrado', nenhumaOrigemEncontrada: 'Nenhuma origem encontrada', selecione: 'Selecione', motorNaoDisponivel: 'motor não disponível', codigo: 'Código', }, } const ___ = function (msg) { var message = messages[SG_IDIOMA][msg] || undefined if (message) { return message } return '??' + msg + '??' } itjq.datepicker.regional['pt-BR'] = { closeText: ___('fechar'), prevText: ___('anterior'), nextText: ___('proximo'), currentText: ___('hoje'), monthNames: [ ___('janeiro'), ___('fevereiro'), ___('marco'), ___('abril'), ___('maio'), ___('junho'), ___('julho'), ___('agosto'), ___('setembro'), ___('outubro'), ___('novembro'), ___('dezembro'), ], monthNamesShort: [ ___('jan'), ___('fev'), ___('mar'), ___('abr'), ___('mai'), ___('jun'), ___('jul'), ___('ago'), ___('set'), ___('out'), ___('nov'), ___('dez'), ], dayNames: [ ___('domingo'), ___('segunda'), ___('terca'), ___('quarta'), ___('quinta'), ___('sexta'), ___('sabado'), ], dayNamesShort: [___('dom'), ___('seg'), ___('ter'), ___('qua'), ___('qui'), ___('sex'), ___('sab')], dayNamesMin: [___('dom'), ___('seg'), ___('ter'), ___('qua'), ___('qui'), ___('sex'), ___('sab')], weekHeader: 'Sm', dateFormat: SG_IDIOMA === 'en_US' ? 'mm/dd/yy' : 'dd/mm/yy', showButtonPanel: false, showMonthAfterYear: false, hideIfNoPrevNext: true, yearSuffix: '', } function configQuartoJson(value, layoutBusca) { var itemListSplit = value.split('!') var dsItem = '' for (let i = 0; i < itemListSplit.length; i++) { let itemSplit = itemListSplit[i].split('-') let adt = 0 let dsSnr = '' let dsChd = '' for (let ia = 0; ia < itemSplit.length; ia++) { if (ia == 0) { adt = itemSplit[ia] } else if (itemSplit[ia] >= layoutBusca.qtIdadeMinSnr) { dsSnr += ',' + itemSplit[ia] } else { dsChd += ',' + itemSplit[ia] } } dsItem += ',{"adt": ' + adt + (dsSnr.length > 0 ? ', "snr": [' + dsSnr.substr(1) + ']' : '') + (dsChd.length > 0 ? ', "chd": [' + dsChd.substr(1) + ']' : '') + '}' } return JSON.parse('[' + dsItem.substr(1) + ']') } function configQuarto(id, layoutBusca, opt) { var idQuartoConfig = id.find('.quartoConfig') idQuartoConfig.hide() var quartoSel = id.find('.quartoQt select') var quartoItems = itjq(id).find('.quartoItems') var templateQuartoItem = quartoItems.html() layoutBusca.qtIdadeMinSnr = layoutBusca.qtIdadeMinSnr ? layoutBusca.qtIdadeMinSnr : 60 var quartoConfig = null if (itjq(idQuartoConfig).length > 0 && opt && opt.quarto && opt.quarto.value) { if (!idQuartoConfig.val()) { idQuartoConfig.val(opt.quarto.value) } quartoConfig = configQuartoJson(idQuartoConfig.val(), layoutBusca) } else { quartoConfig = [{ adt: 2 }] } quartoItems.find('.quartoItem').remove() if (itjq(quartoSel).length > 0) { for (var i = 1; i <= layoutBusca.qtUh; i++) { quartoSel.append(itjq('