apbctLocalStorage={get:function(key,property){if(typeof property==='undefined'){property='value';}
const storageValue=localStorage.getItem(key);if(storageValue!==null){try{const json=JSON.parse(storageValue);return json.hasOwnProperty(property)?JSON.parse(json[property]):json;}catch(e){return storageValue;}}
return false;},set:function(key,value,is_json=true){if(is_json){let objToSave={'value':JSON.stringify(value),'timestamp':Math.floor(new Date().getTime()/1000)};localStorage.setItem(key,JSON.stringify(objToSave));}else{localStorage.setItem(key,value);}},isAlive:function(key,maxLifetime){if(typeof maxLifetime==='undefined'){maxLifetime=86400;}
const keyTimestamp=this.get(key,'timestamp');return keyTimestamp+maxLifetime>Math.floor(new Date().getTime()/1000);},isSet:function(key){return localStorage.getItem(key)!==null;},delete:function(key){localStorage.removeItem(key);},getCleanTalkData:function(){let data={}
for(let i=0;i<localStorage.length;i++){let key=localStorage.key(i);if(key.indexOf('ct_')!==-1||key.indexOf('apbct_')!==-1){data[key.toString()]=apbctLocalStorage.get(key)}}
return data},}
function ctSetCookie(c_name,value){if(typeof ct_setcookie!=="undefined"&&ct_setcookie){document.cookie=c_name+"="+encodeURIComponent(value)+"; path=/";}}
function ctSetCookies(cookies)
{if(typeof ctPublicData!=='undefined'&&ctPublicData.typeOfCookie&&ctPublicData.typeOfCookie==='alt_cookies'){ctSetAltCookies(cookies);}else{for(const[cookie,value]of Object.entries(cookies)){ctSetCookie(cookie,value);}}}
ct_attach_event_handler(window,"DOMContentLoaded",ct_ready);function ctMouseStopData(){if(typeof window.addEventListener=="function")
window.removeEventListener("mousemove",ctFunctionMouseMove);else
window.detachEvent("onmousemove",ctFunctionMouseMove);clearInterval(ctMouseReadInterval);clearInterval(ctMouseWriteDataInterval);}
function ctKeyStopStopListening(){if(typeof window.addEventListener=="function"){window.removeEventListener("mousedown",ctFunctionFirstKey);window.removeEventListener("keydown",ctFunctionFirstKey);}else{window.detachEvent("mousedown",ctFunctionFirstKey);window.detachEvent("keydown",ctFunctionFirstKey);}}
var d=new Date(),ctTimeMs=new Date().getTime(),ctMouseEventTimerFlag=true,ctMouseData="[",ctMouseDataCounter=0;var ctMouseReadInterval=setInterval(function(){ctMouseEventTimerFlag=true;},150);var ctMouseWriteDataInterval=setInterval(function(){var ctMouseDataToSend=ctMouseData.slice(0,-1).concat("]");if(typeof ctPublicData!=='undefined'&&ctPublicData.typeOfCookie&&ctPublicData.typeOfCookie==='alt_cookies'){apbctLocalStorage.set('ct_pointer_data',ctMouseDataToSend);}else{ctSetCookie('ct_pointer_data',ctMouseDataToSend);}},1200);var ctFunctionMouseMove=function output(event){if(ctMouseEventTimerFlag==true){var mouseDate=new Date();ctMouseData+="["+event.pageY+","+event.pageX+","+(mouseDate.getTime()-ctTimeMs)+"],";ctMouseDataCounter++;ctMouseEventTimerFlag=false;if(ctMouseDataCounter>=100)
ctMouseStopData();}}
var ctFunctionFirstKey=function output(event){var KeyTimestamp=Math.floor(new Date().getTime()/1000);if(typeof ctPublicData!=='undefined'&&ctPublicData.typeOfCookie&&ctPublicData.typeOfCookie==='alt_cookies'){ctSetAltCookies({'ct_fkp_timestamp':KeyTimestamp});}else{ctSetCookie('ct_fkp_timestamp',KeyTimestamp);}
ctKeyStopStopListening();}
if(typeof window.addEventListener=="function"){window.addEventListener("mousemove",ctFunctionMouseMove);window.addEventListener("mousedown",ctFunctionFirstKey);window.addEventListener("keydown",ctFunctionFirstKey);}else{window.attachEvent("onmousemove",ctFunctionMouseMove);window.attachEvent("mousedown",ctFunctionFirstKey);window.attachEvent("keydown",ctFunctionFirstKey);}
function ct_ready(){const cookies={ct_ps_timestamp:Math.floor(new Date().getTime()/1000),ct_fkp_timestamp:0,ct_pointer_data:0,ct_timezone:new Date().getTimezoneOffset()/60*(-1),ct_visible_fields:0,ct_visible_fields_count:0}
ctSetCookies(cookies);setTimeout(function(){for(var i=0;i<document.forms.length;i++){var form=document.forms[i];checkEasySocial(form);if(!form.name&&!form.id){continue;}
form.addEventListener('submit',function(e){e.preventDefault();var elements=[];for(var key in this.elements){if(!isNaN(+key))
elements[key]=this.elements[key];}
elements=elements.filter(function(elem){var pass=true;if(getComputedStyle(elem).display==="none"||getComputedStyle(elem).visibility==="hidden"||getComputedStyle(elem).opacity==="0"||elem.getAttribute("type")==="hidden"||elem.getAttribute("type")==="submit"||elem.value===""||elem.getAttribute('name')===null){return false;}
if(elem.getAttribute("type")==="radio"){elements.forEach(function(el,j,els){if(elem.getAttribute('name')===el.getAttribute('name')){pass=false;return;}});}
return true;});var visible_fields_count=elements.length;var visible_fields='';elements.forEach(function(elem,i,elements){visible_fields+=" "+elem.getAttribute("name");});visible_fields=visible_fields.trim();if(typeof ctPublicData!=='undefined'&&ctPublicData.typeOfCookie&&ctPublicData.typeOfCookie==='alt_cookies'){const cookies={ct_pointer_data:apbctLocalStorage.get('ct_pointer_data'),ct_visible_fields:visible_fields,ct_visible_fields_count:visible_fields_count}
ctSetAltCookies(cookies);}else{ctSetCookie("ct_visible_fields",visible_fields);ctSetCookie("ct_visible_fields_count",visible_fields_count);}
if(!ct_is_excluded_forms(this)){HTMLFormElement.prototype.submit.call(this);}});}},1000);}
function checkEasySocial(form){if(form.classList.contains('es-form-login')){form.querySelectorAll('a.btn').forEach(function(el){if(el.hasAttribute('data-oauth-login-button')){el.removeAttribute('data-oauth-login-button');el.setAttribute('data-oauth-login-button-blocked','');}
el.onclick=function(e){e.preventDefault();let allow=function(target){if(target.hasAttribute('data-oauth-login-button-blocked')){target.removeAttribute('data-oauth-login-button-blocked');target.setAttribute('data-oauth-login-button','');}
target.onclick=null;target.click();};let forbidden=function(target,msg){let el=document.createElement('div');el.style.background='red';el.style.color='white';el.style.padding='1em';el.style.margin='1em';el.innerHTML=msg;target.insertAdjacentElement('afterend',el);};ctCheckAjax(e.target,allow,forbidden);return false;}})}}
function ct_is_excluded_forms(form){let value;for(let key in form.elements){if(isNaN(+key)){continue;}
value=form.elements[key];if(value.classList.contains('cf-input')){return true;}}
return false;}
function ct_attach_event_handler(elem,event,callback){if(typeof window.addEventListener==="function")elem.addEventListener(event,callback);else elem.attachEvent(event,callback);}
function ct_remove_event_handler(elem,event,callback){if(typeof window.removeEventListener==="function")elem.removeEventListener(event,callback);else elem.detachEvent(event,callback);}
function ct_attach_event_token(){if(typeof apbctLocalStorage!=="undefined"){const ct_event_token_string=apbctLocalStorage.get('bot_detector_event_token')
const ct_event_token_obj=JSON.parse(ct_event_token_string.toString())
if(typeof ctSetCookie=="function"&&typeof ct_event_token_obj.value!="undefined"){const value=ct_event_token_obj.value;if(typeof value==="string"&&value.length===64){if(typeof ctPublicData!=='undefined'&&ctPublicData.typeOfCookie&&ctPublicData.typeOfCookie==='alt_cookies'){ctSetAltCookies({'ct_event_token':ct_event_token_obj.value});}else{ctSetCookie("ct_event_token",ct_event_token_obj.value);}
return true;}}}
return false;}
function ctSetAltCookies(altCookies)
{altCookies.action='set_alt_cookies';Joomla.request({url:'index.php?option=com_ajax&plugin=cleantalkantispam&format=raw',method:'POST',data:JSON.stringify(altCookies),headers:{'Cache-Control':'no-cache','Content-Type':'application/json'},onSuccess:function(response){console.log(response);},onError:function(error){console.log(error);}});}
function ctCheckAjax(target,allow,forbidden)
{let data=apbctLocalStorage.getCleanTalkData();data.action='check_ajax';Joomla.request({url:'index.php?option=com_ajax&plugin=cleantalkantispam&format=raw',method:'POST',data:JSON.stringify(data),headers:{'Cache-Control':'no-cache','Content-Type':'application/json'},onSuccess:function(response){let result=JSON.parse(response);if(result&&result.allow==1){allow(target);}
if(result&&result.allow==0){forbidden(target,result.msg);}},onError:function(error){console.log('error',error);}});};
