1function awcfe_initialize_script($ck) { 2 window.fullMonthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; 3 if (typeof jQuery.fn.datetimepicker === 'function') { 4 jQuery(".awcfe_date_field .awcfedatepicker").each(function () { 5 e = jQuery(this).data("dpconfig"); 6 7 null == e && (e = {}), jQuery(this).datetimepicker(jQuery.extend({ 8 timepicker: false, 9 scrollInput: false, 10 format: awcfeSettings.dateFormat, 11 validateOnBlur: false, 12 }, e)); 13 }); 14 } 15 16 if (typeof jQuery.fn.datetimepicker === 'function') { 17 jQuery(".awcfe_week_field .awcfeweekpicker").each(function () { 18 let e = jQuery(this).data("dpconfig") || {}; 19 jQuery(this).datetimepicker(jQuery.extend({ 20 dayOfWeekStart: 1, 21 weeks: true, 22 weekData: true, 23 format: "W Y", 24 timepicker: false, 25 scrollInput: false, 26 validateOnBlur: false, 27 onGenerate: function (ct, $input) { 28 jQuery('.xdsoft_calendar td, .xdsoft_calendar tr').removeClass('xdsoft_hover xdsoft_current xdsoft_today awcfe-week-hover awcfe-week-selected'); 29 jQuery('.xdsoft_calendar tr').off('mouseenter.awcfeweek mouseleave.awcfeweek').on('mouseenter.awcfeweek', function () { 30 jQuery(this).addClass('awcfe-week-hover'); 31 }).on('mouseleave.awcfeweek', function () { 32 jQuery(this).removeClass('awcfe-week-hover'); 33 }); 34 // Highlight selected week row 35 let selected = $input.val(); 36 if (selected) { 37 let parts = selected.split(' '); 38 if (parts.length === 2) { 39 let week = parseInt(parts[0].replace(/\D/g, ''), 10); 40 let year = parseInt(parts[1], 10); 41 jQuery('.xdsoft_calendar tr').each(function () { 42 let found = false; 43 jQuery(this).find('td').each(function () { 44 let d = new Date(jQuery(this).data('year'), jQuery(this).data('month'), jQuery(this).data('date')); 45 if (getWeekNumber(d) === week && d.getFullYear() === year) found = true; 46 }); 47 if (found) jQuery(this).addClass('awcfe-week-selected'); 48 }); 49 } 50 } 51 }, 52 onSelectDate: function (ct, $input) { 53 let weekNumber = getWeekNumber(ct); 54 let year = ct.getFullYear(); 55 $input.val(weekNumber + ' ' + year); 56 setTimeout(function () { 57 jQuery('.xdsoft_calendar tr').removeClass('awcfe-week-selected').each(function () { 58 let found = false; 59 jQuery(this).find('td').each(function () { 60 let d = new Date(jQuery(this).data('year'), jQuery(this).data('month'), jQuery(this).data('date')); 61 if (getWeekNumber(d) === weekNumber && d.getFullYear() === year) found = true; 62 }); 63 if (found) jQuery(this).addClass('awcfe-week-selected'); 64 }); 65 }, 10); 66 } 67 }, e)); 68 }); 69 70 function getWeekNumber(d) { 71 d = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate())); 72 let dayNum = d.getUTCDay() || 7; 73 d.setUTCDate(d.getUTCDate() + 4 - dayNum); 74 let yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1)); 75 return Math.ceil((((d - yearStart) / 86400000) + 1) / 7); 76 } 77 } 78 79 80 if (typeof jQuery.fn.datetimepicker === 'function') { 81 jQuery(".awcfe_time_field .awcfetimepicker").each(function () { 82 e = jQuery(this).data("dpconfig"); 83 null == e && (e = {}), jQuery(this).datetimepicker(jQuery.extend({ 84 datepicker: false, 85 scrollInput: false, 86 format: awcfeSettings.timeFormat, 87 formatTime: awcfeSettings.timeFormat, 88 validateOnBlur: false, 89 }, e)); 90 }); 91 } 92 93 if (typeof jQuery.fn.datetimepicker === 'function') { 94 jQuery(".awcfe_datetime_field .awcfedatetimepicker").each(function () { 95 96 e = jQuery(this).data("dpconfig"); 97 null == e && (e = {}), jQuery(this).datetimepicker(jQuery.extend({ 98 scrollInput: false, 99 format: awcfeSettings.dateFormat + ' ' + awcfeSettings.timeFormat, 100 validateOnBlur: false, 101 }, e)); 102 }); 103 } 104 105 if (typeof jQuery.fn.monthpicker === 'function') { 106 jQuery(".awcfe_month_field .awcfemonthpicker").each(function () { 107 var $this = jQuery(this); 108 if (!$this.hasClass('awcfe-initialized')) { 109 $this.monthpicker({ 110 pattern: 'MM-yyyy', 111 startYear: new Date().getFullYear() - 10, 112 finalYear: new Date().getFullYear() + 10, 113 openOnFocus: true, 114 onMonthSelect: function (year, month) { 115 const monthName = window.fullMonthNames[month - 1]; 116 jQuery(this).val(`${monthName}-${year}`); 117 } 118 }).addClass('awcfe-initialized').on('click', function () { 119 jQuery(this).monthpicker('show'); 120 }); 121 } 122 }); 123 } 124 125 if (jQuery('.awcfe-color').length) { 126 jQuery(".awcfe_color_field .awcfe-color").spectrum({ 127 preferredFormat: "hex", 128 showInput: false, 129 allowEmpty: true, 130 }); 131 } 132 133 if (jQuery.isFunction(jQuery.fn.selectWoo)) { 134 jQuery('.awcfemultiselect').selectWoo(); 135 } 136 137 jQuery('.awcfe_condSec').each(function () { 138 var itemType = jQuery(this).data('type'); 139 var elmnt = jQuery(this).attr('id'); 140 var isSec = 'section'; 141 exc_relations(elmnt, itemType, isSec, $ck); 142 });
143 144 jQuery('.awcfe_condField').each(function () { 145 var itemType = jQuery(this).find('.awcfe_cl_fields').data('type'); 146 if (itemType == 'checkboxGroup' || itemType == 'radio' || itemType == 'imageGroup' || itemType == 'colorGroup') { 147 var elmnt = jQuery(this).find('.awce-check-param').attr('id'); 148 } else { 149 var elmnt = jQuery(this).find('.awcfe_cl_fields').attr('id'); 150 } 151 var isSec = 'field'; 152 exc_relations(elmnt, itemType, isSec, $ck); 153 }); 154 155 // awcfe_payMethodCL(); 156 jQuery('.awcfe_has_sec_rules').each(function () { 157 var itemType = jQuery(this).data('type'); 158 var elmnt = jQuery(this).attr('id'); 159 var isSec = 'section'; 160 exc_relations(elmnt, itemType, isSec, $ck); 161 }); 162 163 // jQuery($ck+' .awcfe_has_relation').each(function () { 164 jQuery(' .awcfe_has_relation').each(function () { 165 166 var itemType = jQuery(this).find('.awcfe_cl_fields').data('type'); 167 168 if (itemType == 'checkboxGroup' || itemType == 'radio' || itemType == 'imageGroup' || itemType == 'colorGroup') { 169 var related = jQuery(this).find('.awce-check-param').data('related'); 170 } else { 171 var related = jQuery(this).find('.awcfe_cl_fields').data('related'); 172 } 173 // var related = jQuery(this).find('.awcfe_cl_fields').data('related'); 174 175 var isSec = 'field'; 176 if (related != null) { 177 related.forEach(function (el) { 178 exc_relations(el, itemType, isSec, $ck); 179 }); 180 //awcfe_calculate_price(); 181 } 182 }); 183 184 jQuery('[data-rules]').each(function () { 185 var elmnt = jQuery(this).attr('id'); 186 var itemType = jQuery(this).data('type'); 187 var isSec = jQuery(this).hasClass('awcfe_cl_sec_parent') || jQuery(this).hasClass('awcfe_condSec') || jQuery(this).hasClass('awcfe_has_sec_rules') ? 'section' : 'field'; 188 exc_relations(elmnt, itemType, isSec, $ck); 189 }); 190 191} 192 193/* min-max selection */ 194jQuery(document).on('change', ".awcfe_has_val_rules input", function (e) { 195 $item = jQuery(this).parents(".awcfe_has_val_rules"); 196 $rules = $item.data('val_rules'); 197 198 if ($rules.selection !== undefined && $rules.selection.min !== undefined && $rules.selection.min > 0) { 199 if (jQuery("input[type=checkbox]:checked", $item).length <= $rules.selection.min) { 200 awcfe_remove_val_error($item); 201 } 202 } 203 204 if ($rules.selection !== undefined && $rules.selection.max !== undefined && $rules.selection.max > 0) { 205 if (jQuery("input[type=checkbox]:checked", $item).length > $rules.selection.max) { 206 awcfe_show_val_error($item, awcfeSettings.strings.sel_max_req_error.replace('%d', $rules.selection.max)); 207 jQuery(this).prop('checked', false); 208 } else { 209 awcfe_remove_val_error($item); 210 } 211 } 212 213}); 214 215function awcfe_show_val_error($field, $msg) { 216 if ($field.next('.awcfe_error_msg').length) { 217 $field.next('.awcfe_error_msg').html('<p>' + $msg + '</p>'); 218 } else { 219 jQuery('<div class="awcfe_error_msg"><p>' + $msg + '</p></div>').insertAfter($field); 220 } 221} 222 223function awcfe_remove_val_error($field) { 224 if ($field.next('.awcfe_error_msg').length) { 225 $field.next('.awcfe_error_msg').remove(); 226 } 227} 228 229if (jQuery(".awcfe_has_val_rules").length > 0) { 230 231 jQuery('form.checkout').on('checkout_place_order', function () { 232 $status = true; 233 jQuery(".awcfe_has_val_rules", jQuery(this)).each(function () { 234 $item = jQuery(this); 235 $rules = $item.data('val_rules'); 236 if ($rules.selection !== undefined && $rules.selection.max !== undefined && $rules.selection.max > 0) { 237 if ($item.is(":visible") && jQuery("input[type=checkbox]:checked", $item).length > $rules.selection.max) { 238 awcfe_show_val_error($item, awcfeSettings.strings.sel_max_req_error.replace('%d', $rules.selection.max)); 239 $status = false; 240 } 241 } 242 if ($rules.selection !== undefined && $rules.selection.min !== undefined && $rules.selection.min > 0) { 243 if ($item.is(":visible") && jQuery("input[type=checkbox]:checked", $item).length < $rules.selection.min) { 244 awcfe_show_val_error($item, awcfeSettings.strings.sel_min_req_error.replace('%d', $rules.selection.min)); 245 $status = false; 246 } 247 } 248 }); 249 250 if ($status == false) { 251 alert(awcfeSettings.strings.fix_val_errors); 252 return false; 253 } else { 254 return true; 255 } 256 });
257 258} 259 260jQuery(document).on('keyup change', ".awcfe_cl_section input,.awcfe_cl_section select,.awcfe_cl_section textarea", function (e) { 261 //jQuery(".awcfe_cl_section input,.awcfe_cl_section select,.awcfe_cl_section textarea" ).on('keyup change', function () { 262 263 var related = jQuery(this).data('sec-related'); 264 var itemType = jQuery(this).data('type'); 265 var isSec = 'section'; 266 if (related != null) { 267 related.forEach(function (el) { 268 exc_relations(el, itemType, isSec, $ck); 269 }); 270 } 271 272}); 273 274jQuery(document).on('keyup change', '.awcfe_cl_section .awce-check-param .awcfe_cl_fields', function (e) { 275 //jQuery('.awcfe_cl_section .awce-check-param .awcfe_cl_fields').on('keyup change', function () { 276 var related = jQuery(this).closest('.awce-check-param').data('sec-related'); 277 var itemType = jQuery(this).closest('.awce-check-param').data('type'); 278 var isSec = 'section'; 279 if (related != null) { 280 related.forEach(function (el) { 281 exc_relations(el, itemType, isSec, $ck); 282 }); 283 } 284}); 285 286/* conditional fields */ 287jQuery(document).on('keyup change', ".awcfe_has_relation input,.awcfe_has_relation select,.awcfe_has_relation textarea", function (e) { 288 //jQuery(".awcfe_has_relation input,.awcfe_has_relation select,.awcfe_has_relation textarea" ).on('keyup change', function () { 289 290 var related = jQuery(this).data('related'); 291 var itemType = jQuery(this).data('type'); 292 var isSec = 'field'; 293 if (related != null) { 294 related.forEach(function (el) { 295 exc_relations(el, itemType, isSec, $ck); 296 }); 297 } 298 299}); 300 301jQuery(document).on('keyup change', '.awcfe_has_relation .awce-check-param .awcfe_cl_fields', function (e) { 302 //jQuery('.awcfe_has_relation .awce-check-param .awcfe_cl_fields').on('keyup change', function () { 303 var related = jQuery(this).closest('.awce-check-param').data('related'); 304 var itemType = jQuery(this).closest('.awce-check-param').data('type'); 305 var isSec = 'field'; 306 if (related != null) { 307 related.forEach(function (el) { 308 exc_relations(el, itemType, isSec, $ck); 309 }); 310 } 311}); 312 313/* mmm */ 314function awcfe_payMethodCL() { 315 316 jQuery('.awcfe_condFieldPay').each(function () { 317 var itemType = jQuery(this).find('.awcfe_cl_fields').data('type'); 318 if (itemType == 'checkboxGroup' || itemType == 'radio' || itemType == 'imageGroup' || itemType == 'colorGroup') { 319 var elmnt = jQuery(this).find('.awce-check-param').attr('id'); 320 } else { 321 var elmnt = jQuery(this).find('.awcfe_cl_fields').attr('id'); 322 } 323 var isSec = 'field'; 324 exc_relations(elmnt, itemType, isSec, $ck); 325 }); 326 jQuery('.awcfe_has_sec_rules').each(function () { 327 // jQuery('.acwcfe_extra_section.awcfe_has_sec_rules').each(function () { 328 var itemType = jQuery(this).data('type'); 329 var elmnt = jQuery(this).attr('id'); 330 var isSec = 'section'; 331 exc_relations(elmnt, itemType, isSec, $ck); 332 }); 333 334} 335 336jQuery(document).on('change', 'input[name="awcdp_deposit_option"]', function (e) { 337 awcfe_payMethodCL(); 338}); 339 340 341jQuery(document).on('change', 'input[name="payment_method"]', function (e) { 342 awcfe_payMethodCL(); 343}); 344 345jQuery(document).on('change', 'input[name="shipping_method[0]"]', function (e) { 346 awcfe_payMethodCL(); 347}); 348 349 350jQuery(document).on('keyup change', "form.checkout input, form.checkout select, form.checkout textarea", function (e) { 351 jQuery('[data-rules]').each(function () { 352 var elmnt = jQuery(this).attr('id'); 353 var itemType = jQuery(this).data('type'); 354 var isSec = jQuery(this).hasClass('awcfe_cl_sec_parent') || jQuery(this).hasClass('awcfe_condSec') || jQuery(this).hasClass('awcfe_has_sec_rules') ? 'section' : 'field'; 355 exc_relations(elmnt, itemType, isSec, ''); 356 }); 357}); 358 359 360function exc_relations(ele_id, itemType, isSec, $ck) { 361 362 var $element = jQuery("#" + ele_id); 363 if ($element.length == 0) { 364 return false; 365 } 366 var $relation = $element.data('rules'); 367 368 if (!$relation) { 369 return false; 370 } 371 var $rules = $relation.rules;
372 $evel_str = ''; 373 374 $rules.forEach(function (ele) { 375 $evel_str += '('; 376 ele.rules.forEach(function (el) { 377 378 $evel_str += '('; 379 if (eval_relation(el.rules, $element, itemType)) { 380 $evel_str += ' true '; 381 } 382 else { 383 $evel_str += ' false '; 384 } 385 $evel_str += ') ' + ((el.operator !== false) ? el.operator : '') + ' '; 386 387 }); 388 389 if (ele.length > 0) { 390 $evel_str = $evel_str.match(/\(.*\)/g)[0] + ' '; 391 } 392 393 $evel_str += ') ' + ((ele.operator !== false) ? ele.operator : '') + ' '; 394 395 }); 396 397 if ($rules.length > 0) { 398 $evel_str = $evel_str.match(/\(.*\)/g)[0]; 399 } 400 401 402 var result = false; 403 try { 404 result = eval($evel_str.replace(/or/gi, '||').replace(/and/gi, '&&')); 405 console.log('AWCFE Debug: Eval String:', $evel_str, 'Result:', result); 406 } catch (e) { 407 return false; 408 } 409 410 var hidenFields = jQuery('#awcfe_disabled_fields').val(); 411 var elementID = $element.attr('id'); 412 var elementTyp = $element.attr('type'); 413 var isColorPicker = ($element.data('type') === 'colorpicker' || elementTyp === 'color'); 414 415 416 if (isSec == 'field') { 417 if (result) { 418 419 if ($relation.action == 'show') { 420 //$element.closest('.awcfe_cl_parent').removeClass('awcfe_cl_hidden'); 421 jQuery('#' + elementID).removeAttr('disabled'); 422 if (isColorPicker) { 423 jQuery('#' + elementID).spectrum("enable"); 424 } 425 if (elementTyp === 'file') { 426 jQuery('#' + elementID).siblings('.awcfe-file-value').removeAttr('disabled'); 427 } 428 removeHiddenFields(hidenFields, elementID); 429 430 /* 431 if (!$element.is(":visible")) { 432 $element.show(0, function () { 433 awcfe_calculate_price(); 434 }).closest('.awcfe_cl_parent').removeClass('awcfe_cl_hidden'); 435 } else { 436 return true; 437 } 438 */ 439 440 if ($ck == '') { 441 if (elementTyp === 'file') { 442 var $siblings = $element.siblings('.awcfe-file-button-wrap').find('.awcfe-file-button'); 443 if (!$siblings.is(":visible") && !$siblings.hasClass('fileAdded')) { 444 $siblings.show(0, function () { 445 awcfe_calculate_price(); 446 }).closest('.awcfe_cl_parent').removeClass('awcfe_cl_hidden'); 447 $element.closest('.awcfe_cl_parent').removeClass('awcfe_cl_hidden'); 448 } else { 449 //return true; 450 } 451 } else if (isColorPicker) { 452 var $parent = $element.closest('.awcfe_cl_parent'); 453 if (!$parent.is(":visible")) { 454 $parent.removeClass('awcfe_cl_hidden'); 455 awcfe_calculate_price(); 456 } 457 } else { 458 if (!$element.is(":visible")) { 459 $element.show(0, function () { 460 awcfe_calculate_price(); 461 }).closest('.awcfe_cl_parent').removeClass('awcfe_cl_hidden'); 462 } else { 463 //return true; 464 } 465 } 466 } 467 $element.closest('.awcfe_cl_parent').show().removeClass('awcfe_cl_hidden'); 468 469 } else { 470 471 472 if ($ck == '') { 473 if (elementTyp === 'file') { 474 var $siblings = $element.siblings('.awcfe-file-button-wrap').find('.awcfe-file-button'); 475 if (($siblings.is(":visible") && !$siblings.hasClass('fileAdded'))) { 476 jQuery('#' + elementID).attr('disabled', true); 477 if (elementTyp === 'file') { 478 jQuery('#' + elementID).siblings('.awcfe-file-value').attr('disabled', true); 479 } 480 $siblings.hide(0, function () { 481 awcfe_calculate_price(); 482 }); 483 484 } else { 485 // return true; 486 } 487 488 } else { 489 var isVisible = isColorPicker ? $element.closest('.awcfe_cl_parent').is(":visible") : $element.is(":visible"); 490 if (isVisible) { 491 jQuery('#' + elementID).attr('disabled', true); 492 if (elementTyp === 'file') { 493 jQuery('#' + elementID).siblings('.awcfe-file-value').attr('disabled', true); 494 } 495 if (isColorPicker) { 496 awcfe_calculate_price(); 497 } else { 498 $element.hide(0, function () { 499 awcfe_calculate_price(); 500 }); 501 } 502 } else { 503 return true; 504 } 505 506 } 507 } 508 /* 509 if ($element.is(":visible")) { 510 jQuery('#'+elementID).attr('disabled', true); 511 if( elementTyp==='file'){ 512 jQuery('#'+elementID).siblings('.awcfe-file-value').attr('disabled', true); 513 } 514 $element.hide(0, function () { 515 awcfe_calculate_price(); 516 }); 517 518 } else { 519 return true; 520 } 521 */ 522 523 $element.closest('.awcfe_cl_parent').addClass('awcfe_cl_hidden'); 524 jQuery('#' + elementID).attr('disabled', true); 525 if (isColorPicker) { 526 jQuery('#' + elementID).spectrum("disable"); 527 } 528 529 if (elementTyp === 'file') { 530 jQuery('#' + elementID).siblings('.awcfe-file-value').attr('disabled', true); 531 } 532 addHiddenFields(hidenFields, elementID); 533 534 535 } 536 } else { 537 if ($relation.action == 'show') { 538 539 if ($ck == '') { 540 if (elementTyp === 'file') { 541 var $siblings = $element.siblings('.awcfe-file-button-wrap').find('.awcfe-file-button'); 542 if (($siblings.is(":visible") && !$siblings.hasClass('fileAdded'))) { 543 jQuery('#' + elementID).attr('disabled', true); 544 if (elementTyp === 'file') { 545 jQuery('#' + elementID).siblings('.awcfe-file-value').attr('disabled', true); 546 } 547 $siblings.hide(0, function () { 548 awcfe_calculate_price(); 549 }); 550 551 } else { 552 // return true; 553 } 554 555 } else { 556 var isVisible = isColorPicker ? $element.closest('.awcfe_cl_parent').is(":visible") : $element.is(":visible"); 557 if (isVisible) { 558 jQuery('#' + elementID).attr('disabled', true); 559 if (elementTyp === 'file') { 560 jQuery('#' + elementID).siblings('.awcfe-file-value').attr('disabled', true); 561 } 562 if (isColorPicker) { 563 awcfe_calculate_price(); 564 } else { 565 $element.hide(0, function () { 566 awcfe_calculate_price(); 567 }); 568 } 569 } 570 } 571 } 572 573 $element.closest('.awcfe_cl_parent').addClass('awcfe_cl_hidden'); 574 jQuery('#' + elementID).attr('disabled', true); 575 if (isColorPicker) { 576 jQuery('#' + elementID).spectrum("disable"); 577 } 578 if (elementTyp === 'file') { 579 jQuery('#' + elementID).siblings('.awcfe-file-value').attr('disabled', true); 580 } 581 addHiddenFields(hidenFields, elementID); 582 583 584 } else { 585 if ($element.closest('.awcfe_cl_parent').hasClass('awcfe_cl_hidden')) { 586 $element.closest('.awcfe_cl_parent').removeClass('awcfe_cl_hidden'); 587 588 jQuery('#' + elementID).removeAttr('disabled'); 589 if (isColorPicker) { 590 jQuery('#' + elementID).spectrum("enable"); 591 } 592 if (elementTyp === 'file') { 593 jQuery('#' + elementID).siblings('.awcfe-file-value').removeAttr('disabled'); 594 } 595 removeHiddenFields(hidenFields, elementID); 596 } 597 598 if ($ck == '') { 599 if (elementTyp === 'file') { 600 var $siblings = $element.siblings('.awcfe-file-button-wrap').find('.awcfe-file-button'); 601 if (!$siblings.is(":visible") && !$siblings.hasClass('fileAdded')) { 602 $siblings.show(0, function () { 603 awcfe_calculate_price(); 604 }).closest('.awcfe_cl_parent').removeClass('awcfe_cl_hidden'); 605 $element.closest('.awcfe_cl_parent').removeClass('awcfe_cl_hidden'); 606 } else { 607 //return true; 608 } 609 } else { 610 if (isColorPicker) { 611 var $parent = $element.closest('.awcfe_cl_parent'); 612 if (!$parent.is(":visible")) { 613 $parent.removeClass('awcfe_cl_hidden'); 614 awcfe_calculate_price(); 615 } 616 } else { 617 if (!$element.is(":visible")) { 618 $element.show(0, function () { 619 awcfe_calculate_price(); 620 }).closest('.awcfe_cl_parent').removeClass('awcfe_cl_hidden'); 621 } else { 622 return true; 623 } 624 } 625 } 626 } 627 } 628 } 629 } else if (isSec == 'section') { 630 631 if (result) { 632 633 if ($relation.action == 'show') { 634 635 //$element.removeClass('awcfe_cl_hidden'); 636 jQuery('#' + elementID).find('input, textarea, select').removeAttr('disabled'); 637 if (elementTyp === 'file') { 638 jQuery('#' + elementID).find('.awcfe-file-value').removeAttr('disabled'); 639 } 640 removeHiddenFields(hidenFields, elementID); 641 642 if ($ck == '') { 643 if (!$element.is(":visible")) { 644 $element.show(0, function () { 645 awcfe_calculate_price(); 646 }).removeClass('awcfe_cl_hidden'); 647 } else { 648 //return true; 649 } 650 } 651 $element.show().removeClass('awcfe_cl_hidden'); 652 653 } else { 654 655 656 if ($element.is(":visible")) { 657 jQuery('#' + elementID).find('input, textarea, select').attr('disabled', true); 658 if (elementTyp === 'file') { 659 jQuery('#' + elementID).find('.awcfe-file-value').attr('disabled', true); 660 } 661 $element.hide(0, function () { 662 awcfe_calculate_price(); 663 }); 664 665 } else { 666 //return true; 667 } 668 669 670 $element.addClass('awcfe_cl_hidden'); 671 jQuery('#' + elementID).find('input, textarea, select').attr('disabled', true); 672 if (elementTyp === 'file') { 673 jQuery('#' + elementID).find('.awcfe-file-value').attr('disabled', true); 674 } 675 addHiddenFields(hidenFields, elementID); 676 677 } 678 } else { 679 if ($relation.action == 'show') { 680 681 682 if ($element.is(":visible")) { 683 jQuery('#' + elementID).find('input, textarea, select').attr('disabled', true); 684 if (elementTyp === 'file') { 685 jQuery('#' + elementID).find('.awcfe-file-value').attr('disabled', true); 686 } 687 $element.hide(0, function () { 688 awcfe_calculate_price(); 689 }); 690 691 } else { 692 return true; 693 } 694 695 $element.addClass('awcfe_cl_hidden'); 696 jQuery('#' + elementID).find('input, textarea, select').attr('disabled', true); 697 if (elementTyp === 'file') { 698 jQuery('#' + elementID).find('.awcfe-file-value').attr('disabled', true); 699 } 700 addHiddenFields(hidenFields, elementID); 701 702 } else { 703 if ($element.hasClass('awcfe_cl_hidden')) { 704 $element.removeClass('awcfe_cl_hidden'); 705 jQuery('#' + elementID).find('input, textarea, select').removeAttr('disabled'); 706 if (elementTyp === 'file') { 707 jQuery('#' + elementID).find('.awcfe-file-value').removeAttr('disabled'); 708 } 709 removeHiddenFields(hidenFields, elementID); 710 } 711 712 if (!$element.is(":visible")) { 713 $element.show(0, function () { 714 awcfe_calculate_price(); 715 }).removeClass('awcfe_cl_hidden'); 716 717 } else { 718 return true; 719 } 720 721 } 722 } 723 } 724 725 if (jQuery.isFunction(jQuery.fn.selectWoo)) { 726 // jQuery('.awcfemultiselect').select2(); 727 setTimeout(function () { 728 jQuery('.awcfemultiselect').selectWoo(); 729 }); 730 731 } 732 733 var related = $element.data('related'); 734 var itemsType = $element.data('type'); 735 736 if (related != null) { 737 related.forEach(function (el) { 738 exc_relations(el, itemsType, isSec); 739 }); 740 } 741 742 var related = $element.data('sec-related'); 743 var itemsType = $element.data('type'); 744 745 var isSec = 'section'; 746 if (related != null) { 747 related.forEach(function (el) { 748 exc_relations(el, itemsType, isSec); 749 }); 750 } 751} 752 753function removeHiddenFields(hidenFields, element) { 754 755 var hiddenArr = ''; 756 if (hidenFields.length === 0) { 757 hiddenArr = []; 758 } else { 759 temp = hidenFields.split(","); 760 //if(hidenFields.includes(element)){ 761 if (jQuery.inArray(element, temp) !== -1) { 762 //if (hidenFields.indexOf(',') > -1) { 763 if (temp && temp.length > 0) { 764 //temp = hidenFields.split(","); 765 temp.splice(jQuery.inArray(element, temp), 1); 766 } else { 767 temp = []; 768 } 769 // temp = hidenFields.split(","); 770 // temp.splice( jQuery.inArray(element,temp) ,1 ); 771 hiddenArr = temp.toString() 772
772 } else { 773 hiddenArr = hidenFields; 774 } 775 } 776 jQuery('#awcfe_disabled_fields').val(hiddenArr); 777 778} 779 780function addHiddenFields(hidenFields, element) { 781 782 var hiddenArr = ''; 783 if (hidenFields.length === 0) { 784 hiddenArr = element; 785 } else { 786 temp = hidenFields.split(","); 787 temp.indexOf(element) === -1 ? temp.push(element) : ''; 788 hiddenArr = temp.toString() 789 } 790 jQuery('#awcfe_disabled_fields').val(hiddenArr); 791} 792 793 794jQuery('.awcfe_cl_hidden.awcfe_has_sec_rules').each(function () { 795 jQuery(this).find('input, textarea, select').attr('disabled', true); 796 797 var hidenFields = jQuery('#awcfe_disabled_fields').val(); 798 var elementID = jQuery(this).attr('id'); 799 addHiddenFields(hidenFields, elementID); 800}); 801 802 803function eval_relation(rule, $element, itemType) { 804 function isDate(s) { 805 if (!s || typeof s !== 'string' || s.length < 5) return false; 806 if (/^\d+$/.test(s.trim())) return false; // Ignore pure numbers 807 var d = new Date(s); 808 return d instanceof Date && !isNaN(d.getTime()); 809 } 810 function isNumeric(n) { 811 return !isNaN(parseFloat(n)) && isFinite(n); 812 } 813 814 var flag = false; 815 if (rule.cl_field === 'cart_product') { 816 var $field = new Array(); 817 $field.push(jQuery('#awcfe_cart_items').val().split(',')); 818 flag = true; 819 } else if (rule.cl_field === 'cart_category') { 820 var $field = new Array(); 821 $field.push(jQuery('#awcfe_cart_categories').val().split(',')); 822 flag = true; 823 } else if (rule.cl_field === 'shipping_class') { 824 var $field = new Array(); 825 $field.push(jQuery('#awcfe_cart_shipping_class').val().split(',')); 826 flag = true; 827 } else if (rule.cl_field === 'cart_subtotal') { 828 var $field = new Array(); 829 $field.push(jQuery('#awcfe_amount_subtotal').val()); 830 flag = true; 831 } else if (rule.cl_field === 'cart_total') { 832 var $field = new Array(); 833 $field.push(jQuery('#awcfe_amount_total').val()); 834 flag = true; 835 } else if (rule.cl_field === 'cart_weight') { 836 var $field = new Array(); 837 $field.push(jQuery('#awcfe_cart_weight').val()); 838 flag = true; 839 } else if (rule.cl_field === 'cart_variation') { 840 var $field = new Array(); 841 $field.push(jQuery('#awcfe_cart_variatns').val().split(',')); 842 flag = true; 843 } else if (rule.cl_field === 'user_role') { 844 var $field = new Array(); 845 $field.push(jQuery('#awcfe_role_user').val().split(',')); 846 $field.push(jQuery('#awcfe_role_user').val()); 847 flag = true; 848 } else if (rule.cl_field === 'payment_method') { 849 var $field = new Array(); 850 $field.push(jQuery('input[name="payment_method"]:checked').val()); 851 flag = true; 852 } else if (rule.cl_field === 'checkout_deposit') { 853 var $field = new Array(); 854 $field.push(jQuery('input[name="awcdp_deposit_option"]:checked').val()); 855 flag = true; 856 } else if (rule.cl_field === 'shipping_method') { 857 var $field = new Array(); 858 $field.push(jQuery('input[name="shipping_method[0]"]:checked').val()); 859 flag = true; 860 } else { 861 var $field = jQuery("#" + rule.cl_field); 862 if ($field.length === 0) { 863 $field = jQuery("#" + rule.cl_field + "_field"); 864 } 865 flag = false; 866 } 867 868 if (flag == false) { 869 var resolvedType = $field.find('.awcfe_cl_fields').data('type'); 870 if (!resolvedType) { 871 if ($field.is('select.country_to_state, select.country_select') || $field.find('select.country_to_state, select.country_select').length > 0 || $field.attr('id') === 'billing_country' || $field.attr('id') === 'shipping_country' || $field.attr('id') === 'billing_country_field' || $field.attr('id') === 'shipping_country_field') { 872 resolvedType = 'country'; 873 } else if ($field.is('select.state_select, input.state_noui') || $field.find('select.state_select, input.state_noui').length > 0 || $field.attr('id') === 'billing_state' || $field.attr('id') === 'shipping_state' || $field.attr('id') === 'billing_state_field' || $field.attr('id') === 'shipping_state_field') { 874 resolvedType = 'state'; 875 } else if ($field.is('select') || $field.find('select').length > 0) { 876 resolvedType = 'select'; 877 } else if ($field.is('input[type=checkbox]') || $field.find('input[type=checkbox]').length > 0) { 878 resolvedType = 'check-box'; 879 } else if ($field.is('input[type=radio]') || $field.find('input[type=radio]').length > 0) { 880 resolvedType = 'radio'; 881 } else if ($field.is('textarea') || $field.find('textarea').length > 0) { 882 resolvedType = 'textarea'; 883 } else if ($field.is('input') || $field.find('input').length > 0) { 884 resolvedType = 'text'; 885 } 886 } 887 itemType = resolvedType; 888 } 889 var $fieldType = itemType; 890 891 // if (flag == false && $field.is(":visible") == false ) { 892 if (flag == false && $field.hasClass("awcfe_cl_hidden")) { 893 return false; 894 } 895 if (!$field.length) { 896 return false; 897 } 898 899 if (rule.cl_relation === '0') { 900 return false; 901 } 902 var val = Array(); 903 904 if (rule.cl_field !== 'cart_product' && rule.cl_field !== 'cart_category' && rule.cl_field !== 'cart_subtotal' && rule.cl_field !== 'cart_total' && rule.cl_field !== 'cart_variation' && rule.cl_field !== 'user_role' && rule.cl_field !== 'payment_method' && rule.cl_field !== 'checkout_deposit' && rule.cl_field !== 'shipping_method' && rule.cl_field !== 'cart_weight' && rule.cl_field !== 'shipping_class') { 905 906 if (jQuery.inArray($fieldType, ['text', 'tel', 'email', 'colorpicker', 'hidden', 'url']) >= 0) { 907 var $input = $field.is('input') ? $field : $field.find('input'); 908 if ($input.val()) { 909 val.push($input.val().toLowerCase().trim()); 910 } 911 912 } else if (jQuery.inArray($fieldType, ['file']) >= 0) { 913 var $input = $field.is('input') ? $field : $field.find('input'); 914 if ($input.val()) { 915 val.push($input.val().split('\\').pop().toLowerCase()); 916 } else if ($field.parents('.awcfe_file_field').length) { 917 $temp = $field.parents('.awcfe_file_field').find('.awcfe-file-value').val(); 918 if ($temp.split("||").length === 2) { 919 val.push($temp.split("||")[1].toLowerCase()); 920 } 921 } 922 923 } else if (jQuery.inArray($fieldType, ['numberfield']) >= 0) { 924 var $input = $field.is('input') ? $field : $field.find('input'); 925 if ($input.val()) { 926 val.push(parseFloat($input.val().toLowerCase().trim())); 927 } 928 929 } else if (jQuery.inArray($fieldType, ['textarea']) >= 0) { 930 var $textarea = $field.is('textarea') ? $field : $field.find('textarea'); 931 if ($textarea.val()) { 932 val.push($textarea.val().toLowerCase().trim()); 933 } 934 935 } else if (jQuery.inArray($fieldType, ['html']) >= 0) { 936 var $html = $field.is('html') ? $field : $field.find('html'); 937 if ($html.val()) { 938 val.push($html.val().toLowerCase().trim()); 939 } 940 941 } else if (jQuery.inArray($fieldType, ['check-box', 'toggleSwitch']) >= 0) { 942 var $checkbox = $field.is('input') ? $field : $field.find('input'); 943 val = $checkbox.filter(':checked').map(function () { 944 return jQuery(this).val().toLowerCase(); 945 }).get(); 946 947 } else if (jQuery.inArray($fieldType, ['checkboxGroup', 'radio', 'imageGroup', 'colorGroup']) >= 0) {
948 var $inputs = $field.is('input') ? $field : $field.find('input'); 949 val = $inputs.filter(':checked').map(function () { 950 return jQuery(this).val().toLowerCase(); 951 }).get(); 952 } else if (jQuery.inArray($fieldType, ['select', 'multiselect', 'country', 'state']) >= 0) { 953 var $select = $field.is('select') ? $field : $field.find('select'); 954 if ($select.length > 0) { 955 if ($select.val() && $select.val().constructor === Array) { 956 val = $select.val().map(function (e) { 957 return e.toLowerCase().trim(); 958 }); 959 } else if ($select.val()) { 960 val.push($select.val().toLowerCase().trim()); 961 } 962 } else { 963 var $input = $field.is('input') ? $field : $field.find('input'); 964 if ($input.length > 0 && $input.val()) { 965 val.push($input.val().toLowerCase().trim()); 966 } 967 } 968 } 969 else if (jQuery.inArray($fieldType, ['datepicker', 'datetimepicker']) >= 0) { 970 var $input = $field.is('input') ? $field : $field.find('input'); 971 if ($input.val()) { 972 if (jQuery.inArray(rule.cl_relation, ['contains', 'not_contains', 'starts_with', 'ends_with']) >= 0) { 973 974 val.push($input.val().toLowerCase()); 975 } else if (jQuery.inArray(rule.cl_relation, ['day_is', 'day_is_not']) >= 0) { 976 var dd = awcfe_get_day_week($input.val().toLowerCase()); 977 val.push(dd.toLowerCase()); 978 } else { 979 var d = awcfe_get_date_obj($input.val(), 'wp'); 980 if (typeof d.getTime === 'function') { 981 val.push(d.getTime()); 982 } 983 } 984 } 985 } 986 987 else if (jQuery.inArray($fieldType, ['weekpicker']) >= 0) { 988 var $input = $field.is('input') ? $field : $field.find('input'); 989 var inputVal = $input.val() ? $input.val().trim() : ''; 990 if (inputVal) { 991 if (jQuery.inArray(rule.cl_relation, ['contains', 'not_contains', 'starts_with', 'ends_with']) >= 0) { 992 val.push(inputVal.toLowerCase()); 993 } else { 994 var weekData = awcfe_get_week_number(inputVal.toLowerCase()); 995 if (weekData !== null) { 996 val.push(weekData); 997 } 998 } 999 } 1000 } 1001 1002 else if (jQuery.inArray($fieldType, ['timepicker']) >= 0) { 1003 var $input = $field.is('input') ? $field : $field.find('input'); 1004 if ($input.val()) { 1005 if (jQuery.inArray(rule.cl_relation, ['contains', 'not_contains', 'starts_with', 'ends_with']) >= 0) { 1006 val.push($input.val().toLowerCase()); 1007 } else { 1008 // Parse timepicker input as time only 1009 var d = new Date('1/1/2018 ' + $input.val()); 1010 val.push(d.getTime()); 1011 } 1012 } 1013 } else if (jQuery.inArray($fieldType, ['monthpicker']) >= 0) { 1014 var $input = $field.is('input') ? $field : $field.find('input'); 1015 var inputVal = $input.val() ? $input.val().trim() : ''; 1016 if (inputVal) { 1017 if (jQuery.inArray(rule.cl_relation, ['contains', 'not_contains', 'starts_with', 'ends_with']) >= 0) { 1018 val.push(inputVal.toLowerCase()); 1019 } else { 1020 var isValidFormat = /^[A-Za-z]+-\d{4}$/.test(inputVal); 1021 if (isValidFormat) { 1022 var [monthName, year] = inputVal.split('-'); 1023 var monthIndex = window.fullMonthNames.indexOf(monthName); 1024 if (monthIndex !== -1) { 1025 var date = new Date(year, monthIndex, 1); 1026 val.push(date.getTime()); 1027 } else { 1028 val.push(null); 1029 } 1030 } else { 1031 val.push(null); 1032 } 1033 } 1034 } 1035 } 1036 1037 } 1038 1039 var rel_val = false; 1040 1041 if (rule.cl_field === 'cart_product') { 1042 val = (jQuery('#awcfe_cart_items').val().split(',').map(Number)); 1043 } else if (rule.cl_field === 'cart_category') { 1044 val = (jQuery('#awcfe_cart_categories').val().split(',').map(Number)); 1045 } else if (rule.cl_field === 'shipping_class') { 1046 val = (jQuery('#awcfe_cart_shipping_class').val().split(',').map(Number)); 1047 } else if (rule.cl_field === 'cart_variation') { 1048 val = (jQuery('#awcfe_cart_variatns').val().split(',').map(Number)); 1049 } else if (rule.cl_field === 'payment_method') { 1050 val = jQuery('input[name="payment_method"]:checked').val().split(','); 1051 } else if (rule.cl_field === 'checkout_deposit') { 1052 val = jQuery('input[name="awcdp_deposit_option"]:checked').val(); 1053 if (typeof val === 'undefined') { 1054 val = ''; 1055 } 1056 } else if (rule.cl_field === 'shipping_method') { 1057 if (jQuery('input[name="shipping_method[0]"]').is(":hidden")) { 1058 val = jQuery('input[name="shipping_method[0]"]').val().split(','); 1059 } else { 1060 if (jQuery('input[name="shipping_method[0]"]').length > 0) { 1061 val = jQuery('input[name="shipping_method[0]"]:checked').val().split(','); 1062 } 1063 } 1064 //val = jQuery('input[name="shipping_method[0]"]:checked').val().split(','); 1065 } else if (rule.cl_field === 'cart_subtotal') { 1066 var val = new Array(); 1067 val1 = parseFloat(jQuery('#awcfe_amount_subtotal').val()).toFixed(2); 1068 val.push(val1); 1069 } else if (rule.cl_field === 'cart_total') { 1070 var val = new Array(); 1071 val1 = parseFloat(jQuery('#awcfe_amount_total').val()).toFixed(2); 1072 val.push(val1); 1073 } else if (rule.cl_field === 'cart_weight') { 1074 var val = new Array(); 1075 var $weightField = jQuery('#awcfe_cart_weight'); 1076 val1 = parseFloat($weightField.val() || 0).toFixed(2); 1077 val.push(val1); 1078 } else if (rule.cl_field === 'user_role') { 1079 // var val = new Array(); 1080 // val1 = jQuery('#awcfe_role_user').val(); 1081 // val.push(val1); 1082 1083 val = jQuery('#awcfe_role_user').val().split(','); 1084 } 1085 1086 if (val.length == 0) { 1087 switch (rule.cl_relation) { 1088 case 'is_empty': 1089 if (val.length === 0 || val[0] === '' || val[0] === null) { 1090 return true; 1091 } else { 1092 return false; 1093 } 1094 case 'is_not_empty': 1095 if (val.length === 0 || val[0] === '' || val[0] === null) { 1096 return false; 1097 } else { 1098 return true; 1099 } 1100 default: 1101 return false; 1102 } 1103 } 1104 1105 if (rule.cl_val && rule.cl_field === 'cart_product') { 1106 rel_val = rule.cl_val; 1107 rel_val = rel_val.map(function (x) { 1108 return parseInt(x, 10); 1109 }); 1110 } else if (rule.cl_val && rule.cl_field === 'cart_variation') { 1111 rel_val = rule.cl_val; 1112 rel_val = rel_val.split(','); 1113 rel_val = rel_val.map(function (x) { 1114 return parseInt(x, 10); 1115 }); 1116 } else if (rule.cl_val && rule.cl_field === 'payment_method') { 1117 rel_val = rule.cl_val; 1118 rel_val = rel_val.split(','); 1119 rel_val = rel_val.map(function (x) { 1120 return x; 1121 }); 1122 } else if (rule.cl_val && rule.cl_field === 'checkout_deposit') { 1123 rel_val = rule.cl_val; 1124 rel_val = rel_val.split(','); 1125 rel_val = rel_val.map(function (x) { 1126 return x; 1127 }); 1128 } else if (rule.cl_val && rule.cl_field === 'shipping_method') { 1129 rel_val = rule.cl_val; 1130 rel_val = rel_val.split(','); 1131 rel_val = rel_val.map(function (x) { 1132 return x; 1133 }); 1134 } else if (rule.cl_val && rule.cl_field === 'cart_category') { 1135 rel_val = rule.cl_val; 1136 rel_val = rel_val.map(function (x) { 1137 return parseInt(x, 10); 1138 }); 1139 } else if (rule.cl_val && rule.cl_field === 'shipping_class') { 1140 rel_val = [parseInt(rule.cl_val, 10)]; 1141 } else if (rule.cl_val && rule.cl_field === 'cart_subtotal') { 1142 rel_val = (parseFloat(rule.cl_val).toFixed(2)); 1143 } else if (rule.cl_val && rule.cl_field === 'cart_total') { 1144 rel_val = (parseFloat(rule.cl_val).toFixed(2)); 1145 } else if (rule.cl_val && rule.cl_field === 'cart_weight') { 1146 rel_val = (parseFloat(rule.cl_val).toFixed(2)); 1147 } else if (rule.cl_val && rule.cl_field === 'user_role') { 1148 rel_val = rule.cl_val; 1149 rel_val = rel_val.map(function (x) { 1150 return x; 1151 }); 1152 1153 } 1154 else if (rule.cl_val && ($fieldType == 'datepicker' || $fieldType == 'datetimepicker')) { 1155 if (jQuery.inArray(rule.cl_relation, ['contains', 'not_contains', 'starts_with', 'ends_with']) >= 0) { 1156 rel_val = rule.cl_val.toLowerCase(); 1157 } else if (jQuery.inArray(rule.cl_relation, ['day_is', 'day_is_not']) >= 0) { 1158 rel_val = rule.cl_val.toLowerCase(); 1159 } else { 1160 var d1 = awcfe_get_date_obj(rule.cl_val); 1161 rel_val = d1.getTime(); 1162 } 1163 } 1164 1165 else if (rule.cl_val && ($fieldType === 'weekpicker')) { 1166 var match = rule.cl_val.match(/^(\d{4})-W(\d{2})$/); 1167 var formattedWeekString = match ? `${parseInt(match[2], 10)} ${match[1]}` : rule.cl_val; 1168 var weekData = awcfe_get_week_number(formattedWeekString.toLowerCase()); 1169 if (weekData) { 1170 if (jQuery.inArray(rule.cl_relation, ['contains', 'not_contains', 'starts_with', 'ends_with']) >= 0) { 1171 rel_val = rule.cl_val.toLowerCase(); 1172 } else { 1173 rel_val = weekData; 1174 } 1175 } else { 1176 rel_val = null; 1177 } 1178 } 1179 1180 else if (rule.cl_val && ($fieldType == 'timepicker')) { 1181 if (jQuery.inArray(rule.cl_relation, ['contains', 'not_contains', 'starts_with', 'ends_with']) >= 0) { 1182 rel_val = rule.cl_val.toLowerCase(); 1183 } else { 1184 var d1 = new Date('1/1/2018 ' + rule.cl_val); 1185 rel_val = d1.getTime(); 1186 } 1187 } else if (rule.cl_val && ($fieldType == 'monthpicker')) { 1188 if (jQuery.inArray(rule.cl_relation, ['contains', 'not_contains', 'starts_with', 'ends_with']) >= 0) { 1189 rel_val = rule.cl_val.toLowerCase(); 1190 } else { 1191 var cleanedVal = rule.cl_val.trim(); 1192 var isValidFormat = /^\d{4}-\d{2}$/.test(cleanedVal); 1193 if (isValidFormat) { 1194 var [year, month] = cleanedVal.split('-'); 1195 var date = new Date(year, month - 1, 1); 1196 rel_val = date.getTime(); 1197 } else { 1198 rel_val = null; // Invalid format 1199 } 1200 } 1201 } 1202 1203 else if (rule.cl_val && $fieldType == 'numberfield') { 1204 rel_val = parseFloat(((rule.cl_val.value) ? rule.cl_val.value : rule.cl_val)); 1205 } else if (rule.cl_val) { 1206 rel_val = ((rule.cl_val.value) ? rule.cl_val.value : rule.cl_val).toLowerCase(); 1207 } 1208 1209 switch (rule.cl_relation) { 1210 case 'day_is': 1211 if (jQuery.inArray(rel_val, val) >= 0) { 1212 return true; 1213 } else { 1214 return false; 1215 } 1216 case 'day_is_not': 1217 if (jQuery.inArray(rel_val, val) >= 0) { 1218 return false; 1219 } else { 1220 return true; 1221 } 1222 case 'is': 1223 var is_match = false; 1224 for (var i = 0; i < val.length; i++) { 1225 if (isNumeric(val[i]) && isNumeric(rel_val)) { 1226 if (parseFloat(val[i]) === parseFloat(rel_val)) { 1227 is_match = true; break; 1228 } 1229 } else if (isDate(val[i]) && isDate(rel_val)) { 1230 if (new Date(val[i]).getTime() === new Date(rel_val).getTime()) { 1231 is_match = true; break; 1232 } 1233 } else if (val[i] == rel_val) { 1234 is_match = true; break; 1235 } 1236 } 1237 return is_match; 1238 1239 case 'is_not': 1240 var is_match = false; 1241 for (var i = 0; i < val.length; i++) { 1242 if (isNumeric(val[i]) && isNumeric(rel_val)) { 1243 if (parseFloat(val[i]) === parseFloat(rel_val)) { 1244 is_match = true; break; 1245 } 1246 } else if (isDate(val[i]) && isDate(rel_val)) { 1247 if (new Date(val[i]).getTime() === new Date(rel_val).getTime()) { 1248 is_match = true; break; 1249 } 1250 } else if (val[i] == rel_val) { 1251 is_match = true; break; 1252 } 1253 } 1254 return !is_match; 1255 case 'is_in': 1256 if (Array.isArray(rel_val)) { 1257 var is_in = rel_val.filter(function(element) { 1258 return val.some(function (v) { 1259 if (isNumeric(v) && isNumeric(element)) { 1260 return parseFloat(v) === parseFloat(element); 1261 } 1262 return v == element; 1263 }); 1264 }); 1265 if (is_in.length > 0) { 1266 return true; 1267 1268 } else { 1269 return false; 1270 } 1271 } else { 1272 return false; 1273 } 1274 1275 case 'is_not_in': 1276 if (Array.isArray(rel_val)) { 1277 var is_in = rel_val.filter(function (element) { 1278 return val.some(function (v) { 1279 if (isNumeric(v) && isNumeric(element)) { 1280 return parseFloat(v) === parseFloat(element); 1281 } 1282 return v == element; 1283 }); 1284 }); 1285 if (is_in.length > 0) { 1286 return false; 1287 } else { 1288 return true; 1289 } 1290 } else { 1291 return false; 1292 } 1293 1294 1295 case 'is_select': 1296 if (val == 'deposit') { 1297 return true; 1298 } else { 1299 return false; 1300 } 1301 1302 case 'is_not_select': 1303 if (val == 'full') { 1304 return true; 1305 } else { 1306 return false; 1307 } 1308 1309 case 'is_empty': 1310 if (val.length === 0 || val[0] === '' || val[0] === null) { 1311 return true; 1312 } else { 1313 return false; 1314 } 1315 case 'is_not_empty': 1316 if (val.length === 0 || val[0] === '' || val[0] === null) { 1317 return false; 1318 } else { 1319 return true; 1320 } 1321 case 'is_greater': 1322 for (var i = 0; i < val.length; i++) { 1323 if (isDate(val[i]) && isDate(rel_val)) { 1324 if (new Date(val[i]) > new Date(rel_val)) return true; 1325 } else if (parseFloat(val[i]) > parseFloat(rel_val)) { 1326 return true; 1327 } 1328 } 1329 return false; 1330 case 'is_lessthan': 1331 for (var i = 0; i < val.length; i++) { 1332 if (isDate(val[i]) && isDate(rel_val)) { 1333 if (new Date(val[i]) < new Date(rel_val)) return true; 1334 } else if (parseFloat(val[i]) < parseFloat(rel_val)) { 1335 return true; 1336 } 1337 } 1338 return false; 1339 case 'is_greater_or_equal': 1340 for (var i = 0; i < val.length; i++) { 1341 if (isDate(val[i]) && isDate(rel_val)) { 1342
1342 if (new Date(val[i]) >= new Date(rel_val)) return true; 1343 } else if (parseFloat(val[i]) >= parseFloat(rel_val)) { 1344 return true; 1345 } 1346 } 1347 return false; 1348 case 'is_lessthan_or_equal': 1349 for (var i = 0; i < val.length; i++) { 1350 if (isDate(val[i]) && isDate(rel_val)) { 1351 if (new Date(val[i]) <= new Date(rel_val)) return true; 1352 } else if (parseFloat(val[i]) <= parseFloat(rel_val)) { 1353 return true; 1354 } 1355 } 1356 return false; 1357 case 'contains': 1358 for (var i = 0; i < val.length; i++) { 1359 if (val[i].indexOf(rel_val) !== -1) { 1360 return true; 1361 } 1362 } 1363 return false; 1364 case 'not_contains': 1365 for (var i = 0; i < val.length; i++) { 1366 if (val[i].indexOf(rel_val) !== -1) { 1367 return false; 1368 } 1369 } 1370 return true; 1371 case 'starts_with': 1372 for (var i = 0; i < val.length; i++) { 1373 if (val[i].startsWith(rel_val)) { 1374 return true; 1375 } 1376 } 1377 return false; 1378 case 'ends_with': 1379 for (var i = 0; i < val.length; i++) { 1380 if (val[i].endsWith(rel_val)) { 1381 return true; 1382 } 1383 } 1384 return false; 1385 case 'date_is': 1386 case 'time_is': 1387 if (jQuery.inArray(rel_val, val) >= 0) { 1388 return true; 1389 } else { 1390 return false; 1391 } 1392 case 'date_is_before': 1393 case 'time_is_before': 1394 for (var i = 0; i < val.length; i++) { 1395 if (parseFloat(val[i]) >= parseFloat(rel_val)) { // need to ensuer no values are greater 1396 return false; 1397 } 1398 } 1399 1400 return true; 1401 case 'date_is_after': 1402 case 'time_is_after': 1403 for (var i = 0; i < val.length; i++) { 1404 if (parseFloat(val[i]) > parseFloat(rel_val)) { // need to ensuer no values are greater 1405 return true; 1406 } 1407 } 1408 return false; 1409 } 1410} 1411 1412function awcfe_get_week_number(weekString) { 1413 if (!weekString) return null; 1414 1415 // Adjust the regex to match 'W{week} {year}' format 1416 var match = weekString.match(/^(\d{1,2})\s(\d{4})$/); 1417 if (!match) return null; 1418 1419 var week = parseInt(match[1], 10); 1420 var year = parseInt(match[2], 10); 1421 1422 if (week >= 1 && week <= 53) { 1423 return `W${week} ${year}`;
1423 // Return as a single string in the format 'W{week} {year}' 1424 } 1425 1426 return null; 1427} 1428 1429 1430 1431function awcfe_get_day_week(weekString) { 1432 var days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday']; 1433 var d = awcfe_get_date_obj(weekString, 'wp'); 1434 return d instanceof Date && !isNaN(d) ? days[d.getDay()] : null; 1435} 1436 1437function awcfe_get_date_obj(val, date_format) { 1438 1439 date_format = typeof date_format !== 'undefined' ? date_format : false; 1440 if (typeof moment == 'function') { 1441 if (date_format == 'wp') { 1442 return moment(val, awcfeSettings.dateFormatJs + ' ' + awcfeSettings.timeFormatJs).toDate(); 1443 } else if (date_format !== false) { 1444 return moment(val, date_format).toDate(); 1445 } else { 1446 return moment(val).toDate(); 1447 } 1448 } 1449 return new Date(val); 1450} 1451 1452/* / RegExp / */ 1453 1454jQuery(document).on('change keyup', '.wcfe_allowed_chars input[type=text], .wcfe_allowed_chars textarea', function (e) { 1455 var val = jQuery(this).val(); 1456 var new_val = ''; 1457 var validation = jQuery(this).data('validation'); 1458 var errormsg = jQuery(this).data('errormsg'); 1459 var allowed_chars = regExpFromString(validation.allowed_chars, 'i'); 1460 1461 var a = jQuery.trim(val).match(allowed_chars) ? true : false; 1462 if (a == true) { 1463 jQuery(this).parents('.form-row').removeClass('woocommerce-invalid'); 1464 } else { 1465 jQuery(this).parents('.form-row').removeClass('woocommerce-validated'); 1466 jQuery(this).closest('.form-row').addClass('woocommerce-invalid'); 1467 1468 if (typeof $error_ele !== 'undefined') { 1469 $error_ele.remove(); 1470 } 1471 $error_ele = jQuery('<span class="wcfe_error_msg">' + errormsg + '</span>').insertAfter(jQuery(this)); 1472 setTimeout(function () { 1473 $error_ele.fadeOut(1000, function () { 1474 jQuery(this).remove(); 1475 }) 1476 }, 1500); 1477 1478 } 1479}); 1480 1481function regExpFromString(q, ext) { 1482 var flags = q.replace(/.*\/([gimuy]*)$/, '$1'); 1483 if (flags === q) flags = ''; 1484 var pattern = (q.charAt(0) == '/' ? q.replace(new RegExp('^/(.*?)/' + flags + '$'), '$1') : q); 1485 try { 1486 if (flags == '' && q.charAt(0) !== '/') { 1487 flags = ext; 1488 } 1489 return new RegExp(pattern, flags); 1490 } catch (e) { 1491 return null; 1492 } 1493} 1494 1495 1496 1497// } 1498 1499var $ck = ''; 1500awcfe_initialize_script($ck); 1501 1502// jQuery( document.body ).on( 'updated_checkout', function() { 1503// awcfe_initialize_script(); 1504// var $ck = '.acwcfe_extra_section'; 1505// awcfe_file_action_script($ck); 1506// 1507// jQuery('.acwcfe_extra_section .awcfe_price_field .awcfe_price_item').on('change', function () { 1508// awcfe_calculate_price(); 1509// }); 1510// 1511// }); 1512 1513jQuery(document.body).bind('update_checkout', function () { 1514 var myform = jQuery('.acwcfe_extra_section'); 1515 var disabled = myform.find(':input:disabled').removeAttr('disabled'); 1516 var secFieldData = jQuery('.acwcfe_extra_section input, .acwcfe_extra_section select, .acwcfe_extra_section textarea').serializeArray(); 1517 disabled.attr('disabled', 'disabled'); 1518 dataObj = {}; 1519 jQuery(secFieldData).each(function (i, field) { 1520 if (field.name in dataObj) { 1521 dataObj[field.name] = dataObj[field.name] + ',' + field.value; 1522 } else { 1523 dataObj[field.name] = field.value; 1524 } 1525 }) 1526}); 1527jQuery(document.body).bind('updated_checkout', function () { 1528 1529 jQuery('.acwcfe_extra_section').find('input, select, textarea').each(function () { 1530 var itemName = jQuery(this).attr('name'); 1531 var itemId = jQuery(this).attr('id'); 1532 var itemType = jQuery(this).attr('data-type'); 1533 if (itemName in dataObj) { 1534 if (itemType == 'checkboxGroup') { 1535 optz = dataObj[itemName].trim().split(','); 1536 optz.forEach(function (item) { 1537 jQuery(":checkbox[name='" + itemName + "'][value='" + item + "']").attr('checked', true); 1538 }); 1539 } else if (itemType == 'radio') { 1540 jQuery(":radio[name='" + itemName + "'][value='" + dataObj[itemName] + "']").attr('checked', true).trigger('change'); 1541 } else if (itemType == 'multiselect') { 1542 jQuery("#" + itemId).val(dataObj[itemName].trim().split(',')); 1543 } else if (itemType == 'colorpicker') { 1544 jQuery("#" + itemId).spectrum("set", dataObj[itemName]).trigger('change'); 1545 } else if (itemType == 'fileitem') { 1546 var valuee = dataObj[itemName]; 1547 jQuery("input[name='" + itemName + "']").val(valuee); 1548 if (valuee) { 1549 var data = JSON.parse(valuee); 1550 var preview = ""; 1551 if (data.type === "image/jpg" || data.type === "image/png" || data.type === "image/gif" || data.type === "image/jpeg") { 1552 preview = "<span class='awcfe-file-image-container'><img src='" + data.url + "' title='" + data.filename + "' /></span>"; 1553 } else { 1554 preview = "<span class='awcfe-file-image-container'><img src='" + awcfeSettings.asseturl + "/images/text.png' title='" + data.filename + "' /></span>"; 1555 } 1556 jQuery("input[name='" + itemName + "']").siblings('.awcfe-file-list1').find('.awcfe-file-list').append(preview); 1557 jQuery("input[name='" + itemName + "']").siblings('.awcfe-file-list1').show(); 1558 jQuery("input[name='" + itemName + "']").siblings('.awcfe-file-button-wrap').hide(); 1559 } 1560 1561 } else { 1562 jQuery("#" + itemId).val(dataObj[itemName]); 1563 } 1564 } 1565 1566 });
1567 1568 1569 var $ck = '.acwcfe_extra_section'; 1570 awcfe_initialize_script($ck); 1571 awcfe_file_action_script($ck); 1572 jQuery('.acwcfe_extra_section .awcfe_price_field .awcfe_price_item').on('change', function () { 1573 //awcfe_calculate_price(); 1574 }); 1575 1576 jQuery('.acwcfe_extra_section.awcfe_has_sec_rules').each(function () { 1577 var itemType = jQuery(this).data('type'); 1578 var elmnt = jQuery(this).attr('id'); 1579 var isSec = 'section'; 1580 exc_relations(elmnt, itemType, isSec, $ck); 1581 }); 1582 1583 jQuery('.acwcfe_extra_section .awcfe_has_relation').each(function () { 1584 1585 var related = jQuery(this).find('.awcfe_cl_fields').data('related'); 1586 var itemType = jQuery(this).find('.awcfe_cl_fields').data('type'); 1587 var isSec = 'field'; 1588 if (related != null) { 1589 related.forEach(function (el) { 1590 exc_relations(el, itemType, isSec, $ck); 1591 }); 1592 } 1593 }); 1594 awcfeInitMap(); 1595 1596}); 1597 1598var $ck = ''; 1599awcfe_file_action_script($ck); 1600 1601function awcfe_file_action_script($ck) { 1602 1603 jQuery($ck + " .awcfe_file_field ").each(function (i, field) { 1604 1605 var $field = jQuery(field), 1606 $button_file = $field.find('[type=file]'), 1607 $button_click = $field.find('.awcfe-file-button'), 1608 $button_wrap = $field.find('.awcfe-file-button-wrap'), 1609 $field_list = $field.find('.awcfe-file-list'), 1610 $field_list1 = $field.find('.awcfe-file-list1'), 1611 1612 $file_value = $field.find('.awcfe-file-value'), 1613 $button_remove = $field.find('.awcfe-remove-uploaded'), 1614 $up_loading = $field.find('.awcfe-file-upstatus'), 1615 $up_error = $field.find('.awcfe-file-error'); 1616 1617 $button_click.on('click', function (e) { 1618 e.preventDefault(); 1619 $button_file.trigger('click'); 1620 }); 1621 1622 1623 $button_file.on('change', prepareUpload); 1624 1625 function prepareUpload(event) { 1626 var file = event.target.files; 1627 var data = new FormData(); 1628 data.append("action", "awcfe_file_action"); 1629 data.append("maxsize", jQuery(this).attr("data-max")); 1630 data.append("minsize", jQuery(this).attr("data-min")); 1631 data.append("types", jQuery(this).attr("data-types")); 1632 1633 jQuery.each(file, function (key, value) { 1634 // data.append("awcfe_file_upload[]", value); 1635 data.append("awcfe_file_upload", value); 1636 }); 1637 1638 jQuery.ajax({ 1639 url: awcfeSettings.ajaxurl, 1640 type: 'POST', 1641 data: data, 1642 cache: false, 1643 dataType: 'json', 1644 processData: false, 1645 contentType: false, 1646 beforeSend: function () { 1647 $up_error.hide(); 1648 $up_error.html(''); 1649 $field_list.text(''); 1650 $up_loading.show(); 1651 $button_click.removeClass('fileAdded'); 1652 }, 1653 success: function (data, textStatus, jqXHR) { 1654 $up_loading.hide(); 1655 $button_file.val(''); 1656 if (data.response == "SUCCESS") { 1657 var preview = ""; 1658 1659 if (data.type === "image/jpg" || data.type === "image/png" || data.type === "image/gif" || data.type === "image/jpeg") { 1660 preview = "<span class='awcfe-file-image-container'><img src='" + data.url + "' title='" + data.filename + "' /></span>"; 1661 } else { 1662 preview = "<span class='awcfe-file-image-container'><img src='" + awcfeSettings.asseturl + "/images/text.png' title='" + data.filename + "' /></span>"; 1663 // preview = data.filename; 1664 } 1665 1666 delete data["response"]; 1667 jQuery($file_value).val(JSON.stringify(data)); 1668 1669 jQuery($field_list).append(preview); 1670 jQuery($field_list1).show(); 1671 $button_click.hide(); 1672 $button_click.addClass('fileAdded'); 1673 $button_wrap.hide(); 1674 $button_remove.attr("data-fileurl", data.url); 1675 awcfe_calculate_price(); 1676 } else { 1677 jQuery($up_error).html(data.error); 1678 $up_error.show(); 1679 } 1680 } 1681 1682 }); 1683 } 1684 1685 $button_remove.on('click', function (e) { 1686 e.preventDefault(); 1687 1688 var fileurl = jQuery(this).attr("data-fileurl"); 1689 var data = { fileurl: fileurl, action: 'awcfe_file_delete' }; 1690 jQuery.ajax({ 1691 url: awcfeSettings.ajaxurl, 1692 type: 'POST', 1693 data: data, 1694 cache: false, 1695 dataType: 'json', 1696 beforeSend: function () { 1697 $up_error.hide(); 1698 $field_list.text(''); 1699 $up_loading.show(); 1700 }, 1701 success: function (data, textStatus, jqXHR) { 1702 $up_loading.hide(); 1703 if (data.response == "SUCCESS") { 1704 $field_list1.hide(); 1705 $button_click.show(); 1706 $button_click.removeClass('fileAdded'); 1707 $button_wrap.show(); 1708 jQuery($file_value).val(''); 1709 awcfe_calculate_price(); 1710 } 1711 if (data.response == "ERROR") { 1712 jQuery($up_error).html(data.error); 1713 $up_error.show(); 1714 } 1715 }, 1716 error: function (jqXHR, textStatus, errorThrown) { 1717 jQuery($up_error).html(textStatus); 1718 $up_error.show(); 1719 } 1720 }); 1721 }); 1722 });
1723} 1724 1725 1726awcfe_calculate_price(); 1727 1728jQuery(document).on('change', '.awcfe_price_field .awcfe_price_item', function (e) { 1729 // jQuery('.awcfe_price_field .awcfe_price_item').on('change', function () { 1730 1731 awcfe_calculate_price(); 1732 1733}); 1734 1735 1736function awcfe_calculate_price() { 1737 1738 var priceInfoArr = {}; 1739 jQuery(".awcfe_price_item:not([disabled])").each(function () { 1740 var dis = jQuery(this); 1741 var itype = ''; 1742 1743 var priceInfo = {}; 1744 pname = dis.prop("name"); 1745 ftype = dis.data('type'); 1746 taxable = dis.data('taxable'); 1747 taxClass = dis.data('taxclass'); 1748 1749 var plabel = dis.data("pricelabel"), 1750 priceType = dis.data("pricetype"), 1751 priceOption = dis.data("priceoption"); 1752 1753 if (ftype == 'multiselect') { 1754 1755 var pname = dis.data("name"); 1756 var value = dis.val(); 1757 var selected = jQuery(this).find('option:selected', this); 1758 var total = 0; 1759 selected.each(function () { 1760 total += isNaN(parseFloat(jQuery(this).data('optionprice'))) ? 0 : parseFloat(jQuery(this).data('optionprice')); 1761 }); 1762 var price = total; 1763 1764 } else if (ftype == 'radio') { 1765 1766 var pname = dis.data("name"); 1767 var value = jQuery('input[name="' + pname + '"]:checked').val(); 1768 1769 if (priceOption == 'fixed_for_all') { 1770 var price = dis.data("price"); 1771 } else { 1772 var price = jQuery('input[name="' + pname + '"]:checked').data('optionprice'); 1773 } 1774 1775 } else if (ftype == 'checkboxGroup') { 1776 1777 var pname = dis.data("name"); 1778 // var value = jQuery('input[name="'+pname+'[]"]:checked').val(); 1779 var value = []; 1780 jQuery('input:checkbox[name="' + pname + '[]"]:checked').each(function () { 1781 value.push(jQuery(this).val()); 1782 }); 1783 1784 var total = 0; 1785 jQuery('input[name="' + pname + '[]"]:checked').each(function () { 1786 total += isNaN(parseFloat(jQuery(this).data('optionprice'))) ? 0 : parseFloat(jQuery(this).data('optionprice')); 1787 }); 1788 var price = total; 1789 1790 } else if (ftype == 'check-box' || ftype == 'toggleSwitch') { 1791 1792 var price = 0; 1793 1794 if (dis.is(':checked')) { 1795 var value = dis.val(); 1796 price = dis.data("price"); 1797 } 1798 1799 } 1800 else if (ftype == 'select') { 1801 var value = dis.val(); 1802 if (priceOption == 'fixed_for_all') { 1803 var price = dis.data("price"); 1804 } 1805 else { 1806 var price = dis.find(':selected').data('optionprice'); 1807 } 1808 } 1809 else if (ftype == 'file') { 1810 var value = dis.siblings('.awcfe-file-value').val(), 1811 price = dis.data("price"); 1812 1813 } else if (ftype == 'imageGroup' || ftype == 'colorGroup') { 1814 itype = dis.data('frp'); 1815 1816 if (itype == 'radio') { 1817 var pname = dis.data("name"); 1818 var value = jQuery('input[name="' + pname + '"]:checked').val(); 1819 1820 if (priceOption == 'fixed_for_all') { 1821 var price = dis.data("price"); 1822 } else { 1823 var price = jQuery('input[name="' + pname + '"]:checked').data('optionprice'); 1824 } 1825 } else if (itype == 'checkboxGroup') { 1826 var pname = dis.data("name"); 1827 var value = []; 1828 jQuery('input:checkbox[name="' + pname + '[]"]:checked').each(function () { 1829 value.push(jQuery(this).val()); 1830 }); 1831 var total = 0; 1832 jQuery('input[name="' + pname + '[]"]:checked').each(function () { 1833 total += isNaN(parseFloat(jQuery(this).data('optionprice'))) ? 0 : parseFloat(jQuery(this).data('optionprice')); 1834 }); 1835 var price = total; 1836 } 1837 } else { 1838 var value = dis.val(); 1839 var price = dis.data("price"); 1840 if (value !== false && value !== '' && value !== null && price) { 1841 console.log('value:', value); 1842 1843 if (priceType === 'custom') { 1844 var formula = price.replace(/{this.value}/g, value).replace(/{value}/g, value); 1845 try { 1846 price = eval(formula); 1847 } catch (e) { 1848 price = 0; 1849 } 1850 } 1851 } 1852 } 1853 1854 priceInfo.ftype = ftype; 1855 priceInfo.itype = itype; 1856 priceInfo.name = pname; 1857 priceInfo.label = plabel; 1858 priceInfo.price = price; 1859 priceInfo.priceType = priceType; 1860 priceInfo.priceOption = priceOption; 1861 priceInfo.value = value; 1862 priceInfo.taxable = taxable; 1863 priceInfo.taxClass = taxClass; 1864 1865 priceInfoArr[pname] = priceInfo; 1866 1867 1868 });
1869 1870 if (jQuery('.awcfe_price_item').length > 0) { 1871 jQuery.ajax({ 1872 type: 'POST', 1873 url: awcfeSettings.ajaxurl, 1874 data: { 1875 'action': 'awcfe_price_action', 1876 'price': JSON.stringify(priceInfoArr), 1877 }, 1878 success: function (result) { 1879 jQuery('body').trigger('update_checkout'); 1880 }, 1881 error: function (error) { 1882 console.log(error); 1883 } 1884 }); 1885 } 1886 1887} 1888 1889jQuery('body').on('country_to_state_changed', function () { 1890 1891 var elementID = 'billing_state'; 1892 if ('#' + elementID.length > 0) { 1893 if (jQuery('#billing_state').attr('type') == 'hidden') { 1894 addCountryState(elementID); 1895 } else { 1896 removeCountryState(elementID); 1897 } 1898 } 1899 var elementIDs = 'shipping_state'; 1900 if ('#' + elementIDs.length > 0) { 1901 if (jQuery('#shipping_state').attr('type') == 'hidden') { 1902 addCountryState(elementIDs) 1903 } else { 1904 removeCountryState(elementIDs); 1905 } 1906 } 1907 1908}); 1909 1910function addCountryState(elementID) { 1911 var hidenFields = jQuery('#awcfe_disabled_fields').val(); 1912 addHiddenFields(hidenFields, elementID); 1913} 1914 1915function removeCountryState(elementID) { 1916 var hidenFields = jQuery('#awcfe_disabled_fields').val(); 1917 removeHiddenFields(hidenFields, elementID); 1918} 1919 1920function awcfeInitMap() { 1921 var componentForm = { 1922 street_number: 'short_name', 1923 route: 'long_name', 1924 locality: 'long_name', 1925 administrative_area_level_1: 'short_name', 1926 country: 'long_name', 1927 postal_code: 'short_name' 1928 }; 1929 jQuery('.awcfe_placeselector_field').each(function () { 1930 var input = jQuery(this).find('.awcfe_google_place').get(0); 1931 var $that = jQuery(this); 1932 var autocomplete = new google.maps.places.Autocomplete(input); 1933 var geocoder = new google.maps.Geocoder(); 1934 autocomplete.addListener('place_changed', function () { 1935 var place = autocomplete.getPlace(); 1936 1937 for (var component in componentForm) { 1938 jQuery('.' + component, $that).val(''); 1939 jQuery('.' + component, $that).removeAttr('disabled', 'disabled'); 1940 } 1941 for (var i = 0; i < place.address_components.length; i++) { 1942 var addressType = place.address_components[i].types[0]; 1943 if (componentForm[addressType]) { 1944 var val = place.address_components[i][componentForm[addressType]]; 1945 jQuery('.' + addressType, $that).val(val); 1946 1947 } 1948 } 1949 if (place.geometry) { 1950 jQuery('.awcfe_lat', $that).val(place.geometry.location.lat()); 1951 jQuery('.awcfe_lng', $that).val(place.geometry.location.lng()); 1952 } 1953 }); 1954 if ($that.find('.awcfe_map').length) { 1955 var map = new google.maps.Map($that.find('.awcfe_map').get(0), { 1956 center: { lat: 0, lng: 0 }, 1957 zoom: 15 1958 }); 1959 var marker; 1960 autocomplete.bindTo('bounds', map); 1961 1962 var marker = new google.maps.Marker({ 1963 map: map, 1964 draggable: true, 1965 anchorPoint: new google.maps.Point(0, -29) 1966 }); 1967 jQuery.post("https://www.googleapis.com/geolocation/v1/geolocate?key=" + awcfeSettings.google_map_api, function (success) { 1968 map.setCenter(success.location); 1969 marker.setVisible(false); 1970 marker.setPosition(success.location); 1971 marker.setVisible(true); 1972 }) 1973 google.maps.event.addListener(marker, 'dragend', function () { 1974 jQuery('.awcfe_lat', $that).val(marker.getPosition().lat()); 1975 jQuery('.awcfe_lng', $that).val(marker.getPosition().lng()); 1976 geocoder.geocode({ 1977 latLng: marker.getPosition() 1978 }, function (responses) { 1979 for (var component in componentForm) { 1980 jQuery('.' + component, $that).val(''); 1981 jQuery('.' + component, $that).removeAttr('disabled', 'disabled'); 1982 } 1983 if (responses && responses.length > 0) { 1984 jQuery('.awcfe_google_place', $that).val(responses[0].formatted_address); 1985 // jQuery.wcpaIterate(); 1986 for (var i = 0; i < responses[0].address_components.length; i++) { 1987 var addressType = responses[0].address_components[i].types[0]; 1988 if (componentForm[addressType]) { 1989 var val = responses[0].address_components[i][componentForm[addressType]]; 1990 jQuery('.' + addressType, $that).val(val); 1991 1992 } 1993 } 1994 } 1995 }); 1996 }); 1997 autocomplete.addListener('place_changed', function () { 1998 marker.setVisible(false); 1999 var place = autocomplete.getPlace(); 2000 if (!place.geometry) { 2001 // User entered the name of a Place that was not suggested and 2002 // pressed the Enter key, or the Place Details request failed. 2003 window.alert("No details available for input
2003: '" + place.name + "'"); 2004 return; 2005 } 2006 // If the place has a geometry, then present it on a map. 2007 if (place.geometry.viewport) { 2008 map.fitBounds(place.geometry.viewport); 2009 } else { 2010 map.setCenter(place.geometry.location); 2011 map.setZoom(17); // Why 17? Because it looks good. 2012 } 2013 marker.setPosition(place.geometry.location); 2014 marker.setVisible(true); 2015 2016 }); 2017 } 2018 2019 }) 2020} 2021 2022jQuery('body.woocommerce-checkout span.description').removeClass('description').addClass('awcfe_show_description').removeAttr('aria-hidden'); 2023 2024jQuery(document.body).on('updated_checkout', function () { 2025 jQuery('[data-rules]').each(function () { 2026 var elmnt = jQuery(this).attr('id'); 2027 var itemType = jQuery(this).data('type'); 2028 var isSec = jQuery(this).hasClass('awcfe_cl_sec_parent') || jQuery(this).hasClass('awcfe_condSec') || jQuery(this).hasClass('awcfe_has_sec_rules') ? 'section' : 'field'; 2029 exc_relations(elmnt, itemType, isSec, ''); 2030 }); 2031 jQuery('.awcfe_condSec').each(function () { 2032 var itemType = jQuery(this).data('type'); 2033 var elmnt = jQuery(this).attr('id'); 2034 exc_relations(elmnt, itemType, 'section', ''); 2035 }); 2036 jQuery('.awcfe_condField').each(function () { 2037 var itemType = jQuery(this).find('.awcfe_cl_fields').data('type'); 2038 var elmnt = (itemType == 'checkboxGroup' || itemType == 'radio' || itemType == 'imageGroup' || itemType == 'colorGroup') ? jQuery(this).find('.awce-check-param').attr('id') : jQuery(this).find('.awcfe_cl_fields').attr('id'); 2039 exc_relations(elmnt, itemType, 'field', ''); 2040 }); 2041 jQuery('.awcfe_has_sec_rules').each(function () { 2042 var itemType = jQuery(this).data('type'); 2043 var elmnt = jQuery(this).attr('id'); 2044 exc_relations(elmnt, itemType, 'section', ''); 2045 }); 2046 jQuery(' .awcfe_has_relation').each(function () { 2047 var itemType = jQuery(this).find('.awcfe_cl_fields').data('type'); 2048 var related = (itemType == 'checkboxGroup' || itemType == 'radio' || itemType == 'imageGroup' || itemType == 'colorGroup') ? jQuery(this).find('.awce-check-param').data('related') : jQuery(this).find('.awcfe_cl_fields').data('related'); 2049 if (related != null) { 2050 related.forEach(function (el) { 2051 exc_relations(el, itemType, 'field', ''); 2052 }); 2053 } 2054 }); 2055});
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.