{"version":3,"file":"apbct-public-bundle.min.js","sources":["apbct-public-bundle.js"],"sourcesContent":["function ctSetCookie( cookies, value, expires ){\n\n if( typeof cookies === 'string' && typeof value === 'string' || typeof value === 'number'){\n var skip_alt = cookies === 'ct_pointer_data';\n cookies = [ [ cookies, value, expires ] ];\n }\n\n // Cookies disabled\n if( ctPublicFunctions.data__cookies_type === 'none' ){\n return;\n\n // Using traditional cookies\n }else if( ctPublicFunctions.data__cookies_type === 'native' ){\n cookies.forEach( function (item, i, arr\t) {\n var expires = typeof item[2] !== 'undefined' ? \"expires=\" + expires + '; ' : '';\n var ctSecure = location.protocol === 'https:' ? '; secure' : '';\n document.cookie = ctPublicFunctions.cookiePrefix + item[0] + \"=\" + encodeURIComponent(item[1]) + \"; \" + expires + \"path=/; samesite=lax\" + ctSecure;\n });\n\n // Using alternative cookies\n }else if( ctPublicFunctions.data__cookies_type === 'alternative' && ! skip_alt ){\n\n // Using REST API handler\n if( ctPublicFunctions.data__ajax_type === 'rest' ){\n apbct_public_sendREST(\n 'alt_sessions',\n {\n method: 'POST',\n data: { cookies: cookies }\n }\n );\n\n // Using AJAX request and handler\n } else if( ctPublicFunctions.data__ajax_type === 'admin_ajax' ) {\n apbct_public_sendAJAX(\n {\n action: 'apbct_alt_session__save__AJAX',\n cookies: cookies,\n },\n {\n notJson: 1,\n }\n );\n }\n }\n}\n\n/**\n * Get cookie by name\n * @param name\n * @returns {string|undefined}\n */\nfunction ctGetCookie(name) {\n var matches = document.cookie.match(new RegExp(\n \"(?:^|; )\" + name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1') + \"=([^;]*)\"\n ));\n return matches ? decodeURIComponent(matches[1]) : undefined;\n}\n\nfunction ctDeleteCookie(cookieName) {\n // Cookies disabled\n if( ctPublicFunctions.data__cookies_type === 'none' ){\n return;\n\n // Using traditional cookies\n }else if( ctPublicFunctions.data__cookies_type === 'native' ){\n\n var ctSecure = location.protocol === 'https:' ? '; secure' : '';\n document.cookie = cookieName + \"=\\\"\\\"; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; samesite=lax\" + ctSecure;\n\n // Using alternative cookies\n }else if( ctPublicFunctions.data__cookies_type === 'alternative' ){\n // @ToDo implement this logic\n }\n}\n\nfunction apbct_public_sendAJAX(data, params, obj){\n\n // Default params\n var callback = params.callback || null;\n var callback_context = params.callback_context || null;\n var callback_params = params.callback_params || null;\n var async = params.async || true;\n var notJson = params.notJson || null;\n var timeout = params.timeout || 15000;\n var obj = obj || null;\n var button = params.button || null;\n var spinner = params.spinner || null;\n var progressbar = params.progressbar || null;\n var silent = params.silent || null;\n var no_nonce = params.no_nonce || null;\n\n if(typeof (data) === 'string') {\n if( ! no_nonce )\n data = data + '&_ajax_nonce=' + ctPublicFunctions._ajax_nonce;\n data = data + '&no_cache=' + Math.random()\n } else {\n if( ! no_nonce )\n data._ajax_nonce = ctPublicFunctions._ajax_nonce;\n data.no_cache = Math.random();\n }\n // Button and spinner\n if(button) {button.setAttribute('disabled', 'disabled'); button.style.cursor = 'not-allowed'; }\n if(spinner) jQuery(spinner).css('display', 'inline');\n\n jQuery.ajax({\n type: \"POST\",\n url: ctPublicFunctions._ajax_url,\n data: data,\n async: async,\n success: function(result){\n if(button){ button.removeAttribute('disabled'); button.style.cursor = 'pointer'; }\n if(spinner) jQuery(spinner).css('display', 'none');\n if(!notJson) result = JSON.parse(result);\n if(result.error){\n setTimeout(function(){ if(progressbar) progressbar.fadeOut('slow'); }, 1000);\n console.log('Error happens: ' + (result.error || 'Unkown'));\n }else{\n if(callback) {\n if (callback_params)\n callback.apply( callback_context, [ result, data, params, obj ].concat(callback_params) );\n else\n callback(result, data, params, obj);\n }\n }\n },\n error: function(jqXHR, textStatus, errorThrown){\n if(button){ button.removeAttribute('disabled'); button.style.cursor = 'pointer'; }\n if(spinner) jQuery(spinner).css('display', 'none');\n if( errorThrown && ! silent ) {\n console.log('APBCT_AJAX_ERROR');\n console.log(jqXHR);\n console.log(textStatus);\n console.log('Anti-spam by Cleantalk plugin error: ' + errorThrown + 'Please, contact Cleantalk tech support https://wordpress.org/support/plugin/cleantalk-spam-protect/');\n }\n },\n timeout: timeout,\n });\n}\n\nfunction apbct_public_sendREST( route, params ) {\n\n var callback = params.callback || null;\n var data = params.data || [];\n var method = params.method || 'POST';\n\n jQuery.ajax({\n type: method,\n url: ctPublicFunctions._rest_url + 'cleantalk-antispam/v1/' + route,\n data: data,\n beforeSend : function ( xhr ) {\n xhr.setRequestHeader( 'X-WP-Nonce', ctPublicFunctions._rest_nonce );\n },\n success: function(result){\n if(result.error){\n console.log('Error happens: ' + (result.error || 'Unknown'));\n }else{\n if(callback) {\n var obj = null;\n callback(result, route, params, obj);\n }\n }\n },\n error: function(jqXHR, textStatus, errorThrown){\n if( errorThrown ) {\n console.log('APBCT_REST_ERROR');\n console.log(jqXHR);\n console.log(textStatus);\n console.log('Anti-spam by Cleantalk plugin REST API error: ' + errorThrown + ' Please, contact Cleantalk tech support https://wordpress.org/support/plugin/cleantalk-spam-protect/');\n }\n },\n });\n}\n\napbctLocalStorage = {\n get : function(key, property) {\n if ( typeof property === 'undefined' ) {\n property = 'value';\n }\n const storageValue = localStorage.getItem(key);\n if ( storageValue !== null ) {\n try {\n const json = JSON.parse(storageValue);\n return json.hasOwnProperty(property) ? JSON.parse(json[property]) : json;\n } catch (e) {\n return new Error(e);\n }\n }\n return false;\n },\n set : function(key, value, is_json = true) {\n if (is_json){\n let objToSave = {'value': JSON.stringify(value), 'timestamp': Math.floor(new Date().getTime() / 1000)};\n localStorage.setItem(key, JSON.stringify(objToSave));\n } else {\n localStorage.setItem(key, value);\n }\n },\n isAlive : function(key, maxLifetime) {\n if ( typeof maxLifetime === 'undefined' ) {\n maxLifetime = 86400;\n }\n const keyTimestamp = this.get(key, 'timestamp');\n return keyTimestamp + maxLifetime > Math.floor(new Date().getTime() / 1000);\n },\n isSet : function(key) {\n return localStorage.getItem(key) !== null;\n },\n delete : function (key) {\n localStorage.removeItem(key);\n }\n}\nvar ct_date = new Date(),\n\tctTimeMs = new Date().getTime(),\n\tctMouseEventTimerFlag = true, //Reading interval flag\n\tctMouseData = [],\n\tctMouseDataCounter = 0,\n\tctCheckedEmails = {};\n\nfunction apbct_attach_event_handler(elem, event, callback){\n\tif(typeof window.addEventListener === \"function\") elem.addEventListener(event, callback);\n\telse elem.attachEvent(event, callback);\n}\n\nfunction apbct_remove_event_handler(elem, event, callback){\n\tif(typeof window.removeEventListener === \"function\") elem.removeEventListener(event, callback);\n\telse elem.detachEvent(event, callback);\n}\n\n//Writing first key press timestamp\nvar ctFunctionFirstKey = function output(event){\n\tvar KeyTimestamp = Math.floor(new Date().getTime()/1000);\n\tctSetCookie(\"ct_fkp_timestamp\", KeyTimestamp);\n\tctKeyStopStopListening();\n};\n\n//Reading interval\nvar ctMouseReadInterval = setInterval(function(){\n\tctMouseEventTimerFlag = true;\n}, 150);\n\n//Writting interval\nvar ctMouseWriteDataInterval = setInterval(function(){\n\tctSetCookie(\"ct_pointer_data\", JSON.stringify(ctMouseData));\n}, 1200);\n\n//Logging mouse position each 150 ms\nvar ctFunctionMouseMove = function output(event){\n\tctSetMouseMoved();\n\tif(ctMouseEventTimerFlag === true){\n\n\t\tctMouseData.push([\n\t\t\tMath.round(event.clientY),\n\t\t\tMath.round(event.clientX),\n\t\t\tMath.round(new Date().getTime() - ctTimeMs)\n\t\t]);\n\n\t\tctMouseDataCounter++;\n\t\tctMouseEventTimerFlag = false;\n\t\tif(ctMouseDataCounter >= 50){\n\t\t\tctMouseStopData();\n\t\t}\n\t}\n};\n\n//Stop mouse observing function\nfunction ctMouseStopData(){\n\tapbct_remove_event_handler(window, \"mousemove\", ctFunctionMouseMove);\n\tclearInterval(ctMouseReadInterval);\n\tclearInterval(ctMouseWriteDataInterval);\n}\n\n//Stop key listening function\nfunction ctKeyStopStopListening(){\n\tapbct_remove_event_handler(window, \"mousedown\", ctFunctionFirstKey);\n\tapbct_remove_event_handler(window, \"keydown\", ctFunctionFirstKey);\n}\n\nfunction checkEmail(e) {\n\tvar current_email = e.target.value;\n\tif (current_email && !(current_email in ctCheckedEmails)) {\n\t\t// Using REST API handler\n\t\tif( ctPublicFunctions.data__ajax_type === 'rest' ){\n\t\t\tapbct_public_sendREST(\n\t\t\t\t'check_email_before_post',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\tdata: {'email' : current_email},\n\t\t\t\t\tcallback: function (result) {\n\t\t\t\t\t\tif (result.result) {\n\t\t\t\t\t\t\tctCheckedEmails[current_email] = {'result' : result.result, 'timestamp': Date.now() / 1000 |0};\n\t\t\t\t\t\t\tctSetCookie('ct_checked_emails', JSON.stringify(ctCheckedEmails));\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t);\n\t\t\t// Using AJAX request and handler\n\t\t} else if( ctPublicFunctions.data__ajax_type === 'admin_ajax' ) {\n\t\t\tapbct_public_sendAJAX(\n\t\t\t\t{\n\t\t\t\t\taction: 'apbct_email_check_before_post',\n\t\t\t\t\temail : current_email,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcallback: function (result) {\n\t\t\t\t\t\tif (result.result) {\n\t\t\t\t\t\t\tctCheckedEmails[current_email] = {'result' : result.result, 'timestamp': Date.now() / 1000 |0};\n\t\t\t\t\t\t\tctSetCookie('ct_checked_emails', JSON.stringify(ctCheckedEmails));\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n}\n\nfunction ctSetPixelImg(pixelUrl) {\n\tctSetCookie('apbct_pixel_url', pixelUrl);\n\tif( +ctPublic.pixel__enabled ){\n\t\tif( ! document.getElementById('apbct_pixel') ) {\n\t\t\tjQuery('body').append( '\"Cleantalk' );\n\t\t}\n\t}\n}\n\nfunction ctGetPixelUrl() {\n\t// Check if pixel is already in localstorage and is not outdated\n\tlet local_storage_pixel_url = ctGetPixelUrlLocalstorage();\n\tif ( local_storage_pixel_url !== false ) {\n\t\tif ( ctIsOutdatedPixelUrlLocalstorage(local_storage_pixel_url) ) {\n\t\t\tctCleaPixelUrlLocalstorage(local_storage_pixel_url)\n\t\t} else {\n\t\t\t//if so - load pixel from localstorage and draw it skipping AJAX\n\t\t\tctSetPixelImg(local_storage_pixel_url);\n\t\t\treturn;\n\t\t}\n\t}\n\t// Using REST API handler\n\tif( ctPublicFunctions.data__ajax_type === 'rest' ){\n\t\tapbct_public_sendREST(\n\t\t\t'apbct_get_pixel_url',\n\t\t\t{\n\t\t\t\tmethod: 'POST',\n\t\t\t\tcallback: function (result) {\n\t\t\t\t\tif (result) {\n\t\t\t\t\t\t//set pixel url to localstorage\n\t\t\t\t\t\tif ( ! ctGetPixelUrlLocalstorage() ){\n\t\t\t\t\t\t\tctSetPixelUrlLocalstorage(result);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t//then run pixel drawing\n\t\t\t\t\t\tctSetPixelImg(result);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t\t// Using AJAX request and handler\n\t}else{\n\t\tapbct_public_sendAJAX(\n\t\t\t{\n\t\t\t\taction: 'apbct_get_pixel_url',\n\t\t\t},\n\t\t\t{\n\t\t\t\tnotJson: true,\n\t\t\t\tcallback: function (result) {\n\t\t\t\t\tif (result) {\n\t\t\t\t\t\t//set pixel url to localstorage\n\t\t\t\t\t\tif ( ! ctGetPixelUrlLocalstorage() ){\n\t\t\t\t\t\t\tctSetPixelUrlLocalstorage(result);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t//then run pixel drawing\n\t\t\t\t\t\tctSetPixelImg(result);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}\n}\n\nfunction ctSetHasScrolled() {\n\tif( ! apbctLocalStorage.isSet('ct_has_scrolled') || ! apbctLocalStorage.get('ct_has_scrolled') ) {\n\t\tctSetCookie(\"ct_has_scrolled\", 'true');\n\t\tapbctLocalStorage.set('ct_has_scrolled', true);\n\t}\n}\n\nfunction ctSetMouseMoved() {\n\tif( ! apbctLocalStorage.isSet('ct_mouse_moved') || ! apbctLocalStorage.get('ct_mouse_moved') ) {\n\t\tctSetCookie(\"ct_mouse_moved\", 'true');\n\t\tapbctLocalStorage.set('ct_mouse_moved', true);\n\t}\n}\n\napbct_attach_event_handler(window, \"mousemove\", ctFunctionMouseMove);\napbct_attach_event_handler(window, \"mousedown\", ctFunctionFirstKey);\napbct_attach_event_handler(window, \"keydown\", ctFunctionFirstKey);\napbct_attach_event_handler(window, \"scroll\", ctSetHasScrolled);\n\n// Ready function\nfunction apbct_ready(){\n\n\tlet cookiesType = apbctLocalStorage.get('ct_cookies_type');\n\tif ( ! cookiesType || cookiesType !== ctPublic.data__cookies_type ) {\n\t\tapbctLocalStorage.set('ct_cookies_type', ctPublic.data__cookies_type);\n\t\tapbctLocalStorage.delete('ct_mouse_moved');\n\t\tapbctLocalStorage.delete('ct_has_scrolled');\n\t}\n\n\t// Collect scrolling info\n\tvar initCookies = [\n\t\t[\"ct_ps_timestamp\", Math.floor(new Date().getTime() / 1000)],\n\t\t[\"ct_fkp_timestamp\", \"0\"],\n\t\t[\"ct_pointer_data\", \"0\"],\n\t\t[\"ct_timezone\", ct_date.getTimezoneOffset()/60*(-1) ],\n\t\t[\"ct_screen_info\", apbctGetScreenInfo()],\n\t\t[\"apbct_headless\", navigator.webdriver],\n\t];\n\n\tif( ctPublic.data__cookies_type !== 'native' ) {\n\t\tinitCookies.push(['apbct_visible_fields', '0']);\n\t} else {\n\t\t// Delete all visible fields cookies on load the page\n\t\tvar cookiesArray = document.cookie.split(\";\");\n\t\tif( cookiesArray.length !== 0 ) {\n\t\t\tfor ( var i = 0; i < cookiesArray.length; i++ ) {\n\t\t\t\tvar currentCookie = cookiesArray[i].trim();\n\t\t\t\tvar cookieName = currentCookie.split(\"=\")[0];\n\t\t\t\tif( cookieName.indexOf(\"apbct_visible_fields_\") === 0 ) {\n\t\t\t\t\tctDeleteCookie(cookieName);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif( +ctPublic.pixel__setting ){\n\t\tif( +ctPublic.pixel__enabled ){\n\t\t\tctGetPixelUrl()\n\t\t} else {\n\t\t\tinitCookies.push(['apbct_pixel_url', ctPublic.pixel__url]);\n\t\t}\n\t}\n\n\tif ( +ctPublic.data__email_check_before_post) {\n\t\tinitCookies.push(['ct_checked_emails', '0']);\n\t\tjQuery(\"input[type = 'email'], #email\").blur(checkEmail);\n\t}\n\n\tif (apbctLocalStorage.isSet('ct_checkjs')) {\n\t\tinitCookies.push(['ct_checkjs', apbctLocalStorage.get('ct_checkjs')]);\n\t} else {\n\t\tinitCookies.push(['ct_checkjs', 0]);\n\t}\n\n\tctSetCookie(initCookies);\n\n\tsetTimeout(function(){\n\n\t\tfor(var i = 0; i < document.forms.length; i++){\n\t\t\tvar form = document.forms[i];\n\n\t\t\t//Exclusion for forms\n\t\t\tif (\n\t\t\t\t+ctPublic.data__visible_fields_required === 0 ||\n\t\t\t\tform.method.toString().toLowerCase() === 'get' ||\n\t\t\t\tform.classList.contains('slp_search_form') || //StoreLocatorPlus form\n\t\t\t\tform.parentElement.classList.contains('mec-booking') ||\n\t\t\t\tform.action.toString().indexOf('activehosted.com') !== -1 || // Active Campaign\n\t\t\t\t(form.id && form.id === 'caspioform') || //Caspio Form\n\t\t\t\t(form.classList && form.classList.contains('tinkoffPayRow')) || // TinkoffPayForm\n\t\t\t\t(form.classList && form.classList.contains('give-form')) || // GiveWP\n\t\t\t\t(form.id && form.id === 'ult-forgot-password-form') || //ult forgot password\n\t\t\t\t(form.id && form.id.toString().indexOf('calculatedfields') !== -1) || // CalculatedFieldsForm\n\t\t\t\t(form.id && form.id.toString().indexOf('sac-form') !== -1) || // Simple Ajax Chat\n\t\t\t\t(form.id && form.id.toString().indexOf('cp_tslotsbooking_pform') !== -1) || // WP Time Slots Booking Form\n\t\t\t\t(form.name && form.name.toString().indexOf('cp_tslotsbooking_pform') !== -1) || // WP Time Slots Booking Form\n\t\t\t\tform.action.toString() === 'https://epayment.epymtservice.com/epay.jhtml' || // Custom form\n\t\t\t\t(form.name && form.name.toString().indexOf('tribe-bar-form') !== -1) // The Events Calendar\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar hiddenInput = document.createElement( 'input' );\n\t\t\thiddenInput.setAttribute( 'type', 'hidden' );\n\t\t\thiddenInput.setAttribute( 'id', 'apbct_visible_fields_' + i );\n\t\t\thiddenInput.setAttribute( 'name', 'apbct_visible_fields');\n\t\t\tvar visibleFieldsToInput = {};\n\t\t\tvisibleFieldsToInput[0] = apbct_collect_visible_fields(form);\n\t\t\thiddenInput.value = JSON.stringify(visibleFieldsToInput);\n\t\t\tform.append( hiddenInput );\n\n\t\t\tform.onsubmit_prev = form.onsubmit;\n\n\t\t\tform.ctFormIndex = i;\n\t\t\tform.onsubmit = function (event) {\n\n\t\t\t\tif ( ctPublic.data__cookies_type !== 'native' && typeof event.target.ctFormIndex !== 'undefined' ) {\n\n\t\t\t\t\tvar visible_fields = {};\n\t\t\t\t\tvisible_fields[0] = apbct_collect_visible_fields(this);\n\t\t\t\t\tapbct_visible_fields_set_cookie( visible_fields, event.target.ctFormIndex );\n\t\t\t\t}\n\n\t\t\t\t// Call previous submit action\n\t\t\t\tif (event.target.onsubmit_prev instanceof Function) {\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tevent.target.onsubmit_prev.call(event.target, event);\n\t\t\t\t\t}, 500);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t}, 1000);\n\n\t// Listen clicks on encoded emails\n\tlet decodedEmailNodes = document.querySelectorAll(\"[data-original-string]\");\n\tif (decodedEmailNodes.length) {\n\t\tfor (let i = 0; i < decodedEmailNodes.length; ++i) {\n\t\t\tif (\n\t\t\t\tdecodedEmailNodes[i].parentElement.href ||\n\t\t\t\tdecodedEmailNodes[i].parentElement.parentElement.href\n\t\t\t) {\n\t\t\t\t// Skip listening click on hyperlinks\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdecodedEmailNodes[i].addEventListener('click', function ctFillDecodedEmailHandler(event) {\n\t\t\t\tthis.removeEventListener('click', ctFillDecodedEmailHandler);\n\t\t\t\tapbctAjaxEmailDecode(event);\n\t\t\t});\n\t\t}\n\t}\n}\napbct_attach_event_handler(window, \"DOMContentLoaded\", apbct_ready);\n\nfunction apbctAjaxEmailDecode(event){\n\tconst element = event.target;\n\telement.setAttribute('title', ctPublicFunctions.text__wait_for_decoding);\n\telement.style.cursor = 'progress';\n\n\t// Adding a tooltip\n\tjQuery(element).append(\n\t\t'
\\n' +\n\t\t\t'
\\n' +\n\t\t\t'
\\n' +\n\t\t'
'\n\t);\n\tctShowDecodeComment(element, ctPublicFunctions.text__wait_for_decoding);\n\n\tconst javascriptClientData = getJavascriptClientData();\n\n\t// Using REST API handler\n\tif( ctPublicFunctions.data__ajax_type === 'rest' ){\n\t\tapbct_public_sendREST(\n\t\t\t'apbct_decode_email',\n\t\t\t{\n\t\t\t\tdata: {\n\t\t\t\t\tencodedEmail: event.target.dataset.originalString,\n\t\t\t\t\tevent_javascript_data: javascriptClientData,\n\t\t\t\t},\n\t\t\t\tmethod: 'POST',\n\t\t\t\tcallback: function (result) {\n\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\tctProcessDecodedDataResult(result.data, event.target);\n\t\t\t\t\t}\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tjQuery(element)\n\t\t\t\t\t\t\t.children('.apbct-tooltip')\n\t\t\t\t\t\t\t.fadeOut(700);\n\t\t\t\t\t}, 4000);\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t\t// Using AJAX request and handler\n\t}else{\n\t\tapbct_public_sendAJAX(\n\t\t\t{\n\t\t\t\taction: 'apbct_decode_email',\n\t\t\t\tencodedEmail: event.target.dataset.originalString,\n\t\t\t\tevent_javascript_data: javascriptClientData,\n\t\t\t},\n\t\t\t{\n\t\t\t\tnotJson: true,\n\t\t\t\tcallback: function (result) {\n\t\t\t\t\tif (result.success) {\n\t\t\t\t\t\tctProcessDecodedDataResult(result.data, event.target);\n\t\t\t\t\t}\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tjQuery(element)\n\t\t\t\t\t\t\t.children('.apbct-tooltip')\n\t\t\t\t\t\t\t.fadeOut(700);\n\t\t\t\t\t}, 4000);\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}\n}\n\nfunction getJavascriptClientData() {\n\tlet resultDataJson = {};\n\n\tresultDataJson.apbct_headless = ctGetCookie(ctPublicFunctions.cookiePrefix + 'apbct_headless');\n\tresultDataJson.apbct_pixel_url = ctGetCookie(ctPublicFunctions.cookiePrefix + 'apbct_pixel_url');\n\tresultDataJson.ct_checked_emails = ctGetCookie(ctPublicFunctions.cookiePrefix + 'ct_checked_emails');\n\tresultDataJson.ct_checkjs = ctGetCookie(ctPublicFunctions.cookiePrefix + 'ct_checkjs');\n\tresultDataJson.ct_fkp_timestamp = ctGetCookie(ctPublicFunctions.cookiePrefix + 'ct_fkp_timestamp');\n\tresultDataJson.ct_pointer_data = ctGetCookie(ctPublicFunctions.cookiePrefix + 'ct_pointer_data');\n\tresultDataJson.ct_ps_timestamp = ctGetCookie(ctPublicFunctions.cookiePrefix + 'ct_ps_timestamp');\n\tresultDataJson.ct_screen_info = ctGetCookie(ctPublicFunctions.cookiePrefix + 'ct_screen_info');\n\tresultDataJson.ct_timezone = ctGetCookie(ctPublicFunctions.cookiePrefix + 'ct_timezone');\n\n\t// collecting data from localstorage\n\tconst ctMouseMovedLocalStorage = apbctLocalStorage.get(ctPublicFunctions.cookiePrefix + 'ct_mouse_moved');\n\tconst ctHasScrolledLocalStorage = apbctLocalStorage.get(ctPublicFunctions.cookiePrefix + 'ct_has_scrolled');\n\tconst ctCookiesTypeLocalStorage = apbctLocalStorage.get(ctPublicFunctions.cookiePrefix + 'ct_cookies_type');\n\n\t// collecting data from cookies\n\tconst ctMouseMovedCookie = ctGetCookie(ctPublicFunctions.cookiePrefix + 'ct_mouse_moved');\n\tconst ctHasScrolledCookie = ctGetCookie(ctPublicFunctions.cookiePrefix + 'ct_has_scrolled');\n\tconst ctCookiesTypeCookie = ctGetCookie(ctPublicFunctions.cookiePrefix + 'ct_cookies_type');\n\n\tresultDataJson.ct_mouse_moved = ctMouseMovedLocalStorage !== undefined ? ctMouseMovedLocalStorage : ctMouseMovedCookie;\n\tresultDataJson.ct_has_scrolled = ctHasScrolledLocalStorage !== undefined ? ctHasScrolledLocalStorage : ctHasScrolledCookie;\n\tresultDataJson.ct_cookies_type = ctCookiesTypeLocalStorage !== undefined ? ctCookiesTypeLocalStorage : ctCookiesTypeCookie;\n\n\t// Parse JSON properties to prevent double JSON encoding\n\tresultDataJson = removeDoubleJsonEncoding(resultDataJson);\n\n\treturn JSON.stringify(resultDataJson);\n}\n\n/**\n * Recursive\n *\n * Recursively decode JSON-encoded properties\n *\n * @param object\n * @returns {*}\n */\nfunction removeDoubleJsonEncoding(object){\n\n\tif( typeof object === 'object'){\n\n\t\tfor (let objectKey in object) {\n\n\t\t\t// Recursion\n\t\t\tif( typeof object[objectKey] === 'object'){\n\t\t\t\tobject[objectKey] = removeDoubleJsonEncoding(object[objectKey]);\n\t\t\t}\n\n\t\t\t// Common case (out)\n\t\t\tif(\n\t\t\t\ttypeof object[objectKey] === 'string' &&\n\t\t\t\tobject[objectKey].match(/^[\\[{].*?[\\]}]$/) !== null // is like JSON\n\t\t\t){\n\t\t\t\tlet parsedValue = JSON.parse(object[objectKey]);\n\t\t\t\tif( typeof parsedValue === 'object' ){\n\t\t\t\t\tobject[objectKey] = parsedValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn object;\n}\n\nfunction ctProcessDecodedDataResult(response, targetElement) {\n\n\ttargetElement.setAttribute('title', '');\n\ttargetElement.removeAttribute('style');\n\n\tif( !! response.is_allowed) {\n\t\tctFillDecodedEmail(targetElement, response.decoded_email);\n\t}\n\n\tif( !! response.show_comment ){\n\t\tctShowDecodeComment(targetElement, response.comment);\n\t}\n}\n\nfunction ctFillDecodedEmail(target, email){\n\tlet tooltip = jQuery(target).children('.apbct-tooltip');\n jQuery(target).html(email)\n\t\t\t\t .append(tooltip);\n}\n\nfunction ctShowDecodeComment(target, comment){\n\tjQuery(target).find('.apbct-tooltip')\n\t\t.show()\n\t\t.find('.apbct-tooltip--text').html(comment);\n}\n\nfunction apbct_collect_visible_fields( form ) {\n\n\t// Get only fields\n\tvar inputs = [],\n\t\tinputs_visible = '',\n\t\tinputs_visible_count = 0,\n\t\tinputs_invisible = '',\n\t\tinputs_invisible_count = 0,\n\t\tinputs_with_duplicate_names = [];\n\n\tfor(var key in form.elements){\n\t\tif(!isNaN(+key))\n\t\t\tinputs[key] = form.elements[key];\n\t}\n\n\t// Filter fields\n\tinputs = inputs.filter(function(elem){\n\n\t\t// Filter already added fields\n\t\tif( inputs_with_duplicate_names.indexOf( elem.getAttribute('name') ) !== -1 ){\n\t\t\treturn false;\n\t\t}\n\t\t// Filter inputs with same names for type == radio\n\t\tif( -1 !== ['radio', 'checkbox'].indexOf( elem.getAttribute(\"type\") )){\n\t\t\tinputs_with_duplicate_names.push( elem.getAttribute('name') );\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t});\n\n\t// Visible fields\n\tinputs.forEach(function(elem, i, elements){\n\t\t// Unnecessary fields\n\t\tif(\n\t\t\telem.getAttribute(\"type\") === \"submit\" || // type == submit\n\t\t\telem.getAttribute('name') === null ||\n\t\t\telem.getAttribute('name') === 'ct_checkjs'\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\t// Invisible fields\n\t\tif(\n\t\t\tgetComputedStyle(elem).display === \"none\" || // hidden\n\t\t\tgetComputedStyle(elem).visibility === \"hidden\" || // hidden\n\t\t\tgetComputedStyle(elem).opacity === \"0\" || // hidden\n\t\t\telem.getAttribute(\"type\") === \"hidden\" // type == hidden\n\t\t) {\n\t\t\tif( elem.classList.contains(\"wp-editor-area\") ) {\n\t\t\t\tinputs_visible += \" \" + elem.getAttribute(\"name\");\n\t\t\t\tinputs_visible_count++;\n\t\t\t} else {\n\t\t\t\tinputs_invisible += \" \" + elem.getAttribute(\"name\");\n\t\t\t\tinputs_invisible_count++;\n\t\t\t}\n\t\t}\n\t\t// Visible fields\n\t\telse {\n\t\t\tinputs_visible += \" \" + elem.getAttribute(\"name\");\n\t\t\tinputs_visible_count++;\n\t\t}\n\n\t});\n\n\tinputs_invisible = inputs_invisible.trim();\n\tinputs_visible = inputs_visible.trim();\n\n\treturn {\n\t\tvisible_fields : inputs_visible,\n\t\tvisible_fields_count : inputs_visible_count,\n\t\tinvisible_fields : inputs_invisible,\n\t\tinvisible_fields_count : inputs_invisible_count,\n\t}\n\n}\n\nfunction apbct_visible_fields_set_cookie( visible_fields_collection, form_id ) {\n\n\tvar collection = typeof visible_fields_collection === 'object' && visible_fields_collection !== null ? visible_fields_collection : {};\n\n\tif( ctPublic.data__cookies_type === 'native' ) {\n\t\tfor ( var i in collection ) {\n\t\t\tif ( i > 10 ) {\n\t\t\t\t// Do not generate more than 10 cookies\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar collectionIndex = form_id !== undefined ? form_id : i;\n\t\t\tctSetCookie(\"apbct_visible_fields_\" + collectionIndex, JSON.stringify( collection[i] ) );\n\t\t}\n\t} else {\n\t\tctSetCookie(\"apbct_visible_fields\", JSON.stringify( collection ) );\n\t}\n}\n\nfunction apbct_js_keys__set_input_value(result, data, params, obj){\n\tif( document.querySelectorAll('[name^=ct_checkjs]').length > 0 ) {\n\t\tvar elements = document.querySelectorAll('[name^=ct_checkjs]');\n\t\tfor ( var i = 0; i < elements.length; i++ ) {\n\t\t\telements[i].value = result.js_key;\n\t\t}\n\t}\n}\n\nfunction apbctGetScreenInfo() {\n\treturn JSON.stringify({\n\t\tfullWidth : document.documentElement.scrollWidth,\n\t\tfullHeight : Math.max(\n\t\t\tdocument.body.scrollHeight, document.documentElement.scrollHeight,\n\t\t\tdocument.body.offsetHeight, document.documentElement.offsetHeight,\n\t\t\tdocument.body.clientHeight, document.documentElement.clientHeight\n\t\t),\n\t\tvisibleWidth : document.documentElement.clientWidth,\n\t\tvisibleHeight : document.documentElement.clientHeight,\n\t});\n}\n\nif(typeof jQuery !== 'undefined') {\n\n\t// Capturing responses and output block message for unknown AJAX forms\n\tjQuery(document).ajaxComplete(function (event, xhr, settings) {\n\t\tif (xhr.responseText && xhr.responseText.indexOf('\"apbct') !== -1) {\n\t\t\ttry {\n\t\t\t\tvar response = JSON.parse(xhr.responseText);\n\t\t\t} catch (e) {\n\t\t\t\tconsole.log(e.toString())\n\t\t\t}\n\t\t\tif (typeof response.apbct !== 'undefined') {\n\t\t\t\tresponse = response.apbct;\n\t\t\t\tif (response.blocked) {\n\t\t\t\t\tdocument.dispatchEvent(\n\t\t\t\t\t\tnew CustomEvent( \"apbctAjaxBockAlert\", {\n\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\tdetail: { message: response.comment }\n\t\t\t\t\t\t} )\n\t\t\t\t\t);\n\n\t\t\t\t\t// Show the result by modal\n\t\t\t\t\tcleantalkModal.loaded = response.comment;\n\t\t\t\t\tcleantalkModal.open();\n\n\t\t\t\t\tif(+response.stop_script == 1)\n\t\t\t\t\t\twindow.stop();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction ctSetPixelUrlLocalstorage(ajax_pixel_url) {\n\t//set pixel to the storage\n\tlocalStorage.setItem('session_pixel_url', ajax_pixel_url)\n\t//set pixel timestamp to the storage\n\tlocalStorage.setItem(ajax_pixel_url, Math.floor(Date.now() / 1000).toString())\n}\n\nfunction ctGetPixelUrlLocalstorage() {\n\tlet local_storage_pixel = localStorage.getItem('session_pixel_url');\n\tif ( local_storage_pixel !== null ) {\n\t\treturn local_storage_pixel;\n\t} else {\n\t\treturn false;\n\t}\n}\n\nfunction ctIsOutdatedPixelUrlLocalstorage(local_storage_pixel_url) {\n\tlet local_storage_pixel_timestamp = Number(localStorage.getItem(local_storage_pixel_url));\n\tlet current_timestamp = Math.floor(Date.now() / 1000).toString()\n\tlet timestamp_difference = current_timestamp - local_storage_pixel_timestamp;\n\treturn timestamp_difference > 3600 * 3;\n}\n\nfunction ctCleaPixelUrlLocalstorage(local_storage_pixel_url) {\n\t//remove timestamp\n\tlocalStorage.removeItem(local_storage_pixel_url)\n\t//remove pixel itself\n\tlocalStorage.removeItem('session_pixel_url')\n}\n/* Cleantalk Modal object */\ncleantalkModal = {\n\n // Flags\n loaded: false,\n loading: false,\n opened: false,\n opening: false,\n\n // Methods\n load: function( action ) {\n if( ! this.loaded ) {\n this.loading = true;\n callback = function( result, data, params, obj ) {\n cleantalkModal.loading = false;\n cleantalkModal.loaded = result;\n document.dispatchEvent(\n new CustomEvent( \"cleantalkModalContentLoaded\", {\n bubbles: true,\n } )\n );\n };\n if( typeof apbct_admin_sendAJAX === \"function\" ) {\n apbct_admin_sendAJAX( { 'action' : action }, { 'callback': callback, 'notJson': true } );\n } else {\n apbct_public_sendAJAX( { 'action' : action }, { 'callback': callback, 'notJson': true } );\n }\n\n }\n },\n\n open: function () {\n /* Cleantalk Modal CSS start */\n var renderCss = function () {\n var cssStr = '';\n for ( key in this.styles ) {\n cssStr += key + ':' + this.styles[key] + ';';\n }\n return cssStr;\n };\n var overlayCss = {\n styles: {\n \"z-index\": \"9999\",\n \"position\": \"fixed\",\n \"top\": \"0\",\n \"left\": \"0\",\n \"width\": \"100%\",\n \"height\": \"100%\",\n \"background\": \"rgba(0,0,0,0.5)\",\n \"display\": \"flex\",\n \"justify-content\" : \"center\",\n \"align-items\" : \"center\",\n },\n toString: renderCss\n };\n var innerCss = {\n styles: {\n \"position\" : \"relative\",\n \"padding\" : \"30px\",\n \"background\" : \"#FFF\",\n \"border\" : \"1px solid rgba(0,0,0,0.75)\",\n \"border-radius\" : \"4px\",\n \"box-shadow\" : \"7px 7px 5px 0px rgba(50,50,50,0.75)\",\n },\n toString: renderCss\n };\n var closeCss = {\n styles: {\n \"position\" : \"absolute\",\n \"background\" : \"#FFF\",\n \"width\" : \"20px\",\n \"height\" : \"20px\",\n \"border\" : \"2px solid rgba(0,0,0,0.75)\",\n \"border-radius\" : \"15px\",\n \"cursor\" : \"pointer\",\n \"top\" : \"-8px\",\n \"right\" : \"-8px\",\n \"box-sizing\" : \"content-box\",\n },\n toString: renderCss\n };\n var closeCssBefore = {\n styles: {\n \"content\" : \"\\\"\\\"\",\n \"display\" : \"block\",\n \"position\" : \"absolute\",\n \"background\" : \"#000\",\n \"border-radius\" : \"1px\",\n \"width\" : \"2px\",\n \"height\" : \"16px\",\n \"top\" : \"2px\",\n \"left\" : \"9px\",\n \"transform\" : \"rotate(45deg)\",\n },\n toString: renderCss\n };\n var closeCssAfter = {\n styles: {\n \"content\" : \"\\\"\\\"\",\n \"display\" : \"block\",\n \"position\" : \"absolute\",\n \"background\" : \"#000\",\n \"border-radius\" : \"1px\",\n \"width\" : \"2px\",\n \"height\" : \"16px\",\n \"top\" : \"2px\",\n \"left\" : \"9px\",\n \"transform\" : \"rotate(-45deg)\",\n },\n toString: renderCss\n };\n var bodyCss = {\n styles: {\n \"overflow\" : \"hidden\",\n },\n toString: renderCss\n };\n var cleantalkModalStyle = document.createElement( 'style' );\n cleantalkModalStyle.setAttribute( 'id', 'cleantalk-modal-styles' );\n cleantalkModalStyle.innerHTML = 'body.cleantalk-modal-opened{' + bodyCss + '}';\n cleantalkModalStyle.innerHTML += '#cleantalk-modal-overlay{' + overlayCss + '}';\n cleantalkModalStyle.innerHTML += '#cleantalk-modal-close{' + closeCss + '}';\n cleantalkModalStyle.innerHTML += '#cleantalk-modal-close:before{' + closeCssBefore + '}';\n cleantalkModalStyle.innerHTML += '#cleantalk-modal-close:after{' + closeCssAfter + '}';\n document.body.append( cleantalkModalStyle );\n /* Cleantalk Modal CSS end */\n\n var overlay = document.createElement( 'div' );\n overlay.setAttribute( 'id', 'cleantalk-modal-overlay' );\n document.body.append( overlay );\n\n document.body.classList.add( 'cleantalk-modal-opened' );\n\n var inner = document.createElement( 'div' );\n inner.setAttribute( 'id', 'cleantalk-modal-inner' );\n inner.setAttribute( 'style', innerCss );\n overlay.append( inner );\n\n var close = document.createElement( 'div' );\n close.setAttribute( 'id', 'cleantalk-modal-close' );\n inner.append( close );\n\n var content = document.createElement( 'div' );\n if ( this.loaded ) {\n content.innerHTML = this.loaded;\n } else {\n content.innerHTML = 'Loading...';\n // @ToDo Here is hardcoded parameter. Have to get this from a 'data-' attribute.\n this.load( 'get_options_template' );\n }\n content.setAttribute( 'id', 'cleantalk-modal-content' );\n inner.append( content );\n\n this.opened = true;\n },\n\n close: function () {\n document.body.classList.remove( 'cleantalk-modal-opened' );\n document.getElementById( 'cleantalk-modal-overlay' ).remove();\n document.getElementById( 'cleantalk-modal-styles' ).remove();\n document.dispatchEvent(\n new CustomEvent( \"cleantalkModalClosed\", {\n bubbles: true,\n } )\n );\n }\n\n};\n\n/* Cleantalk Modal helpers */\ndocument.addEventListener('click',function( e ){\n if( e.target && e.target.id === 'cleantalk-modal-overlay' || e.target.id === 'cleantalk-modal-close' ){\n cleantalkModal.close();\n }\n});\ndocument.addEventListener(\"cleantalkModalContentLoaded\", function( e ) {\n if( cleantalkModal.opened && cleantalkModal.loaded ) {\n document.getElementById( 'cleantalk-modal-content' ).innerHTML = cleantalkModal.loaded;\n }\n});\njQuery(document).ready(function(){\n\n\tif (typeof ctPublicGDPR === 'undefined') return;\n\n\tif(!ctPublicGDPR.gdpr_forms) return;\n\t\n\tctPublicGDPR.gdpr_forms.forEach(function(item, i, arr){\n\t\t\n\t\tvar elem = jQuery('#'+item+', .'+item);\n\t\t\n\t\t// Filter forms\n\t\tif(!elem.is('form')){\n\t\t\t// Caldera\n\t\t\tif(elem.find('form')[0])\n\t\t\t\telem = elem.children('form').first();\n\t\t\t// Contact Form 7\n\t\t\telse if(jQuery('.wpcf7[role=form]')[0] && jQuery('.wpcf7[role=form]').attr('id').indexOf('wpcf7-f'+item) !== -1)\n\t\t\t\telem = jQuery('.wpcf7[role=form]');\n\t\t\t// Formidable\n\t\t\telse if(jQuery('.frm_forms')[0] && jQuery('.frm_forms').first().attr('id').indexOf('frm_form_'+item) !== -1)\n\t\t\t\telem = jQuery('.frm_forms').first().children('form');\n\t\t\t// WPForms\n\t\t\telse if(jQuery('.wpforms-form')[0] && jQuery('.wpforms-form').first().attr('id').indexOf('wpforms-form-'+item) !== -1)\n\t\t\t\telem = jQuery('.wpforms-form');\n\t\t}\n\t\t\n\t\t// Adding notice\n\t\tif(elem.is('form') || elem.attr('role') === 'form'){\n\t\t\telem.append('')\n\t\t\t\t.append('');\n\t\t}\n\t});\n\t\n});\n/**\n * Handle external forms\n */\nfunction ct_protect_external() {\n for(var i = 0; i < document.forms.length; i++) {\n\n if (document.forms[i].cleantalk_hidden_action === undefined && document.forms[i].cleantalk_hidden_method === undefined) {\n\n // current form\n var currentForm = document.forms[i];\n\n if (currentForm.parentElement && currentForm.parentElement.classList.length > 0 && currentForm.parentElement.classList[0].indexOf('mewtwo') !== -1){\n return\n }\n\n if(typeof(currentForm.action) == 'string') {\n\n if(isIntegratedForm(currentForm)) {\n\n jQuery( currentForm ).before('');\n\n // Deleting form to prevent submit event\n var prev = jQuery(currentForm).prev(),\n form_html = currentForm.outerHTML,\n form_original = jQuery(currentForm).detach();\n\n prev.after( form_html );\n\n var force_action = document.createElement(\"input\");\n force_action.name = 'action';\n force_action.value = 'cleantalk_force_ajax_check';\n force_action.type = 'hidden';\n\n var reUseCurrentForm = document.forms[i];\n\n reUseCurrentForm.appendChild(force_action);\n\n // mailerlite integration - disable click on submit button\n let mailerlite_detected_class = false\n if (reUseCurrentForm.classList !== undefined) {\n //list there all the mailerlite classes\n let mailerlite_classes = ['newsletterform', 'ml-block-form']\n mailerlite_classes.forEach(function(mailerlite_class) {\n if (reUseCurrentForm.classList.contains(mailerlite_class)){\n mailerlite_detected_class = mailerlite_class\n }\n });\n }\n if ( mailerlite_detected_class ) {\n let mailerliteSubmitButton = jQuery('form.' + mailerlite_detected_class).find('button[type=\"submit\"]');\n if ( mailerliteSubmitButton !== undefined ) {\n mailerliteSubmitButton.click(function (event) {\n event.preventDefault();\n sendAjaxCheckingFormData(reUseCurrentForm, prev, form_original);\n });\n }\n } else {\n document.forms[i].onsubmit = function ( event ){\n event.preventDefault();\n\n const prev = jQuery(event.currentTarget).prev();\n const form_original = jQuery(event.currentTarget).clone();\n\n sendAjaxCheckingFormData(event.currentTarget, prev, form_original);\n };\n }\n\n // Common flow\n }else if(currentForm.action.indexOf('http://') !== -1 || currentForm.action.indexOf('https://') !== -1) {\n\n var tmp = currentForm.action.split('//');\n tmp = tmp[1].split('/');\n var host = tmp[0].toLowerCase();\n\n if(host !== location.hostname.toLowerCase()){\n\n var ct_action = document.createElement(\"input\");\n ct_action.name = 'cleantalk_hidden_action';\n ct_action.value = currentForm.action;\n ct_action.type = 'hidden';\n currentForm.appendChild(ct_action);\n\n var ct_method = document.createElement(\"input\");\n ct_method.name = 'cleantalk_hidden_method';\n ct_method.value = currentForm.method;\n ct_method.type = 'hidden';\n\n currentForm.method = 'POST'\n\n currentForm.appendChild(ct_method);\n\n currentForm.action = document.location;\n }\n }\n }\n }\n\n }\n}\nfunction apbct_replace_inputs_values_from_other_form( form_source, form_target ){\n\n var\tinputs_source = jQuery( form_source ).find( 'button, input, textarea, select' ),\n inputs_target = jQuery( form_target ).find( 'button, input, textarea, select' );\n\n inputs_source.each( function( index, elem_source ){\n\n var source = jQuery( elem_source );\n\n inputs_target.each( function( index2, elem_target ){\n\n var target = jQuery( elem_target );\n\n if( elem_source.outerHTML === elem_target.outerHTML ){\n\n target.val( source.val() );\n }\n });\n });\n\n}\nwindow.onload = function () {\n\n if( ! +ctPublic.settings__forms__check_external ) {\n return;\n }\n\n setTimeout(function () {\n ct_protect_external()\n }, 1500);\n};\n\n/**\n * Checking the form integration\n */\nfunction isIntegratedForm(formObj) {\n var formAction = formObj.action;\n\n if(\n formAction.indexOf('activehosted.com') !== -1 || // ActiveCampaign form\n formAction.indexOf('app.convertkit.com') !== -1 || // ConvertKit form\n ( formObj.firstChild.classList !== undefined && formObj.firstChild.classList.contains('cb-form-group') ) || // Convertbox form\n formAction.indexOf('mailerlite.com') !== -1 || // Mailerlite integration\n formAction.indexOf('colcolmail.co.uk') !== -1 || // colcolmail.co.uk integration\n formAction.indexOf('paypal.com') !== -1 ||\n formAction.indexOf('infusionsoft.com') !== -1 ||\n formAction.indexOf('webto.salesforce.com') !== -1 ||\n formAction.indexOf('secure2.convio.net') !== -1 ||\n formAction.indexOf('hookb.in') !== -1 ||\n formAction.indexOf('external.url') !== -1 ||\n formAction.indexOf('tp.media') !== -1 ||\n formAction.indexOf('flodesk.com') !== -1 ||\n formAction.indexOf('sendfox.com') !== -1 ||\n formAction.indexOf('aweber.com') !== -1\n\n ) {\n return true;\n }\n\n return false;\n}\n\n/**\n * Sending Ajax for checking form data\n */\nfunction sendAjaxCheckingFormData(form, prev, formOriginal) {\n // Get visible fields and set cookie\n var visible_fields = {};\n visible_fields[0] = apbct_collect_visible_fields(form);\n apbct_visible_fields_set_cookie( visible_fields );\n\n var data = {};\n var elems = form.elements;\n elems = Array.prototype.slice.call(elems);\n\n elems.forEach( function( elem, y ) {\n if( elem.name === '' ) {\n data['input_' + y] = elem.value;\n } else {\n data[elem.name] = elem.value;\n }\n });\n\n apbct_public_sendAJAX(\n data,\n {\n async: false,\n callback: function( result, data, params, obj, prev, formOriginal ){\n\n if( result.apbct === undefined || ! +result.apbct.blocked ) {\n\n var form_new = jQuery(form).detach();\n\n apbct_replace_inputs_values_from_other_form(form_new, formOriginal);\n\n prev.after( formOriginal );\n\n // Common click event\n var subm_button = jQuery(formOriginal).find('button[type=submit]');\n if( subm_button.length !== 0 ) {\n subm_button[0].click();\n return;\n }\n\n subm_button = jQuery(formOriginal).find('input[type=submit]');\n if( subm_button.length !== 0 ) {\n subm_button[0].click();\n return;\n }\n\n // ConvertKit direct integration\n subm_button = jQuery(formOriginal).find('button[data-element=\"submit\"]');\n if( subm_button.length !== 0 ) {\n subm_button[0].click();\n return;\n }\n\n // Paypal integration\n subm_button = jQuery(formOriginal).find('input[type=\"image\"][name=\"submit\"]');\n if( subm_button.length !== 0 ) {\n subm_button[0].click();\n }\n\n }\n },\n callback_context: null,\n callback_params: [prev, formOriginal],\n }\n );\n}\n\nfunction ct_check_internal(currForm){\n \n//Gathering data\n var ct_data = {},\n elems = currForm.elements;\n\n for (var key in elems) {\n if(elems[key].type == 'submit' || elems[key].value == undefined || elems[key].value == '')\n continue;\n ct_data[elems[key].name] = currForm.elements[key].value;\n }\n ct_data['action'] = 'ct_check_internal';\n\n//AJAX Request\n jQuery.ajax({\n type: 'POST',\n url: ctPublicFunctions._ajax_url,\n datatype : 'text',\n data: ct_data,\n success: function(data){\n if(data == 'true'){\n currForm.submit();\n }else{\n alert(data);\n return false;\n }\n },\n error: function(){\n currForm.submit();\n }\n }); \n}\n \njQuery(document).ready( function(){\n let ct_currAction = '',\n ct_currForm = '';\n\n if( ! +ctPublic.settings__forms__check_internal ) {\n return;\n }\n\n\tfor( let i=0; i {\n return action.match(new RegExp('^' + item)) !== null;\n });\n}"],"names":["ctSetCookie","cookies","value","expires","skip_alt","ctPublicFunctions","data__cookies_type","forEach","item","i","arr","ctSecure","location","protocol","document","cookie","cookiePrefix","encodeURIComponent","data__ajax_type","apbct_public_sendREST","method","data","apbct_public_sendAJAX","action","notJson","ctGetCookie","name","matches","match","RegExp","replace","decodeURIComponent","undefined","ctDeleteCookie","cookieName","params","obj","callback","callback_context","callback_params","async","timeout","button","spinner","progressbar","silent","no_nonce","_ajax_nonce","Math","random","no_cache","setAttribute","style","cursor","jQuery","css","ajax","type","url","_ajax_url","success","result","removeAttribute","JSON","parse","error","setTimeout","fadeOut","console","log","apply","concat","jqXHR","textStatus","errorThrown","route","_rest_url","beforeSend","xhr","setRequestHeader","_rest_nonce","apbctLocalStorage","get","key","property","storageValue","localStorage","getItem","json","hasOwnProperty","e","Error","set","is_json","objToSave","stringify","timestamp","floor","Date","getTime","setItem","isAlive","maxLifetime","this","isSet","delete","removeItem","ct_date","ctTimeMs","ctMouseEventTimerFlag","ctMouseData","ctMouseDataCounter","ctCheckedEmails","apbct_attach_event_handler","elem","event","window","addEventListener","attachEvent","apbct_remove_event_handler","removeEventListener","detachEvent","ctFunctionFirstKey","ctKeyStopStopListening","ctMouseReadInterval","setInterval","ctMouseWriteDataInterval","ctFunctionMouseMove","ctSetMouseMoved","push","round","clientY","clientX","ctMouseStopData","clearInterval","checkEmail","current_email","target","email","now","ctSetPixelImg","pixelUrl","ctPublic","pixel__enabled","getElementById","append","ctGetPixelUrl","let","local_storage_pixel_url","ctGetPixelUrlLocalstorage","ctIsOutdatedPixelUrlLocalstorage","ctCleaPixelUrlLocalstorage","ctSetPixelUrlLocalstorage","ctSetHasScrolled","apbct_ready","cookiesType","initCookies","getTimezoneOffset","apbctGetScreenInfo","navigator","webdriver","cookiesArray","split","length","trim","indexOf","pixel__setting","pixel__url","data__email_check_before_post","blur","forms","hiddenInput","visibleFieldsToInput","form","data__visible_fields_required","toString","toLowerCase","classList","contains","parentElement","id","createElement","apbct_collect_visible_fields","onsubmit_prev","onsubmit","ctFormIndex","visible_fields","apbct_visible_fields_set_cookie","Function","call","decodedEmailNodes","querySelectorAll","href","ctFillDecodedEmailHandler","apbctAjaxEmailDecode","element","text__wait_for_decoding","ctShowDecodeComment","javascriptClientData","getJavascriptClientData","encodedEmail","dataset","originalString","event_javascript_data","ctProcessDecodedDataResult","children","resultDataJson","apbct_headless","apbct_pixel_url","ct_checked_emails","ct_checkjs","ct_fkp_timestamp","ct_pointer_data","ct_ps_timestamp","ct_screen_info","ct_timezone","ctMouseMovedLocalStorage","ctHasScrolledLocalStorage","ctCookiesTypeLocalStorage","ctMouseMovedCookie","ctHasScrolledCookie","ctCookiesTypeCookie","ct_mouse_moved","ct_has_scrolled","ct_cookies_type","removeDoubleJsonEncoding","object","objectKey","parsedValue","response","targetElement","is_allowed","ctFillDecodedEmail","decoded_email","show_comment","comment","tooltip","html","find","show","inputs","inputs_visible","inputs_visible_count","inputs_invisible","inputs_invisible_count","inputs_with_duplicate_names","elements","isNaN","filter","getAttribute","getComputedStyle","display","visibility","opacity","visible_fields_count","invisible_fields","invisible_fields_count","visible_fields_collection","form_id","collection","apbct_js_keys__set_input_value","js_key","fullWidth","documentElement","scrollWidth","fullHeight","max","body","scrollHeight","offsetHeight","clientHeight","visibleWidth","clientWidth","visibleHeight","ajax_pixel_url","local_storage_pixel","local_storage_pixel_timestamp","Number","ct_protect_external","cleantalk_hidden_action","cleantalk_hidden_method","ct_method","currentForm","isIntegratedForm","before","prev","form_html","outerHTML","form_original","detach","force_action","after","reUseCurrentForm","appendChild","mailerlite_detected_class","mailerlite_classes","mailerlite_class","mailerliteSubmitButton","click","preventDefault","sendAjaxCheckingFormData","currentTarget","clone","hostname","ct_action","apbct_replace_inputs_values_from_other_form","form_source","form_target","inputs_source","inputs_target","each","index","elem_source","source","index2","elem_target","val","formObj","formAction","firstChild","formOriginal","elems","Array","prototype","slice","y","apbct","blocked","subm_button","ct_check_internal","currForm","ct_data","datatype","alert","submit","ct_check_internal__is_exclude_form","ct_internal_script_exclusions","blog_home","some","ajaxComplete","settings","responseText","dispatchEvent","CustomEvent","bubbles","detail","message","cleantalkModal","loaded","open","stop_script","stop","loading","opened","opening","load","apbct_admin_sendAJAX","renderCss","cssStr","styles","overlayCss","z-index","position","top","left","width","height","background","justify-content","align-items","innerCss","padding","border","border-radius","box-shadow","closeCss","right","box-sizing","closeCssBefore","content","transform","closeCssAfter","bodyCss","overflow","cleantalkModalStyle","overlay","innerHTML","inner","add","close","remove","ready","ctPublicGDPR","gdpr_forms","is","first","attr","gdpr_text","onload","settings__forms__check_external","ct_currAction","ct_currForm","settings__forms__check_internal","ctPrevHandler","off","on"],"mappings":"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"}