function getPrecioCambioMoneda(precioEuros){ if( moneda=='EUR' )return precioEuros.toFixed(2) +' €'; return devuelvePrecioMoneda(precioEuros,cambioMoneda,moneda,posicionMoneda,simboloMoneda,IDMinorista,0,0); } function formatearPrecioCambioMoneda( precioEuros, inline ){ if(inline==undefined)inline=true; var suplemento = ''; if( moneda!='EUR' ){ suplemento += devuelvePrecioMoneda(precioEuros,cambioMoneda,moneda,posicionMoneda,simboloMoneda,IDMinorista,0,0); suplemento += ' ('+ precioEuros +' €)'; }else suplemento = precioEuros + ' €'; return suplemento; } var FILTROS_HOTELES_SELECCIONADOS = {}; // Valores de los filtros seleccinados var FILTROS_HOTELES_ORIGINALES = {}; /** * Clase para gestionar los filtros de los vuelos * vuelosOrig: Vuelos que hemos de gestionar: idaVuelta, ida y/o vuelta * tiposFiltros: Listado de filtros que podemos aplicar a los vuelos * precioReferencia: Precio de referencia a aplicar a los filtros */ var FiltrosHoteles = function(hoteles, tiposFiltros, filtrosEspeciales, precioReferencia){ // Inciamos las variables var HOTELES_ORIG = hoteles; // [NOTA] El tipo "lugaresCercanos" no filtra, si no que ordena por este campo var TIPOS_FILTROS = tiposFiltros; // ["precio", "establecimiento", "estrellas", "cadena", "regimen", "habitacion", "lugaresCercanos", "amenities"] var FILTROS_ESPECIALES = filtrosEspeciales; var PRECIO_REFERENCIA = precioReferencia; var CAMPO_PRECIO = "precio"; var OCUPACION = ADULTOS+NINOS+BEBES; var VALORES_FILTROS = {}; var FILTROS_SELECCIONADOS = {}; var AMENITIES_FILTRAR = { 160:"Baño compartido", // Añadimos este amenity para poder crear el filtro: "Mostrar sólo habitaciones privadas" 3:"Terraza",8:"Lujo",9:"Balcon",10:"Jardin Privado",19:"Jacuzzi Interior",22:"Piscina Privada",25:"Luna de Miel",46:"Ejecutiva",53:"Balcon o Terraza",64:"Exterior",70:"Superior",74:"Con Cocina",96:"con salón",105:"Temática",113:"Accesible",122:"Abuhardillada",131:"Baño con Hidromasaje",177:"Jacuzzi Exterior",181:"Acceso Piscina",185:"+ Forfait Vallnord 2 días",186:"+ Forfait Vallnord 1 día",187:"+ Forfait Grandvalira 1 día",188:"+ Forfait Grandvalira 2 días",189:"+ Forfait Baqueira",190:"+ Forfait GrandValira",191:"+ Forfait Formigal",192:"+ Forfait S.Nevada",193:"+ Forfait Vallnord",194:"+ Forfait La Molina",195:"+ Forfait Gran Pallars",196:"+ clases",197:"+ alquiler material",198:"+ comidas en pistas",206:"+ Forfait Astún",207:"+ Forfait Candanchú",208:"+ Forfait Valdelinares",209:"+ Forfait Javalambre",210:"+ Forfait S.Nevada 2 días",211:"+ 2 horas clase diaria",212:"+ Forfait Cerler",213:"+ Forfait Panticosa",214:"+ Caldea",215:"+ Tobotronc",216:"+ Forfait S.Nevada 3 días",217:"+ Forfait Alp 2500",218:"+Forfait Espot Esqui",219:"+ Forfait Port Aine",220:"+ Entradas F1 Montmelo",225:"+ Spa",226:"+Paquete Romántico",227:"+Escapada Degustación",228:"+Escapada Especial",229:"+Escapada Romantica",230:"+Paquete Familiar",231:"+Escapada Esotérica",232:"+Escapada Erótica",234:"+ Entrada Parque Acuático",239:"Masaje o tratamiento de belleza",242:"Cena romántica",243:"Circuito Spa",246:"Cena especial",249:"Entrada Parque Warner",251:"Entrada Parque Warner niños gratis (consultar)",252:"Entrada Caldea",287:"Masaje",294:"Fiesta especial San Valentín",295:"2 tratamientos hidrotermales",304:"Entrada Isla Mágica",319:"Entrada Port Aventura",320:"Entrada a Dinópolis",329:"Entrada a museo",330:"Entrada al Oceanografic",358:"Cena especial San Valentín",359:"Entrada a Museo de Cera",363:"Entrada al Bioparc",364:"Fiesta especial Fin de Año",365:"Cena de Gala",366:"Acceso a sauna",367:"Entrada a la Ciudad de las Artes y las Ciencias",370:"Entrada a Mundomar",372:"Entrada a la Alhambra de Granada",374:"Forfait",380:"+ Masaje",384:"+ Forfait de actividades Naturlandia",385:"Cena especial Fin de Año",397:"+ Visita a museo",399:"+ Forfait Saint Lary",400:"+ Forfait Le Grand Tourmalet",401:"+ Forfait Font Romeu",402:"+ Forfait Cauterets",403:"+ Forfait Les Angles",408:"+ Forfait Boi Taull",409:"+ Forfait Zermatt y Cervinia",411:"+ Escapada Romántica",413:"+ Escapada San Valentí­n",426:"+ Forfait Skipallars",427:"+ Forfait Candanchú 2 dias",431:"+ Caldea entrada nocturna",439:"+ Forfait Vallnord 3 días",440:"+ Forfait Grandvalira 3 días",441:"+ Forfait Grandvalira 4 días",442:"+ Forfait Grandvalira 5 días",443:"+ Forfait Grandvalira 6 días",444:"+ Forfait Vallnord 4 días",445:"+ Forfait Vallnord 5 días",446:"+ Forfait Vallnord 6 días",447:"+ Ticket",448:"+ Forfait Vallnord 7 días",449:"+ Forfait Grandvalira 7 días",450:"+ Picnic",451:"+ Forfait",452:"+ Experiencia Gastronómica",454:"+ Excursión",455:"+ Entrada Parque Temático",460:"+ Traslado",461:"+ Forfait Masella",458:"+Actividad",463:"+ Alquiler material de snow",464:"+ Alquiler material de esqui",465:"+ Clases de snow",466:"+ Clases de esqui",467:"+ Forfait 1 día",468:"+ Forfait 2 días",469:"+ Forfait 3 días",470:"+ Forfait 4 días",471:"+ Forfait 5 días",472:"+ Forfait 6 días",473:"+ Forfait 7 días",474:"+ Escapada Fin de Año",488:"+ Entrada a Cabárceno",491:"+ Entrada Parque Faunístico",492:"+ Entrada Biescas Aventuras",495:"+ City Tour",498:"+ Rafting",499:"+ Descenso de barrancos",518:"+ Descenso en Canoa",536:"+ Entrada Terra Natura",537:"+ Entrada Terra natura + Aqua natura",539:"+ Entrada Aqua Natura",540:"+ Museo del Mar Aquarium",542:"+ Rafting LLavorsí-Rialp",549:"Piscina privada o Jacuzzi",555:"Sauna privada",557:"con bañera de hidromasaje",561:"+ Forfait S.Nevada 4 días",562:"+ Forfait S.Nevada 5 días",564:"+ Forfait S.Nevada 6 días",566:"+ Forfait S.Nevada 7 días",568:"+ Forfait Panticosa 2 días",569:"+ Forfait Panticosa 3 días",570:"+ Forfait Panticosa 4 días",571:"+ Forfait Panticosa 5 días",572:"+ Forfait Cerler 5 días",573:"+ Forfait Cerler 6 días",574:"+ Forfait Astún 2 días",576:"+ Forfait Astún 3 días",577:"+ Forfait Astún 4 días",578:"+ Forfait Astún 5 días",579:"+ Forfait Pal-Arinsal 2 días",580:"+ Forfait Ordino-Arcalís 2 días",581:"+ Forfait Formigal-Panticosa 3 días",582:"+ Forfait Formigal-Panticosa 2 días",584:"+ Forfait Cerler 2 días",585:"+ Forfait Pal-Arinsal",586:"+ Forfait Ordino-Arcalís",587:"+ Forfait Formigal-Panticosa",588:"+ Forfait Pal-Arinsal 3 días",589:"+ Forfait Pal-Arinsal 4 días",590:"+ Forfait Pal-Arinsal 5 días",591:"+ Forfait Pal-Arinsal 6 días",592:"+ Forfait Formigal-Panticosa 4 días",593:"+ Forfait Formigal-Panticosa 5 días",594:"+ Forfait Formigal-Panticosa 6 días",595:"+ Forfait Panticosa 6 días",596:"+ Forfait Astún 6 días",597:"+ Forfait Candanchú 3 días",598:"+ Forfait Candanchú 4 días",599:"+ Forfait Candanchú 5 días",600:"+ Forfait Candanchú 6 días",601:"+ Forfait Ordino-Arcalís 3 días",602:"+ Forfait Ordino-Arcalís 4 días",603:"+ Forfait Ordino-Arcalís 5 días",604:"+ Forfait Ordino-Arcalís 6 días",605:"+ Forfait Cerler 3 días",606:"+ Forfait Cerler 4 días",608:"+ Forfait Baqueira 2 días",609:"+ Forfait Baqueira 3 días",610:"+ Forfait Baqueira 4 días",611:"+ Forfait Baqueira 5 días",612:"+ Forfait Baqueira 6 días",613:"+ Forfait Skipallars 2 días",614:"+ Forfait Skipallars 3 días",615:"+ Forfait Skipallars 4 días",616:"+ Forfait Skipallars 5 días",617:"+ Forfait Baqueira 7 días",618:"+ Forfait Vallnord 8 días",619:"+ Forfait Masella 3 días",620:"+ Forfait Masella 2 días",621:"+ Forfait Masella 4 días",622:"+ Forfait Masella 5 días",624:"+ Forfait Masella 6 días",625:"+ Forfait Boi Taull 2 días",626:"+ Forfait Boi Taull 3 días",627:"+ Forfait Boi Taull 4 días",628:"+ Forfait Boi Taull 5 días",629:"+ Forfait Boi Taull 6 días",630:"+ Forfait La Molina 2 días",631:"+ Forfait La Molina 3 días",632:"+ Forfait La Molina 4 días",634:"+ Forfait La Molina 5 días",635:"+ Forfait La Molina 6 días",636:"+ Forfait Formigal-Panticosa 7 días",637:"+ Forfait La Molina 7 días",638:"+ Forfait Skipallars 6 días",639:"+ Forfait Skipallars 7 días",643:"+ Caldea abono 3 días",644:"+ Caldea abono 5 días",645:"+ Entrada general Inúu",646:"+ Entrada nocturna Inúu",647:"+ Entrada Naturlandia",648:"+ Entrada Parque Animales Naturlandia",649:"+ Abono 3 días Inúu",650:"+ Abono 5 días Inúu",653:"+ Forfait Vallter 2000",654:"+ Forfait Vallter 2000 4 días",655:"+ Forfait Vallter 2000 4 días",657:"+ Forfait Baqueira Express",658:"+ Forfait Baqueira Express 2 días",659:"+ Caldea entrada general",660:"+ Caldea entrada por la mañana",661:"+ Forfait Alp 2500 2 días",662:"+ Forfait Alp 2500 3 días",663:"+ Forfait Alp 2500 4 días",664:"+ Forfait Alp 2500 5 días",666:"+ Forfait Alp 2500 6 días",668:"+ Forfait Masella 7 días",669:"+ Forfait Alp 2500 7 días",670:"+ Forfait Javalambre 2 días",671:"+ Forfait Vallter 2000 3 días",672:"+ Forfait Vallter 2000 2 días",673:"+ Entrada de mañana Inúu",675:"+ Entrada de tarde Inúu",680:"+ Forfait Piau Engaly",681:"+ Forfait Piau Engaly 2 días",682:"+ Forfait Piau Engaly 3 días",683:"+ Forfait Piau Engaly 4 días",684:"+ Forfait Piau Engaly 5 días",685:"+ Forfait Piau Engaly 6 días",686:"+ Forfait Peyragudes",687:"+ Forfait Peyragudes 2 días",688:"+ Forfait Peyragudes 3 días",689:"+ Forfait Peyragudes 4 días",690:"+ Forfait Peyragudes 5 días",691:"+ Forfait Peyragudes 6 días",693:"+ Forfait La Mongie - Barèges 2 días",694:"+ Forfait La Mongie - Barèges",695:"+ Forfait La Mongie - Barèges 3 días",696:"+ Forfait La Mongie - Barèges 4 días",697:"+ Forfait La Mongie - Barèges 5 días",698:"+ Forfait La Mongie - Barèges 6 días",699:"+ Forfait Olympia Skiworld Innsbruck",700:"+ Forfait Olympia Skiworld Innsbruck 2 días",701:"+ Forfait Olympia Skiworld Innsbruck 3 días",702:"+ Forfait Olympia Skiworld Innsbruck 4 días",703:"+ Forfait Olympia Skiworld Innsbruck 5 días",704:"+ Forfait Olympia Skiworld Innsbruck 6 días",705:"+ Forfait Kitzbühel",706:"+ Forfait Kitzbühel 2 días",707:"+ Forfait Kitzbühel 3 días",708:"+ Forfait Kitzbühel 4 días",709:"+ Forfait Kitzbühel 5 días",710:"+ Forfait Kitzbühel 6 días",711:"+ Forfait Davos-Klosters",712:"+ Forfait Davos-Klosters 2 días",713:"+ Forfait Davos-Klosters 3 días",714:"+ Forfait Davos-Klosters 4 días",715:"+ Forfait Davos-Klosters 5 días",716:"+ Forfait Davos-Klosters 6 días",717:"+ Forfait Mont Blanc",718:"+ Forfait Mont Blanc 2 días",719:"+ Forfait Mont Blanc 3 días",721:"+ Forfait Mont Blanc 4 días",722:"+ Forfait Mont Blanc 5 días",723:"+ Forfait Mont Blanc 6 días",730:"+ Forfait Paradiski",731:"+ Forfait Paradiski 2 días",732:"+ Forfait Paradiski 3 días",733:"+ Forfait Paradiski 4 días",734:"+ Forfait Paradiski 5 días",735:"+ Forfait Paradiski 6 días",736:"+ Forfait Espace Killy",737:"+ Forfait Espace Killy 2 días",738:"+ Forfait Espace Killy 3 días",740:"+ Forfait Espace Killy 5 días",741:"+ Forfait Espace Killy 6 días",742:"+ Forfait Dolomiti Superski",743:"+ Forfait Dolomiti Superski 2 días",744:"+ Forfait Dolomiti Superski 3 días",745:"+ Forfait Dolomiti Superski 4 días",746:"+ Forfait Dolomiti Superski 5 días",747:"+ Forfait Dolomiti Superski 6 días",748:"+ Forfait Cauterets 2 días",749:"+ Forfait Cauterets 3 días",750:"+ Forfait Cauterets 4 días",751:"+ Forfait La Plagne",752:"+ Forfait La Plagne 2 días",753:"+ Forfait La Plagne 3 días",754:"+ Forfait La Plagne 4 días",755:"+ Forfait La Plagne 5 días",756:"+ Forfait La Plagne 6 días",757:"+ Forfait Les Arc/ Peisey- Vallandry",758:"+ Forfait Les Arc/ Peisey- Vallandry 2 días",759:"+ Forfait Les Arc/ Peisey- Vallandry 3 días",760:"+ Forfait Les Arc/ Peisey- Vallandry 4 días",761:"+ Forfait Les Arc/ Peisey- Vallandry 5 días",762:"+ Forfait Les Arc/ Peisey- Vallandry 6 días",763:"+ Forfait Saint Lary",764:"+ Forfait Saint Lary 2 días",765:"+ Forfait Saint Lary 3 días",766:"+ Forfait Saint Lary 4 días",767:"+ Forfait Saint Lary 5 días",768:"+ Forfait Saint Lary 6 días",769:"+ Forfait Serre Chevalier",770:"+ Forfait Serre Chevalier 3 días",771:"+ Forfait Serre Chevalier 2 días",772:"+ Forfait Serre Chevalier 4 días",773:"+ Forfait Serre Chevalier 5 días",774:"+ Forfait Serre Chevalier 6 días",775:"+ Forfait Zermatt y Cervinia 2 días",776:"+ Forfait Zermatt y Cervinia 3 días",777:"+ Forfait Zermatt y Cervinia 4 días",778:"+ Forfait Zermatt y Cervinia 5 días",779:"+ Forfait Zermatt y Cervinia 6 días",780:"+ Forfait 3 Valles",781:"+ Forfait 3 Valles 2 días",782:"+ Forfait 3 Valles 3 días",783:"+ Forfait 3 Valles 4 días",784:"+ Forfait 3 Valles 5 días",785:"+ Forfait 3 Valles 6 días",786:"+ Forfait Val Thorens",787:"+ Forfait Val Thorens 2 días",788:"+ Forfait Val Thorens 4 días",789:"+ Forfait Val Thorens 3 días",790:"+ Forfait Val Thorens 5 días",791:"+ Forfait Val Thorens 6 días",798:"+ Forfait Grand Massif",799:"+ Forfait Grand Massif 2 días",800:"+ Forfait Grand Massif 3 días",801:"+ Forfait Grand Massif 4 días",802:"+ Forfait Grand Massif 5 días",803:"+ Forfait Grand Massif 6 días",804:"+ Forfait Alpe d´Huez",805:"+ Forfait Alpe d´Huez 2 días",806:"+ Forfait Alpe d´Huez 3 días",807:"+ Forfait Alpe d´Huez 4 días",808:"+ Forfait Alpe d´Huez 5 días",809:"+ Forfait Alpe d´Huez 6 días",810:"+ Forfait Cauterets 5 días",811:"+ Forfait Cauterets 6 días",812:"+ Forfait Font Romeu - Pyrenées 2000 3 días",813:"+ Forfait Dolomiti Superski - Cortina D´Ampezzo 3 días",814:"+ Forfait Valloire-Valmeinier",815:"+ Forfait Valloire-Valmeinier 2 días",816:"+ Forfait Valloire-Valmeinier 3 días",817:"+ Forfait Valloire-Valmeinier 4 días",818:"+ Forfait Valloire-Valmeinier 4 días",819:"+ Forfait Valloire-Valmeinier 5 días",820:"+ Forfait Valloire-Valmeinier 6 días",821:"+ Forfait Font Romeu - Pyrenées 2000",822:"+ Forfait Font Romeu - Pyrenées 2000 2 días",823:"+ Forfait Font Romeu - Pyrenées 2000 4 días",824:"+ Forfait Font Romeu - Pyrenées 2000 5 días",825:"+ Forfait Font Romeu - Pyrenées 2000 6 días",826:"+ Forfait 2 Alpes",827:"+ Forfait 2 Alpes 2 días",828:"+ Forfait 2 Alpes 3 días",829:"+ Forfait 2 Alpes 4 días",830:"+ Forfait 2 Alpes 5 días",831:"+ Forfait 2 Alpes 6 días",832:"+ Forfait La Foret Blanche",833:"+ Forfait La Foret Blanche 2 días",834:"+ Forfait La Foret Blanche 3 días",835:"+ Forfait La Foret Blanche 4 días",836:"+ Forfait La Foret Blanche 5 días",837:"+ Forfait La Foret Blanche 6 días",838:"+ Forfait Tignes",839:"+ Forfait Tignes 2 días",840:"+ Forfait Tignes 3 días",841:"+ Forfait Tignes 4 días",842:"+ Forfait Tignes 5 días",843:"+ Forfait Tignes 6 días",844:"+ Forfait Vialattea",845:"+ Forfait Vialattea 2 días",846:"+ Forfait Vialattea 3 días",847:"+ Forfait Vialattea 4 días",848:"+ Forfait Vialattea 5 días",849:"+ Forfait Vialattea 6 días",850:"+ Forfait Dolomiti Superski - Cortina D´Ampezzo",851:"+ Forfait Dolomiti Superski - Cortina D´Ampezzo 2 días",852:"+ Forfait Dolomiti Superski - Cortina D´Ampezzo 4 días",853:"+ Forfait Dolomiti Superski - Cortina D´Ampezzo 5 días",854:"+ Forfait Dolomiti Superski - Cortina D´Ampezzo 6 días",855:"+ Forfait Dolomiti Superski - Val di Fassa",856:"+ Forfait Dolomiti Superski - Val di Fassa 2 días",857:"+ Forfait Dolomiti Superski - Val di Fassa 3 días",858:"+ Forfait Dolomiti Superski - Val di Fassa 4 días",859:"+ Forfait Dolomiti Superski - Val di Fassa 5 días",860:"+ Forfait Dolomiti Superski - Val di Fassa 6 días",861:"+ Forfait Valle de Courchevel",862:"+ Forfait Valle de Courchevel 2 días",863:"+ Forfait Valle de Courchevel 3 días",864:"+ Forfait Valle de Courchevel 4 días",865:"+ Forfait Valle de Courchevel 5 días",866:"+ Forfait Valle de Courchevel 6 días",868:"+ Forfait Olympia Skiworld Innsbruck 7 días",869:"+ Forfait Davos-Klosters 7 días",870:"+ Forfait Mont Blanc 7 días",872:"+ Forfait Piau Engaly 7 días",873:"+ Forfait Cauterets 7 días",874:"+ Forfait Zermatt y Cervinia 7 días",875:"+ Forfait Peyragudes 7 días",876:"+ Forfait Saint Lary 7 días",877:"+ Forfait Alpe d´Huez 7 días",878:"+ Forfait Kitzbühel 7 días",879:"+ Forfait Engandin-St.Moritz 7 días",880:"+ Forfait Gstaad 7 días",881:"+ Forfait Aspen-Snowmass 7 días",882:"+ Forfait glaciar Zermatt 7 días",883:"+ Forfait Canyons / Park City Utah 7 días",884:"+ Forfait Vallter 2000 5 días",885:"+ Forfait Boi Taull 7 días",888:"+ Forfait Pal-Arinsal 7 días",896:"Entrada Parque Warner 2 días Consecutivos",927:"+ Forfait Astún con acceso a Candanchú",928:"+ Forfait Astún con acceso a Candanchú 2 días",929:"+ Forfait Astún con acceso a Candanchú 3 días",930:"+ Forfait Astún con acceso a Candanchú 6 días",931:"+ Forfait Jungfrau Ski Region",932:"+ Forfait Jungfrau Ski Region 2 días",933:"+ Forfait Jungfrau Ski Region 3 días",934:"+ Forfait Jungfrau Ski Region 4 días",935:"+ Forfait Jungfrau Ski Region 5 días",936:"+ Forfait Jungfrau Ski Region 6 días",937:"+ Forfait Ordino-Arcalís 7 días",938:"+ Forfait Grandvalira 8 días",939:"+ Forfait Grandvalira 9 días",940:"+ Forfait Grandvalira 10 días",941:"+ Forfait Grandvalira 11 días",942:"+ Forfait Grandvalira 12 días",943:"+ Forfait Grandvalira 13 días",944:"+ Forfait Grandvalira 14 días",945:"+ Forfait Ordino-Arcalís 8 días",946:"+ Forfait Ordino-Arcalís 9 días",947:"+ Forfait Ordino-Arcalís 10 días",948:"+ Forfait Ordino-Arcalís 11 días",949:"+ Forfait Pal-Arinsal 8 días",950:"+ Forfait Pal-Arinsal 9 días",951:"+ Forfait Pal-Arinsal 10 días",952:"+ Forfait Pal-Arinsal 11 días",953:"+ Forfait Cerler 7 días",954:"+ Forfait Cerler 8 días",955:"+ Forfait Cerler 9 días",956:"+ Forfait Cerler 10 días",957:"+ Forfait Cerler 11 días",958:"+ Forfait Pal-Arinsal 12 días",959:"+ Forfait Ordino-Arcalís 12 días",960:"+ Forfait Formigal-Panticosa 8 días",961:"+ Forfait Formigal-Panticosa 9 días",962:"+ Forfait La Molina 8 días",963:"+ Forfait La Molina 9 días",964:"+ Forfait Pal-Arinsal 13 días",965:"+ Forfait Pal-Arinsal 14 días",966:"+ Forfait Pal-Arinsal 15 días",967:"+ Forfait Ordino-Arcalís 13 días",968:"+ Forfait Ordino-Arcalís 14 días",969:"+ Forfait Grandvalira 15 días",970:"+ Forfait Formigal-Panticosa 10 días",971:"+ Forfait Formigal-Panticosa 11 días",972:"+ Forfait Formigal-Panticosa 12 días",973:"+ Forfait Cerler 12 días",974:"+ Forfait Astún con acceso a Candanchú 1 día",975:"+ Forfait Astún con acceso a Candanchú 4 días",976:"+ Forfait Astún con acceso a Candanchú 5 días",977:"+ Entrada Ferrari Land",978:"Entrada Port Aventura 2 días",989:"+ Curso Esquí El Tarter",990:"+ menú express",991:"+ Curso Snow El Tarter",992:"+ Curso Snow Baqueira con inicio Lunes",993:"+ Curso Esquí Baqueira con inicio Sábado",994:"+ Curso Esquí Baqueira con inicio Martes o Miércoles",995:"+ Curso Snow Pas de la Casa",996:"+ Curso Esquí Pas de la Casa",997:"+ Curso Snow Soldeu",998:"+ Curso Esquí Canillo",999:"+ Curso Snow Canillo",1000:"+ Curso Esquí Encamp",1001:"+ Menú Bocadillo",1002:"+ Curso Esquí Soldeu",1003:"+ Curso Snow Encamp",1004:"+ Curso Esquí Pal",1005:"+ Curso Esquí Arinsal",1006:"+ Curso Esquí Pal/Arinsal",1007:"+ Curso Esquí Arcalís",1008:"+ Curso Snow Arcalís",1009:"+ Forfait Javalambre 6 días",1010:"+ Forfait Javalambre 5 días",1011:"+ Forfait Javalambre 3 días",1012:"+ Forfait Javalambre 4 días",1013:"+ Curso de Esquí Cerler",1014:"+ Curso de Snow Cerler",1016:"+ Alquiler material esquí­ bronce + botas",1017:"+ Alquiler material esquí­ bronce sin botas",1018:"+ Alquiler material snow bronce + botas",1019:"+ Alquiler material snow bronce sin botas",1020:"Entrada 1 día + 1 parque Ticket Super Magic",1021:"Entrada 1 día + 2 parques Tickect Super Magic",1022:"Entrada 1 día + 2 parques Tickect Super Magic Plus",1023:"Entrada 1 día + 1 parque Tickect Super Magic Plus",1024:"Entrada 1 día + 2 parques Ticket Magic",1025:"Entrada 1 día + 1 parque Ticket Mini",1026:"Entrada 1 día + 2 parques Ticket Mini",1028:"Entrada 2 días + 2 parques Ticket Super Magic Plus",1029:"Entrada 3 días + 2 parques Ticket Super Magic Plus",1030:"Entrada 4 días + 2 parques Ticket Super Magic Plus",1031:"Entrada 1 día + 1 parque Tickect Magic",1081:"+ Forfait Luchon-Superbagneres 2 días",1082:"+ Forfait Luchon-Superbagneres 3 días",1083:"+ Forfait Luchon-Superbagneres 4 días",1084:"+ Forfait Luchon-Superbagneres 5 días",1085:"+ Forfait Luchon-Superbagneres 6 días",1086:"+ Forfait Luchon-Superbagneres 7 días",1087:"+ Forfait Luchon-Superbagneres"}; var KEYS_AMENITIES_FILTRAR = Object.keys(AMENITIES_FILTRAR); /** * Función que obtiene los valores posibiles por los que podemos filtrar los vuelos */ this.obtenerFiltros = function(){ var hotelesContados = {}; HOTELES_ORIG = DISPO_ORIG_HOTEL; for (var iHotel = 0, nHoteles = HOTELES_ORIG.length; iHotel < nHoteles; iHotel++) { var hotel = HOTELES_ORIG[iHotel]; if (!hotelesContados[iHotel]) hotelesContados[iHotel] = {}; var listadoHabitacionesHotel = hotel.habitaciones; if (!listadoHabitacionesHotel) continue; for (var iHabHotel = 0, nHabHotel = listadoHabitacionesHotel.length; iHabHotel < nHabHotel; iHabHotel++) { var habitacionesHotel = listadoHabitacionesHotel[iHabHotel]; for (var iFiltro = 0, nFiltros = TIPOS_FILTROS.length; iFiltro < nFiltros; iFiltro++) { var tipoFiltro = TIPOS_FILTROS[iFiltro]; if (!VALORES_FILTROS[tipoFiltro]) { // Si es un tipo especial (sus valores vienen definidos del servidor) --> iniciamos los posibles valores if (FILTROS_ESPECIALES[tipoFiltro]) VALORES_FILTROS[tipoFiltro] = FILTROS_ESPECIALES[tipoFiltro]; else VALORES_FILTROS[tipoFiltro] = {}; // Reiniciamos los valores de los contadores de las "Cadenas hoteleras" if (tipoFiltro == 'cadena') { var filtroActual = VALORES_FILTROS[tipoFiltro]; for (var iFiltroAux in filtroActual) { var filtroAux = filtroActual[iFiltroAux]; filtroActual[iFiltroAux].nHoteles = 0; filtroActual[iFiltroAux].precio = null; } } } var filtroActual = VALORES_FILTROS[tipoFiltro]; if (tipoFiltro == "precio" || tipoFiltro == "regimen") { var alojamientosHotel = habitacionesHotel.alojamientos; for (var iAloj = 0, nAloj = alojamientosHotel.length; iAloj < nAloj; iAloj++) { var alojamiento = alojamientosHotel[iAloj] if (alojamiento.IDAlojamiento == undefined) continue; var precio = alojamiento[CAMPO_PRECIO]; switch (tipoFiltro) { case "precio": // Para el precio obtenemos los extremos if (filtroActual.min == undefined){ filtroActual.min = precio; }else if (filtroActual.min > precio){ filtroActual.min = precio; } if (filtroActual.max == undefined){ filtroActual.max = precio; }else if (filtroActual.max < precio && (precio - filtroActual.max) < 500){ filtroActual.max = precio; } break; case "regimen": if (!filtroActual[alojamiento.IDAlojamiento]) filtroActual[alojamiento.IDAlojamiento] = { "ID": alojamiento.IDAlojamiento, "nombre": ucfirst(alojamiento.nombreAlojamiento.toLowerCase()), "precio": precio, "nHoteles": 0 }; if (filtroActual[alojamiento.IDAlojamiento].precio > precio){ filtroActual[alojamiento.IDAlojamiento].precio = precio; } var keyAlojamiento = tipoFiltro + alojamiento.IDAlojamiento; if (!hotelesContados[iHotel][keyAlojamiento]) { filtroActual[alojamiento.IDAlojamiento].nHoteles += 1; hotelesContados[iHotel][keyAlojamiento] = true; } break; } } } else if (tipoFiltro == "habitacion" || tipoFiltro == "establecimiento" || tipoFiltro == "amenities") { if (hotel.habitaciones[0].alojamientos[0]) { var listadoTipoHabitacionesHotel = habitacionesHotel.habitaciones; for (var iHab = 0, nHab = listadoTipoHabitacionesHotel.length; iHab < nHab; iHab++) { var habitacion = listadoTipoHabitacionesHotel[iHab]; if (!hotel.habitaciones[iHabHotel] || !hotel.habitaciones[iHabHotel].alojamientos || hotel.habitaciones[iHabHotel].alojamientos.length == 0){ continue; } var precio = hotel.habitaciones[iHabHotel].alojamientos[0][CAMPO_PRECIO]; var precioEstablecimiento = hotel.habitaciones[iHabHotel].alojamientos[0].precio; switch (tipoFiltro) { case "habitacion": // Parche para filtrar por el amenitie "dos camas separadas" o "una cama" var amenities = habitacion.amenitiesTexto ? habitacion.amenitiesTexto : ''; if (amenities && amenities.indexOf('duas camas separadas') != -1) { tipoHabitacion = 'duas camas separadas'; nombreHabitacion = 'Quarto ' + tipoHabitacion.toLowerCase(); } else if (amenities && amenities.indexOf('una cama') != -1) { tipoHabitacion = 'una cama'; nombreHabitacion = 'Quarto Duplo ' + tipoHabitacion.toLowerCase(); } else { tipoHabitacion = getTipoHabitacion(habitacion.nombreHabitacion); nombreHabitacion = ucfirst(tipoHabitacion.toLowerCase()); } if (!filtroActual[tipoHabitacion]) { filtroActual[tipoHabitacion] = { "ID": normalize(tipoHabitacion.toLowerCase()), "IDHab": habitacion.IDHabitacion, "nombre": nombreHabitacion, "precio": precio, "nHoteles": 0 }; } if (filtroActual[tipoHabitacion].precio > precio){ filtroActual[tipoHabitacion].precio = precio; } break; case "establecimiento": case "amenities": if (habitacion.amenities && habitacion.amenities.length) { // var IDEstablecimiento = 'F'; // var patt = new RegExp(normalize('forfait|Ski pass|Skipass|Skipas|Karnet narciarski|Ски-пасс'), "i"); var amenitiesHabitacion = habitacion.amenities; for (var iAme = 0, nAme = amenitiesHabitacion.length; iAme < nAme; iAme++) { var amenity = amenitiesHabitacion[iAme]; /* if( tipoFiltro=="establecimiento" && patt.test(normalize(amenity.amenity)) ){ if( !filtroActual[IDEstablecimiento] )filtroActual[IDEstablecimiento] = {"ID":IDEstablecimiento, "nombre":' Hotel+Forfait', "precio":precio ,"nHoteles":0}; if(filtroActual[IDEstablecimiento].precio > precioEstablecimiento ){ filtroActual[IDEstablecimiento].precio = precioEstablecimiento; } if( !hotelesContados[iHotel][tipoFiltro+IDEstablecimiento] ){ filtroActual[IDEstablecimiento].nHoteles += 1; hotelesContados[iHotel][tipoFiltro+IDEstablecimiento] = true; } } */ var IDAmenity = amenity.IDAmenity; //Si es la pestaña de nieve y el amenitie no está en el array no lo pintamos en el filtro.FRON-4853 if (TIPO_CABECERA_AGENCIA == 'Nieve' && arrayAmenitiesNieve.indexOf(IDAmenity)==-1){ break; } //Si es la pestaña de montaña y el amenitie no está en el array no lo pintamos en el filtro.FRON-5380 if (TIPO_CABECERA_AGENCIA == 'Montaña' && arrayAmenitiesMontana.indexOf(IDAmenity)==-1){ break; } if (tipoFiltro == "amenities" && AMENITIES_FILTRAR[amenity.IDAmenity]) { if (!filtroActual[IDAmenity]) { filtroActual[IDAmenity] = { "ID": IDAmenity, "nombre": amenity.amenity, "precio": precio, "nHoteles": 0 }; } var datosAmenity = filtroActual[IDAmenity]; if (datosAmenity.precio > precioEstablecimiento){ datosAmenity.precio = precioEstablecimiento; } var keyAmenity = tipoFiltro + IDAmenity; if (!hotelesContados[iHotel][keyAmenity]) { datosAmenity.nHoteles += 1; hotelesContados[iHotel][keyAmenity] = true; } } } } break; } } } } if (tipoFiltro == "establecimiento" || tipoFiltro == "estrellas" || tipoFiltro == "cadena") { if (hotel.habitaciones[0].alojamientos[0]) { switch (tipoFiltro) { case "establecimiento": var keyEstablecimiento = tipoFiltro + IDEstablecimiento; var clasificadoEstablecimiento = false; var esApartahotel = arrayIDCategoriasApartahotel.indexOf(hotel.IDCategoria.toString()) != -1; if( arrayIDCategoriasApartamentos.indexOf(hotel.IDCategoria.toString())!=-1 || esApartahotel ){ var IDEstablecimiento = 'A'; if (!filtroActual[IDEstablecimiento]){ filtroActual[IDEstablecimiento] = { "ID": IDEstablecimiento, "nombre": ' Apartamentos', "precio": precio, "nHoteles": 0 }; } if (filtroActual[IDEstablecimiento].precio > precio){ filtroActual[IDEstablecimiento].precio = precio; } if (iHabHotel==0 && !hotelesContados[iHotel][keyEstablecimiento]) { filtroActual[IDEstablecimiento].nHoteles += 1; hotelesContados[iHotel][keyEstablecimiento] = true; } clasificadoEstablecimiento = true; } if( arrayIDCategoriasHotel.indexOf(hotel.IDCategoria.toString())!=-1 || esApartahotel ){ var IDEstablecimiento = 'H'; if (!filtroActual[IDEstablecimiento]){ filtroActual[IDEstablecimiento] = { "ID": IDEstablecimiento, "nombre": ' Hotel', "precio": precio, "nHoteles": 0 }; } if (filtroActual[IDEstablecimiento].precio > precio){ filtroActual[IDEstablecimiento].precio = precio; } if (iHabHotel==0 && !hotelesContados[iHotel][keyEstablecimiento]) { filtroActual[IDEstablecimiento].nHoteles += 1; hotelesContados[iHotel][keyEstablecimiento] = true; } if( esApartahotel ){ var keyEstablecimientoApartahotel = "ah"+keyEstablecimiento; if (iHabHotel==0 && !hotelesContados[iHotel][keyEstablecimientoApartahotel]) { filtroActual[IDEstablecimiento].nHoteles += 1; hotelesContados[iHotel][keyEstablecimientoApartahotel] = true; } } clasificadoEstablecimiento = true; } if( !clasificadoEstablecimiento ){ var IDEstablecimiento = 'O'; if (!filtroActual[IDEstablecimiento]){ filtroActual[IDEstablecimiento] = { "ID": IDEstablecimiento, "nombre": 'Outros', "precio": precio, "nHoteles": 0 }; } if (filtroActual[IDEstablecimiento].precio > precio){ filtroActual[IDEstablecimiento].precio = precio; } if (iHabHotel==0 && !hotelesContados[iHotel][keyEstablecimiento]) { filtroActual[IDEstablecimiento].nHoteles += 1; hotelesContados[iHotel][keyEstablecimiento] = true; } } break; case "estrellas": var estrellas = estrellasHabitacion(hotel); if (estrellas > 0) { if (!filtroActual[estrellas]) { var nombreEstrellas = ''; for (var iEst = 0; iEst < estrellas; iEst++){ nombreEstrellas += ''; } filtroActual[estrellas] = { "ID": estrellas, "nombre": nombreEstrellas, "precio": precio, "nHoteles": 0 }; } if (filtroActual[estrellas].precio > precio){ filtroActual[estrellas].precio = precio; } if (!hotelesContados[iHotel][tipoFiltro]) { filtroActual[estrellas].nHoteles += 1; hotelesContados[iHotel][tipoFiltro] = true; } } break; case "cadena": var IDCadenaHotelera = hotel.IDCadenaHotelera; if (filtroActual[IDCadenaHotelera]) { var precioCadena = hotel.habitaciones[0].alojamientos[0].precio; if (filtroActual[IDCadenaHotelera].precio === null || filtroActual[IDCadenaHotelera].precio > precio) filtroActual[IDCadenaHotelera].precio = precio; if (!hotelesContados[iHotel][tipoFiltro]) { filtroActual[IDCadenaHotelera].nHoteles += 1; hotelesContados[iHotel][tipoFiltro] = true; } } break; } } } } // tiposFiltros } // habitaciones } // hoteles // Contado de los tipos de habitaciones var hayHabitacionesCompartidas = false; // Bandera que indica si hay habitaciones compartidas if (!emptyObject(VALORES_FILTROS['habitacion'])) { var valoresFiltrosHabitacion = VALORES_FILTROS['habitacion']; for (var tipoHab in valoresFiltrosHabitacion) { var hab = valoresFiltrosHabitacion[tipoHab]; // Habitaciones compartidas // if ([66, 79, 80, 81, 82, 83].indexOf(hab.IDHab) != -1) { // if (hab.IDHab==66 || (hab.IDHab>=79 && hab.IDHab<=83)) { // hayHabitacionesCompartidas = true; // } VALORES_FILTROS['habitacion'][tipoHab].precio = null; if (idiomaSeleccionado != 'ARA' && idiomaSeleccionado != 'RUM') { //Parche especial para el idioma árabe var patt = new RegExp(normalize(tipoHab.toLowerCase()), "i"); } else { tipoHab2 = tipoHab.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, ""); var patt = new RegExp(normalize(tipoHab2.toLowerCase()), "i"); } for (var iHotel = 0, nHoteles = HOTELES_ORIG.length; iHotel < nHoteles; iHotel++) { var hotel = HOTELES_ORIG[iHotel]; var habitacionesFiltro = getHabFiltroTipoHabitacion(hotel, patt); if (habitacionesFiltro.length > 0) { VALORES_FILTROS.habitacion[tipoHab].nHoteles += 1; if (habitacionesFiltro[0].alojamientos[0]) { // Calculamos el mínimo precio de las habitaciones var precio = habitacionesFiltro[0].alojamientos[0][CAMPO_PRECIO]; for (var iHab = 0, nHab = habitacionesFiltro.length; iHab < nHab; iHab++) { var habP = habitacionesFiltro[iHab]; var habP_alojamientos = habP.alojamientos; for (var iAloP = 0, nAloP = habP_alojamientos.length; iAloP < nAloP; iAloP++) { var precioAloP = habP_alojamientos[iAloP][CAMPO_PRECIO]; if (precioAloP < precio) { precio = precioAloP; } } } if (VALORES_FILTROS.habitacion[tipoHab].precio == null || VALORES_FILTROS.habitacion[tipoHab].precio > precio) { VALORES_FILTROS.habitacion[tipoHab].precio = precio; } } } } } } //Ya no borramos estos filtros por petición de Sebas.VET-11777 // Borrado el filtro habitación doble (por petición Miguel) //if( VALORES_FILTROS.habitacion && VALORES_FILTROS.habitacion["Quarto Duplo"] )delete(VALORES_FILTROS.habitacion["Habitación Doble"]); //if( VALORES_FILTROS.habitacion && VALORES_FILTROS.habitacion["Quarto Duplo (uma ou duas camas)"] )delete(VALORES_FILTROS.habitacion["Habitación Doble (una o dos camas)"]); // Orden VET-9300 if( VALORES_FILTROS.habitacion && (VALORES_FILTROS.habitacion['dos camas separadas'] || VALORES_FILTROS.habitacion['una cama']) ){ var habOrdenadas = {}; if( VALORES_FILTROS.habitacion['dos camas separadas'] )habOrdenadas['dos camas separadas'] = VALORES_FILTROS.habitacion['dos camas separadas']; if( VALORES_FILTROS.habitacion['una cama'] )habOrdenadas['una cama'] = VALORES_FILTROS.habitacion['una cama']; var VALORES_FILTROS_habitacion = VALORES_FILTROS.habitacion; for(var iHab in VALORES_FILTROS_habitacion){ var hab = VALORES_FILTROS_habitacion[iHab]; if( iHab!='dos camas separadas' && iHab!='una cama'){ habOrdenadas[iHab] = hab; } } VALORES_FILTROS.habitacion = habOrdenadas; } // Los amenities se ordenan por el numero de hoteles encontrados if( getLengthObject(VALORES_FILTROS.amenities)>1 ){ var VALORES_FILTROS_amenities = VALORES_FILTROS.amenities; var filtrosAmenities = {}; for(var iAmeniti in VALORES_FILTROS_amenities){ var cadenaOrden = VALORES_FILTROS_amenities[iAmeniti].nombre.toLowerCase().replace('+','zzz'); filtrosAmenities[ cadenaOrden ] = VALORES_FILTROS_amenities[iAmeniti]; } VALORES_FILTROS.amenities = sortObject(filtrosAmenities,1); } if( getLengthObject(VALORES_FILTROS.establecimiento)>1 ){ var VALORES_FILTROS_establecimiento = VALORES_FILTROS.establecimiento; VALORES_FILTROS.establecimiento = sortObject(VALORES_FILTROS_establecimiento,1); } // Los amenities se ordenan por el numero de hoteles encontrados if( getLengthObject(VALORES_FILTROS.cadena)>1 ){ var VALORES_FILTROS_cadena = VALORES_FILTROS.cadena; var filtrosCadena = {}; for(var iCadena in VALORES_FILTROS_cadena){ filtrosCadena[ VALORES_FILTROS_cadena[iCadena].nombre.toLowerCase() ] = VALORES_FILTROS_cadena[iCadena]; } VALORES_FILTROS.cadena = sortObject(filtrosCadena,1); } // Activamos la bandera que indica que hay habitaciones compartidas if( hayHabitacionesCompartidas ){ VALORES_FILTROS['habitacion'].hayHabitacionesCompartidas = hayHabitacionesCompartidas; } var filtrosOrig = false; // Guardamos los filtros que siempre tienen que tener los valores originales if( !FILTROS_HOTELES_ORIGINALES || jQuery.isEmptyObject(FILTROS_HOTELES_ORIGINALES) ){ FILTROS_HOTELES_ORIGINALES = JSON.stringify(VALORES_FILTROS); }else{ filtrosOrig = JSON.parse(FILTROS_HOTELES_ORIGINALES); if( filtrosOrig["precio"] )VALORES_FILTROS["precio"] = filtrosOrig["precio"]; } // Cuando haya una opción seleccionada --> mostramos todas las opciones originales if( filtrosOrig ){ for(var iFil in FILTROS_HOTELES_SELECCIONADOS){ var valFil = FILTROS_HOTELES_SELECCIONADOS[iFil]; if(valFil===true){ var tipoFiltro = $("#"+iFil).attr("tipo"); if( filtrosOrig[tipoFiltro] ){ VALORES_FILTROS[tipoFiltro] = filtrosOrig[tipoFiltro]; } } } } if( !HOTEL_SELECCIONADO && CARGA_INICIAL && (TIPO_CABECERA_AGENCIA=="Vuelo+Hotel" || TIPO_CABECERA_AGENCIA=="Tren+Hotel") ){ seleccionarHotel(0, 0, 0, '', 0); } } var HAY_APARTAHOTELES = false; this.hayApartahoteles = function(){ return HAY_APARTAHOTELES; } this.setHayApartahoteles = function( hayApartahoteles ){ HAY_APARTAHOTELES = hayApartahoteles; } var HAY_FILTRO_TIPO_ESTABLECIMIENTO = false; this.hayFiltroTipoEstablecimiento = function(){ return HAY_FILTRO_TIPO_ESTABLECIMIENTO; } this.setHayFiltroTipoEstablecimiento = function( hayFiltroTipoEstablecimiento ){ HAY_FILTRO_TIPO_ESTABLECIMIENTO = hayFiltroTipoEstablecimiento; } /** * Funcion que obtiene los filtros seleccionados */ this.getFiltros = function(){ } /** * Función que aplica los filtros seleccionados a la dispo * VARIABLES GLOBALES: * - "_vueloIdaMasBarato" y "_vueloVueltaMasBarato" para poder comprobar el precio total de la ida-vuelta */ this.aplicarFiltros = function(){ } /** * Función que aplica los filtros seleccionados a un vuelo */ function filtrarHotel(hotel){ } /** HTML **/ /** * Función que muestra el HTML con todos los posibles filtros */ this.mostrarHTMLFiltros = function(divSel){ var html = ''; var idCheck = ''; var valCheck = ''; // Si no hay filtros (no hay hoteles que cumplan el filtro) no actualizamos los filtros if( getLengthObject(VALORES_FILTROS)==0 )return false; html += '

