1function setCookie(cname, cvalue, exdays) { 2 const d = new Date(); 3 // d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); // use for exdays 4 d.setTime(d.getTime() + (3600 * 1000)); 5 let expires = "expires="+d.toUTCString(); 6 document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; 7} 8 9function getCookie(cname) { 10 let name = cname + "="; 11 let ca = document.cookie.split(';'); 12 for(let i = 0; i < ca.length; i++) { 13 let c = ca[i]; 14 while (c.charAt(0) == ' ') { 15 c = c.substring(1); 16 } 17 if (c.indexOf(name) == 0) { 18 return c.substring(name.length, c.length); 19 } 20 } 21 return ""; 22} 23 24 25jQuery(document).ready(function($) { 26 27 //Convert.com Cookie data to be inserted to the Order meta data after purchase 28 if ( 29 typeof convert !== 'undefined' && 30 convert.data?.project?.id && 31 convert.historicalData?.experiences && 32 Object.keys(convert.historicalData.experiences).length 33 ) { 34 const currentConvertProjectID = convert.data.project.id; 35 const currentConvertTestData = convert.historicalData.experiences; 36 37 if (currentConvertProjectID && currentConvertTestData) { 38 39 // FIRST assigned experience 40 const currentConvertTestID = Object.keys(currentConvertTestData)[0]; 41 const currentConvertExperimentData = 42 currentConvertTestData[currentConvertTestID].variation_id || 43 currentConvertTestData[currentConvertTestID].variationId; 44 45 if (currentConvertTestID && currentConvertExperimentData) { 46 47 const currentConvertString = 48 'CONV-' + currentConvertTestID + '-' + currentConvertExperimentData; 49 50 const currentConvertCookie = getCookie('custom_convert_data'); 51 52 if (!currentConvertCookie) { 53 setCookie('custom_convert_data', currentConvertString); 54 } else { 55 const cookieArray = currentConvertCookie.split(', ').filter(Boolean); 56 57 if (!cookieArray.includes(currentConvertString)) { 58 cookieArray.push(currentConvertString); 59 setCookie('custom_convert_data', cookieArray.join(', ')); 60 } 61 } 62 } 63 } 64 } 65 //Convert.com cookie data snippet end 66 67 $('body').on('click', '[funnelcheckout]', function(e) { 68 let targetValue = $(this).attr('funnelcheckout'); 69 let cookieName = '_funnelcheckout'; 70 setCookie(cookieName, targetValue); 71 }); 72 73 $('body').on('click', '[funnelangle]', function(e) { 74 let targetValue = $(this).attr('funnelangle'); 75 let cookieName = '_funnelangle'; 76 setCookie(cookieName, targetValue); 77 }); 78 79 $('body').on('click', '[flowlanguage]', function(e) { 80 let targetValue = $(this).attr('flowlanguage'); 81 let cookieName = 'funnel'; 82 setCookie(cookieName, targetValue); 83 }); 84 85 $('body').on('click','.wfacp_modal_open_Disable a[data-product_id]', function(e){ 86 e.preventDefault(); 87 let productID = $(this).attr('data-product_id'); 88 // paymentLoadedEvent(productID); 89 let targetProduct = $('body .wfacp_product_switcher_container > fieldset[data-id=' + productID + '] input.wfacp_switcher_checkbox'); 90 let targetProductPriceText = $('body .wfacp_product_switcher_container > fieldset[data-id=' + productID + '] .woocommerce-Price-amount').text(); 91 let targetProductPrice = targetProductPriceText.replace(/[^\d.-]/g, ''); 92 targetProduct.click(); 93 94 let formInPageID = $('#wfacp_embed_form_page_id').val(); 95 if( formInPageID && productID.length ){ 96 targetValue = productID; 97 cookieName = formInPageID + '_selected_product'; 98 setCookie(cookieName,targetValue); //allways set new value 99 } 100 101 }); 102}); 103 104jQuery(document).ready(function($) { 105 setSelectedProductsCookie(); 106 $('form.checkout').on('change', 'input[name="payment_method"]', function() { 107 let selectedGateway = $('input[name="payment_method"]:checked').val(); 108 let placeOrderButton = $('button#place_order'); 109 110 // Add your condition here to determine when to hide or show the button 111 if (selectedGateway === 'frontit_spreedly') { 112 placeOrderButton.addClass('hide-btn'); 113 } else { 114 placeOrderButton.removeClass('hide-btn'); 115 } 116 }); 117 118 $('body').on('click','.wfacp_modal_open a[data-product_id]', function(e){ 119 let productID = $(this).attr('data-product_id'); 120 let currentSelectedProducts = []; 121 122 $('body .wfacp_product_switcher_container > fieldset[data-id] input.wfacp_switcher_checkbox:checked').each(function() { 123 let fieldsetId = $(this).closest('fieldset[data-id]').attr('data-id'); 124 if (fieldsetId) { 125 currentSelectedProducts.push(fieldsetId); 126 } 127 }); 128 if (currentSelectedProducts.length === 0) { 129 let formInPageID = $('#wfacp_embed_form_page_id').val(); 130 if( formInPageID && productID.length ){ 131 targetValue = productID; 132 cookieName = formInPageID + '_selected_product';
133 setCookie(cookieName,targetValue); //allways set new value 134 } 135 } 136 137 if ( ! currentSelectedProducts.includes(productID)) { 138 let targetProduct = $('body .wfacp_product_switcher_container > fieldset[data-id=' + productID + '] input.wfacp_switcher_checkbox'); 139 targetProduct.click(); 140 } 141 142 }); 143 144 $('body').on('click','.multiple-product-add', function(e){ 145 let selectedProducts = []; 146 let formInPageID = $('#wfacp_embed_form_page_id').val(); 147 let selectedProductsForCart = {}; 148 let flow = $(this).attr('flow'); 149 if( formInPageID ){ 150 setCookie("currentCheckout", formInPageID); 151 selectedProductsForCart[formInPageID] = []; 152 let $checkboxes; 153 if (flow) { 154 $checkboxes = $('div.' + flow + ' .product-checkbox:checked'); 155 } else { 156 $checkboxes = $('.product-checkbox:checked'); 157 } 158 $checkboxes.each(function () { 159 let value = $(this).val(); 160 if (!value.includes('preselect')) { 161 selectedProductsForCart[formInPageID].push(value); 162 } 163 }); 164 // $('.product-checkbox:checked').each(function() { 165 // let value = $(this).val(); 166 // if (!value.includes('preselect')) { 167 // selectedProductsForCart[formInPageID].push(value); 168 // } 169 // }); 170 } 171 172 $(this).siblings('.notification-message').remove(); 173 if (selectedProductsForCart[formInPageID].length === 0) { 174 let notification = $('<div class="notification-message">Please select at least one product.</div>'); 175 $(this).after(notification); 176 } else { 177 setSelectedProductsCookie(); 178 } 179 180 181 }); 182 183 $('.product-checkbox').on('change', function(e){ 184 let $container = $(this).closest('.e-con-inner'); 185 let testProductSelected = []; 186 let isChecked = $(this).prop('checked'); 187 let selectedValue = $(this).val(); 188 let valueForSwitch = selectedValue; 189 let app = $container.find('.product-checkbox.app'); 190 let isApp = $(this).hasClass('app'); 191 let freeBook = $container.find('.free-book'); 192 let midBook = $container.find('.mid-book'); 193 let fullBook = $container.find('.full-book'); 194 let hardCopy = $container.find('.hard-copy'); 195 let ebook = $container.find('.ebook'); 196 let isHardCopy = $(this).hasClass('hardcopy'); 197 let isPreselected = $(this).attr('preselect'); 198 let isEbook = $(this).hasClass('e_book'); 199 let submitButton = $container.find('.multiple-product-add'); 200 let aov_v1 = $('body').hasClass('aov-v1'); 201 // $('.product-checkbox.app').filter('[value!="' + $(this).val() + '"]').prop('checked', false); 202 let hardCopyChecked = false; 203 let ebookChecked = false; 204 let appChecked = false; 205 $container.find('.product-checkbox:checked').each(function () { 206 if ($(this).hasClass('hardcopy')) { 207 hardCopyChecked = true; 208 } 209 if ($(this).hasClass('e_book')) { 210 ebookChecked = true; 211 } 212 if ($(this).hasClass('app')) { 213 appChecked = true; 214 } 215 let value = $(this).val(); 216 testProductSelected.push(value); 217 218 }); 219 valueForSwitch = isApp ? 'app' : valueForSwitch; 220 valueForSwitch = isHardCopy ? 'hardCopy' : valueForSwitch; 221 valueForSwitch = isPreselected ? 'preselect' : valueForSwitch; 222 valueForSwitch = isEbook ? 'ebook' : valueForSwitch; 223 if(aov_v1){ 224 if(isChecked){ 225 switch (valueForSwitch) { 226 case "preselect": 227 let preselect = selectedValue.split('-')[1]; 228 $container.find('.product-checkbox[value='+ preselect +']').prop('checked', true); 229 fullBook.addClass('d-none'); 230 freeBook.addClass('d-none'); 231 midBook.removeClass('d-none'); 232 midBook.find('.product-checkbox').prop('checked', true); 233 fullBook.find('.product-checkbox').prop('checked', false); 234 freeBook.find('.product-checkbox').prop('checked', false); 235 hardCopy.removeClass('d-none'); 236 hardCopy.filter('.solo').find('.product-checkbox').prop('checked', false); 237 hardCopy.filter('.solo').addClass('d-none'); 238 break; 239 case "app": 240 241 $container.find('.product-checkbox[checked]').removeAttr('checked'); 242 $container.find('.product-checkbox[preselect]').prop('checked', true); 243 $container.find('.product-checkbox.app').filter('[value!="' + selectedValue + '"]').prop('checked', false); 244 245 hardCopy.removeClass('d-none'); 246 hardCopy.filter('.solo').addClass('d-none'); 247 248 if(hardCopyChecked){ 249 fullBook.addClass('d-none'); 250 midBook.addClass('d-none'); 251 freeBook.removeClass('d-none'); 252 freeBook.find('.product-checkbox').prop('checked', true); 253 fullBook.find('.product-checkbox').prop('checked', false); 254 midBook.find('.product-checkbox').prop('checked', false); 255 }else{ 256 fullBook.addClass('d-none'); 257 freeBook.addClass('d-none'); 258 midBook.removeClass('d-none'); 259 midBook.find('.product-checkbox').prop('checked', true); 260 fullBook.find('.product-checkbox').prop('checked', false); 261 freeBook.find('.product-checkbox').prop('checked', false); 262 } 263 264 break; 265 case "hardCopy": 266 if(appChecked){ 267 fullBook.addClass('d-none'); 268 midBook.addClass('d-none'); 269 freeBook.removeClass('d-none'); 270 ebook.find('.product-checkbox').prop('checked', false); 271 if(ebookChecked){ 272 freeBook.find('.product-checkbox').prop('checked', true); 273 } 274 }else{ 275 fullBook.addClass('d-none'); 276 freeBook.addClass('d-none'); 277 midBook.removeClass('d-none'); 278 ebook.find('.product-checkbox').prop('checked', false); 279 if(ebookChecked){ 280 midBook.find('.product-checkbox').prop('checked', true); 281 } 282 } 283 284 break; 285 case "ebook": 286 console.log('e2'); 287 if(hardCopyChecked){ 288 hardCopy.find('.product-checkbox').prop('checked', true); 289 } 290 hardCopy.removeClass('d-none'); 291 292 hardCopy.filter('.solo2').find('.product-checkbox').prop('checked', false); 293 hardCopy.filter('.solo2').addClass('d-none'); 294 295 hardCopy.filter('.solo').find('.product-checkbox').prop('checked', false); 296 hardCopy.filter('.solo').addClass('d-none'); 297 break; 298 default: 299 console.log("Unknown checkbox " + valueForSwitch); 300 } 301 }else{ 302 console.log("Unknown checkbox " + valueForSwitch); 303 switch (valueForSwitch) { 304 case "preselect": 305 $container.find('.product-checkbox').prop('checked', false); 306 hardCopy.addClass('d-none'); 307 ebook.addClass('d-none'); 308 fullBook.removeClass('d-none'); 309 hardCopy.filter('.solo').removeClass('d-none'); 310 break; 311 case "app": 312 // no need never unselect 313 break; 314 case "hardCopy": 315 if(appChecked){ 316 freeBook.addClass('d-none'); 317 fullBook.addClass('d-none'); 318 midBook.removeClass('d-none'); 319 ebook.find('.product-checkbox').prop('checked', false); 320 if(ebookChecked){ 321 midBook.find('.product-checkbox').prop('checked', true); 322 } 323 324 }else{ 325 freeBook.addClass('d-none'); 326 midBook.addClass('d-none'); 327 fullBook.removeClass('d-none'); 328 ebook.find('.product-checkbox').prop('checked', false); 329 if(ebookChecked){ 330 fullBook.find('.product-checkbox').prop('checked', true); 331 } 332 } 333 334 break; 335 case "ebook": 336 console.log('e1'); 337 if(appChecked){ 338 hardCopy.removeClass('d-none'); 339 hardCopy.find('.product-checkbox').prop('checked', false); 340 hardCopy.filter('.solo').addClass('d-none'); 341 342 hardCopy.filter('.solo2').find('.product-checkbox').prop('checked', false); 343 hardCopy.filter('.solo2').addClass('d-none'); 344 345 }else{ 346 if(hardCopyChecked){ 347 hardCopy.filter('.solo').find('.product-checkbox').prop('checked', true); 348 }else{ 349 hardCopy.filter('.solo').find('.product-checkbox').prop('checked', false); 350 hardCopy.filter('.solo2').find('.product-checkbox').prop('checked', false); 351 } 352 hardCopy.addClass('d-none'); 353 hardCopy.filter('.solo').removeClass('d-none'); 354 } 355 break; 356 default: 357 console.log("Unknown not checked."); 358 } 359 360 } 361 362 363 }else{ 364 if(isChecked){ 365 switch (valueForSwitch) { 366 case "preselect": 367 let preselect = selectedValue.split('-')[1]; 368 $container.find('.product-checkbox[value='+ preselect +']').prop('checked', true); 369 fullBook.addClass('d-none'); 370 freeBook.removeClass('d-none'); 371 freeBook.find('.product-checkbox').prop('checked', true); 372 fullBook.find('.product-checkbox').prop('checked', false); 373 hardCopy.removeClass('d-none'); 374 hardCopy.filter('.solo').find('.product-checkbox').prop('checked', false); 375 hardCopy.filter('.solo').addClass('d-none'); 376 break; 377 case "app": 378 $container.find('.product-checkbox[checked]').removeAttr('checked'); 379 $container.find('.product-checkbox[preselect]').prop('checked', true); 380 $container.find('.product-checkbox.app').filter('[value!="' + selectedValue + '"]').prop('checked', false); 381 fullBook.addClass('d-none'); 382 freeBook.removeClass('d-none'); 383 freeBook.find('.product-checkbox').prop('checked', true); 384 fullBook.find('.product-checkbox').prop('checked', false); 385 hardCopy.removeClass('d-none'); 386 hardCopy.filter('.solo').find('.product-checkbox').prop('checked', false); 387 hardCopy.filter('.solo').addClass('d-none'); 388 break; 389 case "hardCopy": 390 fullBook.addClass('d-none'); 391 freeBook.removeClass('d-none'); 392 freeBook.find('.product-checkbox').prop('checked', true); 393 fullBook.find('.product-checkbox').prop('checked', false); 394 break; 395 default: 396 console.log("Unknown checkbox " + valueForSwitch); 397 } 398 }else{ 399 switch (valueForSwitch) { 400 case "preselect": 401 app.prop('checked', false); 402 freeBook.addClass('d-none'); 403 fullBook.removeClass('d-none'); 404 freeBook.find('.product-checkbox').prop('checked', false); 405 hardCopy.find('.product-checkbox').prop('checked', false); 406 hardCopy.addClass('d-none'); 407 hardCopy.filter('.solo').removeClass('d-none'); 408 break; 409 case "app": 410 $container.find('.product-checkbox[checked]').removeAttr('checked'); 411 let checkedCount = $container.find('.product-checkbox.app:checked').length; 412 if(checkedCount == 0 ){ 413 $container.find('.product-checkbox[preselect]').prop('checked', false); 414 } 415 freeBook.addClass('d-none'); 416 fullBook.removeClass('d-none'); 417 freeBook.find('.product-checkbox').prop('checked', false); 418 hardCopy.find('.product-checkbox').prop('checked', false); 419 hardCopy.addClass('d-none'); 420 hardCopy.filter('.solo').removeClass('d-none'); 421 break; 422 case "hardCopy": 423 let checkedCount2 = $container.find('.product-checkbox.app:checked').length; 424 if(checkedCount2 == 0 ){ 425 freeBook.addClass('d-none'); 426 fullBook.removeClass('d-none'); 427 freeBook.find('.product-checkbox').prop('checked', false); 428 } 429 break; 430 default: 431 console.log("Unknown not checked."); 432 } 433 434 } 435 } 436 437 let finalSelectedProducts= []; 438 $container.find('.product-checkbox:checked').each(function() { 439 let value = $(this).val(); 440 console.log(value); 441 442 finalSelectedProducts.push(value); 443 }); 444 submitButton.siblings('.notification-message').remove(); 445 if(finalSelectedProducts.length == 0){ 446 let notification = $('<div class="notification-message">Please select at least one product.</div>'); 447 submitButton.addClass('disabled-button'); 448 submitButton.after(notification); 449 }else{ 450 submitButton.removeClass('disabled-button'); 451 setSelectedProductsCookie(); 452 } 453 return; 454 }); 455 456 jQuery(document).on('click', '.tooltip', function (e) { 457 jQuery('.tooltip').toggleClass('active'); 458 }); 459 460 $('body').on('click','.set-flow', function(e){ 461 let targetValue = $(this).find('.elementor-button-text').text(); 462 let cookieName = '_selected_gender';
463 setCookie(cookieName,targetValue); 464 }); 465}); 466 467function paymentLoadedEvent(productId){ 468 console.log('Cart Updated - paymentLoadedEvent'); 469 if(productId){ 470 waitForElm('#order_summary_field .woocommerce-checkout-review-order-table tr.cart_item').then((elm) => { 471 console.log('Product found.'); 472 }); 473 } 474} 475 476function waitForElm(selector) { 477 return new Promise(resolve => { 478 if (document.querySelector(selector)) { 479 return resolve(document.querySelector(selector)); 480 } 481 const observer = new MutationObserver(mutations => { 482 if (document.querySelector(selector)) { 483 observer.disconnect(); 484 resolve(document.querySelector(selector)); 485 } 486 }); 487 observer.observe(document.body, { 488 childList: true, 489 subtree: true 490 }); 491 }); 492} 493 494//email >>>> 495const emailInput = document.querySelector('input[type="email"]#form-field-email'); 496const suggestDiv = document.querySelector(".elementor-field-type-email"); 497if(typeof emailInput !== 'undefined' && emailInput !== null){ 498 emailInput.addEventListener('input', (event) => { 499 const suggestDivElem = document.getElementById("suggestEmail"); 500 Mailcheck.run({ 501 email: emailInput.value, 502 suggested: function(suggestion) { 503 if(validateEmail(emailInput.value)){ 504 let textvalue = ''; 505 if( jQuery('body #suggestEmail').length){ 506 textvalue = suggestion.full; 507 jQuery('body #suggestEmail').html(textvalue); 508 }else{ 509 let textDoYouMean = 'Did you mean'; 510 if (typeof globalTranslations !== 'undefined' && globalTranslations.did_you_mean) { 511 textDoYouMean = globalTranslations.did_you_mean; 512 } 513 514 let textvalue = '<div class="suggestWrap">' + textDoYouMean + ' <span id="suggestEmail">' + suggestion.full + '</span> ?</div>'; 515 jQuery('.elementor-field-type-email').append(textvalue); 516 517 } 518 } 519 520 }, 521 empty: function() { 522 // callback code 523 if(typeof suggestDivElem !== 'undefined' && suggestDivElem !== null){ 524 jQuery('body .suggestWrap').remove(); 525 } 526 527 } 528 }); 529 }); 530} 531 532document.addEventListener('click',function(e){ 533 if(e.target && e.target.id == 'suggestEmail'){ 534 emailInput.value = suggestEmail.innerHTML; 535 jQuery('body .suggestWrap').remove(); 536 } 537}); 538 539function validateEmail(email){ 540 return String(email) 541 .toLowerCase() 542 .match( 543 /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ 544 ); 545}; 546// <<<<email 547 548function setSelectedProductsCookie(){ 549 let formInPageID = jQuery('#wfacp_embed_form_page_id').val(); 550 let selectedProductsForCart = {}; 551 let $container = ''; 552 if (jQuery('body[class*="dynamic-"]').length > 0) { 553 let className = jQuery('body').attr('class').match(/dynamic-[^\s]+/); 554 if (className) { 555 const $el = jQuery('div.elementor-element.' + className[0]); 556 if ($el.length > 0) { 557 $container = $el; 558 } 559 } 560 } 561 if( formInPageID ){ 562 setCookie("currentCheckout", formInPageID); 563 selectedProductsForCart[formInPageID] = []; 564 if($container){ 565 $container.find('input.product-checkbox.app[checked]').trigger('click'); 566 $container.find('.product-checkbox:checked').each(function() { 567 let value = jQuery(this).val(); 568 if (!value.includes('preselect')) { 569 selectedProductsForCart[formInPageID].push(value); 570 } 571 }); 572 }else{ 573 jQuery('.product-checkbox:checked').each(function() { 574 let value = jQuery(this).val(); 575 if (!value.includes('preselect')) { 576 selectedProductsForCart[formInPageID].push(value); 577 } 578 }); 579 } 580 581 } 582 if ( Array.isArray(selectedProductsForCart[formInPageID]) && selectedProductsForCart[formInPageID].length !== 0) {
583 setCookie("selectedProducts", JSON.stringify(selectedProductsForCart)); 584 } 585} 586 587function setFunnelStartCookie() { 588 if (!document.cookie.split('; ').find(row => row.startsWith('funnel_start'))) { 589 let path = window.location.pathname !== '/' ? window.location.pathname : 'homepage'; 590 setCookie('funnel_start', path, 3600); // Set the cookie for 1 hour 591 } 592} 593 594jQuery(document).ready(function($) { 595 setFunnelStartCookie(); 596});
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.