1/* CUSTOM SCRIPTS */ 2/* ----------------------------------------- */ 3jQuery(window).on("load", function() { 4 //Copyright Script 5 var dateYear = new Date().getFullYear(); 6 if(jQuery("#copyright").length > 0) { 7 document.getElementById("copyright").innerHTML = dateYear; 8 } 9 10 //Temporary Code //Remove when expired //FEBE-13752 11 var availableQty; 12 if(jQuery("#ticket-registration").length > 0) { 13 availableQty = jQuery("#ticket-registration").find(".tribe-tickets__tickets-item-extra-available-quantity").first().text(); 14 jQuery("#ticket-registration").find("h2").first().html("Tickets & Sponsorships"); 15 //jQuery("#ticket-registration").find("h2").first().html("Tickets: " + availableQty + " total tickets available"); 16 //console.log("The total quantity is " + availableQty); 17 } 18 19 //Feedback Page Scripts 20 jQuery("select[name='feedbackTopic']").on("change", function() { 21 feedbackValue = jQuery(this).val(); 22 23 if(feedbackValue == "Recent Visit") { 24 jQuery("input[name='feedbackWebsite']").prop( "checked", false ); 25 } else if(feedbackValue == "About this Website") { 26 jQuery("input[name='feedbackExperience']").prop( "checked", false ); 27 jQuery("input[name='feedbackReturn']").prop( "checked", false ); 28 } else { 29 jQuery("input[name='feedbackWebsite']").prop( "checked", false ); 30 jQuery("input[name='feedbackExperience']").prop( "checked", false ); 31 jQuery("input[name='feedbackReturn']").prop( "checked", false ); 32 } 33 }); 34 35 //QR Code Scanning //NOT FINALIZED 36 if(jQuery("#reader").length > 0) { 37 /* 38 function onScanSuccess(decodedText, decodedResult) { 39 // Handle on success condition with the decoded text or result. 40 //console.log('Scan result: ${decodedText}', decodedResult); 41 alert("successful scan"); 42 } 43 44 var html5QrcodeScanner = new Html5QrcodeScanner( 45 "reader", { fps: 10, qrbox: 250 }); 46 html5QrcodeScanner.render(onScanSuccess); 47 */ 48 49 var html5QrcodeScanner = new Html5QrcodeScanner( 50 "reader", { fps: 10, qrbox: 250 }); 51 52 function onScanSuccess(decodedText, decodedResult) { 53 // Handle on success condition with the decoded text or result. 54 console.log(`Scan result: ${decodedText}`, decodedResult); 55 // ... 56 html5QrcodeScanner.clear(); 57 // ^ this will stop the scanner (video feed) and clear the scan area. 58 } 59 60 html5QrcodeScanner.render(onScanSuccess); 61 } 62 63 //Height Setup IFRAME 64 if(jQuery("#fulfillengineiframe").length > 0) { 65 function loadShop() { 66 (function () { 67 var y = 0, 68 t = "fulfillengineiframe"; 69 window.addEventListener( 70 "message", 71 function (e) { 72 const delayInMilliseconds = 180; 73 74 setTimeout(function() { 75 if (!e || !e.data || e.data.length < 2) return 0; 76 var a = document.getElementById(t); 77 if (!a) return 0; 78 var r = e.data[0], 79 i = e.data[1]; 80 i = i.slice(0,-2); 81 i = Number(i); 82 i = i + 225; 83 if("iframeScrollUp" === r) { 84 i = 0; 85 } 86 87 //console.log("conditional value: " + r + ", assigning value: " + i); 88 "setIframeHeight" === r ? a.setAttribute("style", "height:" + i + "px") : "iframeScrollUp" === r && a.getBoundingClientRect().y < y && window.scrollTo(0, a.getBoundingClientRect().y + window.scrollY - y); 89 }, delayInMilliseconds); 90 }, 91 !1 92 ); 93 })(); 94 } 95 96 jQuery.when(loadShop()).then(function() { 97 setTimeout(function() { 98 jQuery("#fulfillengineiframe").height(1500); //Original height //1175 99 jQuery("#shop-iframe").removeClass("shop-iframe"); 100 jQuery("#shop-iframe > div").remove(); 101 }, 1000); 102 }); 103 } 104 105 //Navigation Reset on Resize 106 function windowSize() { 107 windowHeight = window.innerHeight ? window.innerHeight : $(window).height(); 108 windowWidth = window.innerWidth ? window.innerWidth : $(window).width(); 109 } 110 111 jQuery(window).resize(function() { 112 windowSize(); 113 114 if (windowWidth > 1024) { 115 //console.log('width is :', windowWidth, 'Height is :', windowHeight); 116 jQuery(".sub-menu").removeAttr("style"); 117 jQuery(".hfe-has-submenu-container").removeClass("menu-active"); 118 } 119 }); 120 121 //Scroll Disable for Calendar 122 if(jQuery("#banner-calendar").length > 0) { 123 setTimeout(function() { 124 //Replace the scrollUp method with a no-op 125 tribe.events.views.navigationScroll.scrollUp = function() {}; 126
127 //Unbind and rebind the event so the no-op runs instead of scrolling 128 jQuery(document) 129 .off("afterAjaxSuccess.tribeEvents", tribe.events.views.manager.selectors.container) 130 .on("afterAjaxSuccess.tribeEvents", tribe.events.views.manager.selectors.container, tribe.events.views.navigationScroll.scrollUp); 131 }, 100); // 100ms delay to ensure it's last 132 } 133 134 //Randomize Quotes // Images 135 if(jQuery(".home #home-video").length > 0) { 136 function getRandomIntInclusive(min, max) { 137 min = Math.ceil(min); 138 max = Math.floor(max); 139 return Math.floor(Math.random() * (max - min + 1)) + min; 140 } 141 142 const randomNumber1 = getRandomIntInclusive(0, 2); 143 const randomNumber2 = getRandomIntInclusive(3, 5); 144 //console.log("First random number: ", randomNumber1); 145 //console.log("Second random number: ", randomNumber2); 146 147 jQuery(".parallax-img").each(function(index, value) { 148 if(index === randomNumber1 || index === randomNumber2) { 149 jQuery("#parallax-img" + index).show(); 150 } else { 151 jQuery("#parallax-img" + index).remove(); 152 } 153 }); 154 } 155 156 //Landing Pages Video Gallery 157 jQuery("#collections-vid-gallery .epyt-gallery-thumb").on("click", function() { 158 let videoID = jQuery(this).find(".epyt-gallery-img").attr("style").split("/vi/").pop().split("/").shift(); 159 //console.log("The video ID is: " + videoID); 160 jQuery("#current-video").attr("src", "https://www.youtube.com/embed/" + videoID + "?autoplay=1"); 161 jQuery("#collections-vid-lightbox").fadeIn(300); 162 jQuery("body").addClass("video-is-active"); 163 164 return false; 165 }); 166 167 jQuery("#collections-close").on("click", function() { 168 jQuery("#collections-vid-lightbox").fadeOut(240); 169 jQuery("#current-video").attr("src", ""); 170 jQuery("body").removeClass("video-is-active"); 171 }); 172 173 jQuery("#collections-vid-gallery .epyt-gallery-rowbreak ~ .epyt-gallery-rowbreak").remove(); 174 jQuery("#collections-vid-gallery .epyt-gallery-thumb:nth-of-type(n+4)").remove(); 175 jQuery("#collections-vid-gallery .epyt-gallery > figure").remove(); 176 jQuery("#collections-vid-gallery .epyt-pagination").remove(); 177 178 //News Tile Link: No Featured Image 179 if(jQuery("#tiles-news").length > 0) { 180 jQuery("#tiles-news article").each(function() { 181 if (!jQuery(this).hasClass("has-post-thumbnail")) { 182 var newsLink = jQuery(this).find(".elementor-post__title a").attr("href"); 183 184 jQuery(this).prepend("<a href=" + newsLink + "></a>"); 185 } 186 }); 187 } 188 189 //Prepend Verbiage if the URL path contains 'tag' 190 if (!jQuery("body").hasClass("error404")) { 191 if (window.location.href.indexOf(".com/tag/") > -1) { 192 jQuery("#banner-standard .elementor-heading-title").prepend("Selected tag: "); 193 } 194 } 195 196 //Filter Component for Autos and Music Machines 197 jQuery("#machine-filter a").on("click", function() { 198 jQuery("#machine-filter .elementor-widget-button").removeClass("current"); 199 jQuery(this).closest(".elementor-widget-button").addClass("current"); 200 return false; 201 }); 202 203 //Resolving Elementor Bug v3.30.0 Until Patch is Available 204 if(jQuery("#machine-filter").length > 0) { 205 jQuery(".elementor-loop-container .e-loop-item").each(function() { 206 //grab the link 207 var loopLink = jQuery(this).find(".elementor-widget-theme-post-featured-image a").attr("href"); 208 209 //remove the link 210 jQuery(this).find(".elementor-widget-theme-post-featured-image a").contents().unwrap(); 211 jQuery(this).find(".elementor-heading-title a").contents().unwrap(); 212 213 //reapply the link 214 jQuery(this).find(".elementor-widget-theme-post-featured-image img").wrap("<a href='" + loopLink + "'>"); 215 jQuery(this).find(".elementor-heading-title").wrapInner("<a href='" + loopLink + "'>"); 216 }); 217 } 218 219 //Museum Script 220 //Full Screen Toggle 221 function btnChrome_onclick() { 222 document.documentElement.webkitRequestFullScreen(); 223 } 224 225 jQuery("#museum-fullscreen").on("click", function() { 226 btnChrome_onclick(); 227 return false;
228 }); 229 230 //Museum Script 231 //Enable/disable CF7 Button Element 232 jQuery("#museum-terms").click(function() { 233 if (jQuery(this).is(":checked")) { 234 jQuery("#museum-submit button").removeClass("disabled").removeAttr("tabindex"); 235 } else { 236 jQuery("#museum-submit button").addClass("disabled").attr("tabindex", -1); 237 } 238 }); 239 240 //Museum Script 241 //Disable blank option in country field 242 var blankSelect = jQuery(".wpcf7 select[name='Country']"); 243 jQuery("option[value='âââââââââ']", blankSelect).attr("disabled", true); 244 jQuery("option[value='âââââââââ']", jQuery(".wpcf7 select[name='carState']")).attr("disabled", true); 245 246 //Museum Script 247 //Default Values 248 var currNumber = ""; 249 var prevCustomer = false; 250 var selectedValue = ""; 251 var minorsField = ""; 252 var guestsField = ""; 253 var initialLoad = true; 254 255 const tierBronze = 15; 256 const tierSilver = 25; 257 const tierGold = 35; 258 const tierPlatinum = 50; 259 const tierDiamond = 100; 260 let yourTier; 261 262 function pageFormReset() { 263 prevCustomer = false; 264 currNumber = ""; 265 jQuery("#museum-reset").trigger("click"); 266 jQuery("#museum-step1").show(); 267 jQuery("#phone-entry, #museum-phone-duplicate").val(""); 268 jQuery("#museum-country").val(jQuery("#museum-country option:first").val()); 269 //jQuery("#museum-country").val("United States"); //WP-950 270 jQuery("#museum-referral").val(jQuery("#museum-referral option:first").val()); 271 jQuery("#museum-state").val(jQuery("#museum-state option:first").val()); 272 //jQuery("#museum-state").val("Michigan"); //WP-950 273 jQuery("#museum-province").val(jQuery("#museum-province option:first").val()); 274 jQuery("#customer-tier-note").hide(); 275 jQuery("#customer-name, #customer-visits").empty(); 276 jQuery("#museum-visits").val("1"); 277 jQuery("#validation-msg").removeClass("validation-error").empty(); 278 jQuery("#museum-submit button").addClass("disabled"); 279 } 280 281 jQuery("#museum-country").on("change", function() { 282 selectedValue = jQuery("#museum-country").val(); 283 jQuery("#museum-state").val(jQuery("#museum-state option:first").val()); 284 jQuery("#museum-province").val(jQuery("#museum-province option:first").val()); 285 jQuery(".museum-zip, .museum-postal").val(""); 286 }); 287 288 //Museum Script 289 //All Navigation Buttons //STEP 01 290 jQuery("#museum-step1 > div").on("click", function() { 291 jQuery("#museum-step1").hide(); 292 293 var index = jQuery(this).index(); 294 //console.log("index is " + index); 295 296 if(index == 0) { 297 if(initialLoad == true) { 298 initialLoad = false; 299 jQuery("#museum-country").val(jQuery("#museum-country option:first").val()); //WP-950 300 jQuery("#museum-state").val(jQuery("#museum-state option:first").val()); //WP-950 301 } 302 303 jQuery("#museum-step4").show(); 304 } else if(index == 1) { 305 prevCustomer = true; 306 jQuery("#museum-step2").show(); 307 } 308 }); 309 310 //Museum Script 311 //All Navigation Buttons //STEP 02 312 jQuery("#museum-step2 .museum-back").on("click", function() { 313 jQuery("#museum-reset").trigger("click"); 314 jQuery("#museum-step2").hide(); 315 pageFormReset(); 316 return false; 317 }); 318 319 //All Navigation Buttons //STEP 03 320 jQuery("#museum-step3 .museum-edit").on("click", function() { 321 jQuery("#museum-step3").hide(); 322 jQuery("#museum-step4").show(); 323 return false; 324 }); 325 326 //All Navigation Buttons //STEP 04 327 jQuery("#museum-step4 .museum-back").on("click", function() { 328 jQuery("#museum-step4").hide(); 329 330 if(prevCustomer == true) { 331 jQuery("#museum-step2").show(); 332 } else { 333 pageFormReset(); 334 } 335 336 return false; 337 }); 338 339 //Museum Script 340 //STEP 02 Return Visitor Validation 341 jQuery("#phone-grid > span").on("click", function() { 342 var newNumber = jQuery(this).data("numeral"); 343 344 if(newNumber == "Back") { 345 if(currNumber.length > 0) { 346 currNumber = currNumber.substring(0, currNumber.length - 1); 347 } 348 } else { 349 if(currNumber.length > 0 && currNumber.length < 15) { 350 currNumber = currNumber.concat(newNumber.toString()); 351 //console.log("number is " + currNumber); 352 } else if(currNumber.length < 1) { 353 currNumber = newNumber.toString(); 354 //console.log("number is " + currNumber); 355 } 356 } 357 358 //new string applied 359 document.getElementById("phone-entry").value = currNumber; 360 }); 361 362 //Museum Script 363 //Numbers Only for Phone Field 364 //Replicate Minors Field 365 var museumPhone = document.getElementById("museum-phone"); 366 var returnMinors = document.getElementById("return-minors"); 367 var returnGuests = document.getElementById("return-guests"); 368 369 if(museumPhone) { 370 museumPhone.addEventListener("blur", numbersOnly); 371 } 372 373 if(returnMinors) { 374 returnMinors.addEventListener("blur", replicateMinors); 375 } 376 377 if(returnGuests) { 378 returnGuests.addEventListener("blur", replicateGuests); 379 } 380 381 function numbersOnly() { 382 var phoneNumber = document.getElementById("museum-phone").value; 383 phoneNumber = phoneNumber.replace(/\D/g,''); 384 document.getElementById("museum-phone").value = phoneNumber; 385 } 386 387 function replicateMinors() { 388 minorsField = jQuery("#return-minors").val(); 389 //console.log("minors count is " + minorsField); 390 jQuery("#museum-minors").val(minorsField); 391 } 392 393 function replicateGuests() { 394 guestsField = jQuery("#return-guests").val(); 395 //console.log("guests count is " + guestsField); 396 jQuery("#museum-guests").val(guestsField); 397 } 398 399 /* testData = { hello: "" } 400 testData["hello"] = "testing"; 401 console.log("Test data: " + testData["hello"]); */ 402 403 //Museum Script 404 jQuery("#phone-submit").on("click", function() { 405
406 jQuery("#validation-msg").removeClass("validation-error").text("Getting information. Please wait..."); 407 408 jQuery("#customer-tier, #customer-tier-note").hide(); //FEBE-10135 409 jQuery("#customer-tier").removeClass("tier bronze silver gold platinum diamond"); //FEBE-10135 410 411 myData = { 412 sa_name: "", 413 sa_email: "", 414 sa_phone: "", 415 sa_country: "", 416 sa_state: "", 417 sa_zip: "", 418 sa_province: "", 419 sa_postal: "", 420 sa_referral: "", 421 sa_visits: "", 422 acct_found: false 423 }; 424 425 jQuery("#phone-submit").attr("disabled", true); 426 jQuery(".museum-back").addClass("disabled"); 427 428 //get number entry 429 var searchedNumber = document.getElementById("phone-entry").value; 430 myData["sa_phone"] = searchedNumber; 431 432 jQuery.ajax({ 433 type: "post", 434 url: window.location.origin + "/wp-admin/admin-ajax.php", 435 data: { 436 action: "customer_data", 437 ajax_data: myData 438 }, 439 complete: function(response) { 440 //console.log(response.responseJSON); 441 jQuery("#validation-msg").removeClass("validation-error").empty(); 442 jQuery("#phone-submit").attr("disabled", false); 443 jQuery(".museum-back").removeClass("disabled"); 444 445 if(response.responseJSON.acct_found == true) { 446 jQuery("#museum-step2").hide(); 447 jQuery("#museum-step3").show(); 448 jQuery("#museum-reset").trigger("click"); 449 450 jQuery("#museum-name").val(response.responseJSON.sa_name); 451 jQuery("#museum-email").val(response.responseJSON.sa_email); 452 jQuery("#museum-phone").val(myData["sa_phone"]); 453 jQuery("#museum-country").val(response.responseJSON.sa_country); 454 jQuery("#museum-state").val(response.responseJSON.sa_state); 455 jQuery("#museum-zip").val(response.responseJSON.sa_zip); 456 jQuery("#museum-province").val(response.responseJSON.sa_province); 457 jQuery("#museum-postal").val(response.responseJSON.sa_postal); 458 459 if(response.responseJSON.sa_referral == "TV/Ad") { 460 jQuery("#museum-referral").val("TV or Ad"); 461 } else { 462 jQuery("#museum-referral").val(response.responseJSON.sa_referral); 463 } 464 465 jQuery("#museum-visits").val(response.responseJSON.sa_visits); 466 jQuery("#museum-minors, #return-minors").val(0); 467 jQuery("#museum-guests, #return-guests").val(1); 468 jQuery("#museum-terms").prop( "checked", true ); 469 jQuery("#museum-submit button").removeClass("disabled"); 470 471 selectedValue = jQuery("#museum-country").val(); 472 473 //Step 3 fields 474 jQuery("#customer-name").empty().text(response.responseJSON.sa_name); 475 jQuery("#customer-visits").empty().text(response.responseJSON.sa_visits); 476 477 //Tier Check 478 yourTier = response.responseJSON.sa_visits; 479 //console.log("tier is: " + yourTier); 480 481 if(yourTier >= tierDiamond) { 482 //Diamond Tier 483 jQuery("#customer-tier").addClass("tier diamond").show().children(".ribbon").empty().text("Diamond Museum Visitor"); 484 } else if(yourTier >= tierPlatinum) { 485 //Platinum Tier 486 jQuery("#customer-tier").addClass("tier platinum").show().children(".ribbon").empty().text("Platinum Museum Visitor"); 487 488 //Close to Diamond 489 if ((tierDiamond - yourTier) == 1) { 490 jQuery("#customer-tier-note").show().empty().text("You will reach Diamond on your next visit!"); 491 } else if((tierDiamond - yourTier) <= 3) { 492 jQuery("#customer-tier-note").show().empty().text("You are " + (tierDiamond - yourTier) + " visits away from Diamond!"); 493 } 494 } else if(yourTier >= tierGold) { 495 //Gold Tier 496 jQuery("#customer-tier").addClass("tier gold").show().children(".ribbon").empty().text("Gold Museum Visitor"); 497 498 //Close to Platinum 499 if ((tierPlatinum - yourTier) == 1) { 500 jQuery("#customer-tier-note").show().empty().text("You will reach Platinum on your next visit!"); 501 } else if ((tierPlatinum - yourTier) <= 3) { 502 jQuery("#customer-tier-note").show().empty().text("You are " + (tierPlatinum - yourTier) + " visits away from Platinum!"); 503 } 504 } else if(yourTier >= tierSilver) { 505 //Silver Tier 506 jQuery("#customer-tier").addClass("tier silver").show().children(".ribbon").empty().text("Silver Museum Visitor"); 507 508 //Close to Gold 509 if ((tierGold - yourTier) == 1) { 510 jQuery("#customer-tier-note").show().empty().text("You will reach Gold on your next visit!"); 511 } else if ((tierGold - yourTier) <= 3) { 512 jQuery("#customer-tier-note").show().empty().text("You are " + (tierGold - yourTier) + " visits away from Gold!"); 513 } 514 } else if(yourTier >= tierBronze) { 515 //Bronze Tier 516 jQuery("#customer-tier").addClass("tier bronze").show().children(".ribbon").empty().text("Bronze Museum Visitor"); 517 518 //Close to Silver 519 if ((tierSilver - yourTier) == 1) { 520 jQuery("#customer-tier-note").show().empty().text("You will reach Silver on your next visit!"); 521 } else if ((tierSilver - yourTier) <= 3) { 522 jQuery("#customer-tier-note").show().empty().text("You are " + (tierSilver - yourTier) + " visits away from Silver!"); 523 } 524 } else { 525 //Close to Bronze 526 if ((tierBronze - yourTier) == 1) { 527 jQuery("#customer-tier-note").show().empty().text("You will reach Bronze on your next visit!"); 528 } else if ((tierBronze - yourTier) <= 3) { 529 jQuery("#customer-tier-note").show().empty().text("You are " + (tierBronze - yourTier) + " visits away from Bronze!"); 530 } 531 } 532 } else {
533 jQuery("#validation-msg").addClass("validation-error").text("Could not find customer information. Try again."); 534 } 535 }, 536 error: function() { 537 //console.log("something went wrong"); 538 } 539 }); 540 return false; 541 }); 542 543 //Museum Script 544 //Confirmation Page 545 jQuery("#museum-step4 button").on("click", function() { 546 jQuery("#museum-modal").fadeIn(120); 547 548 if(prevCustomer == false) { 549 jQuery(this).addClass("disabled"); 550 551 //jQuery Validate Before Submission 552 myData = { 553 sa_phone: "", 554 acct_found: false 555 }; 556 557 //check for duplicate 558 var customerNumber = document.getElementById("museum-phone").value; 559 //console.log("customer number: " + customerNumber); 560 myData["sa_phone"] = customerNumber; 561 562 jQuery.ajax({ 563 type: "post", 564 url: window.location.origin + "/wp-admin/admin-ajax.php", 565 data: { 566 action: "customer_data", 567 ajax_data: myData 568 }, 569 complete: function(response) { 570 //console.log(response.responseJSON); 571 if(response.responseJSON.acct_found == true) { 572 //this number is a duplicate 573 jQuery("#museum-phone-duplicate").val(customerNumber); 574 575 } else { 576 //this number is NOT a duplicate 577 jQuery("#museum-phone-duplicate").val(""); 578 } 579 580 jQuery("#museum-submit input[type='submit']").trigger("click"); 581 }, 582 error: function() { 583 alert("An error has occurred. Please resubmit."); 584 } 585 }); 586 587 //return false; 588 } else { 589 //console.log("return customer"); 590 jQuery("#museum-submit input[type='submit']").trigger("click"); 591 } 592 593 document.addEventListener("wpcf7invalid", function(event) { 594 jQuery("#museum-modal").hide(); 595 jQuery("#museum-step4 button").removeClass("disabled"); 596 }); 597 598 document.addEventListener("wpcf7mailsent", function(event) { 599 setTimeout(function() { 600 window.location.replace("/museum-visitor"); 601 }, 500); 602 603 }, false); 604 }); 605 606 //Museum Script 607 //Return Custom Submit 608 jQuery("#museum-return-submit input[type='submit']").on("click", function() { 609 jQuery("#museum-submit input[type='submit']").trigger("click"); 610 jQuery("#museum-modal").fadeIn(120); 611 jQuery("#return-minors, #return-guests, #museum-return-submit input[type='submit']").attr("disabled", true); 612 jQuery("#museum-edit > a").addClass("disabled"); 613 614 document.addEventListener("wpcf7invalid", function(event) { 615 jQuery("#museum-modal").hide(); 616 jQuery("#museum-step4 button").removeClass("disabled"); 617 }); 618 619 document.addEventListener("wpcf7mailsent", function(event) { 620 setTimeout(function() { 621 window.location.replace("/museum-visitor"); 622 }, 500); 623 624 }, false); 625 626 //console.log("loading"); 627 //return false; 628 }); 629 630 //Map Project 631 //Global Variables 632 var mapForm = jQuery("#map-form").length; 633 var mapPage = jQuery("#map-main").length; 634 635 //Map Page 636 //Custom Map Progress Bar 637 if(mapPage > 0) { 638 const slideshowMaps = document.querySelectorAll(".map-slide"); 639 const nextMapDelay = 20000; //20s 640 let currentMapCounter = 0; 641 let clickedMapCounter = 0; 642 var clickedMapControls = false; 643 var showMap; 644 var barInterval; 645 646 slideshowMaps[currentMapCounter].style.opacity = 1; 647 648 function nextMap() { 649 slideshowMaps[currentMapCounter].style.opacity = 0; 650 651 if(clickedMapControls == true) {
652 clickedMapControls = false; 653 currentMapCounter = clickedMapCounter; 654 } else { 655 currentMapCounter = (currentMapCounter + 1) % slideshowMaps.length; 656 } 657 658 slideshowMaps[currentMapCounter].style.opacity = 1; 659 jQuery(".entry-content .map-slide, .map-controlbar > div").removeClass("current"); 660 jQuery(".entry-content .map-slide:eq("+ currentMapCounter +"), .map-controlbar > div:eq("+ currentMapCounter+")").addClass("current"); 661 662 //RELOAD THE JSON FILE HERE in case there are new entries 663 //JSON Reload 664 665 clearInterval(barInterval); 666 resetProgressBar(); 667 beginningDate = new Date().getTime(); 668 progressBar(); 669 } 670 671 const interval = 200; 672 var progression = document.getElementById("progressbar"); 673 var beginningDate = new Date().getTime(); //time in milliseconds 674 675 function progressBar() { 676 resetProgressBar(); 677 barInterval = setInterval(frame, interval); 678 679 function frame() { 680 //console.log("time foundation: " + beginningDate); 681 var milisecondsFromBegin = new Date().getTime() - beginningDate; 682 var width = Math.floor(milisecondsFromBegin / nextMapDelay * 100); 683 progression.style.width = width + "%"; 684 685 if (width >= 100) { 686 nextMap(); 687 } 688 } 689 } 690 691 function resetProgressBar() { 692 progression.style.width = 0; 693 } 694 695 progressBar(); 696 697 //Slider Toggling 698 jQuery(".map-controlbar > div").on("click", function() { 699 jQuery(".map-controlbar > div").removeClass("current"); 700 jQuery(this).addClass("current"); 701 clickedMapCounter = jQuery(this).data("map-slide"); 702 clickedMapControls = true; 703 nextMap(); 704 }); 705 } 706 707 //Map Form 708 //Messaging Enhancements 709 if(mapForm > 0) { 710 document.addEventListener('wpcf7submit', function(event) { 711 if(mapForm > 0) { 712 jQuery(".wpcf7-response-output").show(); 713 jQuery(".wpcf7.js").addClass("processing").removeClass("completed"); 714 715 setTimeout(function() { 716 jQuery(".wpcf7.js").addClass("completed").removeClass("processing"); 717 jQuery(".wpcf7-response-output").fadeOut(720); 718 }, 2280); 719 } 720 }, false); 721 } 722 723 //Map Project 724 //From Map Data 725 var mapVisitorCount; 726 const timestamp = new Date().getTime(); 727 728 //Read the data length 729 //Popluate data for recent visitors 730 if(mapPage > 0) { 731 jQuery.getJSON("/wp-content/themes/twentytwentyfive-child/javascripts/visitors.json?t=" + timestamp, function(data) { 732 if (Array.isArray(data)) { // Check if the data itself is an array 733 734 mapVisitorCount = data.length; 735 736 if(mapVisitorCount == 0) { 737 jQuery("#map-messages").text("No recent visitors at this time."); 738 } else if(mapVisitorCount == 1) { 739 jQuery("#map-count").html("<strong>" + mapVisitorCount + "</strong> visit to Stahls Motors & Music Experience!"); 740 } else { 741 jQuery("#map-count").html("<strong>" + mapVisitorCount + "</strong> visits to Stahls Motors & Music Experience!"); 742 } 743 744 for (let i = data.length - 1; i >= (data.length - 5); i--) { 745 //const element = data[i]; 746 747 if(data[i].zip != "") { 748 jQuery("#map-messages ol").append("<li>" + data[i].location + ", " + data[i].zip + "</li>"); 749 } else { 750 jQuery("#map-messages ol").append("<li>" + data[i].location + "</li>"); 751 } 752 //console.log(data[i].location); // Process each element from last to first 753 } 754 jQuery("#map-messages").fadeIn(1000); 755 } 756 }).fail(function() { 757 //console.log( "error" ); 758 }).always(function() { 759 //console.log( "complete" ); 760 }); 761 } 762 763 //Map Project 764 //Refresh on XML Updates 765 if(mapPage > 0) { 766 let lastXmlContent = ''; 767 var firstTime = true; 768 769 function checkXmlForChanges() { 770 //console.log("CURRENT: " + lastXmlContent); 771 772 fetch('/wp-content/uploads/wp-google-maps/3markers.xml', { 773 headers: { 774 'Cache-Control': 'no-cache' 775 } 776 }) 777 .then(response => response.text()) 778 .then(xmlContent => { 779 if (xmlContent !== lastXmlContent) { 780 lastXmlContent = xmlContent; 781 // Option 1: Reload the entire page 782 //console.log("NEW: " + lastXmlContent); 783 if(firstTime != true) { 784 window.location.reload(); 785 } else { 786 firstTime = false;
787 } 788 } 789 }) 790 .catch(error => console.error('Error fetching XML:', error)); 791 } 792 793 // Check every 5 seconds (adjust as needed) 794 setInterval(checkXmlForChanges, 5000); 795 } 796 797 // Step Form Component //START 798 let policyStep = 0; 799 let policyBarWidth = 25; 800 let policyStepThree = false; 801 802 // Assign initial width 803 jQuery("#progress-meter").css("width", "25%"); 804 805 // Listen for clicks on the form navigation buttons 806 document.addEventListener('click', function (event) { 807 // Target buttons commonly used by CF7 multi-step extensions 808 if (event.target.matches(".cf7mls_back")) { 809 810 // Optional delay to allow the multi-step plugin to swap the visible steps first 811 setTimeout(function() { 812 window.scrollTo({ 813 top: 0, 814 behavior: 'smooth' // Smooth scroll effect 815 }); 816 }, 300); // 100 milliseconds delay 817 } 818 }); 819 820 821 // The function you want to call 822 function myStepsFunction(element) { 823 //console.log('Class added to:', element); 824 policyStep = element.getAttribute("data-cf7mls-order"); 825 //console.log("We're currently on 'step' " + policyStep); 826 827 //hide button if beyond step 01 828 if(policyStep > 0) { 829 jQuery("#car-checkout button.first").attr("disabled", false); 830 } 831 832 if (policyStep == 2) { 833 if (policyStepThree == false) { 834 jQuery("#car-checkout button.first").trigger("click"); 835 policyStepThree = true; 836 } 837 } 838 839 //removes and reapplies class 840 jQuery("ul.steps li").removeClass("step-reached"); 841 842 for (let i = 0; i <= policyStep; i++) { 843 jQuery("ul.steps li:eq("+ i +")").addClass("step-reached"); 844 } 845 846 //progress meter update 847 policyBarWidth = (25 * (1 + Number(policyStep))); 848 //console.log("new value is " + policyBarWidth); 849 jQuery("#progress-meter").css("width", policyBarWidth + "%"); 850 } 851 852 // Invalid 853 document.addEventListener("wpcf7invalid", function(event) { 854 //jQuery("#privacy-submit-btn").removeClass("submitting"); 855 }); 856 857 // Valid 858 if(jQuery("#orphan-container").length > 0) { 859 document.addEventListener("wpcf7mailsent", function(event) { 860 //add complete class 861 jQuery("#progress").addClass("steps-complete"); 862 863 //add final step 864 jQuery("ul.steps li:eq(3)").addClass("step-reached"); 865 866 //full width 867 jQuery("#progress-meter").css("width", "100%"); 868 869 //show hide 870 jQuery("#orphan-container, #orphan-header1, #orphan-header2, #orphan-header3").hide(); 871 jQuery("#orphan-confirmation").show(); 872 873 //scroll to top 874 setTimeout(function() { 875 window.scrollTo({ 876 top: 0, 877 behavior: 'smooth' // Smooth scroll effect 878 }); 879 }, 300); 880 }, false); 881 } 882 883 // target class to watch for 884 const targetClass = 'cf7mls_current_fs'; 885 886 // Create the observer 887 const observer = new MutationObserver((mutations) => { 888 for (const mutation of mutations) { 889 if (mutation.attributeName === 'class') { 890 const element = mutation.target; 891 if (element.classList.contains(targetClass)) { 892 myStepsFunction(element); 893 break; 894 } 895 } 896 } 897 }); 898 899 // Start observing each div in your series 900 const divs = document.querySelectorAll('.fieldset-cf7mls'); 901 divs.forEach((div) => { 902 observer.observe(div, { attributes: true }); 903 }); 904 905 // Disable button for Terms and Conditions 906 jQuery("#cf7mls-next-btn-cf7mls_step-2").addClass("btn-disabled"); 907 908 // Toggle button status from the above class 909 if(jQuery("#car-terms").length > 0) { 910 document.querySelector("#car-terms").addEventListener("change", function() { 911 const targetElement = document.querySelector("#cf7mls-next-btn-cf7mls_step-2"); 912 913 if (this.checked) { 914 targetElement.classList.remove("btn-disabled"); 915 } else { 916 targetElement.classList.add("btn-disabled"); 917 } 918 }); 919 } 920 921 // Submit Trigger 922 jQuery("#orphan-submit button").on("click", function() { 923 jQuery("#car-checkout button.second").trigger("click"); 924 }); 925 926 // Step Form Component //END
vendor: 4 bytes, line 927
927});
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.