Filtrar por

'; html += '
' + '
'; var tipoAlojamientoSel = ''; if( location.href.indexOf('ifp')!=-1 ){ tipoAlojamientoSel = location.href[location.href.indexOf('ifp')+4]; if( tipoAlojamientoSel!='A' && tipoAlojamientoSel!='F' )tipoAlojamientoSel = ''; } for(var iFiltro=0, nFiltros=TIPOS_FILTROS.length; iFiltro0 || tipoFiltro=='nombre' ){ if( iFiltro>0 )html += '
'; html += '
'; html += '

'; switch(tipoFiltro){ case "establecimiento": html += ' Tipo de estabelecimento'; idCheck = 'checkTipoEstablecimiento'; valCheck = ''; break; case 'precio': var tituloPrecio = 'Intervalo de Preços '; if( TIPO_CABECERA_AGENCIA=='Vuelo+Hotel' )tituloPrecio += 'por pessoa '; tituloPrecio += '('+ CLASE_PRECIO.monedaPrincipal.simbolo +')'; html += htmlSlider(tituloPrecio,'fa-credit-card','precio'); break; case "estrellas": html += ' Estrelas'; idCheck = 'chkEst'; valCheck = 'est'; break; case "cadena": html += ' CADEIAS HOTELEIRASCadeias hoteleiras'; idCheck = 'chkCad'; valCheck = ''; break; case "regimen": html += ' Tipos de Regime'; idCheck = 'chkReg'; valCheck = ''; break; case "habitacion": html += ' Tipos de Quarto'; idCheck = 'chkTipoHab'; valCheck = ''; break; case "lugaresCercanos": html += ' Lugares próximos'; idCheck = 'poiSeleccionado'; break; case "nombre": html += ' Nome do hotel'; break; case "amenities": html += ' Características e Serviços'; idCheck = 'checkAme'; valCheck = ''; break; } html += '

