1/** 2 * 2007-2021 ETS-Soft 3 * 4 * NOTICE OF LICENSE 5 * 6 * This file is not open source! Each license that you purchased is only available for 1 wesite only. 7 * If you want to use this file on more websites (or projects), you need to purchase additional licenses. 8 * You are not allowed to redistribute, resell, lease, license, sub-license or offer our resources to any third party. 9 * 10 * DISCLAIMER 11 * 12 * Do not edit or add to this file if you wish to upgrade PrestaShop to newer 13 * versions in the future. If you wish to customize PrestaShop for your 14 * needs please contact us for extra customization service at an affordable price 15 * 16 * @author ETS-Soft <[email protected]> 17 * @copyright 2007-2021 ETS-Soft 18 * @license Valid for 1 website (or project) for each purchase of license 19 * International Registered Trademark & Property of ETS-Soft 20 */ 21(function ($) { 22 23 'use strict'; 24 var wpcfu = { 25 "apiSettings": { 26 "root": "http:\/\/web.prestahero.com\/chung\/wp494\/wp-json\/contact-form-7\/v1", 27 "namespace": "contact-form-7\/v1" 28 }, "recaptcha": {"messages": {"empty": "Please verify that you are not a robot."}} 29 }; 30 if (typeof wpcfu === 'undefined' || wpcfu === null) { 31 return; 32 } 33 34 wpcfu = $.extend({ 35 cached: 0, 36 inputs: [] 37 }, wpcfu); 38 39 $(function () { 40 wpcfu.supportHtml5 = (function () { 41 var features = {}; 42 var input = document.createElement('input'); 43 44 features.placeholder = 'placeholder' in input; 45 46 var inputTypes = ['email', 'url', 'tel', 'number', 'range', 'date']; 47 48 $.each(inputTypes, function (index, value) { 49 input.setAttribute('type', value); 50 features[value] = input.type !== 'text'; 51 }); 52 return features; 53 })(); 54 55 $('div.wpcfu > form').each(function () { 56 var $form = $(this); 57 wpcfu.initForm($form); 58 59 if (wpcfu.cached) { 60 wpcfu.refill($form); 61 } 62 }); 63 }); 64 65 wpcfu.getId = function (form) { 66 return parseInt($('input[name="_wpcfu"]', form).val(), 10); 67 }; 68 69 wpcfu.initForm = function (form) { 70 var $form = $(form); 71 $form.submit(function (event) { 72 if (typeof window.FormData !== 'function') { 73 return; 74 } 75 wpcfu.submit($form); 76 event.preventDefault(); 77 }); 78 if ($form.find('.ajax-loader').length <= 0) 79 $form.find('.wpcfu-submit').after('<span class="ajax-loader"></span>'); 80 wpcfu.toggleSubmit($form); 81 82 $form.on('click', '.wpcfu-acceptance', function () { 83 wpcfu.toggleSubmit($form); 84 }); 85 86 // Exclusive Checkbox 87 $('.wpcfu-exclusive-checkbox', $form).on('click', 'input:checkbox', function () { 88 var name = $(this).attr('name'); 89 $form.find('input:checkbox[name="' + name + '"]').not(this).prop('checked', false); 90 }); 91 92 // Free Text Option for Checkboxes and Radio Buttons 93 $('.wpcfu-list-item.has-free-text', $form).each(function () { 94 var $freetext = $(':input.wpcfu-free-text', this); 95 var $wrap = $(this).closest('.wpcfu-form-control'); 96 if ($(':checkbox, :radio', this).is(':checked')) { 97 $freetext.prop('disabled', false); 98 } else { 99 $freetext.prop('disabled', true); 100 } 101 $wrap.on('change', ':checkbox, :radio', function () { 102 var $cb = $('.has-free-text', $wrap).find(':checkbox, :radio'); 103 if ($cb.is(':checked')) { 104 $freetext.prop('disabled', false).focus(); 105 } else { 106 $freetext.prop('disabled', true); 107 } 108 }); 109 }); 110 111 // Placeholder Fallback 112 if (!wpcfu.supportHtml5.placeholder) { 113 $('[placeholder]', $form).each(function () { 114 $(this).val($(this).attr('placeholder')); 115 $(this).addClass('placeheld'); 116 117 $(this).focus(function () { 118 if ($(this).hasClass('placeheld')) { 119 $(this).val('').removeClass('placeheld'); 120 } 121 }); 122 123 $(this).blur(function () { 124 if ('' === $(this).val()) { 125 $(this).val($(this).attr('placeholder')); 126 $(this).addClass('placeheld'); 127 } 128 }); 129 }); 130 } 131 132 if (wpcfu.jqueryUi && !wpcfu.supportHtml5.date) { 133 $form.find('input.wpcfu-date[type="date"]').each(function () { 134 $(this).datepicker({ 135 dateFormat: 'yy-mm-dd', 136 minDate: new Date($(this).attr('min')), 137 maxDate: new Date($(this).attr('max')) 138 }); 139 }); 140 } 141 142 if (wpcfu.jqueryUi && !wpcfu.supportHtml5.number) { 143 $form.find('input.wpcfu-number[type="number"]').each(function () { 144 $(this).spinner({ 145 min: $(this).attr('min'), 146 max: $(this).attr('max'), 147 step: $(this).attr('step') 148 }); 149 }); 150 } 151 152 // Character Count 153 $('.wpcfu-character-count', $form).each(function () { 154 var $count = $(this); 155 var name = $count.attr('data-target-name'); 156 var down = $count.hasClass('down'); 157 var starting = parseInt($count.attr('data-starting-value'), 10); 158 var maximum = parseInt($count.attr('data-maximum-value'), 10); 159 var minimum = parseInt($count.attr('data-minimum-value'), 10); 160 161 var updateCount = function (target) { 162 var $target = $(target); 163 var length = $target.val().length; 164 var count = down ? starting - length : length; 165 $count.attr('data-current-value', count); 166 $count.text(count); 167 168 if (maximum && maximum < length) { 169 $count.addClass('too-long'); 170 } else { 171 $count.removeClass('too-long'); 172 } 173 174 if (minimum && length < minimum) { 175 $count.addClass('too-short'); 176 } else { 177 $count.removeClass('too-short'); 178 } 179 }; 180 181 $(':input[name="' + name + '"]', $form).each(function () { 182 updateCount(this); 183 184 $(this).keyup(function () { 185 updateCount(this); 186 }); 187 }); 188 }); 189 190 // URL Input Correction 191 $form.on('change', '.wpcfu-validates-as-url', function () { 192 var val = $.trim($(this).val()); 193 194 if (val 195 && !val.match(/^[a-z][a-z0-9.+-]*:/i) 196 && -1 !== val.indexOf('.')) { 197 val = val.replace(/^\/+/, ''); 198 val = 'http://' + val; 199 } 200 201 $(this).val(val); 202 }); 203 }; 204 205 wpcfu.grecaptchaReset = function() { 206 207 } 208 209 wpcfu.submit = function (form) { 210 if (typeof tinyMCE !== 'undefined' && tinyMCE.editors.length > 0 && $('.autoload_rte_cfu').length) { 211 tinyMCE.triggerSave(); 212 } 213 if (typeof window.FormData !== 'function') { 214 return; 215 } 216 var $form = $(form); 217 if ($form.hasClass('is-active')) 218 return false;
219 $('.ajax-loader', $form).addClass('is-active'); 220 $form.addClass('is-active'); 221 $('[placeholder].placeheld', $form).each(function (i, n) { 222 $(n).val(''); 223 }); 224 225 wpcfu.clearResponse($form); 226 227 var formData = new FormData($form.get(0)); 228 229 var detail = { 230 id: $form.closest('div.wpcfu').attr('id'), 231 status: 'init', 232 inputs: [], 233 formData: formData 234 }; 235 236 $.each($form.serializeArray(), function (i, field) { 237 if ('_wpcfu' == field.name) { 238 detail.contactFormId = field.value; 239 } else if ('_ets_cfu_version' == field.name) { 240 detail.pluginVersion = field.value; 241 } else if ('_ets_cfu_locale' == field.name) { 242 detail.contactFormLocale = field.value; 243 } else if ('_ets_cfu_unit_tag' == field.name) { 244 detail.unitTag = field.value; 245 } else if ('_ets_cfu_container_post' == field.name) { 246 detail.containerPostId = field.value; 247 } else if (field.name.match(/^_ets_cfu_\w+_free_text_/)) { 248 var owner = field.name.replace(/^_ets_cfu_\w+_free_text_/, ''); 249 detail.inputs.push({ 250 name: owner + '-free-text', 251 value: field.value 252 }); 253 } else if (field.name.match(/^_/)) { 254 // do nothing 255 } else { 256 detail.inputs.push(field); 257 } 258 }); 259 wpcfu.triggerEvent($form.closest('div.wpcfu'), 'beforesubmit', detail); 260 var ajaxSuccess = function (data, status, xhr, $form) { 261 detail.id = $(data.into).attr('id'); 262 detail.status = data.status; 263 detail.apiResponse = data; 264 var $message = $('.wpcfu-response-output', $form); 265 266 $message.removeClass('alert-warning'); 267 $message.removeClass('alert-success'); 268 if (data.status && typeof grecaptcha !== "undefined" && $form.find(':input[name=g-recaptcha-response]').length > 0) { 269 if (!ets_cfu_recaptcha_v3) { 270 grecaptcha.reset(); 271 } 272 } 273 switch (data.status) { 274 case 'validation_failed': 275 $.each(data.invalidFields, function (i, n) { 276 $(n.into, $form).each(function () { 277 wpcfu.notValidTip(this, n.message); 278 $('.wpcfu-form-control', this).addClass('wpcfu-not-valid'); 279 $('[aria-invalid]', this).attr('aria-invalid', 'true'); 280 }); 281 }); 282 $message.addClass('alert alert-warning'); 283 $form.addClass('invalid'); 284 wpcfu.triggerEvent(data.into, 'invalid', detail); 285 break; 286 case 'acceptance_missing': 287 $message.addClass('alert alert-warning'); 288 $form.addClass('unaccepted'); 289 wpcfu.triggerEvent(data.into, 'unaccepted', detail); 290 break; 291 case 'spam': 292 $message.addClass('alert alert-warning'); 293 $form.addClass('spam'); 294 $('[name="g-recaptcha-response"]', $form).each(function () { 295 if ('' === $(this).val()) { 296 var $recaptcha = $(this).closest('.wpcfu-form-control-wrap'); 297 wpcfu.notValidTip($recaptcha, wpcfu.recaptcha.messages.empty); 298 } 299 }); 300 wpcfu.triggerEvent(data.into, 'spam', detail); 301 break; 302 case 'aborted': 303 $message.addClass('alert alert-warning'); 304 $form.addClass('aborted'); 305 306 wpcfu.triggerEvent(data.into, 'aborted', detail); 307 break; 308 case 'mail_sent': 309 $message.addClass('alert alert-success'); 310 $form.addClass('sent'); 311 wpcfu.triggerEvent(data.into, 'mailsent', detail); 312 break; 313 case 'mail_failed': 314 $message.addClass('alert alert-warning'); 315 $form.addClass('failed'); 316 wpcfu.triggerEvent(data.into, 'mailfailed', detail); 317 break; 318 case 'mail_redirect': 319 $message.hide().remove(); 320 window.location.href = data.message; 321 break; 322 case 'load_thank_page': 323 $message.hide().remove(); 324 window.location.href = data.message; 325 break; 326 default: 327 var customStatusClass = 'custom-' 328 + data.status.replace(/[^0-9a-z]+/i, '-'); 329 $message.addClass('wpcfu-' + customStatusClass); 330 $form.addClass(customStatusClass); 331 } 332 333 wpcfu.refill($form, data); 334 335 wpcfu.triggerEvent(data.into, 'submit', detail); 336 337 if ('mail_sent' == data.status) { 338 $form.each(function () { 339 this.reset(); 340 }); 341 } 342 343 $form.find('[placeholder].placeheld').each(function (i, n) { 344 $(n).val($(n).attr('placeholder')); 345 }); 346 347 $message.html('').append(data.message).slideDown('fast'); 348 $message.attr('role', 'alert'); 349 350 $('.screen-reader-response', $form.closest('.wpcfu')).each(function () { 351 var $response = $(this); 352 $response.html('').attr('role', '').append(data.message); 353 354 if (data.invalidFields) { 355 var $invalids = $('<ul></ul>'); 356 357 $.each(data.invalidFields, function (i, n) { 358 if (n.idref) { 359 var $li = $('<li></li>').append($('<a></a>').attr('href', '#' + n.idref).append(n.message)); 360 } else { 361 var $li = $('<li></li>').append(n.message); 362 } 363 364 $invalids.append($li); 365 }); 366 367 $response.append($invalids); 368 } 369 370 $response.attr('role', 'alert').focus(); 371 }); 372 }; 373 $.ajax({ 374 type: 'POST', 375 url: $form.attr('action'), 376 data: formData, 377 dataType: 'json', 378 processData: false, 379 contentType: false 380 }).done(function (data, status, xhr) { 381 ajaxSuccess(data, status, xhr, $form); 382 $('.ajax-loader', $form).removeClass('is-active'); 383 $form.removeClass('is-active'); 384 if ($form.find('.pa-captcha-refesh').length) 385 refeshImage($form.find('.pa-captcha-refesh')); 386 }).fail(function (xhr, status, error) { 387 $form.find('.wpcfu-response-output').removeClass('alert-warning'); 388 $form.find('.wpcfu-response-output').removeClass('alert-success'); 389 $form.find('.wpcfu-response-output').html('There was a technical error when submitting the form. Please contact webmaster for more information'); 390 $form.find('.wpcfu-response-output').addClass('alert alert-warning'); 391 $form.find('.wpcfu-response-output').addClass('invalid').show(); 392 $form.find('.ajax-loader').removeClass('is-active'); 393 $form.removeClass('is-active'); 394 if ($form.find('.pa-captcha-refesh')) 395 refeshImage($form.find('.pa-captcha-refesh')); 396 }); 397 }; 398 wpcfu.triggerEvent = function (target, name, detail) { 399 var $target = $(target); 400 401 /* DOM event */ 402 var event = new CustomEvent('wpcfu' + name, { 403 bubbles: true, 404 detail: detail 405 }); 406 /* jQuery event */ 407 $target.trigger('wpcfu:' + name, detail); 408 $target.trigger(name + '.wpcfu', detail); // deprecated 409 }; 410 411 wpcfu.toggleSubmit = function (form, state) { 412 var $form = $(form); 413 var $submit = $('input:submit', $form); 414 415 if (typeof state !== 'undefined') { 416 $submit.prop('disabled', !state); 417 return; 418 } 419 420 if ($form.hasClass('wpcfu-acceptance-as-validation')) { 421 return; 422 } 423 $submit.prop('disabled', false); 424 425 $('.wpcfu-acceptance', $form).each(function () { 426 var $span = $(this); 427 var $input = $('input:checkbox', $span); 428 429 if (!$span.hasClass('optional')) { 430 if ($span.hasClass('invert') && $input.is(':checked') 431 || !$span.hasClass('invert') && !$input.is(':checked')) { 432 $submit.prop('disabled', true); 433 return false;
434 } 435 } 436 }); 437 }; 438 439 wpcfu.notValidTip = function (target, message) { 440 var $target = $(target); 441 console.log(target); 442 $('.wpcfu-not-valid-tip', $target).remove(); 443 $('<span role="alert" class="wpcfu-not-valid-tip"></span>') 444 .text(message).appendTo($target); 445 446 if ($target.is('.use-floating-validation-tip *')) { 447 var fadeOut = function (target) { 448 $(target).not(':hidden').animate({ 449 opacity: 0 450 }, 'fast', function () { 451 $(this).css({'z-index': -100}); 452 }); 453 }; 454 455 $target.on('mouseover', '.wpcfu-not-valid-tip', function () { 456 fadeOut(this); 457 }); 458 459 $target.on('focus', ':input', function () { 460 fadeOut($('.wpcfu-not-valid-tip', $target)); 461 }); 462 } 463 }; 464 465 wpcfu.refill = function (form, data) { 466 var $form = $(form); 467 468 var refillCaptcha = function ($form, items) { 469 $.each(items, function (i, n) { 470 $form.find(':input[name="' + i + '"]').val(''); 471 $form.find('img.wpcfu-captcha-' + i).attr('src', n); 472 var match = /([0-9]+)\.(png|gif|jpeg)$/.exec(n); 473 $form.find('input:hidden[name="_ets_cfu_captcha_challenge_' + i + '"]').attr('value', match[1]); 474 }); 475 }; 476 477 var refillQuiz = function ($form, items) { 478 $.each(items, function (i, n) { 479 $form.find(':input[name="' + i + '"]').val(''); 480 $form.find(':input[name="' + i + '"]').siblings('span.wpcfu-quiz-label').text(n[0]); 481 $form.find('input:hidden[name="_ets_cfu_quiz_answer_' + i + '"]').attr('value', n[1]); 482 }); 483 }; 484 485 if (typeof data === 'undefined') { 486 $.ajax({ 487 type: 'GET', 488 url: wpcfu.apiSettings.getRoute( 489 '/contact-forms/' + wpcfu.getId($form) + '/refill'), 490 beforeSend: function (xhr) { 491 var nonce = $form.find(':input[name="_wpnonce"]').val(); 492 493 if (nonce) { 494 xhr.setRequestHeader('X-WP-Nonce', nonce); 495 } 496 }, 497 dataType: 'json' 498 }).done(function (data, status, xhr) { 499 if (data.captcha) { 500 refillCaptcha($form, data.captcha); 501 } 502 503 if (data.quiz) { 504 refillQuiz($form, data.quiz); 505 } 506 }); 507 508 } else { 509 if (data.captcha) { 510 refillCaptcha($form, data.captcha); 511 } 512 513 if (data.quiz) { 514 refillQuiz($form, data.quiz); 515 } 516 } 517 }; 518 519 wpcfu.clearResponse = function (form) { 520 var $form = $(form); 521 $form.removeClass('invalid spam sent failed'); 522 $form.siblings('.screen-reader-response').html('').attr('role', ''); 523 524 $('.wpcfu-not-valid-tip', $form).remove(); 525 $('[aria-invalid]', $form).attr('aria-invalid', 'false'); 526 $('.wpcfu-form-control', $form).removeClass('wpcfu-not-valid'); 527 528 $('.wpcfu-response-output', $form) 529 .hide().empty().removeAttr('role') 530 .removeClass('wpcfu-mail-sent-ok wpcfu-mail-sent-ng wpcfu-validation-errors wpcfu-spam-blocked'); 531 }; 532 533 wpcfu.apiSettings.getRoute = function (path) { 534 var url = wpcfu.apiSettings.root; 535 536 url = url.replace( 537 wpcfu.apiSettings.namespace, 538 wpcfu.apiSettings.namespace + path); 539 540 return url; 541 }; 542 543})(jQuery); 544 545/* 546 * Polyfill for Internet Explorer 547 * See https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent 548 */ 549(function () { 550 if (typeof window.CustomEvent === "function") return false; 551 552 function CustomEvent(event, params) { 553 params = params || {bubbles: false, cancelable: false, detail: undefined}; 554 var evt = document.createEvent('CustomEvent'); 555 evt.initCustomEvent(event, 556 params.bubbles, params.cancelable, params.detail); 557 return evt; 558 } 559 560 CustomEvent.prototype = window.Event.prototype; 561 562 window.CustomEvent = CustomEvent; 563})(); 564 565$(document).ready(function () { 566 $('.wpcfu input[type="url"]').each(function () { 567 if ($(this).val()) { 568 $(this).val($(this).val().replace('default:current_url', window.location.href)); 569 } 570 }); 571 $(document).on('click', '.wpcfu .ets_cfu_show_hide', function () { 572 if ($(this).find('i.fa-eye-slash').length > 0) { 573 $(this).find('i').removeClass('fa-eye-slash').addClass('fa-eye'); 574 $(this).prev('input').attr('type', 'text'); 575 } else { 576 $(this).find('i').removeClass('fa-eye').addClass('fa-eye-slash'); 577 $(this).prev('input').attr('type', 'password'); 578 } 579 }); 580 $(document).on('click', '.ctf_click_open_contactform7', function () { 581 var id = $(this).attr('data-id'); 582 $('#ctf-popup-wapper-' + id).addClass('show'); 583 if (!$(this).hasClass('addlogded')) { 584 ajaxAddLoger($('#ctf-popup-wapper-' + id).find('.wpcfu').attr('data-id')); 585 $(this).addClass('addlogded'); 586 } 587 }); 588 $(document).on('click', '.wpcfu.hook', function () { 589 var id = $(this).attr('data-id'); 590 $('#ctf-popup-wapper-' + id).addClass('show'); 591 if (!$(this).hasClass('addlogded')) { 592 ajaxAddLoger(id); 593 $(this).addClass('addlogded'); 594 } 595 }); 596 $(document).on('click', '.ctf_close_popup', function () { 597 $(this).closest('.ctf-popup-wapper').removeClass('show'); 598 }); 599 $(document).mouseup(function (e) { 600 var container = $('.ctf-popup-content'); 601 var datepicker = $('.ui-datepicker'); 602 if (!container.is(e.target) && container.has(e.target).length === 0 && !datepicker.is(e.target) && datepicker.has(e.target).length === 0) { 603 $('.ctf-popup-wapper').removeClass('show'); 604 } 605 }); 606 $(document).keyup(function (e) { 607 if (e.keyCode == 27) { // escape key maps to keycode `27` 608 $('.ctf-popup-wapper').removeClass('show'); 609 } 610 }); 611 if ($(".wpcfu .datetimepicker").length > 0) { 612 $(".wpcfu .datetimepicker").datetimepicker({ 613 timepicker: true, 614 format: 'Y-m-d h:i' 615 }); 616 } 617 if ($(".wpcfu .datepicker").length > 0) { 618 $(".wpcfu .datepicker").datetimepicker({ 619 timepicker: false, 620 format: 'Y-m-d' 621 }); 622 } 623 $('.pa-captcha-refesh').click(function () { 624 refeshImage($(this)); 625 return false;
626 }); 627 if ($('input[type="range"]').length) { 628 $('input[type="range"]').each(function () { 629 if ($(this).prev('.rang-value').length > 0) 630 $(this).prev('.rang-value').html($(this).val()); 631 }); 632 } 633 $('input[type="range"]').change(function () { 634 if ($(this).prev('.rang-value').length > 0) 635 $(this).prev('.rang-value').html($(this).val()); 636 }); 637 638 639 //Init MCE 640 if (typeof tinyMCE !== 'undefined' && $('.autoload_rte_cfu').length > 0) { 641 tinyMCE.init({ 642 selector: '.autoload_rte_cfu', 643 plugins: "align link image media code emoticons", 644 browser_spellcheck: true, 645 toolbar1: "emoticons,bold,italic,underline,link,align,bulli,numlist,table,image", 646 convert_urls: false, 647 /*setup: function (ed) { 648 var allowedKeys = [8, 37, 38, 39, 40, 46]; // backspace, delete and cursor keys 649 $flag = true; 650 ed.on('keydown', function (e) { 651 if (allowedKeys.indexOf(e.keyCode) != -1) return true; 652 var dataContent = getDataContent($(this)); 653 return excuteType(dataContent); 654 }); 655 ed.on('keyup', function (e) { 656 var dataContent = getDataContent($(this)); 657 return excuteType(dataContent); 658 }); 659 }*/ 660 }); 661 } 662}); 663 664function getDataContent(object) { 665 var idEl = object[0].id, 666 body = tinyMCE.get(idEl).getBody(), 667 text = body.innerText || body.textContent; 668 var re = /\n$/g; 669 var OK = re.exec(text); 670 if (OK){ 671 text = text.replace(/\n$/g,''); 672 } 673 return { 674 idEl : idEl, 675 chars: text.replace(/[\t\n]+/g,' ').length, 676 words: text.split(/[\w\u2019\'-]+/).length 677 }; 678}; 679 680function excuteType(objectData){ 681 var elMax = $('#'+objectData['idEl']).next('.number_max'), 682 elIndex = elMax.find('.index_type').first(); 683 684 if (parseInt(objectData['chars'])>= parseInt($('#'+objectData['idEl']).attr('maxlength'))){ 685 elIndex.html(parseInt($('#'+objectData['idEl']).attr('maxlength'))); 686 return false; 687 } 688 elIndex.html(parseInt(objectData['chars'])); 689 return true; 690} 691 692 693function refeshImage($this) { 694 if ($this.prev('.pa-captcha-img-data').length) { 695 originalCapcha = $this.prev('.pa-captcha-img-data').attr('src'); 696 originalCode = $this.attr('data-rand'); 697 newCode = Math.random(); 698 $this.prev('.pa-captcha-img-data').attr('src', originalCapcha.replace(originalCode, newCode)); 699 $this.attr('data-rand', newCode); 700 $('input[type="captcha"]').val(''); 701 } 702} 703 704function ajaxAddLoger(id_contact) { 705 $.ajax({ 706 type: 'POST', 707 headers: {"cache-control": "no-cache"}, 708 url: link_contact_ets, 709 dataType: "json", 710 data: 'action=etsCfuAddLogger&id_contact=' + id_contact, 711 success: function (jsonData) { 712 713 } 714 }); 715} 716/*hiep*/ 717function ets_cfu_loading_captcha() { 718 var img = $('.pa-captcha-img-data:not(.loaded)').first(); 719 if (img.length > 0) { 720 img.load(function () { 721 if (!img.hasClass('loaded')) { 722 ets_cfu_refresh_captcha(img); 723 } 724 if (img[0].complete && img.hasClass('loaded')) { 725 ets_cfu_loading_captcha(); 726 } 727 }).filter(function () { 728 return this.complete; 729 }).load(); 730 } 731} 732 733function ets_cfu_refresh_captcha(img) { 734 if (img.length && !img.hasClass('loaded')) { 735 var org_link = img.attr('src'), 736 org_code = img.attr('data-rand'), 737 rand = Math.random(); 738 img.attr({'src': org_link.replace(org_code, rand), 'data-rand' : rand}); 739 if (!img.hasClass('loaded')) { 740 img.addClass('loaded'); 741 } 742 img.next( ".pa-captcha-refesh" ).attr('data-rand', rand); 743 } 744} 745 746document.addEventListener("DOMContentLoaded", function (event) { 747 if ($('.pa-captcha-img-data').length > 1) { 748 ets_cfu_loading_captcha(); 749 } 750}); 751/*end hiep*/ 752 753/* Quang */ 754var ets_cfu_update = { 755 init : function () { 756 this.check_maxlength_number(); 757 this.caculate_maxleng(); 758 this.hidden_referrence(); 759 }, 760 check_maxlength_number : function () { 761 var input_number = $('.ets_cfu_form-control-wrap input[type="number"]'); 762 if( input_number.length > 0 ){ 763 input_number.on("keyup", function (e) { 764 var $field = $(this), 765 val=this.value; // retrieve the index 766 if (val.length > Number($field.attr("maxlength"))) { 767 val=val.slice(0, $field.attr('maxlength')); 768 $field.val(val); 769 } 770 }); 771 } 772 }, 773 caculate_maxleng :function () { 774 $(document).on('keyup','input[maxlength], textarea[maxlength]',function () { 775 var leng = $(this).val().length; 776 if ( leng > $(this).attr('maxlength') ){ 777 return; 778 } 779 var el_numbermax = $(this).next('.number_max'); 780 el_numbermax.find('.index_type').first().html(leng); 781 }); 782 }, 783 hidden_referrence : function(){ 784 if ($('.ets_cfu_input_referrence').length>0 && typeof hidden_referrence !=="undefined" && hidden_referrence){ 785 $('.ets_cfu_input_referrence').hide(); 786 } 787 }, 788 789}; 790 791$(document).ready(function () {
792 ets_cfu_update.init(); 793}); 794 795$( document ).on( 'click', '.ets_cfu_form-control-wrap .number_plus,.ets_cfu_form-control-wrap .number_minus', function() { 796 var $qty = $( this ).closest( '.ets_cfu_form-control-wrap' ).find( '.ets_cfu-number').first(), 797 currentVal = parseFloat( $qty.val() ), 798 max = parseFloat( $qty.attr( 'max' ) ), 799 min = parseFloat( $qty.attr( 'min' ) ), 800 step = $qty.attr( 'step' ); 801 802 // Format values 803 if ( ! currentVal || currentVal === '' || currentVal === 'NaN' ) currentVal = 0; 804 if ( max === '' || max === 'NaN' ) max = ''; 805 if ( min === '' || min === 'NaN' ) min = 0; 806 if ( step === 'any' || step === '' || step === undefined || parseFloat( step ) === 'NaN' ) step = 1; 807 808 // Change the value 809 if ( $( this ).is( '.ets_cfu_form-control-wrap .number_plus' ) ) { 810 if ( max && ( currentVal >= max ) ) { 811 $qty.val( max ); 812 } else { 813 $qty.val( ( currentVal + parseFloat( step )) ); 814 } 815 } else { 816 if ( min && ( currentVal <= min ) ) { 817 $qty.val( min ); 818 } else if ( currentVal > 0 ) { 819 $qty.val( ( currentVal - parseFloat( step )) ); 820 } 821 } 822 823 // Trigger change event 824 $qty.trigger( 'change' ); 825}); 826 827$(".access_numer input").keypress(function (event) { 828 var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; 829 if((keyCode>=65 && keyCode<=90) || (keyCode>=97 && keyCode<=122)) 830 return false; 831 else return true; 832}); 833 834/* End Quang */
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.