1//'use strict'; 2 3//* INIT GLOBALS *// 4// disable animations on resize 5var resizeTimer; 6window.onresize = function (e) { 7 var body = document.getElementsByTagName("BODY")[0]; 8 body.classList.add("resize-on"); 9 clearTimeout(resizeTimer); 10 resizeTimer = setTimeout(function () { 11 body.classList.remove("resize-on"); 12 }, 250); 13}; 14 15function getFormUrl() { 16 var url = (function (pathname) { 17 if (pathname.endsWith('.html')) return pathname.replace('.html', '/form.html'); 18 return pathname + '/form'; 19 })(window.location.pathname); 20 21 return url; 22} 23 24(function(o,$){ 25 if( !o || !$ ) return false; 26 var $o = $(o); 27 $o.ready(function(){ 28 $o.removeClass('hideBody'); 29 }); 30})(document.querySelector('body'),window.jQuery); 31 32(function( o, $, h ){ 33 if( !o || !$ || !h ) return false; 34 35 var lis = o.querySelectorAll('.fn-listaLink .fn-listaLinkElement'), 36 listMenu = o.querySelector('.sta-menus-air_links-wrapper'); 37 for (var i = 0; i < lis.length; i++) { 38 (function( li, $li ){ 39 40 //enlaces _blank 41 var as = li.querySelectorAll('a'); 42 for (var i = 0; i < as.length; i++) h.enlace_blank( $( as[i] ) ); 43 44 45 if( $li.hasClass('sta-noChild') || !$('.fn-listaLinkHijos .sta-menus-air_links-element',$li).length ) 46 $('.fn-listaLinkHijos',$li).remove(); 47 48 if ($li.hasClass("sta-child")) { 49 if (!$li.hasClass("sta-link")) { 50 $li.addClass("no_link"); 51 $($li[0].querySelector("a")).removeAttr("href").attr("role", "button"); 52 } 53 } 54 55 })( lis[i], $(lis[i]) ); 56 }; 57 58 //Scroll top 59 h.controlTop(o); 60 61 // idiomas 62 (function ( o2 ) { 63 if( !o2 ) return false; 64 var input = o2.querySelector('input'), 65 body = document.querySelector('body'), 66 list = o2.querySelector('.sta-menus-air_languages-list').children, 67 listTotal = list.length; 68 69 if( listTotal > 1 ){ 70 for (var i = list.length - 1; i >= 0; i--) { 71 (function( li ) { 72 var href1 = $( li.querySelector('a.sta-menus-air_element-btn') ).attr('href').substr(-10), 73 href2 = $( li.querySelector('a.sta-menus-air_element-btn') ).attr('href').substr(-6); 74 if( href1 == '/index.php' || href2 == '/.html' ){ 75 li.remove(); 76 listTotal--; 77 }; 78 })( list[i] ); 79 }; 80 81 if( listTotal > 1 ){ 82 o2.onclick = function () { 83 input.checked = !input.checked; 84 85 //control de z-index for dispo 86 input.checked 87 ? o.classList.add("sta-indexDispo") 88 : o.classList.remove("sta-indexDispo"); 89 90 91 if (window.innerWidth < 1280) { 92 if (!o.querySelector('.sta-menus-air_nav-links').classList.contains('fn-open')) { 93 if ( body.classList.contains('noscroll')) { 94 body.classList.remove('noscroll'); 95 } else { 96 body.classList.add('noscroll'); 97 } 98 } else { 99 o.querySelector('.sta-menus-air_nav-links').classList.remove('fn-open'); 100 o.classList.remove('sta-openMenu'); 101 o.querySelector('.sta-menus-air_nav-btns-element.js-toggle-menu').classList.remove('fn-close'); 102 } 103 } else { 104 if (o.querySelector('.sta-menus-air_nav-links').classList.contains('fn-open')) { 105 body.classList.add('noscroll'); 106 } else { 107 body.classList.remove('noscroll'); 108 } 109 } 110 }; 111 112 //add idioma in menu 113 if( window.innerWidth <= 500 ){ 114 var $btn = $('<div></div>',{class:'sta-menus-air_links-element-wrapper'}) 115 .append( $('<p></p>',{class:'sta-menus-air_links-element-text'}).text( $(o2).data('text-menu') ) ), 116 $li = $('<li></li>',{class:'sta-menus-air_links-element sta-idiomasMenu js-menu-placeholder fn-listaLinkElement'}).append( $btn ); 117 118 $(listMenu).append( $li ); 119 $btn.click(function(){ 120 o2.click(); 121 }); 122 } 123 124 } else { 125 o2.classList.add('sta-notIdiomas') 126 }; 127 } else { 128 o2.classList.add('sta-notIdiomas'); 129 }; 130 131 })( o.querySelector('.sta-menus-air_nav-morebtns-element.sta-lang') ); 132 133 //telefonos 134 (function( o2,seo ){ 135 if( !o2 || !seo || !seo.hotel ) return false; 136 137 var bTel = false, 138 $lista = $( o2.querySelector('.sta-menus-air_morebtns-element-hover') ); 139 140 if( seo.hotel.tel && seo.hotel.tel.trim() ){ 141 $lista.append( $('<a></a>',{id: 'td-d1-telefonosuperior-03', href : 'tel:' + seo.hotel.tel.replace(/\s/g,'') }).text( seo.hotel.textTel ? seo.hotel.textTel : seo.hotel.tel ) ); 142 bTel = true; 143 } 144 if( seo.hotel.tel2 && seo.hotel.tel2.trim() ){ 145 $lista.append( $('<a></a>',{id: 'td-d1-telefonosuperior-04', href : 'tel:' + seo.hotel.tel2.replace(/\s/g,'') }).text( seo.hotel.text2Tel ? seo.hotel.text2Tel : seo.hotel.tel2 ) ); 146 bTel = true; 147 } 148 if( seo.hotel.whatsapp && seo.hotel.whatsapp.trim() ){ 149 $lista.append( $('<a></a>',{id: 'td-d1-telefonosuperior-05', target:'_blank', href:'https://api.whatsapp.com/se
149nd/?phone=' + seo.hotel.whatsapp.replace(/\s/g,'') + '&text&app_absent=0' }).text( '+' + seo.hotel.whatsapp ).addClass('sta-whatsapp') ); 150 bTel = true; 151 } 152 if( !bTel ) o2.remove(); 153 154 })( o.querySelector('.sta-menus-air_nav-morebtns-element.sta-tels'), window.dataSeo ); 155 156 // function check menu reserva existe 157 var bookBtn = o.querySelectorAll('.sta-scroll-book'), 158 menu = o.querySelector('.sta-menus-air_nav-btns-element.js-toggle-menu'), 159 menuDiv = o.querySelector('.sta-main-links'), 160 body = document.querySelector('body'); 161 162 if (bookBtn && menu && menuDiv) { 163 164 for (var i = 0; i < bookBtn.length; i++) { 165 (function(btn){ 166 167 btn.addEventListener('click', function () { 168 var clase = 'fn-open', 169 clase2 = 'fn-close', 170 clase3 = 'noscroll'; 171 172 if (menuDiv.classList.contains(clase)) { 173 menuDiv.classList.remove(clase); 174 } 175 if (menu && menu.classList.contains(clase2)) { 176 menu.classList.remove(clase2); 177 } 178 if (body.classList.contains(clase3)) { 179 body.classList.remove(clase3); 180 } 181 }); 182 183 })(bookBtn[i]) 184 185 } 186 187 } 188 189})(document.querySelector('.tgl-menus-air'), window.jQuery, window.hotusa && hotusa()); 190 191//create html galleryV1 192(function( o, $, json, h ){ 193 if( !o || !$ || !json || !h ) return false; 194 195 var createImg = function( obj ){ 196 var alt = obj.text ? nameHotel + obj.text : nameHotel + obj.zone + ' '+ (obj.posi+1), 197 str = '<div class="sta-gallery-air_mosaic-element" data-zone="' + obj.zone + '">' + 198 '<div class="sta-gallery-air_mosaic-element-wrapper">' + 199 '<a href="'+obj.imgG+'" aria-label="'+alt+'" data-lightbox="all">' + 200 '<div class="sta-gallery-air_mosaic-multimedia">' + 201 '<figure class="sta-gallery-air_mosaic-photo" data-lazyimg="'+obj.imgP+'" role="img" aria-label=""></figure>' + 202 '</div>' + 203 '<div class="sta-gallery-air_mosaic-info">'; 204 if( obj.text ) str+= '<p class="sta-gallery-air_mosaic-info-title">' + obj.text + '</p>'; 205 str += '<i class="sta-gallery-air_mosaic-info-icon icon-zoom"></i>' + 206 '</div>' + 207 '</a>' + 208 '</div>' + 209 '</div>'; 210 return str; 211 }, 212 nameHotel = window.dataSeo && dataSeo.hotel && dataSeo.hotel.name && dataSeo.hotel.name.trim() ? dataSeo.hotel.name.trim() + ' - ' : '', 213 $content = $( o.querySelector('.sta-gallery-air_mosaic-list') ); 214 215 //multigalery 216 for (var i = 0; i < json.length; i++) { 217 (function(zona, nameZone){ 218 for (var i2 = 0; i2 < zona.photos.length; i2++) { 219 $content.append( createImg( { zone : nameZone, imgG : zona.photos[i2].url, imgP : zona.photos[i2].url, text : zona.photos[i2].name, posi:i2 } ) ); 220 }; 221 })( json[i], encodeURI(json[i].name) ); 222 }; 223 224 loadScript('/templates/cadenas/air/js/gallery.min.js',new Function); 225 226})( document.querySelector('.fn-galleryV1'), window.jQuery, window.json_multiGalerias, window.hotusa && hotusa() ); 227 228//create html galleryV2 229(function( o, $, json, h ){ 230 if( !o || !$ || !json || !h ) return false; 231 232 $('main').addClass('sta-init-space'); 233 234 var createImg = function( obj ){ 235 var alt = obj.text ? nameHotel + obj.text : nameHotel + obj.zone + ' '+ (obj.posi+1), 236 str = '<div class="sta-gallery-air_sideboard-element" tabindex="0">' + 237 '<div class="sta-gallery-air_sideboard-element-wrapper">' + 238 '<a href="'+obj.imgG+'" aria-label="'+alt+'" data-lightbox="' + obj.zone + '">' + 239 '<figure class="sta-gallery-air_sideboard-element-photo" data-lazyimg="'+obj.imgP+'" role="img" aria-label=""></figure>' + 240 '</a>' + 241 '</div>' + 242 '</div>'; 243 return str; 244 }, 245 nameHotel = window.dataSeo && dataSeo.hotel && dataSeo.hotel.name && dataSeo.hotel.name.trim() ? dataSeo.hotel.name.trim() + ' - ' : '', 246 $clone = $( o.querySelector('.sta-bckp') ).clone().removeClass('sta-bckp'), 247 $content = $( o.querySelector('.sta-gallery-air_highlights') ); 248 249 $( o.querySelector('.sta-bckp') ).remove(); 250 251 //evitar bug de slick 252 (function() { 253 var arr = []; 254 for (var i = 0; i < json.length; i++) { 255 if(json.length && json[i].photos.length){ 256 while (json[i].photos.length < 7) { 257 json[i].photos = json[i].photos.concat( json[i].photos ); 258 } 259 } else { 260 arr.push(json[i]); 261 } 262 } 263 for (var i2 = 0; i2 < arr.length;
263 i2++) json.splice( json.indexOf(arr[i2]) , 1); 264 })(); 265 266 //multigalery 267 for (var i = 0; i < json.length; i++) { 268 (function( zona ){ 269 var $html = $clone.clone(); 270 if( zona.id ) $html.addClass('scroll-anchor_'+zona.id); 271 $('.sta-gallery-air_sideboard-header-title',$html).text( zona.name ), 272 $contentImg = $('.sta-gallery-air_sideboard-list-container',$html); 273 274 for (var i2 = 0; i2 < zona.photos.length; i2++) { 275 $contentImg.append( createImg( { zone : encodeURI( zona.name ), imgG : zona.photos[i2].url, imgP : zona.photos[i2].url, text : zona.photos[i2].name, posi:i2 } ) ); 276 }; 277 278 $content.append( $html ); 279 })( json[i] ); 280 }; 281 282 loadScript('/templates/cadenas/air/js/gallery.js',new Function); 283 284})( document.querySelector('.fn-galleryV2'), window.jQuery, window.json_multiGalerias, window.hotusa && hotusa() ); 285 286//create html galleryV3 287(function( o, $, json, h ){ 288 if( !o || !$ || !json || !h ) return false; 289 290 $( document.querySelector('.tgl-internbar-air') ).addClass('sta-desktop-static'); 291 292 var createImg = function( obj ){ 293 var alt = obj.text ? nameHotel + obj.text : nameHotel + obj.zone + ' '+ (obj.posi+1), 294 str = '<div class="sta-gallery-air_sideboard-element" tabindex="0" data-zone="' + obj.zone + '">' + 295 '<div class="sta-gallery-air_sideboard-element-wrapper">' + 296 '<a href="'+obj.imgG+'" aria-label="'+alt+'" data-lightbox="all">' + 297 '<figure class="sta-gallery-air_sideboard-element-photo" data-lazyimg="'+obj.imgP+'" role="img" aria-label=""></figure>' + 298 '</a>' + 299 '</div>' + 300 '</div>'; 301 return str; 302 }, 303 nameHotel = window.dataSeo && dataSeo.hotel && dataSeo.hotel.name && dataSeo.hotel.name.trim() ? dataSeo.hotel.name.trim() + ' - ' : '', 304 $content = $( o.querySelector('.sta-gallery-air_sideboard-list-container') ); 305 306 //multigalery 307 for (var i = 0; i < json.length; i++) { 308 (function(zona, nameZone){ 309 for (var i2 = 0; i2 < zona.photos.length; i2++) { 310 $content.append( createImg( { zone : nameZone, imgG : zona.photos[i2].url, imgP : zona.photos[i2].url, text : zona.photos[i2].name,posi:i2 } ) ); 311 }; 312 })( json[i], encodeURI(json[i].name) ); 313 }; 314 315 loadScript('/templates/cadenas/air/js/gallery.min.js',new Function); 316 317})( document.querySelector('.fn-galleryV3'), window.jQuery, window.json_multiGalerias, window.hotusa && hotusa() ); 318 319//create html internbar in gallery 320(function( o, $, json ){ 321 if( !o || !$ || !json ) return false; 322 323 var $o = $(o), 324 createLi = function(obj){ 325 //obj = {text : "Habitacion", zone : "room", video:"asda"} 326 327 if( obj.zone ) return '<div class="sta-internbar-air_links-element js-filter-gallery" data-zone_selector="' + obj.zone + '" role="button" tabindex="0"><h2 class="sta-internbar-air_element-text">' + obj.text + '</h2></div>'; 328 if( obj.video ) return '<div class="sta-internbar-air_links-element js-video-gallery" data-video="https://www.youtube.com/embed/' + obj.video + '" role="button" tabindex="0"><h2 class="sta-internbar-air_element-text">' + copyVideo + '</h2></div>'; 329 if( obj.videoW ) return '<div class="sta-internbar-air_links-element js-video-gallery" data-video="https://fast.wistia.net/embed/iframe/' + obj.videoW + '" role="button" tabindex="0"><h2 class="sta-internbar-air_element-text">' + copyVideo + '</h2></div>'; 330 }, 331 $contentLinks = $( o.querySelector('.sta-internbar-air_links') ), 332 copyVideo = $o.data('traduvideo'); 333 334 for (var i = 0; i < json.length; i++) { 335 if( json_multiGalerias[i].video || json_multiGalerias[i].videoW ){ 336 $contentLinks.append( createLi( { video : json_multiGalerias[i].video, videoW : json_multiGalerias[i].videoW } ) ); 337 } else { 338 $contentLinks.append( createLi( { text : json[i].name, zone : encodeURI(json_multiGalerias[i].name) } ) ); 339 } 340 }; 341 342 $o.removeClass('staOculto'); 343 344})( document.querySelector('.fn-internbarGallery'), window.jQuery, window.json_multiGalerias ); 345 346//create html carrusel 347(function( json, $ ){ 348 if( !json || !$ ) return false; 349 var createDivs = function( arr ){ 350 var str = ''; 351 for (var i = 0; i < arr.length; i++) { 352 str += "<div class='sta-carousel-air_multimedia-element'>" + 353 "<figure class='sta-carousel-air_multimedia-photo' role='img' aria-label='' data-lazyimg='" + arr[i].url + "'></figure>" + 354 "</div>"; 355 }; 356 return str; 357 } 358 for (var i = 0; i < json.length; i++) { 359 (function( elem ){ 360 var $o = $( document.querySelectorAll('.'+elem.o) ); 361 if( !$o.length || !elem.imgs.length ) return false; 362 $o.html( createDivs(elem.imgs) ); 363 })( json[i] ); 364 }; 365})( window.json_carrusel, window.jQuery ); 366 367//create html slate lineal 368(function( json, $ ){ 369 if( !json || !$ ) return false; 370 var createDivs = function( arr, galleryID ){ 371 var str = '', 372 alt = window.dataSeo && dataSeo.hotel && dataSeo.hotel.name && dataSeo.hotel.name.trim() ? (dataSeo.hotel.name.trim() + ' - ') : ''; 373 alt += 'Gallery '; 374 375 for (var i = 0; i < arr.length; i++) { 376 str += "<div class='sta-slate-air_element'>" 377 + "<div class='sta-slate-air_element-box'>" 378 + "<a href='"+arr[i].url+"' aria-label='"+alt+(i+1)+ "' data-lightbox='gallery"+galleryID+"'>" 379 + "<div class='sta-slate-air_element-multimedia'>" 380 + "<figure class='sta-slate-air_multimedia-photo' role='img' aria-label='' data-lazyimg='"+arr[i].url+"'></figure>" 381 +" </div>" 382 + "<div class='sta-slate-air_element-info'>"; 383 384 if( arr[i].name && arr[i].name.trim() ) str += "<p class='sta-slate-air_info-title'>"+arr[i].name+"</p>"; 385 386 str += "</div></a></div></div>"; 387 }; 388 return str; 389 } 390 for (var i = 0; i < json.length; i++) { 391 (function( elem ){ 392 var $o = $( document.querySelectorAll('.'+elem.o) ); 393 if( !$o.length || !elem.imgs.length ) return false; 394 $o.html( createDivs(elem.imgs, elem.o.split('_')[1]) ); 395 if( $o.closest('.tgl-slate-air').hasClass('sta-big-img') ){ 396 $o.closest('.tgl-slate-air')
397 .attr('data-slides_pc', '1') 398 .attr('data-slides_tablet', '1') 399 .attr('data-slides_mobile', '1'); 400 } 401 402 })( json[i] ); 403 }; 404})( window.json_slateLineal, window.jQuery ); 405 406//create html slate Cuadrado 407(function( json, $ ){ 408 if( !json || !$ ) return false; 409 var createDivs = function( arr, isOnePerSlide ){ 410 var str = '', 411 alt = window.dataSeo && dataSeo.hotel && dataSeo.hotel.name && dataSeo.hotel.name.trim() ? (dataSeo.hotel.name.trim() + ' - ') : '', 412 initColumn = true, 413 par = false, 414 resto = arr.length % 2, 415 isMobile = window.innerWidth < 769; // Detectar móvil 416 alt += 'Gallery '; 417 418 for (var i = 0; i < arr.length; i++) { 419 420 // Si tiene clase sta-one Y es móvil, cada imagen es un slide individual 421 if( isOnePerSlide && isMobile ){ 422 str += "<div class='sta-slate-air_element sta-mobile-single'>"; 423 str += "<div class='sta-slate-air_element-box'>"; 424 } else { 425 // En desktop/tablet o sin sta-one, agrupar de 2 en 2 426 if( initColumn && par ){ 427 par = false; 428 str += "<div class='sta-slate-air_element sta-impar'>" 429 } else if( initColumn ){ 430 par = true; 431 str += "<div class='sta-slate-air_element sta-par'>"; 432 }; 433 434 //last 435 if( arr.length-1 == i && !!resto ) str += "<div class='sta-slate-air_element-box sta-lastImage_"+resto+"'>"; 436 //default 437 else str += "<div class='sta-slate-air_element-box'>"; 438 } 439 440 str += "<a href='"+arr[i].url+"' aria-label='"+alt+(i+1)+ "' data-lightbox='gallery2'>" 441 + "<div class='sta-slate-air_element-multimedia'>" 442 + "<figure class='sta-slate-air_multimedia-photo' role='img' aria-label='' data-lazyimg='"+arr[i].url+"'></figure>" 443 + "</div>" 444 + "<div class='sta-slate-air_element-info'>"; 445 446 if( arr[i].name && arr[i].name.trim() ) str += "<p class='sta-slate-air_info-title'>"+arr[i].name+"</p>"; 447 448 str += "</div></a></div>"; 449 450 // Cerrar el elemento 451 if( isOnePerSlide && isMobile ){ 452 str += "</div>"; 453 } else { 454 if( !initColumn ) str += "</div>"; 455 initColumn = !initColumn; 456 } 457 }; 458 459 if( !(isOnePerSlide && isMobile) && initColumn ) str += "</div>"; 460 461 return str; 462 } 463 for (var i = 0; i < json.length; i++) { 464 (function( elem ){ 465 var $o = $( document.querySelectorAll('.'+elem.o) ); 466 if( !$o.length || !elem.imgs.length ) return false; 467 // Detectar si el contenedor padre tiene la clase sta-one 468 var hasStaOne = $o.closest('.sta-one').length > 0; 469 $o.html( createDivs(elem.imgs, hasStaOne) ); 470 })( json[i] ); 471 }; 472})( window.json_slateCuadrado, window.jQuery ); 473 474 475 476//create html slate Mosaico 477(function( json,$ ){ 478 if( !json || !$ ) return false; 479 var createDivs = function( arr , galleryID){ 480 var str = '', 481 alt = window.dataSeo && dataSeo.hotel && dataSeo.hotel.name && dataSeo.hotel.name.trim() ? (dataSeo.hotel.name.trim() + ' - ') : '', 482 initColumn = true, 483 resto = arr.length % 3, 484 par = false, 485 endColumn = false; 486 alt += 'Gallery '; 487 488 for (var i = 0; i < arr.length; i++) { 489 initColumn = i % 3 == 0; 490 endColumn = (i+1) % 3 == 0; 491 492 if( initColumn && par ){ 493 par = false; 494 str += "<div class='sta-slate-air_element sta-impar'>" 495 } else if( initColumn ){ 496 par = true; 497 str += "<div class='sta-slate-air_element sta-par'>"; 498 }; 499 500 //last 501 if( arr.length-1 == i && !!resto ) str += "<div class='sta-slate-air_element-box sta-lastImage_"+resto+"'>"; 502 //penultimate 503 else if( arr.length-2 == i && !!resto ) str += "<div class='sta-slate-air_element-box sta-penulImage_"+resto+"'>"; 504 //default 505 else str += "<div class='sta-slate-air_element-box'>"; 506 507 str += "<a href='" + arr[i].url + "' aria-label='" + alt + (i + 1) + 508 "' data-lightbox='gallery"+galleryID+"'>" 509 + "<div class='sta-slate-air_element-multimedia'>" 510 + "<figure class='sta-slate-air_multimedia-photo' role='img' aria-label='' data-lazyimg='" + arr[i].url + "'></figure>" 511 + "</div>" 512 + "<div class='sta-slate-air_element-info'>"; 513 514 if( arr[i].name && arr[i].name.trim() ) str += "<p class='sta-slate-air_info-title'>"+arr[i].name+"</p>"; 515 516 str += "</div></a></div>"; 517 518 if( endColumn ) str += "</div>"; 519 520 }; 521 522 if( endColumn ) str += "</div>"; 523 524 return str; 525 } 526 for (var i = 0; i < json.length; i++) { 527 (function( elem ){ 528 var $o = $( document.querySelectorAll('.'+elem.o) ); 529 if( !$o.length || !elem.imgs.length ) return false; 530 $o.html( createDivs(elem.imgs, elem.o.split('_')[1]) ); 531 })( json[i] ); 532 }; 533})( window.json_slateMosaico, window.jQuery ); 534 535 536 537var putCoverArrow =(function(cover, alertas, $){ 538 if( !cover || !$ ) return new Function(); 539 //altura alertas 540 return function(){ 541 var h_total = (window.innerWidth < 1024) ? 70 : 0; 542 // if(!alertas.length) return h_total; 543 for (var i = 0; i < alertas.length; i++){ 544 if($(alertas[i]).css('display') !== 'none'){ 545 h_total += $(alertas[i]).outerHeight(); 546 } 547 } 548 //damos altura 549 $(cover).css('min-height','calc(100vh - ' + h_total + 'px)'); 550 }; 551 552}
552)( document.querySelector('.tgl-cover-air'), document.querySelectorAll('.tgl-avisos-air'), window.jQuery ); 553 554(function ( o,m,$ ) { 555 if( !o || !m || !$ ) return false; 556 557 $(m).addClass('sta-logoOff_top'); 558 559})( document.querySelector('.tgl-cover-air.sta-logo_center'), document.querySelector('.tgl-menus-air.sta-logo-center'), window.jQuery ); 560 561//class with internabar 562(function( o, m, $){ 563 if( !o || !m || !$ ) return false; 564 565 if( !o.querySelector('.sta-internbar-air_links .sta-internbar-air_links-element') ){ 566 o.remove() 567 return false; 568 }; 569 570 // $(m).addClass('sta-init-space sta-internbar-space-responsive'); 571})( document.querySelector('.tgl-internbar-air'), document.querySelector('main'), window.jQuery ); 572 573//first module 574(function( m, $){ 575 576 var arr = [ 577 'main.global-container > .tgl-breadcrumbs-air:nth-child(2)', 578 'main.global-container > .tgl-devicesheader-air:nth-child(2) + .tgl-breadcrumbs-air', 579 'main.global-container > .tgl-intro-air:nth-child(2)', 580 'main.global-container > .tgl-devicesheader-air:nth-child(2) + .tgl-intro-air', 581 'main.global-container > .tgl-cardpage-air:nth-child(2)', 582 'main.global-container > .tgl-devicesheader-air:nth-child(2) + .tgl-cardpage-air', 583 'main.global-container > .tgl-carousel-air:nth-child(2)', 584 'main.global-container > .tgl-devicesheader-air:nth-child(2) + .tgl-carousel-air', 585 'main.global-container > .tgl-enginepage-air:nth-child(2)', 586 'main.global-container > .tgl-devicesheader-air:nth-child(2) + .tgl-enginepage-air', 587 'main.global-container > .tgl-internbar-air:nth-child(2)', 588 'main.global-container > .tgl-devicesheader-air:nth-child(2) + .tgl-internbar-air', 589 'main.global-container > .linkComprarBonos:nth-child(2)', 590 'main.global-container > .tgl-devicesheader-air:nth-child(2) + .linkComprarBonos', 591 'main.global-container > .tgl-bonoForm:nth-child(2)', 592 'main.global-container > .tgl-devicesheader-air:nth-child(2) + .tgl-bonoForm', 593 'main.global-container > .tgl-bonoConfirm:nth-child(2)', 594 'main.global-container > .tgl-devicesheader-air:nth-child(2) + .tgl-bonoConfirm', 595 'main.global-container > .tpl-voucher-confirmation:nth-child(2)', 596 'main.global-container > .tgl-devicesheader-air:nth-child(2) + .tpl-voucher-confirmation', 597 'main.global-container > .tgl-motor-air:nth-child(2)', 598 'main.global-container > .tgl-devicesheader-air:nth-child(2) + .tgl-motor-air', 599 'main.global-container > .tgl-missingYou:nth-child(2)', 600 'main.global-container > .tgl-devicesheader-air:nth-child(2) + .tgl-missingYou', 601 'main.global-container > section[class^="modulo404"]', 602 'main.global-container > .press-post:nth-child(2)', 603 'main.global-container > .new-gallery:nth-child(2)', 604 'main.global-container > .event-rooms:nth-child(2)', 605 606 'main.global-container > .products-module:nth-child(2)', 607 'main.global-container > .room-module-bg:nth-child(2)', 608 'main.global-container > .rooms-listing-v2-bg:nth-child(2)', 609 'main.global-container > .rooms-listing-bg:nth-child(2)', 610 'main.global-container > .rooms-listing-v3-bg:nth-child(2)', 611 'main.global-container > .blog-post:nth-child(2)', 612 'main.global-container > .event-post:nth-child(2)', 613 'main.global-container > .ig-gallery:nth-child(2)', 614 'main.global-container > .blog-products:nth-child(2)', 615 'main.global-container > .event-products:nth-child(2)', 616 'main.global-container > .ec-multiple:nth-child(2)', 617 'main.global-container > .ec-slider:nth-child(2)', 618 'main.global-container > .products-hotels:nth-child(2)', 619 'main.global-container > .banner:nth-child(2)', 620 'main.global-container > .rsc:nth-child(2)', 621 ]; 622 623 if( !document.querySelector( arr.join(',') ) || !m || !$ ) return false; 624 625 $(m).addClass('sta-init-space'); 626 627})( document.querySelector('main.global-container'), window.jQuery ); 628 629// regular tamaño de small footer 630(function(m, f){ 631 if(!m || !f ) return false; 632 633 var minHeight = function(){ 634 m.style.minHeight = 'calc(100vh - ' + f.clientHeight + 'px)'; 635 }; 636 637 minHeight(); 638 window.addEventListener('resize', minHeight); 639 640})( document.querySelector('main'), document.querySelector('footer') ); 641 642// cardpage 643(function( a, $){ 644 if( !a.length || !$ ) return false; 645 646 var ev = function(o){ 647 648 var classNotImg = $(o).hasClass('sta-notImg'), 649 imgCont = o.querySelector('.sta-cardpage-air_multimedia'), 650 img = $( imgCont.querySelector('.sta-cardpage-air_multimedia-photo') ).data('lazyimg'), 651 cert = o.querySelector('.sta-cardpage-air_certificates'), 652 timeInput = o.querySelector('.sta-input input[type=time]'), 653 dateInput = o.querySelector('.sta-input input[type=date]'); 654 655 if( classNotImg || !img ){ 656 imgCont.remove(); 657 $(o).addClass('sta-notImg'); 658 }; 659 660 if( !cert ) return false; 661 662 var cert_child = cert.querySelectorAll('.sta-cardpage-air_certificates-element'); 663 for (var i = 0; i < cert_child.length; i++) { 664 (function( elem ){ 665 var $a = $(elem.querySelector('a')); 666 if( !$a.attr('href').trim() ) $( elem ).html( $a.html() ); 667 })( cert_child[i] ); 668 }; 669 if( timeInput ){ 670 timeInput.addEventListener('focus', function(){ 671 this.showPicker(); 672 },false); 673 } 674 if( dateInput ){ 675 dateInput.addEventListener('focus', function(){ 676 this.showPicker(); 677 },false); 678 } 679 }; 680 681 for (var i = 0; i < a.length; i++) ev(a[i]); 682 683})( document.querySelectorAll('.tgl-cardpage-air'), window.jQuery ); 684 685 686//formJson 687(function (form, h, array) { 688 if (!form || !h) return false; 689 690 if (!Array.isArray(array) || !array.length) { 691 console.trace('ERROR: Json is not defined', array); 692 return false; 693 } 694 695var valid = function () { 696 var send = true, 697 e_empty = false, 698 e_mail = false, 699 e_poli = false; 700 701 obj.error.o.textContent = ''; 702 obj.error.o.classList.remove('invalid', 'ok'); 703 704 //obligatorios 705 for (var i = 0; i < obj.oblig.length; i++) { 706 if (!obj.oblig[i].value.trim()) { 707 obj.oblig[i].parentElement.classList.add('invalid') 708 send = false; 709 e_empty = true; 710 } else { 711 obj.oblig[i].parentElement.classList.remove('invalid'); 712 } 713 }; 714 715 //emails 716 for (var i = 0; i < obj.emails.length; i++) { 717 if (!h.mail(obj.emails[i].value.trim())) { 718 obj.emails[i].parentElement.classList.add('invalid') 719 send = false; 720 e_mail = true; 721 } else { 722 obj.emails[i].parentElement.classList.remove('invalid') 723 } 724 } 725 726 //politic 727 if (!obj.politic.checked) { 728 obj.politic.parentElement.classList.add('invalid') 729 send = false; 730 e_poli = true; 731 } else { 732 obj.politic.parentElement.classList.remove('invalid') 733 }; 734 735 if (e_empty) obj.error.o.appendChild(obj.error.empty); 736 if (e_mail) obj.error.o.appendChild(obj.error.mail); 737 if (e_poli) obj.error.o.appendChild(obj.error.poli); 738 739 if (!send) { 740 obj.error.o.classList.add('sta-error', 'sta-cardpage-air_warning-text'); 741 obj.error.o.classList.remove('fn-hide'); 742 processEnvio = false; 743 } 744 745 return send; 746 747}, 748 enviar = function () { 749 var datos = { 750 d: { 751 hotel: window.dataSeo && dataSeo.hotel && dataSeo.hotel.name ? dataSeo.hotel.name : '', 752 url: location.origin + location.pathname, 753 text: '', 754 personal_inf: null 755 } 756 }; 757 758 if (window.getComputedStyle(obj.personalInf.parentElement).display == 'none') { 759 datos.d.personal_inf = 'Not available'; 760 } else { 761 datos.d.personal_inf = obj.personalInf.checked ? 'yes' : 'no'; 762 } 763 764 765 for (var i = 0; i < obj.allElements.length; i++) { 766 datos.d.text += '<b>' + obj.allElements[i].text + ' : </b>' + obj.allElements[i].o.value; 767 if (i < obj.allElements.length - 1) datos.d.text += '<br>'; 768 } 769 if (recaptcha) { 770 grecaptcha.ready(function () { 771 grecaptcha.execute(recaptcha, { action: 'sendForm' }).then(function (token) { 772 ajax(datos); 773 }); 774 }); 775 } else { 776 ajax(datos); 777 }; 778 }, 779 ajax = function (datos) { 780 var _tmp = { 781 url: getFormUrl(), 782 data: JSON.stringify(datos), 783 type: 'POST', 784 success: function (e) { 785 if (e === "OK") { 786 obj.error.o.appendChild(obj.error.ok); 787 obj.error.o.classList.add('sta-cardpage-air_done-text'); 788 obj.error.o.classList.remove('fn-hide'); 789 //reset 790 form.reset(); 791 } 792 processEnvio = false; 793 }, 794 error: function (e) { 795 console.trace('ERROR: Fail form', e); 796 processEnvio = false; 797 } 798 }; 799 h.ajax(_tmp);
800 }, 801 // event 802 eventInputTextarea = function (elem, email, divInput) { 803 elem.addEventListener("change", function () { 804 var val = this.value.trim(); 805 email && !h.mail(val) || !val 806 ? divInput.classList.add('invalid') 807 : divInput.classList.remove('invalid'); 808 }); 809 }, 810 811 recaptcha = form.dataset.recaptcha, 812 processEnvio = false, 813 obj = { 814 politic: form.policy, 815 personalInf: form.acept_mail, 816 allElements: [], 817 oblig: [], 818 emails: [], 819 error: { 820 o: form.querySelector('ul.sta-error'), 821 empty: document.createElement('li'), 822 mail: document.createElement('li'), 823 ok: document.createElement('li'), 824 poli: document.createElement('li') 825 } 826 }; 827 (function () { 828 obj.error.empty.innerText = form.copyEmpty.value; 829 obj.error.mail.innerText = form.copyEmail.value; 830 obj.error.poli.innerText = form.copyPoliticas.value; 831 obj.error.ok.innerText = form.copyOk.value; 832 })(); 833 834 (function (insert) { 835 for (var i = 0; i < array.length; i++) { 836 (function (_obj) { 837 var divPrins = document.createElement('div'), 838 divInput = document.createElement('div'), 839 elem; 840 841 divPrins.className = 'sta-cardpage-air_form-element'; 842 843 if (_obj.type === 'textarea') { 844 elem = document.createElement('textarea'); 845 elem.className = 'sta-textarea-field textColor textGC'; 846 divInput.className = 'sta-textarea'; 847 848 } else { 849 elem = document.createElement('input'); 850 elem.className = 'sta-input-field textColor textGC'; 851 elem.type = _obj.type ? _obj.type : 'text'; 852 853 switch (_obj.type) { 854 case 'date': 855 elem.max = _obj.max ? _obj.max : '2123-12-31'; 856 elem.min = _obj.min ? _obj.min : '1823-12-31'; 857 elem.addEventListener('focus', function () { 858 this.showPicker(); 859 }); 860 break; 861 case 'time': 862 elem.addEventListener('focus', function () { 863 this.showPicker(); 864 }); 865 break; 866 case 'email': 867 obj.emails.push(elem); 868 break; 869 } 870 divInput.className = _obj.class ? 'sta-input ' + _obj.class : 'sta-input'; 871 } 872 873 if (_obj.type == 'date' || _obj.type == 'time') { 874 var span = document.createElement('span'); 875 span.className = 'sta-time'; 876 span.setAttribute('data-text', _obj.text); 877 if (_obj.oblig) span.dataset.text = _obj.text + '*' 878 divInput.append(span); 879 } 880 if (_obj.text) { 881 elem.placeholder = _obj.oblig ? _obj.text + '*' : _obj.text; 882 } 883 divInput.append(elem); 884 divPrins.append(divInput); 885 insert.append(divPrins); 886 887 obj.allElements.push({ o: elem, text: _obj.text }) 888 if (_obj.oblig) { 889 obj.oblig.push(elem); 890 elem.required = true; 891 eventInputTextarea(elem, _obj.type == 'email', divInput); 892 } 893 894 })(array[i]); 895 } 896 897 })(document.querySelector('.sta-cardpage-air_list')) 898 899 900 form.addEventListener('submit', function (event) { 901 event.preventDefault(); 902 903 if (processEnvio) return false; 904 905 processEnvio = true; 906 if (valid()) enviar(); 907 }, false); 908 909 if (recaptcha) h.cargaScrollAuto({ obj: form }, function () { 910 h.cargarFicheroJS('https://www.google.com/recaptcha/api.js?render=' + recaptcha); 911 }); 912 913 914})(document.querySelector('.formJson'), window.hotusa && hotusa(), window.formJson); 915 916 917//class ventajas resto 918(function( a, $, h ){ 919 if( !a.length || !$ || !h ) return false; 920 921 var ev = function (o) { 922 var n = o.querySelectorAll('.advice-list .advice-list-element').length, 923 a = o.querySelectorAll('.sta-advice-air_enlace'); 924 925 switch (n) { 926 case 1: 927 case 2: 928 case 3: 929 case 4: 930 $(o).addClass('sta-exact_'+n); 931 break; 932 933 default: 934 935 if( n % 4 == 0 ){ 936 $(o).addClass('sta-exact_4'); 937 } else if( n % 3 == 0 ){ 938 $(o).addClass('sta-exact_3'); 939 } else if( n % 4 > n % 3 ) { 940 $(o).addClass('sta-exact_4') 941 } else { 942 $(o).addClass('sta-exact_3'); 943 } 944 945 break; 946 }; 947 948 for (var i = 0; i < a.length; i++) { 949 h.enlace_blank( $( a[i] ) ); 950 } 951 }; 952 953 for(var i = 0; i < a.length; i++) ev( a[i] ); 954 955})( document.querySelectorAll('.tgl-advice-air'), window.jQuery, window.hotusa && hotusa() ); 956 957//enlaces pdfs in intro 958(function( o,$,h ){ 959 if( !o || !$ || !h ) return false; 960 961 var a = o.querySelector('.sta-intro-air_btn'); 962 if( a ) h.enlace_blank( $(a) ); 963})( document.querySelector('.tgl-intro-air'), window.jQuery, window.hotusa && hotusa() ); 964 965//enlaces pdfs in carousels 966(function( a,$,h ){ 967 if( !a.length || !$ || !h ) return false; 968 969 var ev = function (o) { 970 var as = o.querySelectorAll('.sta-carousel-air_info-btn,.sta-btn-moreinfo'); 971 for (var i = 0; i < as.length; i++) h.enlace_blank( $(as[i]) ); 972 }; 973 974 for (var i = 0; i < a.length; i++) ev(a[i]); 975 976 h.cargaScrollAuto({ obj : a[0],dual:true}, function(){ 977 var link = document.createElement('link'); 978 link.rel = "stylesheet"; 979 link.href = "/css/style_icons_services_banderas.min.css"; 980 $('head').append(link); 981 }); 982 983}
983)( document.querySelectorAll('.tgl-carousel-air'), window.jQuery, window.hotusa && hotusa() ); 984 985//enlaces pdf footer 986(function( o,$,h ){ 987 if( !o || !$ || !h ) return false; 988 989 var as = o.querySelectorAll('.sta-staticfoot-air_element-wrapper'); 990 991 for (var i = 0; i < as.length; i++) h.enlace_blank( $( as[i] ) ); 992 993})( document.querySelector('.tgl-staticfoot-air'), window.jQuery, window.hotusa && hotusa() ); 994 995//mapaweb 996(function( o,$,h ) { 997 if( !o || !$ || !h ) return false; 998 var elems = o.querySelector('.sta-cardpage-air_dropdowns').children; 999 1000 for (var i = elems.length-1; i >= 0; i--) 1001 if( elems[i].querySelector('a').href.slice(0,10) == "javascript" ) elems[i].remove(); 1002 1003})( document.querySelector('.tgl-cardpage-air.sta-mapaweb'), window.jQuery, window.hotusa && hotusa() ); 1004 1005//open cookies 1006(function(a,inp,conf,$){ 1007 if( !a.length || !inp || !conf || !$ ) return false; 1008 var $scroll = $('html'), 1009 open = function(){ 1010 inp.checked = false; 1011 $scroll.addClass('sta-noScroll') 1012 }, 1013 ev = function( $b ){ 1014 var boo = $b.hasClass('fn-confCookies'); 1015 $b.click(function(e){ 1016 e.preventDefault(); 1017 conf.checked = boo; 1018 open(); 1019 }); 1020 }; 1021 1022 for (let i = 0; i < a.length; i++) ev( $(a[i]) ); 1023 1024})( document.querySelectorAll('.fn-openCookies'), document.getElementById('sta-cookies'), document.getElementById('sta-cookies_config'), window.jQuery ); 1025 1026(function( a,$,h ) { 1027 if( !a.length || !$ || !h ) return false; 1028 1029 var dom = location.origin + location.pathname, 1030 controlA = function ($a,remove) { 1031 if( $a.attr('href') == dom ) remove.remove(); 1032 }, 1033 controlPrice = function( content, $o ){ 1034 if( content && content.textContent.trim().length > 7 ){ 1035 $o.addClass('sta-priceSmall'); 1036 return true; 1037 } else { 1038 return false; 1039 }; 1040 }, 1041 ev = function (o) { 1042 var a = o.querySelector('header .sta-btn-moreinfo'), 1043 content = o.querySelector('.sta-products-air_content'); 1044 1045 if( !a || !content )return false; 1046 1047 var elems = content.children; 1048 1049 //link ver mas 1050 controlA( $(a), a ); 1051 for (var i = 0; i < elems.length; i++){ 1052 (function(product) { 1053 controlA( $(product.querySelector('.sta-products-air_btns-element')), product); 1054 h.enlace_blank( $( product.querySelector('.sta-products-air_btns-element') ) ); 1055 h.enlace_blank( $( product.querySelector('.sta-products-air_element-wrapper a') ) ); 1056 })(elems[i]); 1057 } 1058 1059 for (var i = 0; i < elems.length; i++){ 1060 if( controlPrice( elems[i].querySelector('.sta-products-air_price-number'), $(o) ) ){ break } 1061 } 1062 1063 //elements 1064 var data = $(o).data(); 1065 1066 if( data.slides_tablet && data.slides_tablet > elems.length ) $(o).attr('data-slides_tablet',elems.length); 1067 if( data.slides_pc && data.slides_pc > elems.length ) $(o).attr('data-slides_pc',elems.length); 1068 1069 }; 1070 1071 for (var i = 0; i < a.length; i++) ev(a[i]); 1072 1073})( document.querySelectorAll('.tgl-products-air'), window.jQuery, window.hotusa && hotusa()); 1074 1075(function (o) { 1076 if (!o || window.innerWidth > 800) return false; 1077 window.document.dispatchEvent(new CustomEvent('showModalEngine')); 1078})(document.querySelector('.tgl-enginepage-air')); 1079 1080(function( o,$ ){ 1081 if( !o || !$ ) return false; 1082 1083 var children = o.children, 1084 ev = function (o) { 1085 var modal = o.querySelector('.tgl-infopop-air'), 1086 nDistribuciones = modal.querySelector('.sta-infopop-air_services').childElementCount; 1087 if( !nDistribuciones ){ 1088 modal.remove(); 1089 o.querySelector('.sta-carousel-air_info-btn').remove(); 1090 }; 1091 }; 1092 1093 for (var i = 0; i < children.length; i++) ev( children[i] ); 1094 1095})( document.querySelector('.tgl-meetinglist-container'), window.jQuery ); 1096 1097(function( a,$ ){ 1098 if( !a.length || !$ ) return false; 1099 1100 var ev = function(o){ 1101 var imgs = o.querySelectorAll('.sta-slate-air_element a'); 1102 for (var i = 0; i < imgs.length; i++) { 1103 (function ( $img ) { 1104 $img 1105 .removeAttr('data-lightbox') 1106 .attr('href','') 1107 .click(function(e){
1108 e.preventDefault(); 1109 }); 1110 })( $( imgs[i] ) ); 1111 1112 } 1113 }; 1114 1115 for (var i = 0; i < a.length; i++) ev(a[i]); 1116 1117})( document.querySelectorAll('.tgl-slate-air.sta-notModal'), window.jQuery ); 1118 1119(function( o,$,h ){ 1120 if( !o || !$ || !h ) return false; 1121 1122 var awards = o.querySelector('.sta-linksfoot-air_element-awards'); 1123 1124 if( awards ){ 1125 var elems = awards.children; 1126 for (var i = 0; i < elems.length; i++) { 1127 (function( $a ){ 1128 $a.attr('href') 1129 ? h.enlace_blank( $a ) 1130 : $a.replaceWith( $('<div></div>').html( $a.html() ) ); 1131 })( $( elems[i] ) ); 1132 } 1133 }; 1134 1135 var lista = o.querySelector('.sta-linksfoot-air_list'); 1136 1137 if( lista ){ 1138 var elem = lista.children; 1139 for (var j = 0; j < elem.length; j++) 1140 h.enlace_blank( $( elem[j].querySelector('a') ) ); 1141 } 1142 1143 if( lista.children.length == 3 ) $(o).addClass('sta-children3'); 1144 1145})( document.querySelector('.tgl-linksfoot-air'), window.jQuery, window.hotusa && hotusa() ); 1146 1147(function(a, $, h) { 1148 if( !a.length || !$ || !h ) return false; 1149 1150 var $p = $(a[0]).parent(); 1151 1152 $p.attr('alertas', a.length); 1153 1154 var close = function( $o, time ){ 1155 clearTimeout(time); 1156 $o.slideUp(1e3,function() { 1157 $p.attr('alertas', parseInt($p.attr('alertas')) - 1 ) 1158 if(window.putCoverArrow) putCoverArrow(); 1159 }); 1160 }; 1161 1162 for (var i = 0; i < a.length; i++) { 1163 (function(o) { 1164 var $o = $(o), 1165 timeout = null, 1166 seconds = $o.data('seconds'), 1167 appear = $o.hasClass('sta-notAppear'), 1168 appearId = $o.data('id'); 1169 1170 if(appear && h.getSessionStorageJSON(appearId) ){ 1171 $o.hide(); 1172 return false; 1173 } 1174 1175 if( seconds && !isNaN(seconds) ) timeout = setTimeout(function(){ close( $o, timeout ) }, parseInt(seconds*1000)); 1176 1177 if( !$o.hasClass('sta-notClose') ){ 1178 $( o.querySelector('.sta-avisos-air_close') ).on('click', function(){ 1179 if(appear) h.setSessionStorageJSON(appearId,true); 1180 1181 $(this).off('click'); 1182 close( $o, timeout ); 1183 }); 1184 } 1185 1186 })(a[i]) 1187 }; 1188 1189 if(window.putCoverArrow) putCoverArrow(); 1190 1191})(document.querySelectorAll('.tgl-avisos-air'), window.jQuery, window.hotusa && hotusa()); 1192 1193(function(o,$,h,json,seo) { 1194 if( !o || !$ || !h || !json || !seo || !seo.opinions || !seo.hotel || !seo.hotel.name ) return false; 1195 1196 var cuentaAtras = function(obj,time,decimal){ 1197 decimal = !decimal ? false : true; 1198 var intervalo = 100, 1199 incr = obj.n/(time/intervalo); 1200 obj.inc = incr; 1201 var t = setInterval(function(){ 1202 obj.html.innerHTML = decimal ? obj.inc.toFixed(1) : parseInt(obj.inc); 1203 if(obj.inc > obj.n){ 1204 obj.html.innerText = obj.n; 1205 clearInterval(obj.t); 1206 } else { 1207 obj.inc += incr; 1208 }; 1209 },intervalo); 1210 obj.t = t; 1211 }, 1212 fns = [function(){ 1213 $(o).addClass('sta-active'); 1214 }], 1215 circle = $(o).hasClass('sta-circle'); 1216 1217 if( json.fondo ){ 1218 var img = new Image(), 1219 $bkc = $( o.querySelector('.sta-viewSmall-air_bck') ); 1220 1221 img.src = json.fondo; 1222 img.onload = function(){ 1223 $bkc.css('background-image',"url('"+img.src+"')") 1224 }; 1225 img.onerror = function(e){ 1226 console.trace('Error image: ',e); 1227 }; 1228 }; 1229 if( seo.opinions.nota ){ 1230 (function(note){ 1231 fns.push(function(){ 1232 cuentaAtras({html:note,n:seo.opinions.nota},3e3,true); 1233 }); 1234 if( circle ) $( o.querySelector('.sta-viewSmall-air_points .sta-viewSmall-air_circle .circle') ).attr('stroke-dasharray',seo.opinions.nota*10+', 100'); 1235 })(o.querySelector('.sta-viewSmall-air_points .sta-num')); 1236 }; 1237 if( seo.opinions.recommend ){ 1238 (function(note){ 1239 fns.push(function(){ 1240 cuentaAtras({html:note,n:seo.opinions.recommend},3e3); 1241 }); 1242 if( circle ) $( o.querySelector('.sta-viewSmall-air_recommend .sta-viewSmall-air_circle .circle') ).attr('stroke-dasharray',seo.opinions.recommend+', 100'); 1243 })(o.querySelector('.sta-viewSmall-air_recommend .sta-num')); 1244 }; 1245 if( json.logos && json.logos.length ){ 1246 var $cont = $( o.querySelector('.sta-viewSmall-air_banner') ), 1247 text = o.querySelector('.sta-viewSmall-air_puntuacion .sta-viewSmall-air_text').textContent; 1248 1249 $(o).addClass('sta-banner'); 1250 1251 for (var i = 0; i < json.logos.length; i++) { 1252 (function( obj, posi ){ 1253 var img = new Image(), 1254 $img = $('<img />',{ alt : obj.name ? obj.name : text+' - '+seo.hotel.name+' - '+(posi+1) }); 1255 1256 $cont.append( $img ); 1257 1258 img.src = obj.url; 1259 1260 img.onload = function(){
1261 $img.attr('src',this.src); 1262 }; 1263 img.onerror = function(e){ 1264 $img.remove(); 1265 console.trace('Error load image:',e); 1266 }; 1267 })( json.logos[i], i ); 1268 } 1269 } 1270 1271 h.cargaScrollAuto({obj:o,before:300,dual:true},function(){ 1272 for (var i = 0; i < fns.length; i++) fns[i](); 1273 }) 1274 1275})(document.querySelector('.tgl-viewSmall-air'), window.jQuery, window.hotusa && hotusa(), window.json_viewSmall, window.dataSeo); 1276 1277(function(o, $) { 1278 if(!o || !$) return false; 1279 1280 var rooms = o.querySelectorAll('.tgl-carousel-air'), 1281 classP = $(o).hasClass('sta-room'), 1282 roomIndi = function(r) { 1283 r.querySelector('.tgl-infopop-air').remove(); 1284 var $btn = $(r.querySelector('.sta-carousel-air_info-btn.sta-btn-moreinfo')), 1285 url = $btn.data('urlindividual'); 1286 if(url){ 1287 $btn.on('click',function() { 1288 window.location.href = url; 1289 }) 1290 } 1291 } 1292 1293 for (var i = 0; i < rooms.length; i++) { 1294 (function(room) { 1295 if( classP || $(room).hasClass('sta-room') ) roomIndi(room); 1296 })(rooms[i]); 1297 } 1298 1299})(document.querySelector('.tgl-roomslist-container'),window.jQuery); 1300 1301 1302(function( o ) { 1303 if( !o ) return false; 1304 1305 if( document.querySelector('.sta-mainDispo') ){ 1306 o.remove() 1307 return false; 1308 } 1309})( document.querySelector('.tgl-socialRedes-air') ); 1310 1311 1312// keypress enter buttons 1313(function (a, $) { 1314 if (a.length) { 1315 for (var i = 0; i < a.length; i++) { 1316 var btn = a[i]; 1317 btn.addEventListener("keyup", function (event) { 1318 if (event.keyCode === 13) { 1319 $(this).click(); 1320 } 1321 }); 1322 } 1323 }; 1324})(document.querySelectorAll('[tabindex="0"]'), jQuery); 1325 1326// load js file 1327function loadScript(url, callback) { 1328 hotusa().cargarFicheroJS(url,callback); 1329 // var script = document.createElement('script'); 1330 // script.onload = function () { 1331 // callback(); 1332 // }; 1333 // script.src = url; 1334 // document.head.appendChild(script); 1335}; 1336 1337// load css file 1338function loadStyle(url) { 1339 var link = document.createElement("link"); 1340 link.href = url; 1341 link.type = "text/css"; 1342 link.rel = "stylesheet"; 1343 link.media = "screen,print"; 1344 document.getElementsByTagName("head")[0].appendChild(link); 1345} 1346 1347function isElementIntoView(el, offset = 0) { 1348 return el.getBoundingClientRect().top - offset < window.innerHeight; 1349} 1350 1351$(document).ready(function () { 1352 // function ladyload images 1353 var load_imgs = (function(){ 1354 var alt = window.dataSeo && dataSeo.hotel && dataSeo.hotel.name && dataSeo.hotel.name.trim() ? dataSeo.hotel.name.trim() + ' - ' : 'Gallery - ', 1355 n = 1, 1356 firstImg = false, 1357 fn = function(object){ 1358 for (var i = 0; i < object.length; i++) { 1359 var element = object[i], 1360 image = element.dataset.lazyimg, 1361 visibility = element.offsetWidth > 0 || element.offsetHeight > 0; 1362 1363 if (image && isElementIntoView(element, 300) && visibility) { 1364 if (element.tagName == 'IMG') { 1365 element.setAttribute('src', image); 1366 } else { 1367 $(element) 1368 .css('background-image','url("' + image + '")') 1369 .append( $('<img />',{src:image, class:"imgOcultaAda",alt:alt + n}) ); 1370 n++; 1371 } 1372 //remove in array 1373 element.removeAttribute('data-lazyimg'); 1374 } 1375 } 1376 } 1377 return fn; 1378 })(); 1379 1380 //header motor 1381 (function ( o,m,hide,$ ) { 1382 if( !o || !$ ) return false; 1383 1384 if( !m || hide ){ 1385 $(o).addClass('sta-motorRedirect'); 1386 } else { 1387 $(o).addClass('sta-motorScroll'); 1388 var btns = o.querySelectorAll('.sta-menus-air_nav-action .sta-scroll-book,.sta-menus-air_nav-action-aside .sta-scroll-book'), 1389 $scroll = $(btns[0]).data('scroll_to') && document.querySelector($(btns[0]).data('scroll_to')) ? $(document.querySelector($(btns[0]).data('scroll_to'))) : false, 1390 spacer = $(btns[0]).data('scroll_spacer') ? $(btns[0]).data('scroll_spacer') : 0; 1391 1392 $(btns).click(function () { 1393 if( !$('#default_sygy_element_engine>div>div').length ){ 1394 //version mobile 1395 window.document.dispatchEvent(new CustomEvent('showModalEngine')); 1396 } else { 1397 if( $scroll ){ 1398 $('body').removeClass('noscroll'); 1399 $('.tgl-internbar-air.sta-show-responsive.fn-open').removeClass('fn-open'); 1400 hotusa().scrollTo( $scroll, { 'height': spacer }); 1401 }; 1402 }; 1403 }) 1404 } 1405 1406 1407 1408 })( document.querySelector('.tgl-menus-air'), document.querySelector('#default_sygy_element_engine'), document.querySelector('.tgl-cover-
1408air.sta-hide-engine'), window.jQuery ); 1409 1410 // function check menu white 1411 (function (o, a, $) { 1412 if (o && a) { 1413 function check_white() { 1414 var space = 40, 1415 window_position = document.documentElement.scrollTop || document.body.scrollTop; 1416 if (window.innerWidth >= 1280) { 1417 if (window_position >= space) { 1418 o.classList.remove('sta-menu-white'); 1419 } else { 1420 o.classList.add('sta-menu-white'); 1421 } 1422 } 1423 }; 1424 1425 check_white(); 1426 //scroll event 1427 window.addEventListener('scroll', function () { 1428 check_white(); 1429 }); 1430 } else if (document.querySelector('.tgl-menus-air') && document.querySelector('.tgl-menus-air').classList.contains('sta-menu-white')) { 1431 document.querySelector('.tgl-menus-air').classList.remove('sta-menu-white'); 1432 } 1433 })(document.querySelector('.tgl-menus-air.sta-menu-white'), document.querySelector('.tgl-cover-air'), jQuery); 1434 1435 // function check internbar white 1436 (function (o, a, $) { 1437 if (o && a) { 1438 function check_white() { 1439 var space = 40, 1440 window_position = document.documentElement.scrollTop || document.body.scrollTop; 1441 if (window.innerWidth >= 1280) { 1442 if (window_position >= space) { 1443 o.classList.remove('sta-internbar-white'); 1444 } else { 1445 o.classList.add('sta-internbar-white'); 1446 } 1447 } 1448 }; 1449 1450 check_white(); 1451 //scroll event 1452 window.addEventListener('scroll', function () { 1453 check_white(); 1454 }); 1455 } else if (o && !a) { 1456 if (document.querySelector('.tgl-internbar-air').classList.contains('sta-internbar-white')) { 1457 document.querySelector('.tgl-internbar-air').classList.remove('sta-internbar-white'); 1458 } 1459 } 1460 })(document.querySelector('.tgl-internbar-air.sta-internbar-white'), document.querySelector('.tgl-cover-
1460air'), jQuery); 1461 1462 // function check menu logo between links 1463 (function (o, $) { 1464 if (o) { 1465 var counter = o.querySelectorAll('.sta-main-links > .sta-menus-air_links-wrapper > .sta-menus-air_links-element').length, 1466 img2 = o.querySelector('.sta-menus-air_nav-logo .sta-menus-air_logo-img.sta-simple').src, 1467 img = $('.tgl-cover-air').length ? o.querySelector('.sta-menus-air_nav-logo .sta-menus-air_logo-img.sta-white').src : img2, 1468 selector_count = Math.round(counter / 2), 1469 intersection = document.querySelector(".sta-main-links > .sta-menus-air_links-wrapper > .sta-menus-air_links-element:nth-child(" + selector_count + ")"), 1470 logo_checker = true, 1471 url = $(o.querySelector('.sta-menus-air_nav-logo .sta-menus-air_logo-img.sta-white')).parent().attr('href'), 1472 $li = $("<li class='sta-menus-air_links-element fn-logo'><a href='"+url+"' class='sta-menus-air_links-element-wrapper' tabindex='0'></a></li>"), 1473 $figure = $("<figure class='sta-menus-air_links-element-logo'></figure>"); 1474 function check_between() { 1475 if (window.innerWidth >= 1280 && logo_checker === true) { 1476 $('a',$li).append( $figure.css('background-image','url("'+img+'")') ); 1477 $li.insertAfter(intersection); 1478 logo_checker = false; 1479 } 1480 } 1481 check_between(); 1482 //scroll event 1483 window.addEventListener('scroll', function () { 1484 check_between(); 1485 !window.scrollY 1486 ? $figure.css('background-image','url("'+img+'")') 1487 : $figure.css('background-image','url("'+img2+'")'); 1488 }); 1489 //resize event 1490 window.addEventListener('resize', function () { 1491 check_between(); 1492 }); 1493 } 1494 })(document.querySelector('.tgl-menus-air.sta-logo-between_links.sta-show-links.sta-logo-off.sta-book-aside'), jQuery); 1495 1496 // function check menu links 1497 (function (o, $) { 1498 if (o) { 1499 var selector = o.querySelector('.sta-menus-air_nav-links.sta-main-links'), 1500 links_width = 0, logo_space = 0, btns_space = 0, call_space = 0, imgsCarga = false; 1501 if(!selector) return; 1502 function check_width() { 1503 if (window.innerWidth >= 1280) { 1504 1505 if (document.querySelector('.sta-menus-air_nav-logo')) { 1506 logo_space = document.querySelector('.sta-menus-air_nav-logo').offsetWidth; 1507 document.querySelectorAll('.sta-menus-air_nav-logo img')[0].onload = check_width; 1508 document.querySelectorAll('.sta-menus-air_nav-logo img')[1].onload = check_width; 1509 } else { 1510 logo_space = 0 1511 } 1512 if (document.querySelector('.sta-menus-air_nav-morebtns')) { btns_space = document.querySelector('.sta-menus-air_nav-morebtns').offsetWidth } else { btns_space = 0 } 1513 if (document.querySelector('.sta-menus-air_nav-action')) { call_space = document.querySelector('.sta-menus-air_nav-action').offsetWidth } else { call_space = 0 } 1514 1515 if (o.classList.contains('sta-show-links') && !selector.classList.contains('fn-open')) { 1516 links_width = selector.offsetWidth; 1517 } 1518 1519 var elements_space = logo_space + btns_space + call_space, 1520 max_width = window.innerWidth - elements_space; 1521 1522 if (links_width > max_width) { 1523 o.classList.remove('sta-show-links'); 1524 } else { 1525 o.classList.add('sta-show-links'); 1526 document.querySelector('body').classList.remove('noscroll'); 1527 } 1528 } 1529 } 1530 check_width(); 1531 //scroll event 1532 window.addEventListener('scroll', function () { 1533 check_width(); 1534 }); 1535 //resize event 1536 window.addEventListener('resize', function () { 1537 check_width(); 1538 }); 1539 } 1540 })(document.querySelector('.tgl-menus-air.sta-show-links'), jQuery); 1541 1542 // function check menu btn book 1543 (function (o, a, $) { 1544 if (o && a) { 1545 function check_btn() { 1546 var space = $(a).offset().top + $(a).height() - 80; 1547 1548 window.scrollY >= space 1549 ? o.classList.add('fn-show-book') 1550 : o.classList.remove('fn-show-book'); 1551 }; 1552 1553 check_btn(); 1554 window.addEventListener('scroll', function () { 1555 check_btn(); 1556 }); 1557 } 1558 })(document.querySelector('.tgl-menus-air.sta-book-fixed'), document.querySelector('#default_sygy_element_engine'), jQuery); 1559 1560 // function check menu logo 1561 (function (o, a, $) { 1562 if (o && a) { 1563 function check_logo() { 1564 var space = a.offsetHeight - 80, 1565 window_position = document.documentElement.scrollTop || document.body.scrollTop; 1566 if (window.innerWidth >= 1280) { 1567 if (window_position >= space) { 1568 o.classList.add('fn-show-logo'); 1569 } else { 1570 o.classList.remove('fn-show-logo'); 1571 } 1572 } 1573 }; 1574 1575 check_logo(); 1576 //scroll event 1577 window.addEventListener('scroll', function () { 1578 check_logo(); 1579 }); 1580 } 1581 })(document.querySelector('.tgl-menus-air.sta-logo-off'), document.querySelector('.tgl-cover-
1581air'), jQuery); 1582 1583 // function toggle menus 1584 (function (a, $) { 1585 if (a.length) { 1586 var header = document.querySelector('.tgl-menus-air'); 1587 for (var i = 0; i < a.length; i++) { 1588 var parent = a[i]; 1589 parent.onclick = function () { 1590 // variables 1591 var menu_name = parent.dataset.toggle_menu, 1592 menu_selector = document.querySelector(menu_name); 1593 1594 if (menu_selector.classList.contains('fn-open')) { 1595 document.querySelector('body').classList.remove('noscroll'); 1596 menu_selector.classList.remove('fn-open'); 1597 parent.classList.remove('fn-close'); 1598 header.classList.remove('sta-openMenu'); 1599 $('.js-toggle-submenu').children('.sta-menus-air_nav-links').removeClass('fn-open'); 1600 setTimeout(function () { 1601 window.dispatchEvent(new Event('scroll')); 1602 }, 20); 1603 } else { 1604 if( !($(header).hasClass('sta-menuDesplegable') && $(header).hasClass('sta-show-links')) ){ 1605 document.querySelector('body').classList.add('noscroll'); 1606 }else{ 1607 if(window.innerWidth <= 1280 ) document.querySelector('body').classList.add('noscroll'); 1608 } 1609 menu_selector.classList.add('fn-open'); 1610 parent.classList.add('fn-close'); 1611 header.classList.add('sta-openMenu'); 1612 var inp = document.querySelector(".sta-menus-air_nav-morebtns-element.sta-lang input"); 1613 if( inp ) inp.checked = false; 1614 if (window.innerWidth >= 1280 && document.querySelector('.tgl-menus-air.sta-menu-white')) { 1615 document.querySelector('.tgl-menus-air.sta-menu-white').classList.remove('sta-menu-white'); 1616 } 1617 if (window.innerWidth >= 1280 && document.querySelector('.sta-menus-air_photo-img.sta-main-placeholder')) { 1618 var placeholder = document.querySelector('.sta-menus-air_photo-img.sta-main-placeholder').dataset.placeholder; 1619 document.querySelector('.sta-menus-air_photo-img.sta-main-placeholder').style.backgroundImage = "url('" + placeholder + "')"; 1620 document.querySelector('.sta-menus-air_photo-img.sta-main-placeholder img').src = placeholder; 1621 } 1622 } 1623 }; 1624 } 1625 } 1626 })(document.querySelectorAll('.js-toggle-menu'), jQuery); 1627 1628 // function toggle submenus 1629 (function (a, $) { 1630 if (a.length) { 1631 var header = document.querySelector('.tgl-menus-air'); 1632 for (var i = 0; i < a.length; i++) { 1633 var parent = a[i].querySelector('.sta-menus-air_links-element-wrapper'); 1634 parent.removeAttribute("href"); 1635 parent.onclick = function () { 1636 1637 // variables 1638 var menu_selector = $(this).siblings('.sta-menus-air_nav-links'); 1639 if (menu_selector.hasClass('fn-open')) { 1640 document.querySelector('body').classList.remove('noscroll'); 1641 menu_selector.removeClass('fn-open'); 1642 parent.classList.remove('fn-close'); 1643 setTimeout(function () { 1644 window.dispatchEvent(new Event('scroll')); 1645 }, 20); 1646 } else { 1647 $('.sta-menus-air_nav-links.sta-submenu.fn-open').removeClass('fn-open'); 1648 if( !($(header).hasClass('sta-menuDesplegable') && $(header).hasClass('sta-show-links')) ){ 1649 document.querySelector('body').classList.add('noscroll'); 1650 } 1651 menu_selector.addClass('fn-open'); 1652 document.querySelector(".sta-menus-air_nav-morebtns-element.sta-lang input").checked = false; 1653 if (window.innerWidth >= 1280 && document.querySelector('.tgl-menus-air.sta-menu-white')) { 1654 document.querySelector('.tgl-menus-air.sta-menu-white').classList.remove('sta-menu-white'); 1655 } 1656 if (window.innerWidth >= 1280 && document.querySelector('.sta-menus-air_photo-img')) { 1657 var placeholder = document.querySelector('.sta-menus-air_photo-img').dataset.placeholder; 1658 document.querySelector('.sta-menus-air_photo-img').style.backgroundImage = "url('" + placeholder + "')"; 1659 document.querySelector('.sta-menus-air_photo-img img').src = placeholder; 1660 } 1661 } 1662 }; 1663 } 1664 $('.js-close-submenu').click(function () { 1665 $('.sta-menus-air_nav-links.sta-submenu').removeClass('fn-open'); 1666 if ($(this).hasClass('sta-menus-air_nav-links-close')) { 1667 $('.sta-menus-air_nav-links.sta-main-links').removeClass('fn-open'); 1668 $('.sta-menus-air_nav-btns-element.js-toggle-menu').removeClass('fn-close'); 1669 document.querySelector('body').classList.remove('noscroll'); 1670 setTimeout(function () { 1671 window.dispatchEvent(new Event('scroll')); 1672 }, 20); 1673 } 1674 if (window.innerWidth >= 1280 && document.querySelector('.tgl-menus-air.sta-show-links')) { 1675 document.querySelector('body').classList.remove('noscroll'); 1676 setTimeout(function () { 1677 window.dispatchEvent(new Event('scroll')); 1678 }, 20); 1679 } 1680 }); 1681 } 1682 })(document.querySelectorAll('.sta-menus-air_links-element.no_link'), jQuery); 1683 1684 // function toggle subbars 1685 (function (o, $) { 1686 if (o) { 1687 if (window.innerWidth <= 1024) { 1688 document.querySelector('body').classList.add('bar-spacer'); 1689 } 1690 1691 var btn = o.querySelector('.sta-internbar-air_links-btn'), 1692 closer = o.querySelector('.sta-internbar-air_links-close'); 1693 1694 //$( o.querySelector('.sta-internbar-air_links') ).css('padding-left',$( o.querySelector('.sta-internbar-air_header .sta-internbar-air_header-title') ).innerWidth()+40); 1695 1696 btn.onclick = function () { 1697 document.querySelector('body').classList.add('noscroll'); 1698 o.classList.add('fn-open'); 1699 } 1700 closer.onclick = function () { 1701 document.querySelector('body').classList.remove('noscroll'); 1702 o.classList.remove('fn-open'); 1703 } 1704 1705 window.addEventListener('resize', function () { 1706 if (window.innerWidth <= 1024) { 1707 document.querySelector('body').classList.remove('noscroll'); 1708 o.classList.remove('fn-open'); 1709 } 1710 }) 1711 } 1712 })(document.querySelector('.tgl-internbar-air.sta-show-responsive'), jQuery); 1713 1714 // function placeholders menus 1715 (function (a, $) { 1716 if (a.length) { 1717 var placeholder = $(a).parent().siblings('.sta-placeholder').children('.sta-placeholder-img'), 1718 placeholderAda = $(a).parent().siblings('.sta-placeholder').children('.sta-placeholder-img img'); 1719 for (var i = 0; i < a.length; i++) { 1720 var parent = a[i]; 1721 1722 parent.addEventListener("mouseenter", function () { 1723 var placeholder_img = this.dataset.placeholder_img; 1724 if (window.innerWidth >= 1280) { 1725 placeholder.attr("style", "background-image:url('" + placeholder_img + "')") 1726 placeholderAda.attr('src',placeholder_img); 1727 } 1728 }); 1729 parent.addEventListener("mouseleave", function () { 1730 var placeholder_img = placeholder.attr('data-placeholder'); 1731 if (window.innerWidth >= 1280) { 1732 placeholder.attr("style", "background-image:url('" + placeholder_img + "')") 1733 placeholderAda.attr('src',placeholder_img); 1734 } 1735 }); 1736 1737 } 1738 }; 1739 })(document.querySelectorAll('.js-menu-placeholder'), jQuery); 1740 1741 (function (a, $) { 1742 if (a.length) { 1743 load_imgs( a ); 1744 }; 1745 })(document.querySelectorAll('[data-lazyimg]'), jQuery); 1746 // function ladyload images onscroll 1747 window.addEventListener('scroll', function () { 1748 (function (a, $) { 1749 if (a.length) { 1750 var object = $(a); 1751 load_imgs(object); 1752 }; 1753 })(document.querySelectorAll('[data-lazyimg]'), jQuery); 1754 }); 1755 // function ladyload images onresize 1756 window.addEventListener('resize', function () { 1757 (function (a, $) { 1758 if (a.length) { 1759 var object = $(a); 1760 load_imgs(object); 1761 }; 1762 })(document.querySelectorAll('[data-lazyimg]'), jQuery); 1763 }); 1764 1765 // function unique icons 1766 (function (o, $) { 1767 if (o) { 1768 // variables
1769 var $o = $(o), 1770 load_check = false; 1771 1772 // load and check 1773 function load_font() { 1774 if (!load_check) { 1775 loadStyle("static/fonts/features/style.css"); 1776 load_check = true; 1777 }; 1778 } 1779 1780 if (isElementIntoView($o[0], 300)) { 1781 load_font(); 1782 }; 1783 1784 //scroll event 1785 window.addEventListener('scroll', function () { 1786 if (isElementIntoView($o[0], 300)) { 1787 load_font(); 1788 }; 1789 }); 1790 } 1791 })(document.querySelector('._js-load-moreicons'), jQuery); 1792 1793 // function modular sliders 1794 (function (a, $) { 1795 if (a.length) { 1796 1797 //load sliders files 1798 var files_checker = true; 1799 function load_files() { 1800 if (files_checker) { 1801 loadScript("/templates/cadenas/air/js/libraries/slick.min.js", load_slider); 1802 loadStyle("/templates/cadenas/air/css/libraries/slick.min.css"); 1803 files_checker = false; 1804 } 1805 } 1806 if (isElementIntoView(a[0], 300)) { 1807 load_files(); 1808 } 1809 //scroll event 1810 window.addEventListener('scroll', function () { 1811 if (isElementIntoView(a[0], 300)) { 1812 load_files(); 1813 } 1814 }); 1815 1816 // load modules slider 1817 function load_slider() { 1818 for (var i = 0; i < a.length; i++) { 1819 1820 (function (parent) { 1821 // variables 1822 var slider_name = parent.dataset.slider_name, 1823 slider_showbtns = parent.dataset.slider_showbtns === 'true', 1824 slider_showdots = parent.dataset.slider_showdots === 'true', 1825 response_btn_dots = parent.dataset.response_btn_dots === "true", 1826 slider_autoplay_speed = parent.dataset.slider_autoplay_speed && parent.dataset.slider_autoplay_speed.trim() && !isNaN(parent.dataset.slider_autoplay_speed) ? parseInt(parent.dataset.slider_autoplay_speed) : 5000, 1827 slider_btns = parent.dataset.slider_btns, 1828 slider_fade = parent.dataset.slider_fade === 'true', 1829 slider_autoplay = parent.dataset.slider_autoplay === 'true', 1830 slider_infinite = parent.dataset.slider_infinite === 'false' ? false : true, 1831 slider_pc = parent.dataset.slides_pc, 1832 slider_tablet = parent.dataset.slides_tablet, 1833 slider_mobile = parent.dataset.slides_mobile, 1834 slider_rows = parent.dataset.slides_rows, 1835 slider_selector = parent.querySelector('.' + slider_name), 1836 arrayResponse = [ 1837 { 1838 breakpoint: 1280, 1839 settings: { 1840 slidesToShow: slider_pc, 1841 } 1842 }, 1843 { 1844 breakpoint: 768, 1845 settings: { 1846 slidesToShow: slider_tablet, 1847 } 1848 }, 1849 ]; 1850 1851 if( !slider_selector ) return false; 1852 1853 if( slider_selector.childElementCount < 2 ){ 1854 slider_showdots = false; 1855 slider_showbtns = false; 1856 response_btn_dots = false; 1857 }; 1858 1859 if( response_btn_dots ){ 1860 slider_showdots = true; 1861 slider_showbtns = false; 1862 arrayResponse.push({ 1863 breakpoint: 1280, 1864 settings: { 1865 dots: false, 1866 arrows : true 1867 } 1868 }); 1869 }; 1870 1871 hotusa().cargaScrollAuto({obj:parent,dual:true},function () { 1872 //init slider 1873 $(slider_selector).slick({ 1874 dots: slider_showdots, 1875 arrows: slider_showbtns, 1876 prevArrow: "<div class='sta-btn-circle " + slider_btns + " slick-btn slick-prev' role='button' aria-label='left' tabindex='0'><i class='sta-btn-circle_icon icon-pointer-left'></i></div>", 1877 nextArrow: "<div class='sta-btn-circle " + slider_btns + " slick-btn slick-next' role='button' aria-label='right' tabindex='0'><i class='sta-btn-circle_icon icon-pointer-right'></i></div>", 1878 infinite: slider_infinite, 1879 useTransform: true, 1880 fade: slider_fade, 1881 cssEase: 'cubic-bezier(0.785, 0.135, 0.15, 0.86)', 1882 speed: 750, 1883 slidesToShow: slider_mobile, 1884 slidesToScroll: 1, 1885 rows: slider_rows, 1886 autoplay: slider_autoplay, 1887 autoplaySpeed: slider_autoplay_speed, 1888 swipeToSlide: true, 1889 mobileFirst: true, 1890 responsive: arrayResponse 1891 }); 1892 }); 1893 1894 })( a[i] ); 1895 1896 }; 1897 }; 1898 }; 1899 })(document.querySelectorAll('.js-active-slider'), jQuery); 1900 1901 // function modular lightbox 1902 (function (a, $) { 1903 if (a.length) { 1904 //load sliders files 1905 var files_checker = true; 1906 function load_files() { 1907 if (files_checker) { 1908 loadScript("/templates/cadenas/air/js/libraries/lightbox.min.js", function () { return false }); 1909 loadStyle("/templates/cadenas/air/css/libraries/lightbox.min.css"); 1910 files_checker = false; 1911 } 1912 } 1913 if (isElementIntoView(a[0], 300)) { 1914 load_files(); 1915 } 1916 //scroll event 1917 window.addEventListener('scroll', function () { 1918 if (isElementIntoView(a[0], 300)) { 1919 load_files(); 1920 } 1921 }); 1922 1923 for (var i = 0; i < a.length; i++) { 1924 a[i].onclick = function () { 1925 setTimeout(function () { 1926 var resizeEvent = window.document.createEvent('UIEvents'); 1927 resizeEvent.initUIEvent('resize', true, false, window, 0); 1928 window.dispatchEvent(resizeEvent); 1929 }, 10); 1930 }; 1931 } 1932 }; 1933 })(document.querySelectorAll('a[data-lightbox]'), jQuery); 1934 1935 // function modular features dropdown 1936 (function (a, $) { 1937 if (a.length) { 1938 1939 var ocultBtn = function ( $ext, $inter ) { 1940 return $inter.height() <= $ext.height(); 1941 }; 1942 1943 for (var i = 0; i < a.length; i++) { 1944 (function(o){ 1945 var n = o.querySelector('.sta-features-air_list').childElementCount, 1946 $o = $(o); 1947 1948 $o.addClass('less3_'+ n%3 ); 1949 1950 if( !$o.hasClass('sta-features-highlights') ) $o.addClass('less4_'+ n%4); 1951 1952 if($o.hasClass('sta-open')){ 1953 return true; 1954 } 1955 1956 if( ocultBtn($( o.querySelector('.sta-features-air_listMax')), $(o.querySelector('.sta-features-air_list')) ) ){ 1957 o.classList.add('sta-notBtn'); 1958 } else { 1959 $( o.querySelector('.sta-features-air_btns-element') ).click(function () { 1960 setTimeout(function () { 1961 $("body,html").animate({ 1962 scrollTop: o.offset().top 1963 }, 0); 1964 }, 10); 1965 }); 1966 }; 1967 1968 })( a[i] ); 1969 }; 1970 1971 }; 1972 })(document.querySelectorAll('.tgl-features-air'), jQuery); 1973 // function modular scroll events 1974 (function (a, $) { 1975 if (a.length) { 1976 for (var i = 0; i < a.length; i++) { 1977 var parent = a[i]; 1978 1979 parent.addEventListener("click", function () { 1980 var current_element = this, 1981 point = current_element.dataset.scroll_to, 1982 spacer = current_element.dataset.scroll_spacer; 1983 $('body').removeClass('noscroll'); 1984 $('.tgl-internbar-air.sta-show-responsive.fn-open').removeClass('fn-open'); 1985 hotusa().scrollTo($(point), { 'height': spacer }); 1986 }); 1987 } 1988 1989 }; 1990 })(document.querySelectorAll('.js-scrollto'), jQuery); 1991 1992 // function unique fixed gallery 1993 (function (a, $) { 1994 if ( !a.length ) return false; 1995 1996 var calc_gallery = function(o,_o){ 1997 // var window_position = (document.documentElement.scrollTop || document.body.scrollTop) + window.innerHeight, 1998 // content_height = document.querySelector('.tgl-cardpage-air'), 1999 // gallery_positionTop = content_height.offsetTop, 2000 // gallery_position = content_height.offsetTop + content_height.offsetHeight, 2001 // gallery_contentTop = content_height.offsetTop; 2002 2003 var _s = _o.offset().top; 2004 2005 if( _s >= hotusa().getScrollTop() ){ 2006 //top 2007 o.classList.add('fn-stopStart'); 2008 o.classList.remove('fn-stop'); 2009 2010 } else if( _s + _o.innerHeight() <= hotusa().getScrollTop() + hotusa().getWindowHeight() ) { 2011 //bottom 2012 o.classList.add('fn-stop'); 2013 o.classList.remove('fn-stopStart'); 2014 } else { 2015 //center 2016 o.classList.remove('fn-stop','fn-stopStart'); 2017 }; 2018 }, 2019 ev = function(o){ 2020 var $fatherModule = $(o).parent(); 2021 2022 calc_gallery(o,$fatherModule); 2023 2024 $(window).scroll(function () { 2025 calc_gallery(o,$fatherModule); 2026 }); 2027 }; 2028 2029 for (var i = 0; i < a.length; i++) ev( a[i] ); 2030 2031 })(document.querySelectorAll('.sta-cardpage-air_multimedia'), jQuery); 2032 2033 setTimeout(function () { 2034 $('.tgl-menus-air').css('opacity', '1'); 2035 $('.tgl-internbar-air').css('opacity', '1'); 2036 }, 1000); 2037 // Document ready END 2038}); 2039 2040$(window).load(function () { 2041 2042 // function first motor click 2043 (function (o, $) { 2044 if (o) { 2045 var checker = true; 2046 o.addEventListener('click', function () { 2047 if (checker) { 2048 var spacer = (window.innerHeight - 80) / 2; 2049 hotusa().scrollTo(o, { 'height': spacer }); 2050 checker = false; 2051 } else { 2052 return false; 2053 } 2054 }); 2055 }; 2056 })(document.querySelector('.sta-cover-air_engine'), jQuery); 2057 2058 // function modular info popup 2059 (function (a, $) { 2060 if (a.length) { 2061 for (var i = 0; i < a.length; i++) { 2062 (function(mod){ 2063 mod.style.display = 'block'; 2064 $( mod.previousElementSibling ).click(function () { 2065 $(mod.querySelector('.sta-infopop-air_services')).resize(); 2066 setTimeout(function(){ 2067 mod.classList.add('fn-open'); 2068 },250); 2069 }); 2070 2071 var $next = $(mod.previousElementSibling); 2072 2073 if( $next.hasClass('sta-popoffer-air_gadget hotels') ){
2074 var avisos = document.querySelectorAll('.tgl-avisos-air'); 2075 2076 $next.click(function () { 2077 var $obj = $(mod); 2078 $obj.addClass('fn-open'); 2079 $( mod.querySelectorAll('.sta-infopop-air_backmask, .sta-infopop-air_close') ).click(function () { 2080 $obj.removeClass('fn-open'); 2081 }); 2082 }); 2083 2084 var $devices = $( document.querySelector('.tgl-devicesheader-air') ), 2085 avisosElem = document.querySelectorAll('.tgl-globalAlertas-air .tgl-avisos-air'), 2086 $headerP = $(document.querySelector('.tgl-menus-air')), 2087 $header = $($headerP[0].querySelector('.sta-menus-air_nav')), 2088 $interbar = $(document.querySelector('.tgl-internbar-air')), 2089 $imgLogo = $(document.querySelector('.tgl-cover-air .sta-cover-air_logo')), 2090 $imgLogoWhite = $(document.querySelector('.sta-menus-air_logo-img.sta-white')), 2091 $noLogo = $(document.querySelector('.tgl-cover-air.sta-devices-hide>div:not(.sta-cover-air_engine)')); 2092 2093 $(window).ready(function(){ 2094 var height = (function(){ 2095 var _height = 0; 2096 for( var i = 0; i < avisosElem.length; i++ ){ 2097 (function( av ){ 2098 if( $(av).css('display') !== 'none' ){ 2099 var heigIndi = $(av).outerHeight(); 2100 _height += heigIndi; 2101 av.querySelector('.sta-avisos-air_closeBtn').addEventListener('change',function(){ 2102 if( !this.checked ) return false; 2103 alturaAll -= heigIndi; 2104 avisos -= heigIndi; 2105 }, false); 2106 }; 2107 })( avisosElem[i] ); 2108 } 2109 return _height; 2110 })(), 2111 avisos = height, 2112 alturaAll = avisos, 2113 altura2 = 0; 2114 if( window.innerWidth < 1024 ){ 2115 //title superior mobile 2116 if( $devices.length ) alturaAll += $devices.outerHeight(); 2117 2118 $(window).scroll(function(){ 2119 $(window).scrollTop() < alturaAll 2120 ? $next.addClass('sta-absolute').css('top',alturaAll +'px') 2121 : $next.removeClass('sta-absolute').css('top',0); 2122 }); 2123 } else { 2124 //header 2125 if( $header.length ) alturaAll += $header.outerHeight(); 2126 //listado habitaciones 2127 if( $interbar.length ) alturaAll += $interbar.outerHeight(); 2128 altura2 = alturaAll - avisos; 2129 $(window).scroll(function(){ 2130 $(window).scrollTop() < avisos 2131 ? $next.css('top',alturaAll+'px') 2132 : $next.css('top',altura2 +'px'); 2133 if( avisos != 0 ){ 2134 $(window).scrollTop() < avisos 2135 ? $next.addClass('sta-absolute') 2136 : $next.removeClass('sta-absolute'); 2137 } 2138 }); 2139 } 2140 }); 2141 2142 } 2143 })(a[i]); 2144 } 2145 2146 $( document.querySelectorAll('.js-close-infopopup') ).click(function () { 2147 $('.tgl-infopop-air').removeClass('fn-open'); 2148 }); 2149 }; 2150 })(document.querySelectorAll('.tgl-infopop-air'), jQuery); 2151 2152 // function modular info dropdowns 2153 (function (a, $) { 2154 if (a.length) { 2155 for (var i = 0; i < a.length; i++) { 2156 var module = a[i]; 2157 2158 var opener = module.querySelector('.sta-cardpage-air_dropdowns-header'); 2159 opener.addEventListener("click", function () { 2160 var btn = this; 2161 var dropdown = btn.parentNode; 2162 2163 if (dropdown.classList.contains('fn-open')) { 2164 dropdown.classList.remove('fn-open'); 2165 } else { 2166 $('.sta-cardpage-air_dropdowns-element').removeClass('fn-open'); 2167 dropdown.classList.add('fn-open'); 2168 } 2169 }); 2170 } 2171 }; 2172 })(document.querySelectorAll('.sta-cardpage-air_dropdowns-element'), jQuery); 2173 2174 // function unique cookies popup 2175 (function (o, $) { 2176 if (o) { 2177 o.style.display = 'block'; 2178 setTimeout(function () { 2179 o.classList.add('fn-open'); 2180 }, 50); 2181 2182 var closer = document.querySelector('.js-accept-cookies'); 2183 closer.onclick = function () { 2184 o.classList.remove('fn-open'); 2185 } 2186 }; 2187 })(document.querySelector('._tgl-cookies-air'), jQuery); 2188 2189 if (!window.location.hash && !window.location.href.includes("scroll=")) { 2190 window.scrollTo(0, 1); 2191 window.scrollTo(0, 0); 2192 } 2193 $('.tgl-menus-air').css('opacity', '1'); 2194 $('.tgl-internbar-air').css('opacity', '1'); 2195 // Window load END 2196}); 2197 2198 2199//carga de opiniones 2200(function( lista, footer, id, $, h ){ 2201 if( !lista || !footer || !id || !$ || !h ) return false; 2202 2203 var combinarDatos = function( _json ){ 2204 var _jsonTemp = _json, 2205 keys = _.keys(_json); 2206 2207 //combinamos 2208 for (var i = 0; i < keys.length; i++) { 2209 2210 if( jsonGeneral[ keys[i] ].totalOpiniones > 0 && _jsonTemp[ keys[i] ].opiniones && _jsonTemp[ keys[i] ].opiniones.length ){ 2211 jsonGeneral[ keys[i] ].opiniones = jsonGeneral[ keys[i] ].opiniones.concat( _jsonTemp[ keys[i] ].opiniones ); 2212 jsonGeneral.all.opiniones = jsonGeneral.all.opiniones.concat( _jsonTemp[ keys[i] ].opiniones ); 2213 }; 2214 jsonGeneral[ keys[i] ].loadNextPage = _jsonTemp[ keys[i] ].loadNextPage; 2215 if( jsonGeneral[ keys[i] ].loadNextPage ) jsonGeneral.all.loadNextPage = true; 2216 2217 }; 2218 2219 $paginacionMod.removeClass('sta-loading'); 2220 2221 cargarOpiniones(); 2222 }, 2223 cargamosMore = function(){ 2224 if( cargados < jsonGeneral[idioma_select].opiniones.length ){ 2225 //faltan por cargar 2226 cargarOpiniones(); 2227 } else if( cargados >= jsonGeneral[idioma_select].opiniones.length && jsonGeneral[idioma_select].loadNextPage ){ 2228 paginacionRuta++; 2229 $paginacionMod.addClass('sta-loading').addClass('sta-hide'); 2230 paginacionActive = false; 2231 2232 h.cargarJSON(ruta(),combinarDatos); 2233 }; 2234 }, 2235 dobleCero = function(num){ 2236 var tam = num.toString().length; 2237 if( tam < 2 ) num = '0'+num; 2238 return num; 2239 }, 2240 crearHtml = function( obj ){ 2241 var $html = $backup.clone(); 2242 2243 $( $html[0].querySelector(".tgl-reviews-air_list-element-header .tgl-reviews-air_element-header-name") ).text( obj.persona ); 2244 if( obj.lugar ) $( $html[0].querySelector(".tgl-reviews-air_list-element-header .tgl-reviews-air_element-header-name") ).append( "<small>|</small>" + obj.lugar ); 2245 2246 var fecha = new Date( obj.fecha ); 2247 $( $html[0].querySelector(".tgl-reviews-air_list-element-header .tgl-reviews-air_element-header-date") ).text( dobleCero( fecha.getDate() ) + '/' + dobleCero( fecha.getMonth()+1 ) + '/' + fecha.getFullYear() ); 2248 2249 var $tool = $($html[0].querySelector(".tgl-reviews-air_list-element-specs")), 2250 lis = _.keys( obj.nota_servi ); 2251 for (var i = 0; i < lis.length; i++){ 2252 (function(li){ 2253 if( obj.nota_servi[li] !== null ){ 2254 $( $html[0].querySelector(".tgl-reviews-air_list-element-specs") ) 2255 .append( $("<div></div>",{class:'tgl-reviews-air_element-specs-point'}) 2256 .append( $("<p></p>",{class:'tgl-reviews-air_specs-point-text'}).text( li ) ) 2257 .append( $("<span></span>",{class:"tgl-reviews-air_specs-point-number"}).text( obj.nota_servi[li]+"/10" ) ) 2258 ); 2259 }; 2260 })(lis[i]); 2261 }; 2262 2263 $( $html[0].querySelector(".tgl-reviews-air_element-foot-comment .tgl-reviews-air_foot-comment-title") ).text( obj.text ); 2264 $( $html[0].querySelector(".tgl-reviews-air_element-foot-comment .tgl-reviews-air_foot-comment-text") ).text( obj.titulo ); 2265 2266 $( $html[0].querySelector(".tgl-reviews-air_element-foot-grade .tgl-reviews-air_grade-box-number") ).text( Math.round(obj.nota*10)/10 ); 2267 if( !obj.recomendado ) $($html[0].querySelector(".tgl-reviews-air_element-foot-grade .tgl-reviews-air_foot-grade-phrase")).remove(); 2268 2269 return $html; 2270 }, 2271 cargarOpiniones = function(){ 2272 for (var i = 0; i < max && cargados < jsonGeneral[idioma_select].opiniones.length; i++, cargados++) { 2273 $lista.append( crearHtml( jsonGeneral[idioma_select].opiniones[cargados] ) ); 2274 }; 2275 2276 if( (cargados < jsonGeneral[idioma_select].opiniones.length || jsonGeneral[idioma_select].loadNextPage ) && !paginacionActive ){ 2277 $paginacionMod.removeClass('sta-hide'); 2278 paginacionActive = true; 2279 } else if( $paginacionMod.length && cargados >= jsonGeneral[idioma_select].opiniones.length && paginacionActive ){ 2280 if( !jsonGeneral[idioma_select].loadNextPage ){ 2281 $paginacionMod.addClass('sta-hide'); 2282 paginacionActive = false; 2283 } 2284 }; 2285 }, 2286 controlIdioma = function(){ 2287 //Si el idioma seleccionado no existe seleccionamos el por defecto EN 2288 if( !jsonGeneral[idioma_select] ){ 2289 idioma_select = idiomaDefault; 2290 //comprobamos el de por defecto, y si no hay cogemos el primero que haya 2291 if( !jsonGeneral[idioma_select] ) idioma_select = _.keys(jsonGeneral)[0]; 2292 }; 2293 }, 2294 $lista = $(lista), 2295 $paginacionMod = $(footer), 2296 $backup = $( lista.querySelector('.tgl-reviews-air_list-element') ).clone().removeClass('sta-oculto'), 2297 idioma_act = $('html').attr('lang').toUpperCase(), 2298 idioma_select = idioma_act, 2299 idiomaDefault = 'all', 2300 paginacionRuta = 1, 2301 paginacionActive = true, 2302 max = 10, 2303 cargados = 0, 2304 jsonGeneral = false, 2305 ruta = function(){ 2306 return '/api/cms/opiniones/get/'+id+'/'+paginacionRuta+'/'+idioma_act 2307 }, 2308 callback = function(_json){ 2309 jsonGeneral = _json; 2310 2311 var keys = _.keys(jsonGeneral); 2312 2313 jsonGeneral.all = { opiniones : [], loadNextPage : false, totalOpiniones : 0 }; 2314 2315 if( !keys.length ){ 2316 console.trace('Sin opiniones'); 2317 } else { 2318 2319 //creamos all 2320 for (var i = 0; i < keys.length; i++) { 2321 if( jsonGeneral[ keys[i] ].totalOpiniones > 0 && jsonGeneral[ keys[i] ].opiniones && jsonGeneral[ keys[i] ].opiniones.length ){ 2322 jsonGeneral.all.opiniones = jsonGeneral.all.opiniones.concat( jsonGeneral[ keys[i] ].opiniones ); 2323 jsonGeneral.all.totalOpiniones += jsonGeneral[ keys[i] ].totalOpiniones; 2324 if( jsonGeneral[ keys[i] ].loadNextPage ) jsonGeneral.all.loadNextPage = true; 2325 }; 2326 }; 2327 2328 //seleccionamos el idioma seleccionado (si hay), el idioma por defecto o el primero que obtenga. 2329 controlIdioma(); 2330 2331 $paginacionMod.removeClass('sta-loading'); 2332 2333 cargarOpiniones(); 2334 2335 $( footer.querySelector('.tgl-reviews-air_foot-btn') ).click( cargamosMore ); 2336 }; 2337 2338 }; 2339 2340 $lista.empty(); 2341 2342 $('main').addClass('sta-init-space'); 2343 2344 h.cargarJSON(ruta(),callback); 2345 2346})( document.querySelector('.tgl-reviews-air_list'), document.querySelector('.tgl-reviews-air_foot'), dataSeo && dataSeo.hotel && dataSeo.hotel.id, window.jQuery, window.hotusa && hotusa() ); 2347 2348//validation and envio form newsletters 2349(function(o,seo,$,h){ 2350 if( !o || !$ || !h || !seo || !seo.hotel || !seo.hotel.name ) return false; 2351 var form = o.querySelector('form'), 2352 $form = $( o.querySelector('form') ), 2353 obj = { 2354 fidelTour : $form.data('fideltour_code').trim(), 2355 url : $form.data('urldirect').trim(), 2356 recaptcha : $form.data('recaptcha').trim(), 2357 mail : { 2358 $p : $('.fn-email',$form), 2359 $inp : $('.fn-email input',$form) 2360 }, 2361 poli : { 2362 $p : $('.fn-poli',$form), 2363 $check : $('.fn-poli input',$form) 2364 }, 2365 error : { 2366 $o : $('.sta-error',$form), 2367 copy : { 2368 $empty : $('<li id="g_form_error_empty"></li>').text( form.copyEmpty.value ), 2369 $email : $('<li id="g_form_error_email"></li>').text( form.copyEmail.value ), 2370 $policy : $('<li id="g_form_error_politicas"></li>').text( form.copyPoliticas.value ), 2371 $ok : $('<li></li>').text( form.copyOk.value ) 2372 } 2373 } 2374 }, 2375 valid = function(){ 2376 var enviar = true; 2377 2378 obj.error.$o.empty().removeClass('sta-newsletter-air_warning-text sta-newsletter-air_done-text'); 2379 2380 if( h.mail( obj.mail.$inp.val().trim() ) ){ 2381 obj.mail.$p.removeClass('invalid') 2382 } else { 2383 enviar = false; 2384 obj.mail.$p.addClass('invalid'); 2385 obj.error.$o.append( obj.error.copy.$email ); 2386 }; 2387 2388 if( obj.poli.$check.prop('checked') ){ 2389 obj.poli.$p.removeClass('invalid') 2390 } else { 2391 enviar = false; 2392 obj.poli.$p.addClass('invalid'); 2393 obj.error.$o.append( obj.error.copy.$policy ); 2394 }; 2395 2396 if( !enviar ) obj.error.$o.addClass('sta-newsletter-air_warning-text'); 2397 2398 return enviar; 2399 }, 2400 ajax = function( datos ){ 2401 $.ajax({
2402 type: 'POST', 2403 url: obj.url ? obj.url : getFormUrl(), 2404 async: false, 2405 data: JSON.stringify( datos ), 2406 success: function (n) { 2407 processEnvio = false; 2408 switch (n) { 2409 case 'OK': 2410 form.reset(); 2411 obj.error.$o.append( obj.error.copy.$ok ).addClass('sta-newsletter-air_done-text'); 2412 break; 2413 case 'ERR': 2414 console.trace("Not template",n); 2415 break; 2416 case 'KO - Error Formato Datos JSON': 2417 case 'KO': 2418 default: 2419 console.trace(n); 2420 break; 2421 }; 2422 }, 2423 error: function (n) { 2424 processEnvio = false; 2425 console.trace("ERROR:", n); 2426 } 2427 }); 2428 }, 2429 ajaxFidelTour = function( datos ){ 2430 $.ajax({ 2431 type: 'POST', 2432 url: 'https://backend.fideltour.com/api/contacts/subscription/?hc=' + obj.fidelTour + '&i=1&lang=' + $('html').attr('lang') + '&tags=NL', 2433 async: false, 2434 data: "email=" + encodeURIComponent(datos.d.email), 2435 success: function (n) { 2436 processEnvio = false; 2437 2438 if( n.indexOf('correctamente') >= 0 ){ 2439 form.reset(); 2440 obj.error.$o.append( obj.error.copy.$ok ).addClass('sta-newsletter-air_done-text'); 2441 } else { 2442 console.trace("Error: fideltour",n); 2443 } 2444 }, 2445 error: function (n) { 2446 processEnvio = false; 2447 console.trace("ERROR:", n); 2448 } 2449 }) 2450 }, 2451 enviar = function(){ 2452 var datos = { 2453 d : { 2454 nombreHotel : seo.hotel.name, 2455 email : obj.mail.$inp.val().trim(), 2456 url : location.origin + location.pathname 2457 } 2458 }; 2459 2460 if( obj.recaptcha ){ 2461 grecaptcha.ready(function() { 2462 grecaptcha.execute(obj.recaptcha,{action: 'sendForm'}).then(function(token) { 2463 obj.fidelTour 2464 ? ajaxFidelTour(datos) 2465 : ajax(datos); 2466 }); 2467 }); 2468 } else { 2469 obj.fidelTour 2470 ? ajaxFidelTour(datos) 2471 : ajax(datos); 2472 }; 2473 }; 2474 2475 $form.submit(function(e){ 2476 e.preventDefault(); 2477 if( valid() ) enviar(); 2478 }); 2479 2480 if( obj.recaptcha ) h.cargarFicheroJS('https://www.google.com/recaptcha/api.js?render='+obj.recaptcha); 2481 2482})( document.querySelector('.tgl-newsletter-air'), window.dataSeo, window.jQuery, window.hotusa && hotusa() ); 2483 2484//formulario de contacto 2485(function( form, $, h ){ 2486 if( !form || !$ || !h ) return false; 2487 2488 var valid = function(){ 2489 var enviar = true, 2490 empty = false; 2491 2492 obj.error.$o.empty().removeClass('sta-cardpage-air_warning-text sta-cardpage-air_done-text'); 2493 2494 for (var i = 0; i < obj.obligText.length; i++) { 2495 (function( elem ){ 2496 if( elem.o.value.trim() ){ 2497 elem.$p.removeClass('invalid'); 2498 } else { 2499 elem.$p.addClass('invalid'); 2500 enviar = false; 2501 empty = true; 2502 } 2503 })( obj.obligText[i] ); 2504 }; 2505 2506 if( empty ) obj.error.$o.append( obj.error.copy.$empty ); 2507 2508 if( !h.mail( obj.email.o.value.trim() ) ){ 2509 enviar = false; 2510 obj.email.$p.addClass('invalid'); 2511 obj.error.$o.append( obj.error.copy.$email ); 2512 }; 2513 2514 if( obj.policy.o.checked ){ 2515 obj.policy.$p.removeClass('invalid'); 2516 } else { 2517 enviar = false; 2518 obj.policy.$p.addClass('invalid'); 2519 obj.error.$o.append( obj.error.copy.$policy ); 2520 }; 2521 2522 if( !enviar ){ 2523 obj.error.$o.addClass('sta-cardpage-air_warning-text'); 2524 processEnvio = false; 2525 }; 2526 2527 return enviar; 2528 }, 2529 ajax = function( datos ){ 2530 $.ajax({
2531 type: 'POST', 2532 url: getFormUrl(), 2533 async: false, 2534 data: JSON.stringify( datos ), 2535 success: function (n) { 2536 processEnvio = false; 2537 switch (n) { 2538 case 'OK': 2539 form.reset(); 2540 obj.error.$o.append( obj.error.copy.$ok ).addClass('sta-cardpage-air_done-text'); 2541 break; 2542 case 'ERR': 2543 console.trace("Not template",n); 2544 break; 2545 case 'KO - Error Formato Datos JSON': 2546 case 'KO': 2547 default: 2548 console.trace(n); 2549 break; 2550 }; 2551 }, 2552 error: function (n) { 2553 processEnvio = false; 2554 console.trace("ERROR:", n); 2555 } 2556 }); 2557 }, 2558 enviar = function(){ 2559 var datos = { 2560 d : { 2561 name : obj.name.o.value.trim(), 2562 surname : obj.surname.o.value.trim(), 2563 email : obj.email.o.value.trim(), 2564 telephone : obj.telephone.o.value.trim(), 2565 comments : obj.comments.o.value.trim(), 2566 policy : obj.acept_mail.o.checked ? 'yes' : 'no' 2567 } 2568 }; 2569 2570 if( obj.recaptcha ){ 2571 grecaptcha.ready(function() { 2572 grecaptcha.execute(obj.recaptcha,{action: 'sendForm'}).then(function(token) { 2573 ajax(datos); 2574 }); 2575 }); 2576 } else { 2577 ajax(datos); 2578 }; 2579 }, 2580 obj = { 2581 url : $(form).data('url').trim(), 2582 idProd : $(form).data('id'), 2583 recaptcha : $(form).data('recaptcha').trim(), 2584 name : { 2585 o : form.name, 2586 $p : $(form.name).parent() 2587 }, 2588 surname : { 2589 o : form.surname, 2590 $p : $(form.surname).parent() 2591 }, 2592 email : { 2593 o : form.email, 2594 $p : $(form.email).parent() 2595 }, 2596 telephone : { 2597 o : form.telephone, 2598 $p : $(form.telephone).parent() 2599 }, 2600 comments : { 2601 o : form.comments, 2602 $p : $(form.comments).parent() 2603 }, 2604 policy : { 2605 o : form.policy, 2606 $p : $(form.policy).parent() 2607 }, 2608 acept_mail : { 2609 o : form.acept_mail, 2610 $p : $(form.acept_mail).parent() 2611 }, 2612 obligText : [], 2613 error : { 2614 $o : $( form.querySelector('.sta-error') ), 2615 copy : { 2616 $empty : $('<li id="g_form_error_empty"></li>').text( form.copyEmpty.value ), 2617 $email : $('<li id="g_form_error_email"></li>').text( form.copyEmail.value ), 2618 $policy : $('<li id="g_form_error_politicas"></li>').text( form.copyPoliticas.value ), 2619 $ok : $('<li></li>').text( form.copyOk.value ) 2620 } 2621 } 2622 }, 2623 processEnvio = false; 2624 2625 obj.obligText.push( obj.name, obj.surname, obj.telephone, obj.email, obj.comments ); 2626 2627 $( form ).submit(function(e){ 2628 e.preventDefault(); 2629 2630 if( !processEnvio ){ 2631 processEnvio = true; 2632 if( valid() ) enviar(); 2633 } 2634 2635 }); 2636 2637 if( obj.recaptcha ) h.cargarFicheroJS('https://www.google.com/recaptcha/api.js?render='+obj.recaptcha); 2638 2639})( document.querySelector('.formContact'), window.jQuery, window.hotusa && hotusa() ); 2640 2641//formulario de contacto Ampliado 2642(function( form, $, h ){ 2643 if( !form || !$ || !h ) return false; 2644 2645 var valid = function(){ 2646 var enviar = true, 2647 empty = false; 2648 2649 obj.error.$o.empty().removeClass('sta-cardpage-air_warning-text sta-cardpage-air_done-text'); 2650 2651 for (var i = 0; i < obj.obligText.length; i++) { 2652 (function( elem ){ 2653 if( elem.o.value.trim() ){ 2654 elem.$p.removeClass('invalid'); 2655 } else { 2656 elem.$p.addClass('invalid'); 2657 enviar = false; 2658 empty = true; 2659 } 2660 })( obj.obligText[i] ); 2661 }; 2662 2663 if( empty ) obj.error.$o.append( obj.error.copy.$empty ); 2664 2665 if( !h.mail( obj.email.o.value.trim() ) ){ 2666 enviar = false; 2667 obj.email.$p.addClass('invalid'); 2668 obj.error.$o.append( obj.error.copy.$email ); 2669 }; 2670 2671 if( obj.policy.o.checked ){ 2672 obj.policy.$p.removeClass('invalid'); 2673 } else { 2674 enviar = false; 2675 obj.policy.$p.addClass('invalid'); 2676 obj.error.$o.append( obj.error.copy.$policy ); 2677 }; 2678 2679 if( !enviar ){ 2680 obj.error.$o.addClass('sta-cardpage-air_warning-text'); 2681 processEnvio = false; 2682 }; 2683 2684 return enviar; 2685 }, 2686 ajax = function( datos ){ 2687 $.ajax({
2688 type: 'POST', 2689 url: getFormUrl(), 2690 async: false, 2691 data: JSON.stringify( datos ), 2692 success: function (n) { 2693 processEnvio = false; 2694 switch (n) { 2695 case 'OK': 2696 typeof dataLayer !== 'undefined' 2697 ? dataLayer.push({'event': 'reschase'}) 2698 : null; 2699 form.reset(); 2700 obj.error.$o.append( obj.error.copy.$ok ).addClass('sta-cardpage-air_done-text'); 2701 break; 2702 case 'ERR': 2703 console.trace("Not template",n); 2704 break; 2705 case 'KO - Error Formato Datos JSON': 2706 case 'KO': 2707 default: 2708 console.trace(n); 2709 break; 2710 }; 2711 }, 2712 error: function (n) { 2713 processEnvio = false; 2714 console.trace("ERROR:", n); 2715 } 2716 }); 2717 }, 2718 enviar = function(){ 2719 var formatDate = obj.date.o.value.trim().split('-'), 2720 datos = { 2721 d : { 2722 name : obj.name.o.value.trim(), 2723 surname : obj.surname.o.value.trim(), 2724 telephone : obj.telephone.o.value.trim(), 2725 email : obj.email.o.value.trim(), 2726 hour : obj.hour.o.value.trim(), 2727 date : formatDate[2]+'/'+formatDate[1]+'/'+formatDate[0], 2728 numberpeople : obj.numberpeople.o.value.trim(), 2729 comments : obj.comments.o.value.trim(), 2730 policy : obj.acept_mail.o.checked ? 'yes' : 'no' 2731 } 2732 }; 2733 2734 if( obj.recaptcha ){ 2735 grecaptcha.ready(function() { 2736 grecaptcha.execute(obj.recaptcha,{action: 'sendForm'}).then(function(token) { 2737 ajax(datos); 2738 }); 2739 }); 2740 } else { 2741 ajax(datos); 2742 }; 2743 }, 2744 obj = { 2745 url : $(form).data('url').trim(), 2746 idProd : $(form).data('id'), 2747 recaptcha : $(form).data('recaptcha').trim(), 2748 name : { 2749 o : form.name, 2750 $p : $(form.name).parent() 2751 }, 2752 surname : { 2753 o : form.surname, 2754 $p : $(form.surname).parent() 2755 }, 2756 telephone : { 2757 o : form.telephone, 2758 $p : $(form.telephone).parent() 2759 }, 2760 email : { 2761 o : form.email, 2762 $p : $(form.email).parent() 2763 }, 2764 hour : { 2765 o : form.hour, 2766 $p : $(form.hour).parent() 2767 }, 2768 date : { 2769 o : form.date, 2770 $p : $(form.date).parent() 2771 }, 2772 numberpeople : { 2773 o : form.numberpeople, 2774 $p : $(form.numberpeople).parent() 2775 }, 2776 comments : { 2777 o : form.comments, 2778 $p : $(form.comments).parent() 2779 }, 2780 policy : { 2781 o : form.policy, 2782 $p : $(form.policy).parent() 2783 }, 2784 acept_mail : { 2785 o : form.acept_mail, 2786 $p : $(form.acept_mail).parent() 2787 }, 2788 obligText : [], 2789 error : { 2790 $o : $( form.querySelector('.sta-error') ), 2791 copy : { 2792 $empty : $('<li id="g_form_error_empty"></li>').text( form.copyEmpty.value ), 2793 $email : $('<li id="g_form_error_email"></li>').text( form.copyEmail.value ), 2794 $policy : $('<li id="g_form_error_politicas"></li>').text( form.copyPoliticas.value ), 2795 $ok : $('<li></li>').text( form.copyOk.value ) 2796 } 2797 } 2798 }, 2799 processEnvio = false; 2800 2801 obj.obligText.push( obj.name, obj.surname, obj.telephone, obj.email, obj.hour, obj.date, obj.numberpeople ); 2802 2803 $( form ).submit(function(e){ 2804 e.preventDefault(); 2805 2806 if( !processEnvio ){ 2807 processEnvio = true; 2808 if( valid() ) enviar(); 2809 } 2810 2811 }); 2812 2813 if( obj.recaptcha ) h.cargarFicheroJS('https://www.google.com/recaptcha/api.js?render='+obj.recaptcha); 2814 2815})( document.querySelector('.formContactAmpliado'), window.jQuery, window.hotusa && hotusa() ); 2816 2817//formulario de arrepentimiento 2818(function( form, $, h ){ 2819 if( !form || !$ || !h ) return false; 2820 2821 var valid = function(){ 2822 var enviar = true, 2823 empty = false; 2824 2825 obj.error.$o.empty().removeClass('sta-cardpage-air_warning-text sta-cardpage-air_done-text'); 2826 2827 for (var i = 0; i < obj.obligText.length; i++) { 2828 (function( elem ){ 2829 if( elem.o.value.trim() ){ 2830 elem.$p.removeClass('invalid'); 2831 } else { 2832 elem.$p.addClass('invalid'); 2833 enviar = false; 2834 empty = true; 2835 } 2836 })( obj.obligText[i] ); 2837 }; 2838 2839 if( empty ) obj.error.$o.append( obj.error.copy.$empty ); 2840 2841 if( obj.policy.o.checked ){ 2842 obj.policy.$p.removeClass('invalid'); 2843 } else { 2844 enviar = false; 2845 obj.policy.$p.addClass('invalid'); 2846 obj.error.$o.append( obj.error.copy.$policy ); 2847 }; 2848 2849 if( !enviar ){ 2850 obj.error.$o.addClass('sta-cardpage-air_warning-text'); 2851 processEnvio = false; 2852 }; 2853 2854 return enviar; 2855 }, 2856 ajax = function( datos ){ 2857 $.ajax({
2858 type: 'POST', 2859 url: getFormUrl(), 2860 async: false, 2861 data: JSON.stringify( datos ), 2862 success: function (n) { 2863 processEnvio = false; 2864 switch (n) { 2865 case 'OK': 2866 form.reset(); 2867 obj.error.$o.append( obj.error.copy.$ok ).addClass('sta-cardpage-air_done-text'); 2868 break; 2869 case 'ERR': 2870 console.trace("Not template",n); 2871 break; 2872 case 'KO - Error Formato Datos JSON': 2873 case 'KO': 2874 default: 2875 console.trace(n); 2876 break; 2877 }; 2878 }, 2879 error: function (n) { 2880 processEnvio = false; 2881 console.trace("ERROR:", n); 2882 } 2883 }); 2884 }, 2885 enviar = function(){ 2886 var datos = { 2887 d : { 2888 name : obj.name.o.value.trim(), 2889 locator : obj.locator.o.value.trim(), 2890 policy : obj.acept_mail.o.checked ? 'yes' : 'no' 2891 } 2892 }; 2893 2894 if( obj.recaptcha ){ 2895 grecaptcha.ready(function() { 2896 grecaptcha.execute(obj.recaptcha,{action: 'sendForm'}).then(function(token) { 2897 ajax(datos); 2898 }); 2899 }); 2900 } else { 2901 ajax(datos); 2902 }; 2903 }, 2904 obj = { 2905 url : $(form).data('url').trim(), 2906 idProd : $(form).data('id'), 2907 recaptcha : $(form).data('recaptcha').trim(), 2908 name : { 2909 o : form.name, 2910 $p : $(form.name).parent() 2911 }, 2912 locator : { 2913 o : form.locator, 2914 $p : $(form.locator).parent() 2915 }, 2916 policy : { 2917 o : form.policy, 2918 $p : $(form.policy).parent() 2919 }, 2920 acept_mail : { 2921 o : form.acept_mail, 2922 $p : $(form.acept_mail).parent() 2923 }, 2924 obligText : [], 2925 error : { 2926 $o : $( form.querySelector('.sta-error') ), 2927 copy : { 2928 $empty : $('<li id="g_form_error_empty"></li>').text( form.copyEmpty.value ), 2929 $email : $('<li id="g_form_error_email"></li>').text( form.copyEmail.value ), 2930 $policy : $('<li id="g_form_error_politicas"></li>').text( form.copyPoliticas.value ), 2931 $ok : $('<li></li>').text( form.copyOk.value ) 2932 } 2933 } 2934 }, 2935 processEnvio = false; 2936 2937 obj.obligText.push( obj.name, obj.locator ); 2938 2939 $( form ).submit(function(e){ 2940 e.preventDefault(); 2941 2942 if( !processEnvio ){ 2943 processEnvio = true; 2944 if( valid() ) enviar(); 2945 } 2946 2947 }); 2948 2949 if( obj.recaptcha ) h.cargarFicheroJS('https://www.google.com/recaptcha/api.js?render='+obj.recaptcha); 2950 2951})( document.querySelector('.formArrepentimiento'), window.jQuery, window.hotusa && hotusa() ); 2952 2953//formulario de contacto + archivo 2954(function( form, $, h ){ 2955 if( !form || !$ || !h ) return false; 2956 2957 var valid = function(){ 2958 var enviar = true, 2959 empty = false, 2960 fileSize = false, 2961 fileExt = false, 2962 sendFile = true; 2963 2964 obj.error.$o.empty().removeClass('sta-cardpage-air_warning-text sta-cardpage-air_done-text'); 2965 2966 for (var i = 0; i < obj.obligText.length; i++) { 2967 (function( elem ){ 2968 if( elem.o.value.trim() ){ 2969 elem.$p.removeClass('invalid'); 2970 } else { 2971 elem.$p.addClass('invalid'); 2972 enviar = false; 2973 empty = true; 2974 } 2975 })( obj.obligText[i] ); 2976 }; 2977 2978 if( empty ) obj.error.$o.append( obj.error.copy.$empty ); 2979 2980 if( !h.mail( obj.email.o.value.trim() ) ){ 2981 enviar = false; 2982 obj.email.$p.addClass('invalid'); 2983 obj.error.$o.append( obj.error.copy.$email ); 2984 }; 2985 2986 if( obj.policy.o.checked ){ 2987 obj.policy.$p.removeClass('invalid'); 2988 } else { 2989 enviar = false; 2990 obj.policy.$p.addClass('invalid'); 2991 obj.error.$o.append( obj.error.copy.$policy ); 2992 }; 2993 2994 2995 //files 2996 (function( file ){ 2997 var files = file.o.files, 2998 sizeTotal = 0; 2999 3000 sendFile = files.length; 3001 3002 for (var i = 0; i < files.length; i++) { 3003 (function( file ){ 3004 var size = file.size;//bytes 3005 sizeTotal += size; 3006 3007 if( obj.file.ext.indexOf( file.type ) < 0 ){ 3008 fileExt = true; 3009 enviar = false; 3010 }; 3011 3012 //10Mb max por archivo 3013 if( parseInt( size / (1024 * 1024) ) > 10 ){ 3014 fileSize = true; 3015 enviar = false; 3016 }; 3017 3018 })( files[i] ); 3019 }; 3020 3021 //25Mb max total archivos 3022 if( parseInt( sizeTotal / (1024 * 1024) ) > 25 ){ 3023 fileSize = true; 3024 envio = false; 3025 }; 3026 3027 if( fileExt ) obj.error.$o.append( obj.error.copy.$fileExt ); 3028 if( fileSize ) obj.error.$o.append( obj.error.copy.$fileSize ); 3029 3030 fileExt || fileSize ? file.$p.addClass('invalid') : file.$p.removeClass('invalid'); 3031 3032 })( obj.file ); 3033 3034 3035 if( !enviar ){ 3036 obj.error.$o.addClass('sta-cardpage-air_warning-text'); 3037 processEnvio = false; 3038 }; 3039 3040 return enviar && sendFile ? sendFile : enviar; 3041 3042 }, 3043 ajaxFile = function(){ 3044 var fd = new FormData( form ); 3045 3046 $.ajax({
3047 type: 'POST', 3048 url: getFormUrl(), 3049 async: false, 3050 data: fd, 3051 cache: false, 3052 contentType: false, 3053 processData: false, 3054 success: function (n) { 3055 processEnvio = false; 3056 switch (n) { 3057 case 'OK': 3058 form.reset(); 3059 obj.file.$p.removeClass('sta-fill'); 3060 obj.error.$o.append( obj.error.copy.$ok ).addClass('sta-cardpage-air_done-text'); 3061 break; 3062 case 'ERR': 3063 console.trace("Not template",n); 3064 break; 3065 case 'KO - Error Formato Datos JSON': 3066 case 'KO': 3067 default: 3068 console.trace(n); 3069 break; 3070 }; 3071 }, 3072 error: function (n) { 3073 processEnvio = false; 3074 console.trace("ERROR:", n); 3075 } 3076 }); 3077 }, 3078 ajaxNormal = function(){ 3079 var datos = { 3080 d : { 3081 name : obj.name.o.value.trim(), 3082 surname : obj.surname.o.value.trim(), 3083 email : obj.email.o.value.trim(), 3084 comments: obj.comments.o.value.trim(), 3085 acept_mail: obj.acept_mail.o.checked ? 'ON' : '' 3086 } 3087 }; 3088 3089 $.ajax({
3090 type: 'POST', 3091 url: getFormUrl(), 3092 async: false, 3093 data: JSON.stringify( datos ), 3094 success: function (n) { 3095 processEnvio = false; 3096 switch (n) { 3097 case 'OK': 3098 form.reset(); 3099 obj.file.$p.removeClass('sta-fill'); 3100 obj.error.$o.append( obj.error.copy.$ok ).addClass('sta-cardpage-air_done-text'); 3101 break; 3102 case 'ERR': 3103 console.trace("Not template",n); 3104 break; 3105 case 'KO - Error Formato Datos JSON': 3106 case 'KO': 3107 default: 3108 console.trace(n); 3109 break; 3110 }; 3111 }, 3112 error: function (n) { 3113 processEnvio = false; 3114 console.trace("ERROR:", n); 3115 } 3116 }); 3117 }; 3118 enviar = function(file){ 3119 if( obj.recaptcha ){ 3120 grecaptcha.ready(function() { 3121 grecaptcha.execute(obj.recaptcha,{action: 'sendForm'}).then(function(token) { 3122 file ? ajaxFile() : ajaxNormal(); 3123 }); 3124 }); 3125 } else { 3126 file ? ajaxFile() : ajaxNormal() 3127 }; 3128 }, 3129 obj = { 3130 url : $(form).data('url').trim(), 3131 idProd : $(form).data('id'), 3132 recaptcha : $(form).data('recaptcha').trim(), 3133 name : { 3134 o : form.name, 3135 $p : $(form.name).parent() 3136 }, 3137 surname : { 3138 o : form.surname, 3139 $p : $(form.surname).parent() 3140 }, 3141 email : { 3142 o : form.email, 3143 $p : $(form.email).parent() 3144 }, 3145 file : { 3146 o : form['file[]'], 3147 $p : $( form['file[]'] ).parent(), 3148 text: form.querySelector('.sta-file .sta-file_name'), 3149 ext : [ 3150 'application/pdf', 3151 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 3152 'application/msword' 3153 ] 3154 }, 3155 comments : { 3156 o : form.comments, 3157 $p : $(form.comments).parent() 3158 }, 3159 policy : { 3160 o : form.policy, 3161 $p : $(form.policy).parent() 3162 }, 3163 acept_mail : { 3164 o : form.acept_mail, 3165 $p : $(form.acept_mail).parent() 3166 }, 3167 obligText : [], 3168 error : { 3169 $o : $( form.querySelector('.sta-error') ), 3170 copy : { 3171 $empty : $('<li id="g_form_error_empty"></li>').text( form.copyEmpty.value ), 3172 $email : $('<li id="g_form_error_email"></li>').text( form.copyEmail.value ), 3173 $policy : $('<li id="g_form_error_politicas"></li>').text( form.copyPoliticas.value ), 3174 $ok : $('<li></li>').text( form.copyOk.value ), 3175 $fileExt : $('<li></li>').text( form.copyFileExt.value ), 3176 $fileSize : $('<li></li>').text( form.copyFileSize.value ) 3177 } 3178 } 3179 }, 3180 processEnvio = false; 3181 3182 obj.obligText.push( obj.name, obj.surname, obj.email, obj.comments ); 3183 3184 $( form ).submit(function(e){ 3185 e.preventDefault(); 3186 3187 if( !processEnvio ){ 3188 processEnvio = true; 3189 var _v = valid(); 3190 if( _v === true ) enviar(false); 3191 else if( _v && typeof _v == 'number' ) enviar(true); 3192 }; 3193 }); 3194 3195 //event change file 3196 (function( elem ){ 3197 $( elem.o ).on('change',function(){ 3198 elem.$p.removeClass('sta-fill invalid'); 3199 3200 var str = '', 3201 files = this.files; 3202 3203 for (var i = 0; i < files.length; i++) { 3204 str += files[i].name; 3205 if( i < files.length - 1 ) str += ', '; 3206 } 3207 3208 if( files.length ){ 3209 elem.text.innerText = str; 3210 elem.$p.addClass('sta-fill'); 3211 } 3212 }) 3213 })( obj.file ); 3214 3215 if( obj.recaptcha ) h.cargarFicheroJS('https://www.google.com/recaptcha/api.js?render='+obj.recaptcha); 3216 3217})( document.querySelector('.formArchivo'), window.jQuery, window.hotusa && hotusa() ); 3218 3219//formulario de denuncia 3220(function( form, $, h ){ 3221 if( !form || !$ || !h ) return false; 3222 3223 var valid = function(){ 3224 var enviar = true, 3225 empty = false; 3226 3227 obj.error.$o.empty().removeClass('sta-cardpage-air_warning-text sta-cardpage-air_done-text'); 3228 3229 for (var i = 0; i < obj.obligText.length; i++) { 3230 (function( elem ){ 3231 if( elem.o.value.trim() ){ 3232 elem.$p.removeClass('invalid'); 3233 } else { 3234 elem.$p.addClass('invalid'); 3235 enviar = false; 3236 empty = true; 3237 } 3238 })( obj.obligText[i] ); 3239 }; 3240 3241 if( empty ) obj.error.$o.append( obj.error.copy.$empty ); 3242 3243 if( obj.policy.o.checked ){ 3244 obj.policy.$p.removeClass('invalid'); 3245 } else { 3246 enviar = false; 3247 obj.policy.$p.addClass('invalid'); 3248 obj.error.$o.append( obj.error.copy.$policy ); 3249 }; 3250 3251 if( !enviar ){ 3252 obj.error.$o.addClass('sta-cardpage-air_warning-text'); 3253 processEnvio = false; 3254 }; 3255 3256 return enviar; 3257 }, 3258 ajax = function( datos ){ 3259 $.ajax({
3260 type: 'POST', 3261 url: getFormUrl(), 3262 async: false, 3263 data: JSON.stringify( datos ), 3264 cache: false, 3265 contentType: false, 3266 processData: false, 3267 success: function (n) { 3268 processEnvio = false; 3269 switch (n) { 3270 case 'OK': 3271 form.reset(); 3272 obj.error.$o.append( obj.error.copy.$ok ).addClass('sta-cardpage-air_done-text'); 3273 break; 3274 case 'ERR': 3275 console.trace("Not template",n); 3276 break; 3277 case 'KO - Error Formato Datos JSON': 3278 case 'KO': 3279 default: 3280 console.trace(n); 3281 break; 3282 }; 3283 }, 3284 error: function (n) { 3285 processEnvio = false; 3286 console.trace("ERROR:", n); 3287 } 3288 }); 3289 }, 3290 enviar = function(){ 3291 var datos = { 3292 d : { 3293 comment1 : obj.comment1.o.value.trim(), 3294 comment2 : obj.comment2.o.value.trim(), 3295 comment3 : obj.comment3.o.value.trim(), 3296 policy : obj.acept_mail.o.checked ? 'yes' : 'no' 3297 } 3298 }; 3299 3300 if( obj.recaptcha ){ 3301 grecaptcha.ready(function() { 3302 grecaptcha.execute(obj.recaptcha,{action: 'sendForm'}).then(function(token) { 3303 ajax(datos); 3304 }); 3305 }); 3306 } else { 3307 ajax(datos); 3308 }; 3309 }, 3310 obj = { 3311 url : $(form).data('url').trim(), 3312 idProd : $(form).data('id'), 3313 recaptcha : $(form).data('recaptcha').trim(), 3314 comment1 : { 3315 o : form.comment1, 3316 $p : $(form.comment1).parent() 3317 }, 3318 comment2 : { 3319 o : form.comment2, 3320 $p : $(form.comment2).parent() 3321 }, 3322 comment3 : { 3323 o : form.comment3, 3324 $p : $(form.emacomment3il).parent() 3325 }, 3326 policy : { 3327 o : form.policy, 3328 $p : $(form.policy).parent() 3329 }, 3330 acept_mail : { 3331 o : form.acept_mail, 3332 $p : $(form.acept_mail).parent() 3333 }, 3334 obligText : [], 3335 error : { 3336 $o : $( form.querySelector('.sta-error') ), 3337 copy : { 3338 $empty : $('<li id="g_form_error_empty"></li>').text( form.copyEmpty.value ), 3339 $policy : $('<li id="g_form_error_politicas"></li>').text( form.copyPoliticas.value ), 3340 $ok : $('<li></li>').text( form.copyOk.value ) 3341 } 3342 } 3343 }, 3344 processEnvio = false; 3345 3346 obj.obligText.push( obj.comment1, obj.comment2, obj.comment3 ); 3347 3348 $( form ).submit(function(e){ 3349 e.preventDefault(); 3350 3351 if( !processEnvio ){ 3352 processEnvio = true; 3353 if( valid() ) enviar(); 3354 }; 3355 }); 3356 3357 if( obj.recaptcha ) h.cargarFicheroJS('https://www.google.com/recaptcha/api.js?render='+obj.recaptcha); 3358 3359})( document.querySelector('.formDenuncia'), window.jQuery, window.hotusa && hotusa() ); 3360 3361// function internbar size 3362(function( o, $ ){ 3363 if( o ){ 3364 var checker = 0; 3365 //init slider 3366 function load_slider(){ 3367 $('.sta-internbar-air_links',o).slick({ 3368 dots: false, 3369 arrows: false, 3370 infinite: false, 3371 useTransform: true, 3372 fade: false, 3373 cssEase: 'cubic-bezier(0.785, 0.135, 0.15, 0.86)', 3374 speed: 750, 3375 //slidesToShow: 8, 3376 autoplay: false, 3377 variableWidth: true, 3378 swipeToSlide: true, 3379 responsive: [ 3380 { 3381 breakpoint: 1279, 3382 settings: { 3383 //slidesToShow: 8, 3384 slidesToScroll: 1, 3385 } 3386 }, 3387 ] 3388 }); 3389 } 3390 if(window.innerWidth >= 1024){ 3391 loadScript("/templates/cadenas/air/js/libraries/slick.min.js", load_slider); 3392 loadStyle("/templates/cadenas/air/css/libraries/slick.min.css"); 3393 checker = 1; 3394 }else{ 3395 var check_responsive = 1; 3396 $(window).resize(function(){ 3397 if(window.innerWidth < 1024){ 3398 if( $().slick ){ 3399 //$('.sta-internbar-air_links').slick('unslick'); 3400 checker = 0; 3401 } 3402 }else{ 3403 if(checker === 0){ 3404 if(check_responsive === 1){ 3405 loadScript("/templates/cadenas/air/js/libraries/slick.min.js", load_slider); 3406 loadStyle("/templates/cadenas/air/css/libraries/slick.min.css"); 3407 check_responsive = 0; 3408 } 3409 //load_slider(); 3410 checker = 1; 3411 } 3412 } 3413 }) 3414 } 3415 3416 } 3417})( document.querySelector('.sta-dinamic-size'), window.jQuery ); 3418 3419(function( o, $ ){ 3420 if( !o || !$ ) return false; 3421 3422 var elems = o.querySelectorAll('.sta-breadcrumbs-air_element'), 3423 script = document.createElement('script'), 3424 datos = { 3425 "@context" : "http://schema.org/", 3426 "@type" : "BreadcrumbList", 3427 itemListElement : [] 3428 }; 3429 3430 for (var i = 0; i < elems.length; i++) { 3431 (function( $a, posi, $last ){ 3432 if( !$last ){ 3433 var _tmp = { 3434 "@type" : "ListItem", 3435 position: posi, 3436 item : { 3437 name : $a.text().trim(), 3438 "@id": $a.attr('href') 3439 } 3440 }; 3441 datos.itemListElement.push( _tmp ); 3442 } else { 3443 var _tmp = { 3444 "@type" : "ListItem", 3445 position: posi, 3446 item : { 3447 name : $last.text().trim(), 3448 "@id": location.origin + location.pathname 3449 } 3450 }; 3451 datos.itemListElement.push( _tmp ); 3452 } 3453 //if( $last ) $last.html( _tmp.item.name ); 3454 })( $( elems[i].querySelector('a') ), i+1, (i == elems.length-1 ? $( elems[i] ) : false ) ); 3455 }; 3456 3457 if( datos.itemListElement.length ){ 3458 script.title = "BreadcrumbList"; 3459 script.type = "application/ld+json"; 3460 script.innerHTML = JSON.stringify(datos); 3461 $(document.head).append(script); 3462 } 3463 3464})( document.querySelector('.tgl-breadcrumbs-air'), window.jQuery ); 3465 3466(function(a, $){ 3467 if(!a.length || !$) return false; 3468 var ev = function(o){ 3469 if( o.querySelectorAll('.sta-serviciosNew-air_max ul li').length > 8 ){ 3470 var $list = $(o.querySelector('.sta-serviciosNew-air_max')), 3471 $bMore = $('<button />',{class:'sta-serviciosNew-air_ver'}) 3472 .appendTo( o ).text( $(o).data('buttons_mas') ), 3473 textMas = $(o).data('buttons_mas'), 3474 textMenos = $(o).data('buttons_menos'), 3475 bMas = true; 3476 $list.addClass('sta-menos'); 3477 $bMore.on('click', function(){ 3478 $list.toggleClass('sta-menos') 3479 if( bMas ){ 3480 $bMore.text(textMenos); 3481 bMas = false; 3482 }else{ 3483 $bMore.text(textMas); 3484 bMas = true; 3485 } 3486 }) 3487 } 3488 }; 3489 for (var i = 0; i < a.length; i++) ev(a[i]); 3490})(document.querySelectorAll('.tpl-serviciosNew-air'), window.jQuery); 3491
3492/*Funcion galeria instagram*/ 3493(function (src,$,h) { 3494 $(document).ready(function(){ 3495 var a = $( document.querySelectorAll(src) ); 3496 a.each(function(){ 3497 var o = this, 3498 text = $(o).data('text'), 3499 token = $(o).data('token'), 3500 callback = function () { 3501 h.cargarFicheroJS('/js/libraries/spectagram/spectragram.min.js',function(){ 3502 jQuery.fn.spectragram.accessData={ 3503 accessToken:token 3504 }; 3505 $('.sta-instagramGallery-air_container',o).spectragram({ 3506 max: 12, 3507 wrapEachWith: '<div class="sta-instagramGallery-air_elemento"></div>', 3508 complete : getInfoImage 3509 }); 3510 }); 3511 3512 function getInfoImage(){ 3513 var html = $('<div class="sta-instagramGallery-air_tableContainer"><div class="sta-instagramGallery-air_table"><div class="sta-instagramGallery-air_tableCellContainer"><span class="sta-instagramGallery-air_textContainer"></span><span class="sta-instagramGallery-air_textSpan">'+text+'</span></div></div></div>'); 3514 function crearHtml(info){ 3515 var ret = html.clone(); 3516 $('.sta-instagramGallery-air_textContainer',ret).prepend(info); 3517 return ret 3518 } 3519 $('.sta-instagramGallery-air_elemento').each(function(i,e){ 3520 var a = $('a',this), 3521 alt = a.attr('title'); 3522 a.append(crearHtml(alt)).attr('title',''); 3523 }) 3524 $(o).addClass('sta-complete'); 3525 } 3526 } 3527 if( token ) h.cargaScrollAuto({obj:o},callback); 3528 }); 3529 }) 3530})( '.tgl-instagramGallery-air',jQuery,hotusa()); 3531 3532// meta og:image 3533(function( o,seo ){ 3534 if(!o || o.content || !seo || !seo.imgFirst ) return false; 3535 o.content= seo.imgFirst; 3536})( document.head.querySelector('.openGraphFirstImage'), window.dataSeo ); 3537 3538// meta theme-color 3539(function( m,$ ){ 3540 if( !m || !$ )return false; 3541 3542 var color = $(m).css('color'), 3543 lastMeta = document.head.querySelector('meta:last-of-type'), 3544 meta = document.createElement('meta'); 3545 meta.name = 'theme-color'; 3546 meta.content = color; 3547 3548 lastMeta.parentNode.insertBefore(meta,lastMeta); 3549})( document.querySelector('.tgl-menus-air .sta-menus-air_nav-logo'), window.jQuery ); 3550 3551function crearGaleria(url) { 3552 var modalGaleria = document.createElement('div'), 3553 div = document.createElement('div'); 3554 modalGaleria.classList.add('modalGaleria'), 3555 button = document.createElement('button'); 3556 button.classList.add('close') 3557 div.classList.add('containerImg') 3558 modalGaleria.appendChild(div).style.backgroundImage = 'url(' + url + ')'; 3559 modalGaleria.appendChild(button) 3560 document.body.appendChild(modalGaleria); 3561 document.body.style.overflow = 'hidden'; 3562 button.onclick = function() { 3563 modalGaleria.classList.remove('active'); 3564 modalGaleria.remove(); 3565 document.body.style.overflow = 'auto'; 3566 } 3567} 3568 3569var gamasCromaticas = (function( link, h ){ 3570 var actual = 0, 3571 url = '/templates/cadenas/air/css/colors/', 3572 colors = ['007d69','77a687','BAC5B9','DC6D47','495461','C0D185','1E521A','64280c','b7bbcc','b9ab98','3386FF','406693','28b36f','f07e26','cb0339','fab833','76dce1','a92a0a','F66C5E','3E511C','856f52','c7a84f','0b0e3d','B58C30','232EBE', 'A5AFB1', 'ffd200','05a4de','92133E','B2A89C','A0434B','c23e3e','78C0C5','391832','935485','dfad58', 'eba9a9','B27B22','BD9C67','8AB0B1','373737','F2930D','C2A472','DDA385','5CBB47','BEAD50', '913C26', 'AC8B25','B0BB16','205253','DDD5B0'].sort(), 3573 cookie = false, 3574 custom = h.getSessionStorageJSON('test_GC') && h.getSessionStorageJSON('test_GC').var ? h.getSessionStorageJSON('test_GC').var : false, 3575 getCookie = h.getSessionStorageJSON('test_GC'), 3576 fn = function (str) { 3577 if( typeof str != 'string' ){ 3578 if( actual >= colors.length ) actual = 0; 3579 str = colors[actual]; 3580 actual++; 3581 } else if( str === 'lista' ){ 3582 console.log('%cListado de Gamas Cromáticas',"background:#000;padding:10px 20px;font:20px Georgia;color:#fff") 3583 for (var i = 0; i < colors.length; i++) { 3584 colors[i] 3585 ? console.log('%cCódigo color: '+colors[i],"background:#"+colors[i]+";padding:10px 20px;font:20px Georgia;color:#fff") 3586 : console.log('%cCódigo color: c2a472',"background:#c2a472;padding:10px 20px;font:20px Georgia;color:#fff"); 3587 }; 3588 3589 console.log('%cRecuerda que puedes:\n · Alternar entre las GC existentes: gamasCromaticas()\n · Listar las GC: gamasCromaticas("lista")\n · Activar modo testing (puedes camb
3589iar de página manteniendo la GC): gamasCromaticas("prueba")\n · Crear tu propia GC (necesitas saber el color en hexadecimal): gamasCromaticas("custom")',"background:#000;padding:2px 10px;font:12px Georgia;color:#fff") 3590 return false; 3591 } else if( str === 'prueba' ){ 3592 cookie = true; 3593 console.log('%cSe guardará la gama cromática seleccionada en una cookie para testear, se borrará al cerrar ventana.',"background:#000;padding:10px 20px;font:20px Georgia;color:#fff"); 3594 return false; 3595 } else if( str === 'custom' ){ 3596 cookie = true; 3597 if( !custom ) custom = window.prompt('Indique el código hexadecimal del color que quiera aplicar','#406693'); 3598 console.log('%cCódigo color: '+custom,"background:"+custom+";padding:10px 20px;font:20px Georgia;color:#fff"); 3599 console.log('%cSe guardará la gama cromática seleccionada en una cookie para testear, se borrará al cerrar ventana.',"background:#000;padding:10px 20px;font:20px Georgia;color:#fff"); 3600 str = 'variable'; 3601 document.body.style.setProperty("--bg", custom); 3602 }; 3603 3604 //NOT GC 3605 if( !link ){ 3606 link = document.createElement('link'); 3607 link.rel = 'stylesheet'; 3608 link.as = 'style'; 3609 var lastLink = document.head.querySelector('link:last-of-type'); 3610 lastLink.parentNode.insertBefore(link,lastLink); 3611 }; 3612 3613 if( str ){ 3614 link.href = url + str + '.css'; 3615 str.length == 3 || str.length == 6 3616 ? console.log('%cGama cromática "'+str+'" asignada', "background:#"+str+";padding:10px 20px;font:20px Georgia") 3617 : console.log('%cGama cromática "'+str+'" asignada', "background:#000;padding:10px 20px;font:20px Georgia"); 3618 } else { 3619 link.href = ''; 3620 console.log('%cGama cromática inicial "c2a472" recuperada', "background:#c2a472;padding:10px 20px;font:20px Georgia"); 3621 }; 3622 3623 if( cookie && !custom ) h.setSessionStorageJSON('test_GC',{color:str}); 3624 if( cookie && custom ) h.setSessionStorageJSON('test_GC',{color:'custom',var:custom}); 3625 }; 3626 colors.push(''); 3627 3628 if( getCookie ) fn(getCookie.color); 3629 3630 return fn; 3631})( document.querySelector('.gamaCromatica'), window.hotusa && hotusa() ); 3632 3633 3634//viewport in safary 3635(function( meta ){ 3636 if( !meta || !/^((?!chrome|android).)*safari/i.test(navigator.userAgent) ) return false 3637 3638 var contentOld = meta.content; 3639 meta.content = meta.attributes.saf.value; 3640 3641})( document.head.querySelector('.metaViewport') ); 3642 3643(function () { 3644 if (!window.frontLoader) {return false};
3645 const existLogin = window.frontLoader["cms-login"]?.config; 3646 if (existLogin){ 3647 document.querySelector('.sta-corporate')?.classList.remove('hideLogin'); 3648 } 3649})(); 3650 3651// Arreglar z-index de tgl-internbar-air 3652(function () { 3653 document.addEventListener('DOMContentLoaded', function () { 3654 const el = document.querySelector('.tgl-internbar-air'); 3655 const refEl = document.querySelector('.tgl-menus-air .sta-menus-air_nav'); 3656 if (!el || !refEl) return; 3657 3658 function checkElementoCercaDelTop() { 3659 const top = el.getBoundingClientRect().top; 3660 const refHeight = refEl.offsetHeight; 3661 3662 if (top <= refHeight) { 3663 el.classList.add('internbar-air-top'); 3664 el.classList.remove('internbar-air-bottom'); 3665 } else { 3666 el.classList.add('internbar-air-bottom'); 3667 el.classList.remove('internbar-air-top'); 3668 } 3669 } 3670 3671 window.addEventListener('scroll', checkElementoCercaDelTop); 3672 }); 3673})(); 3674 3675// Para evitar clicks en el slider mientras se arrastra 3676(function() { 3677 let isDragging = false; 3678 let startX = 0; 3679 let startY = 0; 3680 const slickSlider = document.querySelector('.slick-list'); 3681 if (slickSlider) { 3682 slickSlider.addEventListener('mousedown', (e) => { 3683 isDragging = false; 3684 startX = e.clientX; 3685 startY = e.clientY; 3686 }); 3687 slickSlider.addEventListener('mousemove', (e) => { 3688 if (Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5) { 3689 isDragging = true; 3690 } 3691 }); 3692 slickSlider.addEventListener('mouseup', () => { 3693 setTimeout(() => isDragging = false, 50); 3694 }); 3695 document.querySelectorAll('.js-scrollto').forEach(element => { 3696 element.addEventListener('click', function(event) { 3697 if (isDragging) { 3698 event.preventDefault(); 3699 event.stopImmediatePropagation(); 3700 return false; 3701 } 3702 }, true); 3703 }); 3704 } 3705})(); 3706 3707// Listener para los campos del formulario 3708document.addEventListener('DOMContentLoaded', () => { 3709 const fields = document.querySelectorAll('.sta-input-field:not([type="date"]):not([type="time"]), .sta-textarea-field'); 3710 3711 fields.forEach(field => { 3712 const container = field.parentElement; 3713 3714 const toggleLabel = () => { 3715 if (field.value.trim() !== '' || document.activeElement === field) { 3716 container.classList.add('active'); 3717 } else { 3718 container.classList.remove('active'); 3719 } 3720 }; 3721 field.addEventListener('focus', toggleLabel); 3722 field.addEventListener('blur', toggleLabel); 3723 field.addEventListener('input', toggleLabel); 3724 3725 toggleLabel(); 3726 }); 3727 3728 // Desplegables de los forms 3729 const fechaInput = document.getElementById("form_date"); 3730 const horaInput = document.getElementById("form_time"); 3731 if (fechaInput) { 3732 fechaInput.addEventListener("click", (e) => {fechaInput.showPicker();}); 3733 } 3734 if (horaInput) { 3735 horaInput.addEventListener("click", (e) => {horaInput.showPicker();}); 3736 } 3737}); 3738 3739//Eliminar <a></a> sin href 3740document.addEventListener('DOMContentLoaded', () => { 3741 document.querySelectorAll('a[href]').forEach(element => { 3742 if (element.getAttribute('href').trim() === '') { 3743 element.remove(); 3744 } 3745 }); 3746}); 3747 3748// Ajustar el ancho de los elementos del popup al texto más largo 3749(function() { 3750 const textSelector = '#tgl-modals .sta-popoffer-air_gadget .sta-popoffer-air_gadget-btn .sta-popoffer-air_gadget-text'; 3751 const containerSelector = '#tgl-modals .sta-popoffer-air_gadget'; 3752 const textElements = document.querySelectorAll(textSelector); 3753 const containerElements = document.querySelectorAll(containerSelector); 3754 3755 if (!textElements.length || !containerElements.length) return; 3756 const tempSpan = document.createElement('span'); 3757 Object.assign(tempSpan.style, {position: 'absolute',visibility: 'hidden',whiteSpace: 'nowrap',}); 3758 document.body.appendChild(tempSpan); 3759 3760 let maxWidth = 0; 3761 textElements.forEach(el => { 3762 if (el && el.textContent) { 3763 tempSpan.textContent = el.textContent.trim(); 3764 const width = tempSpan.getBoundingClientRect().width; 3765 if (width > maxWidth) maxWidth = width; 3766 } 3767 }); 3768 3769 document.body.removeChild(tempSpan); 3770 maxWidth = Math.min(maxWidth, 150); 3771 const textWidth = Math.ceil(maxWidth); 3772 const containerWidth = textWidth + 63;
3773 textElements.forEach(el => {if (el && el.style) el.style.width = textWidth + 'px';}); 3774 containerElements.forEach(container => {if (container && container.style) container.style.width = containerWidth + 'px';}); 3775})(); 3776 3777//////////////////////////////////////////////// 3778///////////////// 3779//----POPUPS---- 3780///////////////// 3781//////////////////////////////////////////////// 3782(function (popoffer, modalContainer) { 3783 if (!popoffer || !modalContainer) return false; 3784 3785 if (document.querySelector(".sta-mainDispo")) { 3786 modalContainer.remove(); 3787 return false; 3788 } 3789})( 3790 document.querySelector(".tgl-popoffer-air"), 3791 document.getElementById("tgl-modals") 3792); 3793 3794////// 3795// Función que inicializa popups y los muestra segun ciertos criterios 3796////// 3797 3798(function (popups, $, hotusaLib, reserva) { 3799 if (!popups.length || !$ || !hotusaLib) return false; 3800 3801 const popupConfig = window.popupConfig; 3802 const pathname = window.location.pathname; 3803 const popupTimer = window.popupTimer * 1000; 3804 var currentlyOpenPopup = null; 3805 3806 /** 3807 * Guarda el popup como mostrado en sessionStorage 3808 */ 3809 const markPopupAsShown = (SESSION_KEY) => { 3810 const cookies = hotusaLib.getCookie("controlCookies"); 3811 if (!cookies) return; 3812 3813 if (JSON.parse(cookies).functional) { 3814 hotusaLib.setSessionStorageJSON(SESSION_KEY, true); 3815 } 3816 }; 3817 /** 3818 * Abre el popup 3819 */ 3820 const openPopup = (popupElement, $closer, SESSION_KEY) => { 3821 popupElement.classList.add("fn-open"); 3822 currentlyOpenPopup = popupElement; 3823 $closer.click(() => markPopupAsShown(SESSION_KEY)); 3824 }; 3825 3826 /** 3827 * Abre el popup 3828 */ 3829 const pathnameFinder = (id) => { 3830 const key = String(id); 3831 if (!(key in popupConfig)) return true; 3832 3833 return popupConfig[key].includes(pathname); 3834 }; 3835 3836 /** 3837 * EVENTOS 3838 */ 3839 const initEvents = ($opener, $closer, popupElement) => { 3840 $opener.click(function (event) { 3841 event.stopPropagation(); 3842 3843 // si habÃa otro popup abierto y era un aside pequeño, lo cierra 3844 if (currentlyOpenPopup?.classList.contains("sta-small-aside")) { 3845 currentlyOpenPopup.classList.remove("fn-open"); 3846 } 3847 3848 popupElement.classList.add("fn-open"); 3849 currentlyOpenPopup = popupElement; 3850 }); 3851 3852 $closer.click(function () { 3853 popupElement.classList.remove("fn-open"); 3854 currentlyOpenPopup = null; 3855 }); 3856 }; 3857 3858 ///Inicializa un popup concreto 3859 const initPopup = function (popupElement) { 3860 const openClass = popupElement.dataset.open; 3861 const popupID = openClass.split("_")[1]; 3862 const $opener = $(document.querySelectorAll("." + openClass)); 3863 const $closer = $(popupElement.querySelectorAll(".js-close-popoffer")); 3864 3865 const SESSION_KEY = "modal_" + openClass; 3866 const autoOpenSesion = hotusaLib.getSessionStorageJSON(SESSION_KEY); 3867 3868 // Asegura que los enlaces dentro del popup se abran en pestaña nueva 3869 hotusa().enlace_blank( 3870 $(popupElement.querySelector(".sta-popoffer-air_btns a")) 3871 ); 3872 popupElement.style.display = "block"; 3873 initEvents($opener, $closer,popupElement); 3874 3875 if (autoOpenSesion || reserva) return; 3876 if (popupElement.classList.contains("sta-init-hide")) return; 3877 if (!popupConfig) return; 3878 if (!pathnameFinder(popupID)) return; 3879 3880 setTimeout(() => openPopup(popupElement, $closer, SESSION_KEY), popupTimer); 3881 3882 ///////////////////////////////////////// 3883 }; 3884 3885 //Evento click global 3886 $(document).click(function (event) { 3887 // si hay un popup abierto y el clic se hizo fuera 3888 if ( 3889 currentlyOpenPopup && 3890 currentlyOpenPopup.querySelector(".sta-popoffer-air_box") === event.target 3891 ) { 3892 currentlyOpenPopup.classList.remove("fn-open"); // cierra el popup 3893 currentlyOpenPopup = null; 3894 } 3895 }); 3896 3897 // inicializa todos los popups encontrados en la página 3898 popups.forEach((popupElement) => { 3899 initPopup(popupElement); 3900 }); 3901})( 3902 document.querySelectorAll(".tgl-popoffer-air"), // lista de popups 3903 window.jQuery, 3904 window.hotusa && hotusa(), 3905 document.querySelector(".tgl-enginepage-air.sta-big-wrapper.sta-first") // página de reserva 3906); 3907////////////////////////////////////////////
3908////////////////////////////////////////// 3909//----VIDEOS---- 3910////////////////////////////////////////// 3911 3912//add class banner with video 3913(function (a, $) { 3914 if (!a.length || !$) return false; 3915 3916 for (var i = 0; i < a.length; i++) { 3917 (function (o) { 3918 var $elem = $(o.querySelector(".sta-banner-air_multimedia-video")); 3919 if (!$elem.length || !($elem.data("video") || $elem.data("video-wistia"))) 3920 return false; 3921 $(o).addClass("sta-video-on"); 3922 })(a[i]); 3923 } 3924})(document.querySelectorAll(".tgl-banner-air"), window.jQuery); 3925 3926//add class cover with video && seo first img 3927(function (o, $, seo) { 3928 if (!o || !$ || !seo) return false; 3929 3930 if (o.classList.contains("js-dualGallery")) { 3931 var jsDG = window.jsDualGallery, 3932 contGallery = o.querySelector(".sta-cover-air_multimedia"), 3933 addImgs = function (aDesk, aMovil) { 3934 if (aMovil && window.innerWidth < 1000) aDesk = aMovil; 3935 3936 contGallery.textContent = ""; 3937 for (var i = 0; i < aDesk.length; i++) { 3938 (function (a) { 3939 var figure = document.createElement("figure"), 3940 imgFigure = document.createElement("img"); 3941 3942 figure.style.backgroundImage = 'url("' + a.url + '")'; 3943 imgFigure.src = 'url("' + a.url + '")'; 3944 3945 figure.className = "sta-cover-air_photo"; 3946 figure.setAttribute("role", "img"); 3947 figure.setAttribute("aria-label", ""); 3948 3949 imgFigure.className = "imgOcultaAda"; 3950 imgFigure.alt = 3951 window.dataSeo && 3952 window.dataSeo.hotel && 3953 window.dataSeo.hotel.name 3954 ? window.dataSeo.hotel.name 3955 : ""; 3956 3957 figure.append(imgFigure); 3958 3959 contGallery.append(figure); 3960 })(aDesk[i]); 3961 } 3962 }; 3963 if (!jsDG) { 3964 console.trace("ERROR: Global Variable jsDualGallery Not Found"); 3965 } else { 3966 jsDG.movil.length == jsDG.desk.length 3967 ? addImgs(jsDG.desk, jsDG.movil) 3968 : addImgs(jsDG.desk); 3969 } 3970 } 3971 3972 var $elem = $(o.querySelector(".sta-cover-air_video-element")), 3973 img = o.querySelector(".sta-cover-air_multimedia .sta-cover-air_photo img"); 3974 3975 if (window.putCoverArrow) putCoverArrow(); 3976 3977 if (!$elem.length || !($elem.data("video") || $elem.data("video-wistia"))) 3978 return false; 3979 3980 $(o).addClass("sta-video-on"); 3981})(
3982 document.querySelector(".tgl-cover-air"), 3983 window.jQuery, 3984 window.dataSeo 3985); 3986 3987// function modular video 3988(function (a, $, h) { 3989 if (!a.length || !$ || !h) return false; 3990 3991 var API_YOUTUBE = "https://www.youtube.com/iframe_api", 3992 API_WISTIA = "https://fast.wistia.net/assets/external/E-v1.js", 3993 vidRescale = function ($o) { 3994 var video = $(".embed_youtube", $o); 3995 (vidRatio = 16 / 9), 3996 (wrapperHeight = $o.height()), 3997 (wrapperWidth = $o.width()), 3998 (wrapperRatio = wrapperWidth / wrapperHeight); 3999 4000 if (wrapperRatio < vidRatio) { 4001 var newWidth = wrapperWidth * (vidRatio / wrapperRatio); 4002 video.css({ 4003 "min-height": wrapperHeight + "px", 4004 "min-width": newWidth + "px", 4005 position: "absolute", 4006 left: "50%", 4007 "margin-left": "-" + newWidth / 2 + "px", 4008 }); 4009 } else { 4010 var newHeight = wrapperHeight * (wrapperRatio / vidRatio); 4011 video.css({ 4012 "min-height": newHeight + "px", 4013 "min-width": wrapperWidth + "px", 4014 position: "absolute", 4015 top: "50%", 4016 "margin-top": "-" + newHeight / 2 + "px", 4017 }); 4018 } 4019 }, 4020 cargaYoutube = function ($mod, id, $insert) { 4021 var onPlayerReady = function (ev) { 4022 ev.target.setPlaybackQuality("hd1080"); 4023 ev.target.unMute(); 4024 ev.target.mute(); 4025 ev.target.playVideo(); 4026 }, 4027 onPlayerStateChange = function (ev) { 4028 if (ev.data === YT.PlayerState.PLAYING) { 4029 $insert.addClass("fn-loaded"); 4030 if (obj.cover) { 4031 vidRescale($mod); 4032 if (first) { 4033 first = false; 4034 $(window).on("resize", function () { 4035 vidRescale($mod); 4036 }); 4037 } 4038 } 4039 $mod.addClass("sta-videoActive"); 4040 if (obj.sound) { 4041 if ( 4042 navigator.userAgent.toLowerCase().indexOf("chrome") > -1 || 4043 navigator.userAgent.toLowerCase().indexOf("safari") > -1 4044 ) { 4045 console.trace( 4046 "Error: Chromium y iPhone no permite autoplay con videos con sonido.\n", 4047 "https://goo.gl/xX8pDD" 4048 ); 4049 } else { 4050 ev.target.unMute(); 4051 ev.target.playVideo(); 4052 } 4053 } else { 4054 ev.target.mute(); 4055 } 4056 } 4057 }, 4058 obj = { 4059 player: null, 4060 $frame: false, 4061 cover: !$mod.hasClass("not-videoCover") ? true : false, 4062 sound: $mod.hasClass("sta-videoSound") ? true : false, 4063 json: { 4064 videoId: id, 4065 playerVars: { 4066 showinfo: 0, 4067 modestbranding: 1, 4068 iv_load_policy: 3, 4069 enablejsapi: 1, 4070 playlist: id, 4071 loop: 1, 4072 controls: 0, 4073 hd: 1, 4074 height: 1080, 4075 width: 1920, 4076 }, 4077 events: { 4078 onReady: onPlayerReady, 4079 onStateChange: onPlayerStateChange, 4080 }, 4081 }, 4082 }, 4083 first = true; 4084 4085 YT.ready(function () { 4086 obj.player = new YT.Player("idYoutube_" + id, obj.json, { 4087 videoId: id, 4088 host: "https://www.youtube.com", 4089 }); 4090 }); 4091 }, 4092 cargaWistia = function ($mod, id, $insert) { 4093 $mod.addClass("loadVideoWistia"); 4094 $("<div></div>", { 4095 class: "wistia_embed wistia_async_" + id, 4096 id: "idWistia_" + id, 4097 }).appendTo($insert); 4098 window._wq = window._wq || []; 4099 4100 _wq.push({ 4101 id: "idWistia_" + id, 4102 options: { 4103 endVideoBehavior: "loop", 4104 autoPlay: true, 4105 videoFoam: false, 4106 playButton: false, 4107 playbar: false, 4108 smallPlayButton: false, 4109 fullscreenButton: false, 4110 volumeControl: false,
4111 volume: $mod.hasClass("sta-videoSound") ? 1 : 0, 4112 }, 4113 onReady: function (video) { 4114 video.bind("play", function (e) { 4115 $insert.addClass("fn-loaded"); 4116 $mod.addClass("sta-videoActive"); 4117 4118 if (!$mod[0].classList.contains("cargado")) { 4119 var newButton = document.createElement("button"); 4120 var container = $mod[0]; 4121 newButton.className = "btn-sound muted"; 4122 newButton.ariaLabel = "Silenciar audio"; 4123 4124 container.appendChild(newButton); 4125 4126 const mediaQuery = window.matchMedia( 4127 "(min-width: 800px) and (max-width: 1024px)" 4128 ); 4129 4130 if (mediaQuery.matches && 4131 container.classList.contains("tgl-cover-air")) 4132 { 4133 const el = document.getElementById("default_sygy_element_engine"); 4134 const offest = 10; 4135 newButton.style.bottom = el.clientHeight + offest + "px"; 4136 } 4137 4138 newButton 4139 .addEventListener("click", function () { 4140 if (video.isMuted()) { 4141 if (newButton.classList.contains("muted")) { 4142 newButton.classList.remove("muted"); 4143 newButton.classList.add("unmuted"); 4144 } 4145 video.unmute(); 4146 } else { 4147 if (newButton.classList.contains("unmuted")) { 4148 newButton.classList.remove("unmuted"); 4149 newButton.classList.add("muted"); 4150 } 4151 video.mute(); 4152 } 4153 }); 4154 container.classList.add("cargado"); 4155 } 4156 }); 4157 if ($mod.hasClass("sta-videoSound")) { 4158 video.unmute(); 4159 } else { 4160 video.mute(); 4161 } 4162 video.play(); 4163 }, 4164 }); 4165 4166 h.cargarFicheroJS(API_WISTIA); 4167 }; 4168 4169 for (var i = 0; i < a.length; i++) { 4170 (function (o) { 4171 var $insert = $(o.querySelector(".sta-insert-video")), 4172 id_youtube = $insert.data("video"), 4173 id_wistia = $insert.data("video-wistia"); 4174 4175 if ( 4176 !(id_youtube || id_wistia) || 4177 !(window.innerWidth >= 1280 || $(o).hasClass("sta-videoMovil")) 4178 ) 4179 return false; 4180 4181 h.cargaScrollAuto({ obj: o, dual: true }, function () { 4182 if (id_youtube) { 4183 $(o).hover(function () { 4184 $insert.append( 4185 $("<div></div>", { 4186 class: "embed_youtube", 4187 id: "idYoutube_" + id_youtube, 4188 }) 4189 ); 4190 4191 h.cargarFicheroJS(API_YOUTUBE, function () { 4192 cargaYoutube($(o), id_youtube, $insert); 4193 }); 4194 }); 4195 } else if (id_wistia) { 4196 cargaWistia($(o), id_wistia, $insert); 4197 } 4198 }); 4199 })(a[i]); 4200 } 4201})( 4202 document.querySelectorAll(".sta-video-on"), 4203 window.jQuery, 4204 window.hotusa && hotusa() 4205); 4206 4207// Accesibilidad tablas (scopes y caption) 4208(function() { 4209 document.addEventListener("DOMContentLoaded", function() { 4210 document.querySelectorAll("table").forEach(tabla => { 4211 // Encabezados de columna 4212 const primeraFila = tabla.rows[0]; 4213 if (primeraFila) { 4214 Array.from(primeraFila.cells).forEach(celda => { 4215 if (celda.tagName === "TH") { 4216 celda.setAttribute("scope", "col"); 4217 } 4218 }); 4219 } 4220 4221 // Encabezados de fila 4222 Array.from(tabla.rows).slice(1).forEach(fila => { 4223 const primeraCelda = fila.cells[0]; 4224 if (primeraCelda && primeraCelda.tagName === "TH") { 4225 primeraCelda.setAttribute("scope", "row"); 4226 } 4227 }); 4228 4229 // Caption (caption-visibility) 4230 if (!tabla.querySelector("caption")) { 4231 const section = tabla.closest("section"); 4232 if (section) { 4233 const titulo = section.querySelector(".sta-intro-air_header .sta-intro-air_title"); 4234 if (titulo) { 4235 const caption = document.createElement("caption"); 4236 caption.className = "caption-visibility"; 4237 caption.textContent = titulo.textContent.trim(); 4238 tabla.insertBefore(caption, tabla.firstChild); 4239 } 4240 } 4241 } 4242 });
4243 }); 4244})(); 4245 4246// Alts de las imagenes 4247(function() { 4248 function asignarAlt(img) { 4249 if (!img.src) return; 4250 const hashIndex = img.src.indexOf("#"); 4251 if (hashIndex !== -1) { 4252 let hashContent = img.src.substring(hashIndex + 1); 4253 hashContent = decodeURIComponent(hashContent).replace(/[^a-zA-Z0-9áéÃóúÃÃÃÃÃñÃ]+/g, " ").trim(); 4254 if (hashContent) { 4255 img.alt = hashContent; 4256 } 4257 } 4258 } 4259 document.addEventListener("load", function(e) { 4260 if (e.target.tagName === "IMG") { 4261 asignarAlt(e.target); 4262 } 4263 }, true); 4264})(); 4265 4266 4267 4268(function() { 4269 // Traducciones de "Ver más" y "Ver menos" 4270 const traducciones = { 4271 'es': { verMas: 'Ver más', verMenos: 'Ver menos' }, 4272 'en': { verMas: 'Read more', verMenos: 'Read less' }, 4273 'fr': { verMas: 'Voir plus', verMenos: 'Voir moins' }, 4274 'it': { verMas: 'Vedi di più', verMenos: 'Vedi di meno' }, 4275 'de': { verMas: 'Mehr lesen', verMenos: 'Weniger lesen' }, 4276 'pt': { verMas: 'Ver mais', verMenos: 'Ver menos' }, 4277 'ca': { verMas: 'Veure més', verMenos: 'Veure menys' }, 4278 'gl': { verMas: 'Ver máis', verMenos: 'Ver menos' }, 4279 'ar': { verMas: 'Ø§ÙØ±Ø£ اÙÙ Ø²ÙØ¯', verMenos: 'Ø§ÙØ±Ø£ Ø£ÙÙ' }, 4280 'ru': { verMas: 'ЧиÑаÑÑ Ð´Ð°Ð»ÐµÐµ', verMenos: 'ЧиÑаÑÑ Ð¼ÐµÐ½ÑÑе' } 4281 }; 4282 4283 function obtenerIdioma() { 4284 const lang = document.documentElement.getAttribute('lang') || 'es'; 4285 return lang.toLowerCase().substring(0, 2); 4286 } 4287 4288 function obtenerTraduccion() { 4289 const idioma = obtenerIdioma(); 4290 return traducciones[idioma] || traducciones['es']; 4291 } 4292 4293 function initVerMas() { 4294 const contenedores = document.querySelectorAll('[class*="sta-ver-mas-"]'); 4295 4296 contenedores.forEach(contenedor => { 4297 const clases = Array.from(contenedor.classList); 4298 const claseVerMas = clases.find(clase => clase.startsWith('sta-ver-mas-') && /\d/.test(clase)); 4299 4300 if (!claseVerMas) return; 4301 4302 // Verificar si solo debe aplicarse en móvil 4303 const soloMovil = contenedor.classList.contains('sta-ver-mas-movil'); 4304 if (soloMovil && window.innerWidth >= 1024) return; 4305 4306 // Verificar si el botón debe estar centrado 4307 const centrado = contenedor.classList.contains('sta-ver-mas-center'); 4308 4309 const numPalabras = parseInt(claseVerMas.replace('sta-ver-mas-', '')); 4310 4311 if (isNaN(numPalabras) || numPalabras <= 0) return; 4312 4313 let textoElement = null; 4314 4315 if (contenedor.classList.contains('tgl-intro-air')) { 4316 textoElement = contenedor.querySelector('.sta-intro-air_info-text'); 4317 } else if (contenedor.classList.contains('tgl-cardpage-air')) { 4318 textoElement = contenedor.querySelector('.sta-cardpage-air_intro .sta-cardpage-air_intro-text'); 4319 } else if (contenedor.classList.contains('tgl-carousel-air')) { 4320 const elementos = contenedor.querySelectorAll('.sta-carousel-air_info-element .sta-carousel-air_info-text'); 4321 elementos.forEach(elem => procesarTexto(elem, numPalabras, centrado)); 4322 return; 4323 } 4324 4325 if (!textoElement) return; 4326 4327 procesarTexto(textoElement, numPalabras, centrado); 4328 }); 4329 } 4330 4331 function procesarTexto(textoElement, numPalabras, centrado = false) { 4332 const traduc = obtenerTraduccion(); 4333 const textoOriginal = textoElement.innerHTML.trim(); 4334 4335 const tempDiv = document.createElement('div'); 4336 tempDiv.innerHTML = textoOriginal; 4337 const textoPlano = tempDiv.textContent || tempDiv.innerText || ''; 4338 4339 const palabras = textoPlano.trim().split(/\s+/); 4340 4341 if (palabras.length <= numPalabras) return; 4342 4343 // Función para truncar HTML preservando etiquetas 4344 function truncarHTMLConEstilos(contenedor, maxPalabras) { 4345 let contadorPalabras = 0; 4346 let encontrado = false; 4347 4348 function recorrerNodos(nodo) { 4349 if (encontrado) return false; 4350 4351 if (nodo.nodeType === Node.TEXT_NODE) { 4352 const texto = nodo.textContent; 4353 const palabrasTexto = texto.trim().split(/\s+/).filter(p => p.length > 0); 4354 4355 if (contadorPalabras + palabrasTexto.length <= maxPalabras) { 4356 contadorPalabras += palabrasTexto.length; 4357 return true; 4358 } else { 4359 // Truncar este nodo de texto 4360 const palabrasRestantes = maxPalabras - contadorPalabras; 4361 const palabrasTomar = palabrasTexto.slice(0, palabrasRestantes); 4362 nodo.textContent = palabrasTomar.join(' ') + '...'; 4363 contadorPalabras = maxPalabras; 4364 encontrado = true; 4365 return false; 4366 } 4367 } else if (nodo.nodeType === Node.ELEMENT_NODE) { 4368 const hijos = Array.from(nodo.childNodes); 4369 for (let i = 0; i < hijos.length; i++) { 4370 if (!recorrerNodos(hijos[i])) { 4371 // Eliminar hermanos siguientes 4372 for (let j = i + 1; j < hijos.length; j++) { 4373 hijos[j].remove(); 4374 } 4375 return false; 4376 } 4377 } 4378 } 4379 4380 return true; 4381 } 4382 4383 recorrerNodos(contenedor); 4384 4385 // Limpiar etiquetas vacÃas del final 4386 function limpiarVacios(elemento) { 4387 const hijos = Array.from(elemento.childNodes); 4388 for (let i = hijos.length - 1; i >= 0; i--) { 4389 const hijo = hijos[i]; 4390 if (hijo.nodeType === Node.ELEMENT_NODE) { 4391 limpiarVacios(hijo); 4392 if (!hijo.textContent.trim() && !hijo.querySelector('img, br')) { 4393 hijo.remove(); 4394 } 4395 } 4396 } 4397 } 4398 4399 limpiarVacios(contenedor); 4400 4401 return contenedor.innerHTML; 4402 } 4403 4404 const tempContainer = document.createElement('div'); 4405 tempContainer.innerHTML = textoOriginal; 4406 const textoTruncado = truncarHTMLConEstilos(tempContainer, numPalabras); 4407 4408 textoElement.innerHTML = textoTruncado; 4409 4410 const btnVerMas = document.createElement('button'); 4411 btnVerMas.className = 'sta-ver-mas-btn'; 4412 btnVerMas.textContent = traduc.verMas; 4413 4414 // Estilos base del botón 4415 let estilosBoton = 'background: none; border: none; color:inherit; cursor: pointer; font-weight: 600; padding: 5px 0; text-decoration: underline; font-size: inherit; font-family: var(--bodyFont), Catamaran;'; 4416 4417 // Si está centrado, añadir estilos de centrado 4418 if (centrado) { 4419 estilosBoton += ' display: block; margin: 10px auto 0; text-align: center;'; 4420 } else { 4421 estilosBoton += ' display: inline; margin-left: 5px;'; 4422 } 4423 4424 btnVerMas.style.cssText = estilosBoton; 4425 4426 let expandido = false; 4427
4428 // Función para insertar el botón en el último nodo que contiene texto 4429 const insertarBoton = () => { 4430 // Función recursiva para encontrar el último elemento que contiene texto 4431 const encontrarUltimoContenedor = (elemento) => { 4432 const hijos = Array.from(elemento.childNodes); 4433 4434 for (let i = hijos.length - 1; i >= 0; i--) { 4435 const hijo = hijos[i]; 4436 4437 if (hijo.nodeType === Node.TEXT_NODE && hijo.textContent.trim()) { 4438 return elemento; 4439 } else if (hijo.nodeType === Node.ELEMENT_NODE) { 4440 const resultado = encontrarUltimoContenedor(hijo); 4441 if (resultado) return resultado; 4442 } 4443 } 4444 4445 return null; 4446 }; 4447 4448 if (centrado) { 4449 // Si está centrado, añadir al final del contenedor principal 4450 textoElement.appendChild(btnVerMas); 4451 } else { 4452 // Si no está centrado, insertar dentro del último elemento con texto 4453 const ultimoContenedor = encontrarUltimoContenedor(textoElement); 4454 if (ultimoContenedor) { 4455 ultimoContenedor.appendChild(btnVerMas); 4456 } else { 4457 textoElement.appendChild(btnVerMas); 4458 } 4459 } 4460 }; 4461 4462 btnVerMas.addEventListener('click', function(e) { 4463 e.preventDefault(); 4464 4465 if (expandido) { 4466 textoElement.innerHTML = textoTruncado; 4467 btnVerMas.textContent = traduc.verMas; 4468 expandido = false; 4469 } else { 4470 textoElement.innerHTML = textoOriginal; 4471 btnVerMas.textContent = traduc.verMenos; 4472 expandido = true; 4473 } 4474 4475 // Mantener los estilos al volver a insertar el botón 4476 btnVerMas.style.cssText = estilosBoton; 4477 insertarBoton(); 4478 }); 4479 4480 insertarBoton(); 4481 } 4482 4483 if (document.readyState === 'loading') { 4484 document.addEventListener('DOMContentLoaded', initVerMas); 4485 } else { 4486 initVerMas(); 4487 } 4488})(); 4489 4490//Eliminar enlaces sin href o con href="javascript:void(0)" o href="#" 4491(function () { 4492 const links = document.querySelectorAll( 4493 'a[href="javascript:void(0)"], a[href="#"], a[href="javascript:void0"]' 4494 ); 4495 4496 links.forEach(link => { 4497 const div = document.createElement('div'); 4498 4499 div.innerHTML = link.innerHTML; 4500 if(link.classList.length > 0) 4501 div.className = link.className; 4502 4503 [...link.attributes].forEach(attr => { 4504 if (attr.name.startsWith('data-')) { 4505 div.setAttribute(attr.name, attr.value); 4506 } 4507 }); 4508 4509 div.setAttribute('tabindex', '0'); 4510 4511 link.replaceWith(div); 4512 const container = div.closest('.sta-products-air_element'); 4513 if (container) { 4514 container.style.pointerEvents = 'none'; 4515 } 4516 }); 4517})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.