'; // "precio" tiene un slider (no mostramos las opciones) if( tipoFiltro!='precio' && VALORES_FILTROS[tipoFiltro] ){ html += '
    '; var checkHayHabitacionesCompartidas = false; var marcadoCheckHayHabitacionesCompartidas = $('#chkTipoHabhayHabitacionesCompartidas').prop("checked"); var mostrarVerMasDesplegado = $('ul.filter_'+ tipoFiltro +' input:checked').length>0; var cont=1; var VALORES_FILTROS_tipoFiltro = VALORES_FILTROS[tipoFiltro]; for(var iValorFiltro in VALORES_FILTROS_tipoFiltro){ var valorFiltro = VALORES_FILTROS_tipoFiltro[iValorFiltro]; // Parche para mostrar el filtro de no mostrar habitaciones compartidas if( tipoFiltro=='habitacion' && !checkHayHabitacionesCompartidas && VALORES_FILTROS[tipoFiltro].hayHabitacionesCompartidas ){ checkHayHabitacionesCompartidas = true; var valorID = 'hayHabitacionesCompartidas'; html += '
  • ' + '' + 'Mostrar apenas quartos privados (não partilhados)' +'
  • '; continue; } // Este filtro no tiene valores ---> lo saltamos if( iValorFiltro=='hayHabitacionesCompartidas' )continue; // Si tenemos marcado el check "Mostrar sólo habitaciones privadas..." no hemos de mostrar los checks de habitaciones compartidas if( marcadoCheckHayHabitacionesCompartidas && tipoFiltro=='habitacion' && ['66','79','80'].indexOf(valorFiltro.IDHab)!=-1 )continue; // El filtro amenities 160 ("baño compartido") es sólo para descartar este tipo de habitación cuando este marcado "Mostrar sólo habitaciones privadas..." if( tipoFiltro=='amenities' && valorFiltro.ID==160 )continue; // Si no hay hoteles para este filtro no lo mostramos if( valorFiltro.nHoteles==0 && tipoFiltro!="lugaresCercanos")continue; switch(tipoFiltro){ // Pasamos el filtro "tipo de establecimiento" a un check para que se seleccione como el resto del filtro (mensaje de Sebas: "Problema grave con nueva intranet" el 14/03/2016) // case "establecimiento": // var IDFiltro = valorFiltro.ID=='H'?'':valorFiltro.ID; // html += '
  • ' // + '' // + ''; // break; case "lugaresCercanos": iValorFiltro = iValorFiltro.substr(1); html += '
  • ' + ''; break; //case 'regimen': //case 'habitacion': //break; default: html += '
  • ' + '' break; } if( tipoFiltro!='nombre' ){ // El nombre tiene un input html += '
    ' + '
    ' + '
    ' + valorFiltro.nombre; + '
    ' if( tipoFiltro!='lugaresCercanos' ){ // lugaresCercanos se utiliza para ordenar por eso no tiene nº de hoteles ni precio var precioFiltro = valorFiltro.precio; if( TIPO_CABECERA_AGENCIA=='Vuelo+Hotel' )precioFiltro = Math.round( (precioFiltro+SUPLEMENTOS_HOTEL)/OCUPACION *100 )/100; html += '
    ' + valorFiltro.nHoteles; if(typeof(IDFiltro)!="undefined" && IDFiltro=='A'){ html += (valorFiltro.nHoteles==1?' apartamento desde ':' apartamentos desde '); }else{ html += (valorFiltro.nHoteles==1?' hotel desde ':' hoteis desde '); } html += CLASE_PRECIO.getPrecio(precioFiltro) + '
    '; } html += '
    ' + '
    ' + '
    '; } html += '
  • '; cont++; if( cont==5 && tipoFiltro!='estrellas' ){ html += '
    '; } } if( cont>5 && tipoFiltro!='estrellas' ){ html += '
    ' + '
    ' +'
    ' + ' ' + '' + (mostrarVerMasDesplegado?'Ver menos':'Ver mais') + '' + '
    '; } html += '
'; } if( tipoFiltro=='nombre' ){ html += ''; } html += '
'; } } html += '
' + ''; html += '
'; html += '' + ''; $(divSel).html(html); $(divSel).show(); // Borramos los filtros con una sola opcion sin seleccionar $('#divFiltrosHotelesJS ul').each(function(iUl,ul){ var elemUl = $(ul); if( (elemUl.find('li input[type=checkbox]').length==1 && elemUl.find('li input[type=checkbox]:checked').length==0) || (elemUl.find('li input').length==0) ){ var elAntes = elemUl.closest('div.row').prev(); if( elemUl.attr("class").indexOf("nombre")==-1 ){ if( elAntes.is("hr") )elAntes.remove(); elemUl.closest('div.row').remove(); } } }); // Restauramos los valores de los inputs if( FILTROS_HOTELES_SELECCIONADOS.text && getLengthObject(FILTROS_HOTELES_SELECCIONADOS.text) ){ var FILTROS_HOTELES_SELECCIONADOS_text = FILTROS_HOTELES_SELECCIONADOS.text; for(var idText in FILTROS_HOTELES_SELECCIONADOS_text){ var valText = FILTROS_HOTELES_SELECCIONADOS_text[idText]; $('#'+idText).val(valText); } } // Iniciamos el slider de los precios var minPrecio = VALORES_FILTROS['precio'].min; var maxPrecio = VALORES_FILTROS['precio'].max; if( TIPO_CABECERA_AGENCIA=='Vuelo+Hotel' || TIPO_CABECERA_AGENCIA=='Tren+Hotel' ){ minPrecio = (minPrecio + SUPLEMENTOS_HOTEL)/OCUPACION; maxPrecio = (maxPrecio + SUPLEMENTOS_HOTEL)/OCUPACION; } var iniPrecio = null, finPrecio = null; if( FILTROS_HOTELES_SELECCIONADOS['slider'] && FILTROS_HOTELES_SELECCIONADOS['slider']['filtro_precio'] ){ var vValores = FILTROS_HOTELES_SELECCIONADOS['slider']['filtro_precio'].split(";"); iniPrecio = vValores[0]; finPrecio = vValores[1]; } iniciarRangeSlider('precio', 'precio', minPrecio, maxPrecio, iniPrecio, finPrecio); // EVENTOS $('#inicio_precio,#fin_precio').on("change", aplicarFiltrosHoteles); $("input[id^=chkCad]").bind("change", aplicarFiltrosHoteles); $("input[id^=chkFp]").bind("change", aplicarFiltrosHoteles); $("input[id^=chkEst]").bind("change", aplicarFiltrosHoteles); $("input[id^=chkReg]").bind("change", aplicarFiltrosHoteles); $("input[id^=checkAme]").bind("change", aplicarFiltrosHoteles); $("input[id^=chkTipoHab]").bind("change", aplicarFiltrosHoteles); $("input[id^=poiSeleccionado]").bind("change", aplicarFiltrosHoteles); $("input[id^=checkTipoEstablecimiento]").bind("change", aplicarFiltrosHoteles); $("#butFiltrar").click(aplicarFiltrosHoteles); $("#butBorrar").click(reiniciarFiltrosHoteles); } } function estrellasHabitacion(hotel){ var IDCategoria = parseInt(hotel.IDCategoria,10); var estrellas = 0; if( [1,22,30].indexOf(IDCategoria)!=-1 )estrellas = 1; else if( [3,23,31].indexOf(IDCategoria)!=-1 )estrellas = 2; else if( [5,24,32,54].indexOf(IDCategoria)!=-1 )estrellas = 3; else if( [7,25,33,34,46].indexOf(IDCategoria)!=-1 )estrellas = 4; else if( [9,26,35,39,56].indexOf(IDCategoria)!=-1 )estrellas = 5; var ArrayEstrellas = []; ArrayEstrellas[1]=1; ArrayEstrellas[2]=1; ArrayEstrellas[3]=2; ArrayEstrellas[4]=2; ArrayEstrellas[5]=3; ArrayEstrellas[6]=3; ArrayEstrellas[7]=4; ArrayEstrellas[8]=4; ArrayEstrellas[9]=5; ArrayEstrellas[10]=5; ArrayEstrellas[11]=1; ArrayEstrellas[12]=1; ArrayEstrellas[13]=2; ArrayEstrellas[14]=3; ArrayEstrellas[15]=4; ArrayEstrellas[16]=5; ArrayEstrellas[17]=1; ArrayEstrellas[18]=2; ArrayEstrellas[19]=1; ArrayEstrellas[20]=2; ArrayEstrellas[21]=3; ArrayEstrellas[22]=1; ArrayEstrellas[23]=2; ArrayEstrellas[24]=3; ArrayEstrellas[25]=4; ArrayEstrellas[26]=5; ArrayEstrellas[27]=2; // 2.5; ArrayEstrellas[28]=2; // 2.5; ArrayEstrellas[29]=2; // 2.5; ArrayEstrellas[30]=1; // 1.5; ArrayEstrellas[31]=2; // 2.5; ArrayEstrellas[32]=3; // 3.5; ArrayEstrellas[33]=4; // 4.5; ArrayEstrellas[34]=4; // 4.5; ArrayEstrellas[35]=5; // 5.5; ArrayEstrellas[36]=1; ArrayEstrellas[37]=2; // 2.5; ArrayEstrellas[38]=1; ArrayEstrellas[39]=6; ArrayEstrellas[40]=1; ArrayEstrellas[41]=1; ArrayEstrellas[42]=1; ArrayEstrellas[43]=2; // 2.5; ArrayEstrellas[44]=1; ArrayEstrellas[45]=4; ArrayEstrellas[46]=4; // 4.5; ArrayEstrellas[47]=4; // 4.5; ArrayEstrellas[48]=2; ArrayEstrellas[49]=4; ArrayEstrellas[50]=3; ArrayEstrellas[51]=2; ArrayEstrellas[52]=2; // 2.5; ArrayEstrellas[53]=5; ArrayEstrellas[54]=3; // 3.5; ArrayEstrellas[55]=5; // 6.5; ArrayEstrellas[56]=5; // 6.5; ArrayEstrellas[57]=1; ArrayEstrellas[58]=1; ArrayEstrellas[59]=1; ArrayEstrellas[60]=1; ArrayEstrellas[61]=1; return Math.round(ArrayEstrellas[IDCategoria]); } function getTipoHabitacion(nombreHab){ nombreHab = nombreHab.replace('(',' ('); nombreHab = nombreHab.replace('( ','('); nombreHab = nombreHab.replace(' (',' ('); var tipoHabitacion = nombreHab; var tipo = nombreHab.split(" ")[0]; if( tipo.toLowerCase() !='Quarto'.toLowerCase() && isNaN(tipo) ){ tipoHabitacion = tipo; } return tipoHabitacion; } /***** FUNCIONES DE LOS EVENTOS *****/ /** * Activa los filtros con el último parametro a 1 */ function aplicarFiltrosHoteles(guardarFiltros){ if( typeof(guardarFiltros)=="undefined" )guardarFiltros = true; FILTROS_HOTELES_SELECCIONADOS = {}; FILTROS_HOTELES_SELECCIONADOS["text"] = {}; FILTROS_HOTELES_SELECCIONADOS["slider"] = {}; if( guardarFiltros ){ $("#divFiltrosHotelesJS input:checked").each(function(iInputF, inputF){ FILTROS_HOTELES_SELECCIONADOS[ $(inputF).attr("id") ]=true; }); $("#divFiltrosHotelesJS input[type=text]").each(function(iInputT, inputT){ var input = $(inputT); var vIdInput = input.attr("id").split('_'); if( $('#valorInicial_'+ vIdInput[1]).val()!="true" ){ if( input.hasClass('irs-hidden-input') ){ FILTROS_HOTELES_SELECCIONADOS["slider"][input.attr("id")] = input.val(); }else if( $.trim(input.val()) )FILTROS_HOTELES_SELECCIONADOS["text"][input.attr("id")] = input.val(); } }); } // Guardamos los filtros y la pagina actual cuando no estamos cargando la página por primera vez if( loadSession() ){ var filtrosHotelesSession = getSession('filtrosHoteles'); if( filtrosHotelesSession )FILTROS_HOTELES_SELECCIONADOS = JSON.parse( filtrosHotelesSession ); }else{ var hayFiltrosHoteles = 0; for(var keyFiltro in FILTROS_HOTELES_SELECCIONADOS ){ var valorFiltro = FILTROS_HOTELES_SELECCIONADOS[keyFiltro]; var tipoFiltro = typeof( valorFiltro ); if( tipoFiltro!='object' || !jQuery.isEmptyObject(FILTROS_HOTELES_SELECCIONADOS[keyFiltro]) ){ hayFiltrosHoteles = 1; break; } } setSession('filtrosHoteles', JSON.stringify(FILTROS_HOTELES_SELECCIONADOS)); setSession('hayFiltrosHoteles', hayFiltrosHoteles); } mostrarCapaCargando('A aplicar filtros...', '', null); if( !CARGA_INICIAL ){ Paginar(1,$('#versionResultados').val(),1,1); } // posicionarPagina("resumenDispo"); setTimeout(ocultarCapaCargando,300); } /** * Función que reinicia todos los filtros de los hoteles */ function reiniciarFiltrosHoteles(){ $('#txtNombreHotel').val(''); OBJ_FILTROS_HOTELES = null; aplicarFiltrosHoteles(false); } /** * Funcion para mostrar las opciones ocultas de los filtros */ function mostrarOcultarOpcionesFiltros(el){ el = $(el); var div = el.closest('div'); var i = div.find('i'); $( '#oculto'+div.attr('id') ).toggle('slow'); if(el.html()=='Ver mais'){ el.html('Ver menos'); i.removeClass('fa-plus-circle'); i.addClass('fa-minus-circle'); }else{ el.html('Ver mais'); i.removeClass('fa-minus-circle'); i.addClass('fa-plus-circle'); } } /***** ORDENACION DE LOS HOTELES *****/ /** * Función para ordenar los hoteles */ function ordenarHoteles(hoteles, campo, orden){ var datosOrdenados = []; for(var iHotel in hoteles){ var hotel = hoteles[iHotel]; // if( hotel.minPrecio )continue; var minPrecio = null; var hotel_habitaciones = hotel.habitaciones; var campoPrecio = (UserAgencia==1 && mostrarPVP=='0')?"precioAgencia":"precio"; for(var iHab in hotel_habitaciones){ var habitacion = hotel_habitaciones[iHab]; var habitacion_alojamientos = habitacion.alojamientos; for(var iAloj in habitacion_alojamientos){ var alojamiento = habitacion_alojamientos[iAloj]; var precioAloj = Math.round( (parseFloat( alojamiento[campoPrecio] )+SUPLEMENTOS_HOTEL)*100 )/100; if( minPrecio===null || precioAlojb.minPrecio ) ordenSort=1 * orden; return ordenSort; }); break; case "C": // Categoria [orden] - precio desc hoteles.sort(function(a,b){ var ordenSort = 0; if( estrellasHabitacion(a)estrellasHabitacion(b) )ordenSort=1* orden; else{ if(a.minPreciob.minPrecio) ordenSort=-1*orden; } return ordenSort; }); break; case "Q":// Valoracion [orden] - categoría - precio asc hoteles.sort(function(a,b){ var ordenSort = 0; var punA = a.puntuacion?parseFloat(a.puntuacion):0; var punB = b.puntuacion?parseFloat(b.puntuacion):0; if( punApunB )ordenSort=-1 * orden; else{ if( estrellasHabitacion(a)estrellasHabitacion(b) )ordenSort=1* orden; else{ if(a.minPreciopopuB )ordenSort=1 * orden; else{ if(a.minPrecio0 )a.attr('href',"javascript:ordenarListadoHoteles('"+ campoActual +"','1')"); else a.attr('href',"javascript:ordenarListadoHoteles('"+ campoActual +"','-1')"); }); }); // Marcamos el orden seleccionado $('.ordenarpor td').removeClass('active'); $('#orden'+campoOrden).addClass('active'); // Ponemos la flecha en orden que se va a ordenar if(ordenOrden==-1){ $('#orden'+ campoOrden +" i").removeClass('fa-caret-up'); $('#orden'+ campoOrden +" i").addClass('fa-caret-down'); }else{ $('#orden'+ campoOrden +" i").removeClass('fa-caret-down'); $('#orden'+ campoOrden +" i").addClass('fa-caret-up'); } // Añadimos el evento para cambiar el orden $('#orden'+ campoOrden +' a' ).attr('href',"javascript:ordenarListadoHoteles('"+ campoOrden +"','"+ (ordenOrden*-1) +"')"); } // Filtramos la dispo var RESULTADOS_FILTRO=aplicarFiltros(arrayDatosHoteles); //Si se ha dado a filtrar llamamos a la función que aplica los filtros DATOS_HOTELES=RESULTADOS_FILTRO.d; if( ordenar || ARRAY_LUGARES_CERCANOS_FILTRO.length==0 || CARGA_INICIAL ){ DATOS_HOTELES = ordenarHoteles(DATOS_HOTELES, campoOrden, ordenOrden); } var contHoteles=RESULTADOS_FILTRO.h; var contApartamentos=RESULTADOS_FILTRO.a; var contForfaits=RESULTADOS_FILTRO.f; var filtrado=RESULTADOS_FILTRO.filtrado; /* if( true || CREAR_FILTROS_HOTELES ){ OBJ_FILTROS_HOTELES = new FiltrosHoteles(DISPO_ORIG_HOTEL, TIPOS_FILTROS_HOTELES, FILTROS_ESPECIALES_HOTELES, 0); OBJ_FILTROS_HOTELES.obtenerFiltros(); OBJ_FILTROS_HOTELES.mostrarHTMLFiltros('#divFiltrosHotelesJS'); CREAR_FILTROS_HOTELES = false; } */ if (DATOS_HOTELES){ if( MAPA_VISIBLE ){ buildDatosMapa(arrayDatosHotelesMapa); buildDatosMapaOSM(arrayDatosHotelesMapa); } var html=""; var htmlTotal=""; // TAREA TRAD-49 (documento 1, tarea N9a) en ruso no debe aparecer esta frase var idiomaSeleccionado = 'PT'; if (hayFiltros && filtrado && idiomaSeleccionado !== 'RUS'){ //Si hay filtros ponemos el número de resultados encontrados en el resumen de la busqueda var totalFiltrados=DATOS_HOTELES.length; $("#conFiltro").html(', com filtro '+totalFiltrados+' disponíveis.'); }else{ $("#conFiltro").html(''); } if (cambiarPestañas){ //Actualizamos los valores de las pestañas $("#contHoteles").html(contHoteles); $("#contApartamentos").html(contApartamentos); $("#contFiltroForfaits").html(contForfaits); } totalPaginas=construyePaginacion(DATOS_HOTELES.length,resultadosPorPagina,iPagina,version,hayFiltros); // Si nos pasamos de página --> mostramos la última página if( iPagina>totalPaginas ){ if( iPagina>1 ){ iPagina=totalPaginas; Paginar(iPagina, version, hayFiltros, cambiarPestañas, campoOrden, ordenOrden); } } if( OBJ_FILTROS_HOTELES.hayFiltroTipoEstablecimiento() && OBJ_FILTROS_HOTELES.hayApartahoteles() ){ htmlTotal += '
Os resultados incluem aparthotéis..
'; } html+= '
'; // Comprobamos si hay resultados que mostrar if(DATOS_HOTELES.length==0){ if(hayFiltros){ html += ''; }else{ html +='No se ha encontrado ningún hotel'; } htmlTotal+=html; }else{ if (version=="corta"){ htmlTotal ='
' +'' +'
'; } for(var i=(iPagina-1)*resultadosPorPagina, n=iPagina*resultadosPorPagina; i' +'
' +'
' +'' +'
' +'
' +'
' +'

'; if (hayAmenityTren==1)html+='\+'; //html+='desde '+textoPrecio+' por pessoa

'; html+='
' //+'' //+'' +'
' +'
' +'
' +'
'; for(var j=0;j<=habitaciones.length-1;j++){ var display=""; if(j>1)display="style=display:none;"; html +=''; var dataHabitacion=habitaciones[j]; var itemHabitacion=""; var tipoHabitaciones=dataHabitacion['habitaciones']; var hayInfoHabitacion=0; var ocupacion=0; var numeroHabitacionesTotales=0; for(var idx=0; idx<=tipoHabitaciones.length-1; idx++){ if (arrayOcupacion[idx]){ var ocupacionPara=0; if (idx>0)itemHabitacion+='
'; var numeroHabitaciones = parseInt(arrayOcupacion[idx]['h'],10); numeroHabitacionesTotales=numeroHabitacionesTotales+numeroHabitaciones; var numeroAdultos= parseInt(arrayOcupacion[idx]['a'],10); var numeroNinos= parseInt(arrayOcupacion[idx]['n'],10); if (numeroAdultos) { ocupacion+=(numeroAdultos*numeroHabitaciones); ocupacion+=(numeroNinos*numeroHabitaciones); ocupacionPara+=numeroAdultos; ocupacionPara+=numeroNinos; } var tipoHabitacion=tipoHabitaciones[idx]; //Añadimos las imagenes de la ocupación itemHabitacion+='
'; for (var na=1;na<=numeroAdultos;na++){ itemHabitacion+=''; } if (numeroNinos>0){ for (var nn=1;nn<=numeroNinos;nn++){ itemHabitacion+=''; } } if (hayAmenityTren==1){ itemHabitacion+=' + '; } itemHabitacion+='
'; var amenities=""; // [FRON-4693] Cuando una habitación tiene creado el alias, solo debemos mostrar en front el alias (no el amenitie que tenga casado) if( tipoHabitacion['alias']!=1 && tipoHabitacion['amenitiesTexto'] ){ amenities=tipoHabitacion['amenitiesTexto']; } if( tipoHabitacion['alias']==1 ){ var vAmenities = tipoHabitacion['amenitiesTexto'].split('+'); amenities=vAmenities[1] ? (" + " + vAmenities[1]) : ""; } //Montamos el nombre de la habitación con las amenities si tiene var nombreHabitacion=creaNombreHabitacion(tipoHabitacion['nombreHabitacion'],amenities,'PT'); if (tipoHabitacion['IDHabitacion']==1 && ocupacion>2){ itemHabitacion+=' '+nombreHabitacion+" capacidade para "+ ocupacionPara +" pax"; }else{ itemHabitacion+=' '+nombreHabitacion; } if(tipoHabitacion['hayInfoHabitacion']==1)hayInfoHabitacion=1; } } if (hayInfoHabitacion==1){ contHab++; itemHabitacion+=' '; } html+='' +'' + '' +'' + '' + ''; if( TIPO_CABECERA_AGENCIA=='Vuelo+Hotel' || TIPO_CABECERA_AGENCIA=='Tren+Hotel' ){ html+= '' } else if(IDMinorista==12 || IDMinorista==23){ //Los globos chinos piden mostrar el precio por habitacion y noche.FRON-2691 html += '' + ''; } else{ html += '' + ''; } html+= '' + '' +''; // Mostramos la información extendida de la habitacion if(hayInfoHabitacion==1)html += pintaInfoExtendidaHabitacion(tipoHabitaciones, contHab); var alojamientos=dataHabitacion['alojamientos']; var precioMostrar_ida0 = 0; var precioMostrarMoneda_ida0 = 0; for (ida=0;ida<=alojamientos.length-1;ida++){ var dataAlojamiento=alojamientos[ida]; //Control para mostrar o no el icono de porcentaje de comision var txtComision=''; if( (UserAgencia && verPrecios=='1') || esUsuarioINTERNO ){ if( dataAlojamiento['mandatory']=='1' && (TIPO_CABECERA_AGENCIA!='Vuelo+Hotel' && TIPO_CABECERA_AGENCIA!='Tren+Hotel')){ var precioAgenciaPorcentaje=(((parseFloat(dataAlojamiento['precio'])-parseFloat(dataAlojamiento['precioAgencia']))/parseFloat(dataAlojamiento['precio']))*100)*numeroDias*numeroHabitaciones; var porcentaje=(parseFloat(precioAgenciaPorcentaje / (numeroDias * numeroHabitaciones))).toFixed(1); if (porcentaje<=10){ txtComision='%'; } else if (porcentaje>=15){ txtComision='%'; } } } var precioMostrar = (UserAgencia==1 && mostrarPVP=='0') ?parseFloat(dataAlojamiento['precioAgencia'])+parseFloat(SUPLEMENTOS_HOTEL) :parseFloat(dataAlojamiento['precio'])+parseFloat(SUPLEMENTOS_HOTEL); if( TIPO_CABECERA_AGENCIA=='Vuelo+Hotel' || TIPO_CABECERA_AGENCIA=='Tren+Hotel' )precioMostrar=precioMostrar/ocupacion; var precioNoche=precioMostrar/numeroDias; var precioHabitacion=(precioMostrar/numeroDias)/numeroHabitacionesTotales; var hmtlPrecio = ''; if (ida==0) { precioMostrar_ida0 = precioMostrar; } if( CLASE_PRECIO.hayCambioMoneda() ){ if (ida==0) { precioMostrarMoneda_ida0 = precioMostrarMoneda; } htmlPrecio = ''+ CLASE_PRECIO.getPrecioPrincipal(precioMostrar) +'
('+ CLASE_PRECIO.getPrecioSecundario(precioMostrar) +')'; htmlPrecioNoche = ''+ CLASE_PRECIO.getPrecioPrincipal(precioNoche) +'
('+ CLASE_PRECIO.getPrecioSecundario(precioNoche) +')'; htmlPrecioHabitacion = ''+ CLASE_PRECIO.getPrecioPrincipal(precioHabitacion) +'
('+ CLASE_PRECIO.getPrecioSecundario(precioHabitacion) +')'; }else{ htmlPrecio = CLASE_PRECIO.getPrecio(precioMostrar); htmlPrecioNoche = CLASE_PRECIO.getPrecio(precioNoche); htmlPrecioHabitacion = CLASE_PRECIO.getPrecio(precioHabitacion); } var estilosAviso=''; if (ES_PREPRODUCCION==1 && dataAlojamiento['IDProveedor']!=13 && dataAlojamiento['IDProveedor']!=64 && dataAlojamiento['IDProveedor']!=127 && dataAlojamiento['IDProveedor']!=124 && dataAlojamiento['IDProveedor']!=133 && dataAlojamiento['IDProveedor']!=134){ estilosAviso='style="background:red"'; } var nombreHotel=data['nombre']; nombreHotel = nombreHotel.replace(/'/g, "\\'"); html+= '' + ''; if( TIPO_CABECERA_AGENCIA=='Vuelo+Hotel' || TIPO_CABECERA_AGENCIA=='Tren+Hotel' ){ html += '' } else if(IDMinorista==12 || IDMinorista==23){ //Los globos chinos piden mostrar el precio por habitacion y noche.FRON-2691 html += '' + ''; } else{ html += '' + ''; } html += '' + ''; var textoVerPrecios=""; if( (UserAgencia && verPrecios=='1') || esUsuarioINTERNO || ES_PREPRODUCCION==1 ){ var precioAgencia=parseFloat(dataAlojamiento['precioAgencia'])*numeroDias*numeroHabitaciones; precioAgencia=(parseFloat(precioAgencia / (numeroDias * numeroHabitaciones))).toFixed(2); if( TIPO_CABECERA_AGENCIA == 'Vuelo+Hotel' || TIPO_CABECERA_AGENCIA == 'Tren+Hotel' ){ precioAgencia = parseFloat(precioAgencia)+precioAgenciaSuplementos; precioAgencia += tOcupacion * SEGURO_BASE_PRECIO_PASAJERO_AGENCIA; // precioAgencia = (precioAgencia/tOcupacion).toFixed(2); precioAgencia = (precioAgencia).toFixed(2); } var precioAgenciaGanancia=(parseFloat(dataAlojamiento['precio'])-parseFloat(dataAlojamiento['precioAgencia']))*numeroDias*numeroHabitaciones; precioAgenciaGanancia=(parseFloat(precioAgenciaGanancia / (numeroDias * numeroHabitaciones))).toFixed(2); if( TIPO_CABECERA_AGENCIA=='Vuelo+Hotel' || TIPO_CABECERA_AGENCIA=='Tren+Hotel' ){ // precioAgenciaGanancia = ( (parseFloat(precioAgenciaGanancia) + (precioPVPSuplementos-precioAgenciaSuplementos))/tOcupacion ).toFixed(2); precioAgenciaGanancia = ( (parseFloat(precioAgenciaGanancia) + (precioPVPSuplementos-precioAgenciaSuplementos)) ).toFixed(2); } var precioAgenciaPorcentaje=(((parseFloat(dataAlojamiento['precio'])-parseFloat(dataAlojamiento['precioAgencia']))/parseFloat(dataAlojamiento['precio']))*100)*numeroDias*numeroHabitaciones; precioAgenciaPorcentaje=(parseFloat(precioAgenciaPorcentaje / (numeroDias * numeroHabitaciones))).toFixed(1); if( TIPO_CABECERA_AGENCIA=='Vuelo+Hotel' )precioAgenciaPorcentaje = ( parseFloat(precioAgenciaGanancia)/(parseFloat(precioAgencia)+parseFloat(precioAgenciaGanancia)) * 100 ).toFixed(2); textoVerPrecios += ''; html += textoVerPrecios; } } if (j==0 && typeof(precioMinimoTren) != "undefined" && precioMinimoTren) { var precioConTrenDesde = precioMinimoTren + precioMostrar_ida0; if (precioMostrarMoneda_ida0) { precioConTrenDesde = precioMinimoTren + precioMostrarMoneda_ida0; } } html += ''; html += '
' +'

' + itemHabitacion +'

'; if( ACTIVAR_HOME && UserAgencia==1 ){ html += '' + '' + ' Enviar a home' + ''; } html += '
Preço por pessoaQuarto / NoiteTotalNoiteTotal
'+ dataAlojamiento['nombreAlojamiento'] +' '+txtComision; //Para ciertas agencias de ibercaribe hay que remarcar el proveedor Ibercaribetour ID: 85. FRON-1725 if( amenities && amenities.indexOf('+')!=-1 ){ html+=''; } if (TIPO_CABECERA_AGENCIA=="Hoteles" || TIPO_CABECERA_AGENCIA=="Montaña" || TIPO_CABECERA_AGENCIA=="Nieve"){ html+= '
Ver políticas de cancelamento e outras tarifas'; } html+= '
'+ htmlPrecio +''+ htmlPrecioHabitacion +''+ htmlPrecio +''+ htmlPrecioNoche +''+ htmlPrecio +''; if( IDAgencia==3437 && UserAgencia==0){ html += 'Reservar' }else if (IDMinorista!=17 || (IDMinorista==17 && UserAgencia)){ //Si no es click o está logueada if( TIPO_CABECERA_AGENCIA=='Vuelo+Hotel' || TIPO_CABECERA_AGENCIA=='Tren+Hotel' ){ html += '
Seleccionado
'; html += 'Seleccionar' }else{ html += '' + 'Reservar' +'' } } else{ if( TIPO_CABECERA_AGENCIA=='Vuelo+Hotel' ){ html += '
Seleccionado
'; html += 'Seleccionar' }else{ html += '' +(hayAmenityTren?'Horários e Reserva':'aaaaa Reservar') +'' } } html += '
'; textoVerPrecios += '
'; if (esUsuarioINTERNO || ES_PREPRODUCCION==1) { textoVerPrecios += 'M: '+ dataAlojamiento['IDProveedor'] +', T: '+ dataAlojamiento['Tarifa'] +''; textoVerPrecios += '
'; } /* Quitamos este calculo.FRON-4776 if( TIPO_CABECERA_AGENCIA!='Hoteles' ){ precioAgencia = precioAgencia/tOcupacion; precioAgenciaGanancia = precioAgenciaGanancia/tOcupacion; }*/ textoVerPrecios += '
' + '
C: '+ CLASE_PRECIO.getPrecio(precioAgencia) +'
' + '
G: '+ CLASE_PRECIO.getPrecio(precioAgenciaGanancia) +'
' + '
P: '+ precioAgenciaPorcentaje +'%
'; if (mostrarPVP=='1' && ventaNeto=='0'){ var precioAhorro=CLASE_PRECIO.getPrecio( precioAgencia-(parseFloat(dataAlojamiento['precio'])-(parseFloat(dataAlojamiento['precio'])-precioAgencia)*1.21) ); // textoVerPrecios +='
A: '+ precioAhorro +'€
'; //Se quita de momento por petición de Cintia.FRON-2304 } textoVerPrecios += '
' + '
'; textoVerPrecios += '
'; } //+'

' // +'' //+'

'; if (display){ html+='

' +'' +'Ver todos os quartos' +'' +'' +'

'; } html+='
' + '
' + '
'; if( typeof(precioMinimoTren)!="undefined" && precioMinimoTren) { html += '' + '' + '' + '' + '' + '' +'' +'
' + '
' + '' + '' + '' + 'Hotel+Comboio desde '+number_format( precioConTrenDesde, 2, ",", "." ) + ' €' + '' + '
' + '
' + '' + '
'; } html += '
' +'
' + '
' + '
' +'
' +'
'; return html; } } /** * Función para mostrar los datos de cancelación en un pop-up (realiza la petición ajax para obtener los datos) */ function mostrarDatosGastosHotel(idHotel,nombreHotel,obj, DATOS){ var urlPeticion = 'infoGastosCancelacion.php?obj='+ obj+'&DATOS='+DATOS; mostrarCapaCargando('A pesquisar detalhes do hotel...', '', null); $.ajax({ type: 'POST', url: urlPeticion, dataType: "html", success: function(data){ $('body').append(''); var html ='' + '
' + '
' + '' + '
' + '
' + '
'; $('#popUpDetallesHotelBackground').remove(); $('#popUpDetallesHotel').remove(); $('body').append(html); ocultarCapaCargando(); // Ajustamos el alto de la ventana var altoMenu = $("#menuDetallesHotelPopUp").height(); var altoMaximo = $(window).height() - 130 - altoMenu + (altoMenu>50?30:0); $("#divContentPopup").css("max-height", altoMaximo); $('#InfoCancellationAux'+ idHotel).remove(); if( $('#opcionesMultirates input[type=radio]').first() ){ $('#opcionesMultirates input[type=radio]').first().click(); } } }); } /** * Función para mostrar los datos de un hotel en un pop-up (realiza la petición ajax para obtener los datos) */ function mostrarDatosAdicionalesHotel(idHotel, nombreHotel, datosAdicionales){ if( location.href.indexOf('detallesConDis')!=-1 )return ''; var urlPeticion = 'detallesConDispo.php?IDE='+ idHotel+'&espopup=1'; mostrarCapaCargando('A pesquisar detalhes do hotel...', '', null); //if( $('#comentAux'+ idHotel).length==0 ){ Quito esta caché porque los comentarios se pisan urlPeticion += '&aj=a'; $.ajax({ type: 'POST', url: urlPeticion, dataType: "html", success: function(data){ $('body').append(''); actualizarDatosAdicionalesHotel(idHotel, nombreHotel, datosAdicionales) } }); //}else actualizarDatosAdicionalesHotel(idHotel, nombreHotel, datosAdicionales); } /** * Función para mostrar los datos de un hotel en un pop-up (muestra el pop-up) */ function actualizarDatosAdicionalesHotel(idHotel, nombreHotel, datosAdicionales){ switch(datosAdicionales){ case 'comentarios': $('#opinionesHotel').remove(); break; case 'mapa': IDEBuscado = idHotel; var idMapa = (new Date()).getTime(); break; } var html ='' + '
' + '
' + '' + '
' + '
'; $('#popUpDetallesHotelBackground').remove(); $('#popUpDetallesHotel').remove(); $('body').append(html); ocultarCapaCargando(); // Ajustamos el alto de la ventana var altoMenu = $("#menuDetallesHotelPopUp").height(); var altoMaximo = window.innerHeight - 130 - altoMenu + (altoMenu>50?30:0); $("#divContentPopup").css("max-height", altoMaximo); // Hacemos los ajustes necesarios para cada pestaña switch(datosAdicionales){ case 'verMas': $(".pop-up-panel h3").css("margin-top", "0px"); break; case 'comentarios': if( typeof(arrayValoraciones)!='undefined' && parseInt(IDMinorista,10)!=17 && parseInt(IDMinorista,10)!=31 )pintaValoraciones('f'); $("#opinionesHotel").height(altoMaximo-$("#divContentPopup").height()) $('#opinionesHotel .panel-body').css("padding-top", "0"); break; case 'imagenes': var carousel = $('#imgHotelCarrouselAux #myCarousel'); if( carousel.length){ carousel.attr('id', carousel.attr("id")+ idHotel); } $("#popUpDetallesHotel #myCarousel"+idHotel).attr("id", "myCarousel"); $("#myCarousel").css("margin-top","0px"); $(".list-inline li").css("width", "16.666%"); break; case 'mapa': //////$('#divMapPopup').width($('#popUpDetallesHotel').width()); $('#mapaOSM_'+idHotel).width($('#popUpDetallesHotel').width()-30); $('#mapaOSM_'+idHotel).height(altoMaximo-15); if (IDMinorista=='12' || IDMinorista=='23'){ muestraCapaMapaOSMIDE(idHotel); buildDatosMapaOSM(arrayDatosHotelesMapa,idHotel); } else { VerCapaMapaGoogleIDE(idHotel,idMapa); } IDEBuscado = null; break; } } function htmlHotelCorto(data,contHotel){ var contHab = contHotel*100+0; var datosHotelSeleccionado = false; if( TIPO_CABECERA_AGENCIA=='Vuelo+Hotel' || TIPO_CABECERA_AGENCIA=='Tren+Hotel'){ var urlFormReservar = $('#formReservarHV').attr('action'); if( urlFormReservar )datosHotelSeleccionado = urlFormReservar.split('&DATOS=')[1]; else datosHotelSeleccionado = DATOS_HOTELES[0].habitaciones[0].alojamientos[0].DATOS; } var displayPreciosAgencia = $('#chkPrecioAgencia').prop('checked')?'inline':'none'; var tOcupacion = ADULTOS+NINOS+BEBES; var precioAgenciaSuplementos = 0; var precioPVPSuplementos = 0; if( TIPO_CABECERA_AGENCIA=='Vuelo+Hotel' && GESTOR_VUELOS ){ var vueloSel = GESTOR_VUELOS.getVueloSeleccionado(); if( vueloSel && vueloSel[0] ){ $.each(vueloSel, function(iVuelo, vuelo){ precioPVPSuplementos += vuelo.precio; precioAgenciaSuplementos += (vuelo.precio - vuelo.comisionAgencia); }); } } if( TIPO_CABECERA_AGENCIA=='Tren+Hotel' && GESTOR_TRENES ){ var trenSel = GESTOR_TRENES.getSeleccionado(); if( trenSel[0] ){ $.each(trenSel, function(iTren, tren){ precioPVPSuplementos += tren.precio; precioAgenciaSuplementos += tren.precioAgencia; }); } } // Para la versión corta solo mostramos la info de la primera habitación con el primer alojamiento var ponerMostrarHabitaciones if (data['habitaciones'].length){ ponerMostrarHabitaciones = data['habitaciones'].length>1 || data['habitaciones'][0]['alojamientos'].length>1; } var habitaciones=orderHabitacionesHotel(data['habitaciones']); var divMostrarHabitaciones = false; html ='
' +'

' + (ponerMostrarHabitaciones?'':'') +''+data['nombre']+' '; if( data['numeroEstrellas'] )for (k=1;k<=data['numeroEstrellas'];k++)html +=''; if (data['nombreOriginal'])html +='
'+data['nombreOriginal']; html +='
' + (promocionTren?'   Anticipate a la navidad':'') +'

'; if( ACTIVAR_HOME==1 && UserAgencia==1 ){ html += '' + '' + ' Enviar a home' + ''; } var checked='checked'; var numeroHabitacionesTotales=0; for(var j=0;j<=habitaciones.length-1;j++){ var dataHabitacion=habitaciones[j]; var itemHabitacion=""; var tipoHabitaciones=dataHabitacion['habitaciones']; var hayInfoHabitacion=0; var ocupacion=0; for (var idx = 0; idx <= tipoHabitaciones.length - 1; idx++) { ocupacionPara = 0; var numeroHabitaciones = parseInt(arrayOcupacion[idx]['h'], 10); numeroHabitacionesTotales = numeroHabitacionesTotales + numeroHabitaciones; var numeroAdultos = parseInt(arrayOcupacion[idx]['a'], 10); var numeroNinos = parseInt(arrayOcupacion[idx]['n'], 10); if (numeroAdultos) { ocupacion += (numeroAdultos * numeroHabitaciones); ocupacion += (numeroNinos * numeroHabitaciones); ocupacionPara += numeroAdultos; ocupacionPara += numeroNinos; } var tipoHabitacion = tipoHabitaciones[idx]; //Añadimos las imagenes de la ocupación itemHabitacion += '
'; for (var na = 1; na <= numeroAdultos; na++) { itemHabitacion += ''; } if (numeroNinos > 0) { for (var nn = 1; nn <= numeroNinos; nn++) { itemHabitacion += ''; } } if (hayAmenityTren == 1) { itemHabitacion += ' + '; } itemHabitacion += '
'; var amenities = ""; if (tipoHabitacion['amenitiesTexto'] && !tipoHabitacion['alias']) amenities = tipoHabitacion['amenitiesTexto']; //Montamos el nombre de la habitación con las amenities si tiene var nombreHabitacion = creaNombreHabitacion(tipoHabitacion['nombreHabitacion'], amenities, 'PT'); if (tipoHabitacion['IDHabitacion'] == 1 && ocupacion > 2) { itemHabitacion += ' ' + nombreHabitacion + " capacidade para " + ocupacionPara + " pax"; } else { itemHabitacion += ' ' + nombreHabitacion; } if (tipoHabitacion['hayInfoHabitacion'] == 1) hayInfoHabitacion = 1; } if(hayInfoHabitacion){ contHab++; itemHabitacion+=' '; } var alojamientos=dataHabitacion['alojamientos']; var precioMostrar_ida0 = 0; var precioMostrarMoneda_ida0 = 0; for (ida=0;ida<=alojamientos.length-1;ida++){ var dataAlojamiento=alojamientos[ida]; if(UserAgencia==1 && mostrarPVP=='0')var precioMostrar=parseFloat(dataAlojamiento['precioAgencia'])+parseFloat(SUPLEMENTOS_HOTEL); else var precioMostrar=parseFloat(dataAlojamiento['precio'])+parseFloat(SUPLEMENTOS_HOTEL); if (ida==0) { precioMostrar_ida0 = precioMostrar; } var precioNoche=precioMostrar/numeroDias; var precioHabitacion=(precioMostrar/numeroDias)/numeroHabitacionesTotales; precioNoche = number_format(precioNoche, 2, ",", "."); if( TIPO_CABECERA_AGENCIA=='Vuelo+Hotel' || TIPO_CABECERA_AGENCIA=='Tren+Hotel' )precioMostrar=precioMostrar/ocupacion; if ( CLASE_PRECIO.hayCambioMoneda() ){ if (ida==0) { precioMostrarMoneda_ida0 = CLASE_PRECIO.getPrecioPrincipal(precioMostrar); } precioTxt = CLASE_PRECIO.getPrecioPrincipal(precioMostrar) +' ('+ CLASE_PRECIO.getPrecioSecundario(precioMostrar) +')'; precioNocheTxt = CLASE_PRECIO.getPrecioPrincipal(precioNoche) +' ('+ CLASE_PRECIO.getPrecioSecundario(precioNoche) +')'; precioHabitacionTxt = CLASE_PRECIO.getPrecioPrincipal(precioHabitacion) +' ('+ CLASE_PRECIO.getPrecioSecundario(precioNoche) +')'; }else{ precioTxt = CLASE_PRECIO.getPrecio(precioMostrar); precioNocheTxt = CLASE_PRECIO.getPrecio(precioNoche); precioHabitacionTxt = CLASE_PRECIO.getPrecio(precioHabitacion); } if( ida>0 )itemHabitacion=""; if( !divMostrarHabitaciones && (j>0 || ida>0) ){ html += ''; if (typeof(precioMinimoTren) != "undefined" && precioMinimoTren) { var precioConTrenDesde = precioMinimoTren + precioMostrar_ida0; if (precioMostrarMoneda_ida0) { precioConTrenDesde = precioMinimoTren + precioMostrarMoneda_ida0; } html += '' +'' + '' + '' + '' + '' +'' + '' + '
' + '
' + '' + '' + '' + '' + 'Hotel+Tren desde ' + '' + CLASE_PRECIO.getPrecio(precioConTrenDesde) + '' + '
' + '
' + '' + '
'; } html +='
'; return html; } /** * Función para mostrar el listado de habitaciónes/alojamientos de un hotel en la "versión corta" */ function mostrarHabOcultas(e){ e.stopPropagation(); var enlace = $(e.target); var id = enlace.attr('id').split('_')[1]; if( enlace.hasClass('fa-plus-circle') ){ enlace.removeClass('fa-plus-circle'); enlace.addClass('fa-minus-circle'); }else{ enlace.removeClass('fa-minus-circle'); enlace.addClass('fa-plus-circle'); } $("#divHabOculto_"+id).toggle("slow"); } function muestraHabOcultas(id){ $('#verHabOculto_'+id).removeClass('fa-plus-circle'); $('#verHabOculto_'+id).addClass('fa-minus-circle'); if (!$('#divHabOculto_'+id).is(":visible")){ $('#divHabOculto_'+id).show(); } } function pintaInfoExtendidaHabitacion(tipoHabitaciones, contHab){ var keyInfoMostrada = {}; var html=''; html +='' +'' +'' +'' +''; return html; } function aplicarFiltros(arrayDatosHoteles){ var DATOS_HOTELESAUX=[]; var ocupacion = ADULTOS+NINOS+BEBES; //Montamos las cadenas hoteleras seleccionadas var checkCadenasHoteleras = $("input[id^=chkCad]"); var cadenasSeleccionadas =""; for(var i=0; i0?$('#txtNombreHotel').val():''; if( textHotelBuscado )textHotelBuscado = normalize(textHotelBuscado); //Montamos los precios seleccionados var arrayPreciosSel = []; if( $("#valorInicial_precio").val()=="false" ){ var iniPrecio = parseFloat( obtenerPrecio($("#inicio_precio").val()) ); var finPrecio = parseFloat( obtenerPrecio($("#fin_precio").val()) ); if( moneda!="EUR" ){ iniPrecio = cambioMonedaPrecioFormateado(iniPrecio, cambioMoneda); finPrecio = cambioMonedaPrecioFormateado(finPrecio, cambioMoneda); } arrayPreciosSel.push( iniPrecio ); arrayPreciosSel.push( finPrecio ); } //Fin los precios seleccionados //Montamos los tipo habitacion seleccionados var arraytipoHabitacionSel= new Array(); var checktipoHabitacion = $("input[id^=chkTipoHab]"); for(var i=0; i0 || arraytipoHabitacionSel.length>0 || arrayPestanaTipoHotel.length>0 || arrayAmenities.length>0 || ARRAY_LUGARES_CERCANOS_FILTRO.length>0 || checkHayHabitacionesCompartidas){ filtrar=1 } OBJ_FILTROS_HOTELES.setHayFiltroTipoEstablecimiento( arrayPestanaTipoHotel.length>0 ); OBJ_FILTROS_HOTELES.setHayApartahoteles( false ); var contadorApartamentos=0; var contadorHoteles=0; var contadorForfaits=0; //Si se ha seleccionado algún tipo de filtro entramos para filtrar las hoteles if (filtrar){ arrayDatosHoteles = JSON.parse( JSON.stringify(DISPO_ORIG_HOTEL) ); var pattForfait = new RegExp('forfait|Ski pass|Skipass|Skipas|Karnet narciarski|Ски-пасс'); for(var i=0, n=arrayDatosHoteles.length;i<=n;i++){ var esApartamento=false; var tieneForfait=false; var pasaFiltros = false; if( arrayDatosHoteles[i] ){ var data = arrayDatosHoteles[i]; //Filtro tipo habitacion if (arraytipoHabitacionSel.length>0) {// Si ha seleccionado algún tipo de habitación // Creamos la expresión regular de los tipos de habitación que hemos de encontrar var cadenaPatron = '('+ arraytipoHabitacionSel.join('|') +')'; var patt = new RegExp(normalize(cadenaPatron.toLowerCase()), "i"); // Obtenemos las habitaciones que cumplen el filtro var habitacionesFiltradas = getHabFiltroTipoHabitacion(data ,patt); pasaFiltros = habitacionesFiltradas.length>0; if( pasaFiltros )data['habitaciones'] = habitacionesFiltradas; else continue; } // Filtro tipo habitacion (Mostrar sólo habitaciones privadas) if( checkHayHabitacionesCompartidas ){ var habitacionesFiltradas = []; for(var iHab=0, nHab=data['habitaciones'].length; iHab0 )data['habitaciones'] = habitacionesFiltradas; else continue; } //Miramos si es un apartamento var IDCategoria=data.IDCategoria.toString(); var esApartahotel = jQuery.inArray( IDCategoria, arrayIDCategoriasApartahotel )!=-1; if( IDCategoria!='' && IDCategoria!=undefined ){ if( jQuery.inArray( IDCategoria, arrayIDCategoriasHotel )==-1 ){ //Si no está en el array es que es un apartamento esApartamento=true; } } //miramos si tiene forfait var habitacionesFiltradas = []; if( arrayPestanaTipoHotel.length ){ var dataHabitaciones=data['habitaciones']; for(var idH=0; idH0 && habitacionesFiltradas.length==0 ){ pasaFiltros = false; continue; }else{ var clasificadoEstablecimiento = false; //Filtro por apartamento if( arrayIDCategoriasApartamentos.indexOf( IDCategoria )!=-1 || esApartahotel ){ clasificadoEstablecimiento = true; pasaFiltros = false; if( arrayPestanaTipoHotel.indexOf('A')!=-1 || esApartahotel )pasaFiltros = true; if( !pasaFiltros && !esApartahotel )continue; } // Filtro por hotel if( arrayIDCategoriasHotel.indexOf( IDCategoria )!=-1 || esApartahotel ){ clasificadoEstablecimiento = true; pasaFiltros = false; if( arrayPestanaTipoHotel.indexOf('H')!=-1 )pasaFiltros = true; if( pasaFiltros && esApartahotel ){ OBJ_FILTROS_HOTELES.setHayApartahoteles( true ); } if( !pasaFiltros )continue; } // Filtro por forfait if( tieneForfaitHab ){ clasificadoEstablecimiento = true; pasaFiltros = false; if( arrayPestanaTipoHotel.indexOf('F')!=-1 )pasaFiltros = true; if( !pasaFiltros )continue; } // Filtro otros if( !clasificadoEstablecimiento ){ pasaFiltros = false; if( arrayPestanaTipoHotel.indexOf('O')!=-1 )pasaFiltros = true; if( !pasaFiltros )continue; } } } if( habitacionesFiltradas.length ){ data['habitaciones'] = []; for(var idH=0; idH0 ){ pasaFiltros = false; var patt = new RegExp(textHotelBuscado, "i"); if( patt.test(normalize(data['nombre'])) )pasaFiltros = true; if( !pasaFiltros )continue; } //Fin filtro por nombre de hotel // Filtro Precios habitacion/noche if( arrayPreciosSel.length>0 ) {// Si han seleccionado precios pasaFiltros = false; var habitacionesFiltradas = []; var dataHabitaciones = data['habitaciones']; if (!dataHabitaciones)continue; for(var idH=0; idH=arrayPreciosSel[0] && precioRegimen<=arrayPreciosSel[1] ){ pasaFiltros = true; encontradoRegimen = true; } if( encontradoRegimen ){ if( !habitacionesFiltradas[idH] ){ habitacionesFiltradas[idH] = dataHabitaciones[idH]; habitacionesFiltradas[idH]['alojamientos'] = []; } habitacionesFiltradas[idH]['alojamientos'].push( dataRegimenes[idR] ); } } } if( !pasaFiltros )continue; else if( habitacionesFiltradas.length ){ data['habitaciones'] = []; for(var idH=0; idH calculamos la menor distancia a cada uno de los sitios para ordernar los hoteles por cercanía if( ARRAY_LUGARES_CERCANOS_FILTRO.length>0 ){ $.each(ARRAY_LUGARES_CERCANOS_FILTRO, function(iLug, lug){ if( lug.lat && lug.lng ){ var latLug = lug.lat; var lngLug = lug.lng; $.each(DATOS_HOTELESAUX, function(iHot,hot){ var distancia = (hot.latitud && hot.longitud)?harvestine(latLug, lngLug, hot.latitud, hot.longitud, 6):1000; if( !DATOS_HOTELESAUX[iHot].distanciaLugares ){ DATOS_HOTELESAUX[iHot].distanciaLugares = distancia; }else{ if( DATOS_HOTELESAUX[iHot].distanciaLugares>distancia ){ DATOS_HOTELESAUX[iHot].distanciaLugares = distancia; } } }); } }); DATOS_HOTELESAUX = ordenarHoteles(DATOS_HOTELESAUX, 'distanciaLugares', 1); } //Fin filtro ordenar por lugares cercanos return {d:DATOS_HOTELESAUX,h:contadorHoteles,a:contadorApartamentos,f:contadorForfaits,filtrado:filtrar}; } function construyePaginacion(totalRegistros,numRegPag,paginaActual,version,hayFiltros){ var totalPaginas = Math.floor( (totalRegistros-1)/numRegPag ) + 1; var paginaPrevious=""; var html=""; if (totalPaginas>1){ //Si solo hay una página no mostramos número de páginas.VET-9319 if (paginaActual==1){ paginaPrevious="javascript:void(0);"; } else{ paginaPrevious='javascript:Paginar('+(paginaActual-1)+',\''+version+'\','+hayFiltros+',1);'; html+='
  • ' +'' +'
  • '; } var inicio=0; if (totalPaginas>10) { if (paginaActual-5<=0){ inicio=1; } else{ inicio=paginaActual-5; } var fin=inicio+10-1; if (fin>totalPaginas) { fin=totalPaginas; } } else { inicio=1; fin=totalPaginas; } var clase=""; for (i=inicio;i<=fin;i++) { if (i==paginaActual){ html+='
  • '+i+'
  • '; } else{ var href='javascript:cambiaPagina('+i+',\''+version+'\','+hayFiltros+');'; html+='
  • '+i+'
  • '; } } var paginaNext=""; if (paginaActualtotalPaginas){ paginaNext=totalPaginas; } else{ paginaNext=paginaActual+1; html+='
  • '; } } } $(".datosPaginacion").html(html); return totalPaginas; } function posicionarPagina(capa){ if( $("#"+capa).length ){ $('html, body').animate({ scrollTop: $("#"+capa).offset().top }, 100); } } function nl2br(value) { return value.replace(/\n/g, "
    "); } function ordenarPorDistanciaLugaresCercanos(IDLC,DATOS_HOTELESAUX) { var latLC = arrayLugaresCercanos[IDLC].lat; var lngLC = arrayLugaresCercanos[IDLC].lng; //var txtAlert = ""; if (is_array(DATOS_HOTELESAUX)) { for(var i in DATOS_HOTELESAUX) { if (DATOS_HOTELESAUX[i].latitud && DATOS_HOTELESAUX[i].longitud) { // Obtenemos la distancia desde el hotel al lugar cercano en formato 999,99 km var distancia=distanceFromLatLng(parseFloat(latLC), parseFloat(lngLC), parseFloat(DATOS_HOTELESAUX[i].latitud), parseFloat(DATOS_HOTELESAUX[i].longitud)); // La asignamos a la propiedad dinamica distance DATOS_HOTELESAUX[i].distance=distancia; } else { DATOS_HOTELESAUX[i].distance=99999; // para que siempre aparezcan los ultimos } } // ordenamos los establecimientos DATOS_HOTELESAUX.sort(function(a, b){ return a.distance-b.distance }) } return DATOS_HOTELESAUX; } function filtrarHotelApartamento(tipo){ CREAR_FILTROS_HOTELES = true; $('#IDfiltrarHotel').removeClass(); $('#IDfiltrarApartamento').removeClass(); $('#IDfiltrarForfait').removeClass(); if (tipo=='A'){ $('#IDfiltrarHotel').addClass('tit18 negro inactive'); $('#IDfiltrarForfait').addClass('tit18 negro inactive'); $('#IDfiltrarApartamento').addClass('tit18 negro active'); } else if (tipo=='F'){ $('#IDfiltrarForfait').addClass('tit18 negro active'); $('#IDfiltrarHotel').addClass('tit18 negro inactive'); $('#IDfiltrarApartamento').addClass('tit18 negro inactive'); } else{ $('#IDfiltrarHotel').addClass('tit18 negro active'); $('#IDfiltrarApartamento').addClass('tit18 negro inactive'); $('#IDfiltrarForfait').addClass('tit18 negro inactive'); } $("#filtroHotelApartamento").val(tipo); var version="normal"; if( $( "#versionEx" ).hasClass("btn-primary") )version="normal"; else version="corta"; Paginar(1,version,1,0); //Paginamos filtrando para que se aplique la pestaña seleccionada o si es la de hoteles aplique los otros filtros } //Funciones de los popup de la info de la habitación var pophab_activo=0; function MuestraHabitacion(idx_hab) { if (pophab_activo && (pophab_activo == idx_hab)) { $("#pop-hab"+pophab_activo).hide("slow"); pophab_activo = 0; return; } var pophab_activoTop; var pophab_activoHeight; // Obtenemos posicion de la capa info habitacion ext var offsetTop = $("#ancla-pop-hab"+idx_hab).offset().top; // Si hay popup activo obtenemos posicion y altura exterior total real if (pophab_activo && $("#ancla-pop-hab"+pophab_activo).length) { pophab_activoTop = $("#ancla-pop-hab"+pophab_activo).offset().top; pophab_activoHeight = $("#pop-hab"+pophab_activo).outerHeight(true); } // Si hay popup activo desplegado y de posicion anterior al solicitado if (pophab_activoTop && (pophab_activoTop < offsetTop)) { // Scroll vertical a la posicion de la capa info habitacion ext window.scrollTo(0,$(window).scrollTop() - pophab_activoHeight); } else { // Scroll vertical a la posicion de la capa info habitacion ext window.scrollTo(0,$(window).scrollTop()); } // Ocultamos el popup activo, si lo hay if (pophab_activo && $("#ancla-pop-hab"+pophab_activo).length) { $("#pop-hab"+pophab_activo).hide(); } // Mostramos el popup solicitado $("#pop-hab"+idx_hab).show("slow"); // Ponemo el popup solicitado como popup activo pophab_activo=idx_hab; } function OcultaHabitacion(idx_hab) { $("#pop-hab"+idx_hab).hide("slow"); pophab_activo=0; } function setImgPantHab(idpopup,id,w,h,factor) { var imgDest=document.getElementById("img_"+idpopup+"_pant"); var imgOrig=document.getElementById("img_"+idpopup+"_"+id); if (h>w || h>190) { imgDest.width=parseInt(w*(190/h)); imgDest.height=190; if (imgDest.width>250) { imgDest.width=parseInt(w * factor); imgDest.height=parseInt(h * factor); } } else if (w>250) { imgDest.width=parseInt(w * factor); imgDest.height=parseInt(h * factor); } else { imgDest.width=w; imgDest.height=h; } imgDest.src=imgOrig.src; } //Función que muestra las habitaciones ocultas en la dispo ya que en principio solo mostramos 2 function muestraTotalHabitaciones(tipo,IDHotel,totalHabitaciones){ if (tipo==1){ var display=''; $("#linkOcultarHab"+IDHotel).css('display','block'); $("#linkVerHab"+IDHotel).css('display','none'); } else if(tipo==2){ var display='none'; $("#linkOcultarHab"+IDHotel).css('display','none'); $("#linkVerHab"+IDHotel).css('display','block'); } for (i=2;i<=totalHabitaciones;i++){ if ($("#hab"+IDHotel+"-"+i)){ $("#hab"+IDHotel+"-"+i).css('display',display); } } } //Función que cambia entre la versión corta o extendida de los resultados function cambiaVersion(version){ $('#versionEx').removeClass(); $('#versionCo').removeClass(); if( version=="normal" ){ $('#versionEx').addClass('btn btn-primary btn-sm dropdown-toggle'); $('#versionCo').addClass('btn btn-secundary btn-sm dropdown-toggle'); }else{ $('#versionCo').addClass('btn btn-primary btn-sm dropdown-toggle'); $('#versionEx').addClass('btn btn-secundary btn-sm dropdown-toggle'); } document.getElementById('versionResultados').value=version; Paginar(1,version,1,1); } // function creaNombreHabitacion(nombreHabitacion,amenities,idioma){ if( typeof(amenities)=="undefined" || !amenities ) amenities = ''; var txtHabitacion=""; if( idioma=="CHI" )txtHabitacion=amenities+" "+nombreHabitacion; else txtHabitacion=nombreHabitacion+" "+amenities; return txtHabitacion; } function obtieneFiltros(frm){ var cadenafiltros=''; // Filtro ordenar por distancia a lugares cercanos var filtroPoi=$("input:radio[name='poiSeleccionado']:checked").val(); if (filtroPoi>0){ cadenafiltros+=';ifl='; cadenafiltros+=$("input:radio[name='poiSeleccionado']:checked").val(); } // filtro si han seleccionado categorias cadenafiltros+=';ifc='; var cadenafiltrosCategoria=''; var checkEstrellas = $("input[id^=chkEst]"); for(var i=0; i0; if( !hotel ){ html += '
    ' + '
    ' + '
    ' + 'No hay ningún hotel disponible '; + '
    ' + '
    ' + '
    '; $(selDiv).html(html); $('#pestanasListadosHoteles a').attr("href", "javascript:alertPopUp('No hay hoteles disponibles');"); $('#pestanasListadosHoteles a, #pestanasListadosHoteles i').css('color','#777!important'); if( hayResumenLat ){ htmlLat += "

    " +" " +"Hotel" +"

    " +"
    " +"No hay ningún hotel disponible."; +"
    " $(selDiv+'Lat').html(htmlLat); } return false; } var vini = $('#datetimepicker1').val().split("/"); var fini = new Date(vini[2],parseInt(vini[1],10)-1,vini[0]); var vfin = $('#datetimepicker2').val().split("/"); var ffin = new Date(vfin[2],parseInt(vfin[1],10)-1,vfin[0]); var timeDiff = Math.abs(ffin.getTime()-fini.getTime()); var numeroDias = Math.round(timeDiff / (1000 * 3600 * 24)); if( MOSTRANDO_DISPO_DIA_SIGUIENTE )numeroDias--; var pattVolver = new RegExp('H_([0-9]+)', "i"); var urlVolver = 'https://www.mvieiraviagens.pt:443/vuelo-hotel/resultadosBusqueda.php'; var html = ''; html += '
    ' + '
    ' + '' + ' Hotel selecionado: ' + '' + '' + hotel.nombre +' ' + ''; for(var iEst=0, nEst=hotel.numeroEstrellas; iEst' + '' + hotel.destino; html += ''; if( !hotel.hotelSeleccionado ){ html += '' + '' + ' Alterar' + ''; }else{ if( !pattVolver.test(urlVolver) ){ html += '' + '' + ' Alterar' + ''; } } html += ''; html += '
    ' + '' + '
    '; $('#datosHotelSeleccionado').html(html); /* html += '
    ' + '
    ' + '
    ' + 'Hotel seleccionado em '+ hotel.destino + '
    ' + '' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' +'' // + '
    ' // + '

    ' // + ' + desde 600€ por persona' // + '

    ' // + '
    ' + '' + '
    ' + '

    ' + '' + ' '+ hotel.puntuacion +' '; if (IDMinorista!="17"){ html +='' + ' ('+ hotel.numeroComentarios +') Comentários' + ''; } html += '

    ' + '

    ' + '' + '' + 'Ver mais' + '' + '

    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '

    ' + hotel.nombre +' '; for(var i=0; i' + hotel.direccion +' ' + '' + 'Ver Mapa' + '' + '' + '

    ' + '
    ' + '
    ' + '' + '' + '' + '' + '' + '' + '' + '' + '' // + '' + '' + '' + '
    ' + '

    '; var ocupacion=0; var htmlHabitacion = ''; $.each(hotel.habitaciones[0].habitaciones, function (iHab,hab){ var numeroHabitaciones= parseInt(arrayOcupacion[iHab]['h'],10); var numeroAdultos= parseInt( arrayOcupacion[iHab]['a'],10); var numeroNinos= parseInt( arrayOcupacion[iHab]['n'],10); if( numeroAdultos ){ ocupacion += (numeroAdultos*numeroHabitaciones); ocupacion += (numeroNinos*numeroHabitaciones); } //Añadimos las imagenes de la ocupación if( iHab>0 )html += '
    '; for( var na=1;na<=numeroAdultos;na++ )htmlHabitacion += ''; for( var nn=1;nn<=numeroNinos;nn++ )htmlHabitacion += ''; if( hayAmenityTren==1 )htmlHabitacion +=' + '; var amenities=""; if( hab.amenitiesTexto )amenities=hab.amenitiesTexto; var nombreHabitacion=creaNombreHabitacion(hab.nombreHabitacion,amenities,'PT'); htmlHabitacion += ' '+ nombreHabitacion +'
    ' }); html += htmlHabitacion; html += ' ' + numeroDias +' noites de hotel' + ' '+ ocupacion +' pessoas' + '

    ' + '
    '+ hotel.habitaciones[0].alojamientos[0].nombreAlojamiento +''+ hotel.habitaciones[0].alojamientos[0].precioAgencia +'€
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    '; $('#datosHotelSeleccionado').html(html); */ if( hayResumenLat ){ htmlLat += "

    " +" " +"Hotel"; if( !hotel.hotelSeleccionado ){ htmlLat += '' + "Alterar" + ""; }else{ if( !pattVolver.test(urlVolver) ){ htmlLat += '' + "Alterar" + ""; } } htmlLat += "

    "; if( hotel.hotelSeleccionado ){ htmlLat += ''; }else{ // htmlLat += ""; // htmlLat += ""; htmlLat += '
    '; } htmlLat += "
    " +"" + hotel.nombre +" " + ""; for(var i=0; i" +"
    " +"
      " +"
    • " +"Noites: " + numeroDias +" "+ (numeroDias==1?"noite":"noites") +"
    • "; if( !hotel.hotelSeleccionado ){ htmlLat += "
    • " +"Regime: " +hotel.habitaciones[0].alojamientos[0].nombreAlojamiento +"
    • "; } htmlLat += "
    • " +"Quartos:
      " + htmlHabitacion +"
    • "; if( TIPO_CABECERA_AGENCIA=='Tren+Hotel' ){ if( (TREN_SELECCIONADO[0].latitudIda && TREN_SELECCIONADO[0].longitudIda) && (HOTEL_SELECCIONADO.latitud && HOTEL_SELECCIONADO.longitud) ){ htmlLat += "
    • " +"Distância à estação: " + harvestine( TREN_SELECCIONADO[0].latitudIda, TREN_SELECCIONADO[0].longitudIda, HOTEL_SELECCIONADO.latitud, HOTEL_SELECCIONADO.longitud ) +" km." +"
    • " } }; htmlLat += "
    • " + "" +"" +"Ver mais" + "" +"
    • "; htmlLat += "
    " $(selDiv+'Lat').html(htmlLat); } // Ponemos el action en el formulario var datos = hotel.habitaciones[0].alojamientos[0].DATOS; var url='/formularioReserva.php'; url+= (url.search('\\\?')==-1?'?':'&') +'obj='+objDatosBusqueda+'&DATOS='+datos; if( typeof(txtTren_id)!='undefined' && txtTren_id!='' )url += '&DepartureStation='+txtTren_id; $('#formReservarHV').attr("action", url); $('#hotelSeleccionado').val( JSON.stringify(hotel) ); } function getPrecios(contHotel,idHabitacion,idAlojamiento){ var data = DATOS_HOTELES[contHotel]; var cadena=""; if (data){ var habitaciones=orderHabitacionesHotel(data['habitaciones']); var dataHabitacion=habitaciones[idHabitacion]; if (dataHabitacion){ var alojamientos=dataHabitacion['alojamientos']; var dataAlojamiento=alojamientos[idAlojamiento]; cadena='&checkP='+dataAlojamiento['encryptP']; } } return cadena; } //Cuando se hace click en la lupa del mapa $('#geosearch').click(function() { var address = $.trim($('#geoaddress').val()); if (address!="") { var geocoder = new google.maps.Geocoder(); geocoder.geocode({ 'address': address+', '+nombreZonaAddress}, geocodeResult); } }); $('#geoaddress').on("keydown",function(event) { if(event.which == 13) { var address = $.trim($('#geoaddress').val()); if (address!="") { var geocoder = new google.maps.Geocoder(); geocoder.geocode({ 'address': address+', '+nombreZonaAddress}, geocodeResult); } } }); $('#geosearchGrande').click(function() { var address = $.trim($('#geoaddressGrande').val()); if (address!="") { var geocoder = new google.maps.Geocoder(); geocoder.geocode({ 'address': address+', '+nombreZonaAddress}, geocodeResult); } }); $('#geoaddressGrande').on("keydown",function(event) { if(event.which == 13) { var address = $.trim($('#geoaddressGrande').val()); if (address!="") { var geocoder = new google.maps.Geocoder(); geocoder.geocode({ 'address': address+', '+nombreZonaAddress}, geocodeResult); } } }); function getNombreHab(dataHabitacion){ var itemHabitacion = ""; // En detalles con dispo ya viene el nombre formateado if( dataHabitacion.habitaciones[0].nombre ){ return dataHabitacion.habitaciones[0].nombre; } var tipoHabitaciones = dataHabitacion['habitaciones']; var hayInfoHabitacion = 0; var ocupacion = 0; for(var idx=0; idx0)itemHabitacion+='
    '; var numeroAdultos = parseInt(arrayOcupacion[idx]['a'],10); var numeroNinos = parseInt(arrayOcupacion[idx]['n'],10); if (numeroAdultos) { ocupacion+=(numeroAdultos*numeroHabitaciones); ocupacion+=(numeroNinos*numeroHabitaciones); } var tipoHabitacion = tipoHabitaciones[idx]; //Añadimos las imagenes de la ocupación itemHabitacion += '
    '; for (var na=1;na<=numeroAdultos;na++){ itemHabitacion += ''; } if (numeroNinos>0){ for (var nn=1;nn<=numeroNinos;nn++){ itemHabitacion += ''; } } if (hayAmenityTren==1){ itemHabitacion += ' + '; } itemHabitacion += '
    '; var amenities=""; if( tipoHabitacion['amenitiesTexto'] && !tipoHabitacion['alias']){ amenities = tipoHabitacion['amenitiesTexto']; } //Montamos el nombre de la habitación con las amenities si tiene var nombreHabitacion=creaNombreHabitacion(tipoHabitacion['nombreHabitacion'],amenities,'PT'); if (tipoHabitacion['IDHabitacion']==1 && ocupacion>2){ itemHabitacion+=' '+nombreHabitacion+" capacidade para "+ ocupacionPara +" pax"; }else{ itemHabitacion+=' '+nombreHabitacion; } // if(tipoHabitacion['hayInfoHabitacion']==1)hayInfoHabitacion=1; } } // if (hayInfoHabitacion==1){ // contHab++; // itemHabitacion+=' '; // } return itemHabitacion; } function enviarAMiHome(ev, iHotel, iHabSel){ ev.preventDefault(); var hotel = arrayDatosHoteles[iHotel]; if( hotel ){ if( typeof(HABITACIONES_HOTEL_SEL)!="undefined" ){ hotel.habitaciones = HABITACIONES_HOTEL_SEL; } var html = ''; html = ''; if( iHabSel!=-1 ){ html += HTMLenviarAMiHome( hotel.habitaciones[iHabSel] ); }else{ for(var iHab=0; iHab' + '' +'' + '' + '' + '' + '' + '' + '' + '' + '' + HTMLenviarAMiHomeAlojamientos( habitacion.alojamientos || habitacion.regimenes ) + ''; } function getPrecioEnviarAMiHome(precio){ precio = parseFloat( precio.toString().replace(',','.') ); if( TIPO_CABECERA_AGENCIA=='Tren+Hotel' && TREN_SELECCIONADO ){ precio += getPrecioTrayecto(TREN_SELECCIONADO); precio = precio / TOTAL_PASAJEROS; }else if( TIPO_CABECERA_AGENCIA=='Vuelo+Hotel' && VUELO_SELECCIONADO){ precio += getPrecioVuelo(VUELO_SELECCIONADO) + (SEGURO_BASE_PRECIO_PASAJERO_AGENCIA*TOTAL_PASAJEROS); precio = precio / TOTAL_PASAJEROS; } return precio.toFixed(2) } function HTMLenviarAMiHomeAlojamientos(alojamientos){ var html = ''; for(var iAloj=0; iAloj' + ( datosAloj.nombreAlojamiento || datosAloj.nombre ) + '' + '' + '' + ''; } return html; } function guardarDispoHome( DATOS ){ $('#popupMesaje .modal').hide(); var vDatos = DATOS.split('H'); var idHotel = vDatos[0]; var jsonDispo = {"H":"1","O1":"2A0N","O2":"2A0N","O3":"2A0N","O4":"2A0N","O5":"2A0N","D":1,"D1":"26","MA1":"06_2020","D2":"27","MA2":"06_2020"}; var hotel = null; if( idHotel ){ var iHotelSel = null, iHabSel = null, iAlojSel = null; if( arrayDatosHoteles ){ for(var iHotel in arrayDatosHoteles ){ var datosHotel = arrayDatosHoteles[iHotel]; if( datosHotel.IDE==idHotel || datosHotel.ID==idHotel ){ // Parche para usar las habitaciones en detallesConDispo.php if( typeof(HABITACIONES_HOTEL_SEL)!="undefined" ){ datosHotel.habitaciones = HABITACIONES_HOTEL_SEL; } for(var iHab in datosHotel.habitaciones){ var datosHab = datosHotel.habitaciones[iHab]; // Parche para usar las habitaciones en detallesConDispo.php if( typeof(datosHab.regimenes)!="undefined" ){ datosHab.alojamientos = datosHab.regimenes; } for(var iAloj in datosHab.alojamientos){ var datosAloj = datosHab.alojamientos[iAloj]; if( datosAloj.datos==DATOS || datosAloj.DATOS==DATOS ){ iHotelSel = iHotel; iHabSel = iHab; iAlojSel = iAloj; hotel = $.extend(true, {}, datosHotel); hotel.habitaciones = []; hotel.habitaciones.push( $.extend(true, {}, datosHab) ); hotel.habitaciones[0].alojamientos = [ ]; hotel.habitaciones[0].alojamientos.push( $.extend(true, {}, datosAloj) ); break; } } } } } } } if( hotel ){ var ocupacion = ''; var adultos = 0; var ninos = 0; for(var iHab=1; iHab<=jsonDispo.H; iHab++){ var vAlojHab = jsonDispo[ "O"+iHab ].split("A"); var adultosHab = parseInt(vAlojHab[0],10); var ninosHab = parseInt(vAlojHab[1].replace("N",""),10); if( adultosHab>0 ){ if( iHab>1 )ocupacion += "/"; ocupacion += adultosHab +"_"+ ninosHab; if( ninosHab> 0 ){ for(var iNinoHab = 1+(iHab-1)*3; iNinoHab<=iHab*3; iNinoHab++){ if( jsonDispo['edadNino'+iNinoHab]!=""){ ocupacion += "_"+ jsonDispo['edadNino'+iNinoHab]; } } } } adultos += adultosHab; ninos += ninosHab; } var fechaInicio = jsonDispo.MA1.split("_").reverse().map(function(x){ return parseInt(x,10)<10 ? '0'+x : x; }).join("-") +"-"+ jsonDispo.D1; var fechaFin = jsonDispo.MA2.split("_").reverse().map(function(x){ return parseInt(x,10)<10 ? '0'+x : x; }).join("-") +"-"+ jsonDispo.D2; var dias = Math.round( (new Date(fechaFin).getTime() - new Date(fechaInicio).getTime()) / (1000 * 60 * 60 * 24) ); var descripcion = hotel.descripcion ? hotel.descripcion : ''; var urlImagen = hotel.urlFoto; if( !urlImagen && hotel.imagenHotel && hotel.imagenHotel.img ){ urlImagen = hotel.imagenHotel.img; } if( !urlImagen && hotel.habitaciones[0].infoHabitacion ){ var keysInfoHab = Object.keys(hotel.habitaciones[0].infoHabitacion); var keyInfoHab = keysInfoHab[0]; descripcion = hotel.habitaciones[0].infoHabitacion[ keyInfoHab ].descripcion; urlImagen = 'https://cdn.veturis.com/' + hotel.habitaciones[0].infoHabitacion[ keyInfoHab ].fotos[0].url; } var extra = ""; var origen = ""; var precio = ''; if( typeof(HABITACIONES_HOTEL_SEL)=='undefined'){ precio = parseFloat( hotel.habitaciones[0].alojamientos[0].precio ); }else{ precio = parseFloat( hotel.habitaciones[0].alojamientos[0].precioOrig ); } if( TIPO_CABECERA_AGENCIA=='Tren+Hotel' && TREN_SELECCIONADO ){ extra = 'Tren'; origen = TREN_SELECCIONADO[0].origenIda; precio = getPrecioEnviarAMiHome(precio); }else if( TIPO_CABECERA_AGENCIA=='Vuelo+Hotel' && VUELO_SELECCIONADO){ extra = 'Vuelo'; origen = VUELO_SELECCIONADO[0].salidaOrigen; precio = getPrecioEnviarAMiHome(precio); } var IDCategoria = hotel.IDCategoria || hotel.IDCat; if( IDCategoria && typeof(IDCategoria)!="string" )IDCategoria = IDCategoria.toString(); var vFecha = new Date().toJSON().split("T"); var fechaCreacion = new Date().toJSON(); var datosOferta = { fechaCreacion: fechaCreacion, IDGlobo: IDMinorista, IDSubglobo: IDSubGlobo, IDAgencia: IDAgencia, IDAgente: IDAgente, urlDispo: urlDispo .replace('txtDestino='+jsonDispo.txtDestino, 'txtDestino='+hotel.nombre) .replace('list_id='+jsonDispo.list_id, 'list_id=H_'+idHotel), nombre: hotel.nombre, descripcion: descripcion, urlImagen: urlImagen.replace("_thumbs",""), precio: Math.round(precio*100,2)/100, ocupacion: ocupacion, fechaEntrada: fechaInicio, fechaSalida: fechaFin, numeroEstrellas: hotel.numeroEstrellas || hotel.estrellas, alojamiento: hotel.habitaciones[0].alojamientos[0].nombreAlojamiento || hotel.habitaciones[0].alojamientos[0].nombre, categoria: arrayIDCategoriasHotel.indexOf( IDCategoria )==-1 ? 'Apartamento' : 'Hotel', extra: extra, origen: origen, destino: jsonDispo.list_id, IDHotel: idHotel, DATOS: DATOS, // IDMayorista: hotel.habitaciones[0].alojamientos[0].IDProveedor, // tarifa: hotel.habitaciones[0].alojamientos[0].TarifaB2C || '', nacionalidad: jsonDispo.nacionalidad, minAmount: hotel.habitaciones[0].alojamientos[0].minAmount ? hotel.habitaciones[0].alojamientos[0].minAmount : '', mandatory: hotel.habitaciones[0].alojamientos[0].mandatory }; $.ajax({ type: "POST", url: "https://ofertase1.veturis.com/api/ofertaDispoGuardadas", contentType: "application/json", data: JSON.stringify(datosOferta), dataType: "json", success: function(data, status, xhr){ $('#popupMesaje').remove(); if( data && data.IDDiasAntelacion!=undefined){ arrayDatosHoteles[iHotelSel].habitaciones[iHabSel].alojamientos[iAlojSel].anadidoHome = true; alertPopUp("Oferta adicionada correctamente à home"); }else{ alertPopUp("ERROR al añadir la oferta. Por favor intentelo más tarde"); }; }, error: function(xhr, status, error){ $('#popupMesaje').remove(); alertPopUp("ERROR al añadir la oferta. Por favor intentelo más tarde"); } }); }else{ $('#popupMesaje').remove(); alertPopUp("ERROR ENCONTRAR HOTEL al añadir la oferta. Por favor intentelo más tarde"); } } function InfoAmenities(DATOS){ mostrarCapaCargando('Consultando informação essencial...', '', null); $.ajax({ type: 'POST', url: getEnlaceReservar(DATOS) +'&op=infEse', dataType: "html", success: function(data){ ocultarCapaCargando(); if( data=='error' || data.indexOf('<\/script>')!=-1 ){ popUpMesaje('Información esencial', 'Não foi possível obter informação essencial' ); }else{ popUpMesaje('Información esencial', data ); } }, error: function(){ ocultarCapaCargando(); popUpMesaje('Información esencial', 'Não foi possível obter informação essencial' ); } }); } function updateKeys(data, key){ if( Array.isArray(data) ){ for( var iData=0, nData=data.length; iData
    ' + '

    ' + getNombreHab(habitacion) + '

    ' +'
    Tipo de alojamentoPreço por pessoa
    ' + formatearPrecioCambioMoneda(precio) + ''; if( datosAloj.anadidoHome ){ html += '' + ' Añadido a mi home' + ''; }else{ html += '' + '' + ' Enviar a home' + ''; } html += '