Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
/*! * Thorium dbExpress * API version : 3.5.0 * Thorium version 3.5.0 July 2022 * ..
Decoded Output download
<? /*!
* Thorium dbExpress
* API version : 3.5.0
* Thorium version 3.5.0 July 2022
* framework7 v6.x (https://framework7.io) MIT Licensed
* Thorium builder Copyright 2018-2022 Nymphide Lab, All Rights Reserved.
*/
var auth={name:"dbExpress Authentification",bundleid:"com.thoriumbuilder.dbexpress.auth",version:"3.5.0",allowRegister:!0,currentUser:{uid:"",displayName:"",email:"",emailVerified:"",isAnonymous:"",creationTime:"",modifyTime:"",lastSignInTime:"",language:"",phoneNumber:"",photoURL:"",token:"",headimage:"",group:0},loginScreen:null,twoFactorsScreen:null,registerScreen:null,profileScreen:null,privacyScreen:null,termsScreen:null,resetPassworScreen:null,pinKeyPad:null,httpMediaRoot:"",getToken:function(){var e=localStorage.getItem(app.id);if(e&&(session=JSON.parse(e),session.token))return session.token},getDbAssetsUrlRoot:function(){return 1==app.device.cordova||1==app.device.capacitor?kRemoteHost+"db/dbassets/":(thoriumCorePlugin.isLocal(),"db/dbassets/")},showResetPasswordScreen:function(e){app&&app.preloader.hide(),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] Loading Reset Password Popup"),auth.resetPassworScreen=app.sheet.create({el:".dbexpress-resetpassword",swipeToClose:!1,backdrop:!0,closeByBackdropClick:!1,closeByOutsideClick:!1,closeOnEscape:!1,animate:!0}),auth.resetPassworScreen.open(!0),app.emit("onShowResetPasswordScreen",e)},showSigninPopup:function(e){app&&app.preloader.hide(),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] Loading Login Popup"),auth.loginScreen||(auth.loginScreen=app.loginScreen.create({el:".dbexpress-signin"})),auth.loginScreen.open(!1),app.emit("onShowLoginScreen",e);document.querySelector(".dbexpress-signin .dbexpress-signin-email");setTimeout((function(){thoriumCorePlugin.showAppLoader(!1)}),1e3)},showTermsPopup:function(e){app&&app.preloader.hide(),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] Loading Terms of Service Popup"),auth.termsScreen=app.popup.create({el:".dbexpress-termsofuse",swipeToClose:!1,backdrop:!0,closeByBackdropClick:!1,closeByOutsideClick:!1,closeOnEscape:!1,animate:!0}),auth.termsScreen.open(!0),app.emit("onShowTermsOfService",this)},showPrivacyPopup:function(e){app&&app.preloader.hide(),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] Loading Privacy Policy Popup"),auth.privacyScreen=app.popup.create({el:".dbexpress-privacypolicy",swipeToClose:!1,backdrop:!0,closeByBackdropClick:!1,closeByOutsideClick:!1,closeOnEscape:!1,animate:!0}),auth.privacyScreen.open(!0),app.emit("onShowPrivacyPolicy",this)},setKeypad:function(e){auth.pinKeyPad=app.keypad.create({inputEl:"#dbexpress-twofactors-pin",containerEl:".numpad-inline-container",toolbar:!1,valueMaxLength:4,dotButton:!1,dotCharacter:".",formatValue:function(e){return e=e.toString(),"...".substring(0,e.length)+" ".substring(0,4-e.length)},on:{change(e,t){if(4===(t=t.toString()).length&&parseInt(t)>0&&4==t.length){var r=$("#dbexpress-signin-email").val(),a=$("#dbexpress-signin-password").val();auth.signIn(r,a,auth.currentUser.token,parseInt(t))}}}}),auth.pinKeyPad.open()},showTwoFactorsScreen:function(e){e=e||!0,app&&app.preloader.hide(),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] Loading two Factors Popup"),auth.twoFactorsScreen=app.popup.create({el:".dbexpress-twofactors",swipeToClose:!1,backdrop:!0,closeByBackdropClick:!1,closeByOutsideClick:!1,closeOnEscape:!1,animate:e,on:{opened(){auth.setKeypad()}}}),auth.twoFactorsScreen.open(!0),app.emit("onShow2FactorsScreen",this)},showProfileScreen:function(e){app&&app.preloader.hide(),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] Loading User Profile Popup"),auth.profileScreen=app.popup.create({el:".dbexpress-profile"}),auth.profileScreen.open(!0),app.emit("onShowProfileScreen",e)},showRegisterPopup:function(e){app&&app.preloader.hide(),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] Loading Register Popup"),auth.registerScreen=app.popup.create({el:".dbexpress-register"}),auth.registerScreen.open(!0),app.emit("onShowRegisterScreen",e)},initialize:function(){if(0!=thoriumapi.isLocal()||0!=kDesktopAllowed||!app.device.desktop&&Framework7.support.touch&&(app.device.android||Framework7.device.ios)){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] dbExpress Authentification initialization"),thoriumCorePlugin.showAppLoader(!0);var e=auth.getToken();e?auth.checkCurrentToken(e):auth.signIn(null,null,null,null)}},checkCurrentToken:function(e){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] Checking token...");var t=thoriumCorePlugin.httpRoot+kApiRoot+kAuthManagerApi;thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] calling "+t);var r=new FormData;r.append("token",e),fetch(t,{method:"post",body:r,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){if(e){var t=e.code;if(-1012==t)thoriumapi.logEvent(1,"Invalid token: "+e.message+" will try to Signin"),auth.signIn(null,null,null,null);else{if(-1022==t)return auth.showSigninPopup(),void thoriumapi.logEvent(1,"Connection refused: "+e.message);if(-1019==t)return thoriumapi.logEvent(1,"Connection Error: "+e.message+" connecting as Anonymous..."),void auth.signIn(null,null,null,null);if(t<0)auth.showSigninPopup(),thoriumapi.logEvent(2,"Connection Error: "+e.message);else if(0==t){var r={};if(r.token=e.token,auth.currentUser.uid=e.uid,auth.currentUser.displayName=e.displayName,auth.currentUser.email=e.email,auth.currentUser.emailVerified=1==e.emailVerified,auth.currentUser.isAnonymous=1==e.isAnonymous,auth.currentUser.creationTime=e.creationTime,auth.currentUser.modifyTime=e.modifyTime,auth.currentUser.lastSignInTime=e.lastSignInTime,auth.currentUser.language=e.language,auth.currentUser.phoneNumber=e.phoneNumber,auth.currentUser.photoURL=e.photoURL,auth.currentUser.token=e.token,auth.currentUser.headimage=e.headimage,auth.currentUser.group=e.group||0,e.photoURL&&e.photoURL.length>0){var a=auth.getDbAssetsUrlRoot()+e.photoURL+"?rnd="+Math.floor(Date.now()/1e3);$(".dbexpress_avatar").attr("src",a)}else $(".dbexpress_avatar").attr("src","img/defaultavatar.png");$(".dbexpress_avatar").attr("title",auth.currentUser.displayName),$(".user-popover-name").text(auth.currentUser.displayName);try{localStorage.setItem(app.id,JSON.stringify(r))}catch(e){app.dialog.alert(e)}thoriumCorePlugin.showAppLoader(!1),app.emit("onAuthStateChanged",auth.currentUser)}}dbExpressData.applyUserRolePermissions()}else app&&app.preloader.hide(),thoriumCorePlugin.showAppLoader(!1),thoriumapi.logError(!0,"Invalid result"),auth.showSigninPopup()})).catch((function(e){app&&app.preloader.hide(),thoriumCorePlugin.showAppLoader(!1),thoriumapi.logError(!0,"Invalid result "+e.message),auth.showSigninPopup()}))},getCountryList:function(){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] loading countries list...");var e=new FormData;e.append("service","_countries"),e.append("token",auth.currentUser.token);var t=thoriumCorePlugin.httpRoot+kApiRoot+kGetDataApi+"?rnd="+Math.floor(Date.now()/1e3);fetch(t,{method:"post",body:e,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){if(1==thoriumapi.checkResult(e)){var t=e.result,r=document.getElementById("dbexpress-profile-country");t&&t.forEach((function(e){var t=document.createElement("option");t.value=e.iso,t.text=e.nicename,r.appendChild(t)})),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] countries list loaded")}})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.auth] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))},registerFormPost:function(){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] Calling Register web service");var e=new FormData,t=$(".dbexpress-register-password").val(),r=$(".dbexpress-register-email").val(),a=$(".dbexpress-register-displayname").val();e.append("email",r),e.append("password",t),e.append("displayname",a),auth.currentUser.token.length>0&&e.append("token",auth.currentUser.token);var i=thoriumCorePlugin.httpRoot+kApiRoot+kRegisterApi;fetch(i,{method:"post",body:e,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){if(!e)return thoriumapi.logError(!0,"Invalid Server Response (empty)"),void localStorage.clear();if(e.code<0)return thoriumapi.logError(!0,e.message),void localStorage.clear();if(1==e.code)$("#dbexpress-signin-email").val(r),$("#dbexpress-signin-password").val(t),app&&app.preloader.hide(),auth.showSigninPopup(),auth.registerScreen&&auth.registerScreen.close();else if(0==e.code){var a={};a.token=e.token,localStorage.setItem(app.id,JSON.stringify(a)),auth.currentUser.uid=e.uid,auth.currentUser.displayName=e.displayName,auth.currentUser.email=e.email,auth.currentUser.emailVerified=1==e.emailVerified,auth.currentUser.isAnonymous=1==e.isAnonymous,auth.currentUser.creationTime=e.creationTime,auth.currentUser.modifyTime=e.modifyTime,auth.currentUser.lastSignInTime=e.lastSignInTime,auth.currentUser.language=e.language,auth.currentUser.phoneNumber=e.phoneNumber,auth.currentUser.photoURL=e.photoURL,auth.currentUser.headimage=e.headimage,auth.currentUser.group=e.group||0,auth.registerScreen&&auth.registerScreen.close(),$("#dbexpress-signin-email").val(r),$("#dbexpress-signin-password").val(t),thoriumCorePlugin.showAppLoader(!1),app&&app.preloader.hide(),auth.showSigninPopup()}})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.auth] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))},resetPasswordSubmitPost:function(e){var t=document.querySelector(".dbexpress-resetpassword-form #dbexpress-resetpassword-email"),r=null;if(t)r=t.value;var a=new FormData;a.append("email",r);var i=thoriumCorePlugin.httpRoot+kApiRoot+kresetPassword;fetch(i,{method:"post",body:a,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){if(app&&app.preloader.hide(),!e)return thoriumapi.logError(!0,"Invalid Server Response (empty)"),void localStorage.clear();e.code<0?thoriumapi.logError(!0,"Error "+e.message):0==e.code&&(auth.resetPassworScreen&&auth.resetPassworScreen.close(),thoriumapi.showToast(kEmailSent,!0,"bottom",4e3,null))})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.auth] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))},signInFormPost:function(e){var t,r=e.querySelector('input[name="dbexpress-signin-email"]');r&&(t=r.value,r.blur());var a=e.querySelector('input[name="dbexpress-signin-password"]').value;auth.signIn(t,a,"",null)},signIn:function(e,t,r,a){1==kShowPreloader&&app.preloader.show();var i=new FormData;e&&i.append("email",e),t&&i.append("password",t),a&&i.append("pin",a);var o=thoriumCorePlugin.httpRoot+kApiRoot+kAuthManagerApi;fetch(o,{method:"post",body:i,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){if(document.getElementById("dbexpress-twofactors-pin").value=" ",auth.pinKeyPad&&auth.pinKeyPad.setValue(""),e){if(-1020==e.code)localStorage.clear(),auth.currentUser.token=e.token,auth.pinKeyPad?thoriumapi.alert(e.message):auth.showTwoFactorsScreen();else if(-1021==e.code)thoriumapi.alert(e.message);else if(-1009==e.code)auth.showSigninPopup(),thoriumapi.logEvent(1,e.message);else if(-1019==e.code)auth.pinKeyPad?thoriumapi.alert(e.message):auth.showTwoFactorsScreen();else if(-1022==e.code)thoriumapi.alert(e.message);else if(-1022==e.code)thoriumapi.alert(e.message);else if(e.code<0)thoriumapi.alert(e.message);else if(0==e.code){var t={};t.token=e.token;try{localStorage.setItem(app.id,JSON.stringify(t))}catch(e){app.dialog.alert(e)}if(auth.currentUser.uid=e.uid,auth.currentUser.displayName=e.displayName,auth.currentUser.email=e.email,auth.currentUser.emailVerified=1==e.emailVerified,auth.currentUser.isAnonymous=1==e.isAnonymous,auth.currentUser.creationTime=e.creationTime,auth.currentUser.modifyTime=e.modifyTime,auth.currentUser.lastSignInTime=e.lastSignInTime,auth.currentUser.language=e.language,auth.currentUser.phoneNumber=e.phoneNumber,auth.currentUser.photoURL=e.photoURL,auth.currentUser.headimage=e.headimage,auth.currentUser.token=e.token,auth.currentUser.group=e.group||0,$(".dbexpress_avatar").attr("title",auth.currentUser.displayName),e.photoURL&&e.photoURL.length>0){var r=auth.getDbAssetsUrlRoot()+e.photoURL+"?rnd="+Math.floor(Date.now()/1e3);$(".dbexpress_avatar").attr("src",r)}else $(".dbexpress_avatar").attr("src","img/defaultavatar.png");$(".user-popover-name").text(auth.currentUser.displayName),auth.loginScreen&&auth.loginScreen.close(),auth.twoFactorsScreen&&auth.twoFactorsScreen.close(),auth.registerScreen&&auth.registerScreen.close(),thoriumCorePlugin.showAppLoader(!1),app&&app.preloader.hide(),app.emit("onAuthStateChanged",auth.currentUser)}}else thoriumapi.logError(!0,err.message),auth.showSigninPopup()})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.auth] Request failed "+e),thoriumapi.logError(!0,e.message),auth.showSigninPopup()}))},saveProfile:function(){for(var e=document.getElementById("dbexpress-profile-form"),t=document.getElementById("dbexpress-profile-form").elements,r=0;o=t[r++];)if(!o.checkValidity())return app&&app.preloader.hide(),"function"==typeof o.reportValidity&&o.reportValidity(),void thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] Missing Mandatory fields for Form with id ["+e.id+"]");var a=auth.getToken(),i=new FormData;i.append("token",a),i.append("uid",auth.currentUser.uid);var o;for(t=document.getElementById("dbexpress-profile-form").elements,r=0;o=t[r++];){var n=o.name.replace("dbexpress-profile-","");if("photourl"!=n&&"headimage"!=n&&"file"!=o.type)i.append(n,o.value);else if("file"==o.type){var l=o.id,p=$("#"+l);if(p){var s=p.data("data-blob")||"",u=n.replace("-fileinput","");s.length>0&&i.append(u,s)}}}var d=thoriumCorePlugin.httpRoot+kApiRoot+kSetProfileApi;fetch(d,{method:"post",body:i,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){if(e){if(-23e3==e.code)thoriumapi.logError(!0,"User already exists ("+email+")");else if(e.code<0)thoriumapi.logError(!0,e.message);else if(0==e.code){if(auth.currentUser.displayName=e.displayName,auth.currentUser.email=e.email,auth.currentUser.emailVerified=e.emailVerified,auth.currentUser.isAnonymous=e.isAnonymous,auth.currentUser.creationTime=e.creationTime,auth.currentUser.modifyTime=e.modifyTime,auth.currentUser.lastSignInTime=e.lastSignInTime,auth.currentUser.language=e.language,auth.currentUser.phoneNumber=e.phoneNumber,auth.currentUser.photoURL=e.photoURL,auth.currentUser.token=e.token,auth.currentUser.headimage=e.headimage,$(".dbexpress_avatar").attr("title",auth.currentUser.displayName),e.photoURL&&e.photoURL.length>0){var t=auth.getDbAssetsUrlRoot()+e.photoURL+"?rnd="+Math.floor(Date.now()/1e3);$(".dbexpress_avatar").attr("src",t)}$(".user-popover-name").text(auth.currentUser.displayName),app&&app.preloader.hide(),auth.profileScreen.close()}}else thoriumapi.logError(!0,err.message),auth.showSigninPopup()})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.auth] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))},loadProfileScreen:function(){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] Loading User Profile"),1==kShowPreloader&&app.preloader.show();var e=auth.getToken(),t=new FormData;if(e)if(t.append("token",e),auth.currentUser.email){t.append("email",auth.currentUser.email);var r=thoriumCorePlugin.httpRoot+kApiRoot+kGetProfileApi;fetch(r,{method:"post",body:t,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){if(e){if(e.code<0)thoriumapi.logError(!0,"error "+e.code+": "+e.message);else if(0==e.code){if(auth.currentUser.uid=e.uid,auth.currentUser.displayName=e.displayName,auth.currentUser.email=e.email,auth.currentUser.emailVerified=1==e.emailVerified,auth.currentUser.isAnonymous=1==e.isAnonymous,auth.currentUser.creationTime=e.creationTime,auth.currentUser.modifyTime=e.modifyTime,auth.currentUser.lastSignInTime=e.lastSignInTime,auth.currentUser.language=e.language,auth.currentUser.phoneNumber=e.phoneNumber,auth.currentUser.photoURL=e.photoURL,$(".profile-displayname").text(e.displayName),$(".profile-shortdesc").text(e.shortdesc),e.country&&e.country.length>0?$(".dbexpress-profile-flag").css("background-image","url("+thoriumCorePlugin.httpRoot+kApiRoot+"flags/4x3/"+e.country.toLowerCase()+".svg)"):$(".dbexpress-profile-flag").css("background-image",""),e.photoURL&&e.photoURL.length>0){var t=auth.getDbAssetsUrlRoot()+e.photoURL+"?rnd="+Math.floor(Date.now()/1e3);$("#dbexpress-profile-photourl").css("background-image","url("+t+")")}else $("#dbexpress-profile-photourl").css("background-image","url(./img/defaultavatar.png)");if(e.headimage&&e.headimage.length>0){t=auth.getDbAssetsUrlRoot()+e.headimage+"?rnd="+Math.floor(Date.now()/1e3);$("#dbexpress-profile-headimage").css("background-image","url("+t+")")}else $("#dbexpress-profile-headimage").css("background-image","url(./img/defaultimg.png)");$("#dbexpress-profile-photourl-fileinput").data("data-blob",""),$("#dbexpress-profile-photourl-fileinput").data("data-type",""),$("#dbexpress-profile-photourl-fileinput").data("data-filename",""),$("#dbexpress-profile-photourl-rotate")&&$("#dbexpress-profile-photourl-rotate").hide(),$("#dbexpress-profile-photourl-remove")&&$("#dbexpress-profile-photourl-remove").hide(),$(".dbexpress-profile-email").val(e.email),$(".dbexpress-profile-displayname").val(e.displayName),$(".dbexpress-profile-phonenumber").val(e.phoneNumber),$(".dbexpress-profile-recoveryemail").val(e.recoveryemail),$(".dbexpress-profile-bio").val(e.bio),$(".dbexpress-profile-firstname").val(e.firstname),$(".dbexpress-profile-lastname").val(e.lastname),$(".dbexpress-profile-gender").val(e.gender),$(".dbexpress-profile-address").val(e.address),$(".dbexpress-profile-city").val(e.city),$(".dbexpress-profile-country").val(e.country),$(".dbexpress-profile-zip").val(e.zip),$(".dbexpress-profile-shortdesc").val(e.shortdesc),$(".dbexpress-profile-birthday").val(e.birthday),$(".dbexpress-profile-state").val(e.state),$(".dbexpress_avatar").attr("title",auth.currentUser.displayName),$(".user-popover-name").text(auth.currentUser.displayName),thoriumCorePlugin.showAppLoader(!1),app&&app.preloader.hide(),auth.showProfileScreen()}}else thoriumapi.logError(!0,result)})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.auth] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))}else thoriumapi.logError(!0,"Invalid email");else thoriumapi.logError(!0,"Invalid Token")},handleAvatarPopup:function(e,t){e.preventDefault(),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] Click/Touch on User Monitor");var r=document.querySelector(".dbexpress-signin .toolbar .title").textContent||"Sign In",a=document.querySelector(".dbexpress-register .navbar .title").textContent||"Register",i=document.querySelector(".dbexpress-profile .navbar .title").textContent||"Profile",o=auth.currentUser;if(o&&1!=o.isAnonymous)(n=app.actions.create({buttons:[[{text:i,bold:!0,onClick:function(e){auth.loadProfileScreen()}}],[{text:kLogout,color:"red",onClick:function(e){app.dialog.confirm(kLogout+"?",(function(){auth.logout()}))}}]]})).open(!0);else if(1==(auth.allowRegister||!1)){var n=app.actions.create({buttons:[[{text:a,bold:!0,onClick:function(e){auth.showRegisterPopup(e)}}],[{text:r,bold:!0,onClick:function(e){auth.showSigninPopup(e)}}]]});n.open(!0)}},logout:function(){1==kShowPreloader&&app.preloader.show();var e=auth.getToken(),t=new FormData;e&&t.append("token",e);var r=thoriumCorePlugin.httpRoot+kApiRoot+kSignOutApi;fetch(r,{method:"post",body:t,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){1==thoriumapi.checkResult(e)&&(e.code<0?thoriumapi.logError(!0,"error "+e.code+": "+e.message):0==e.code&&(localStorage.clear(),location.reload()))})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.auth] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))}},dbExpressMaps={name:"Thorium Builder JSON API Plugin",bundleid:"com.thoriumbuilder.dbexpress.map",version:"3.0.0",initAllopenStreetMaps:function(e){for(var t=document.querySelectorAll(".openstreetmap-api"),r=0;r<t.length;r++){var a=t[r],i=a.getAttribute("data-loaded")||"false",o=a.getAttribute("data-dbsource")||null;if("false"==i||1==e)openStreetMapPlugin.showPreloader(),openStreetMapPlugin.initMap(a.id)&&"sqlite"==o&&void 0!==dbExpressMaps&&(thoriumapi.logEvent(0,"[com.thoriumbuilder.leaflet] Get Markers from Sqlite for OSM Map with id:"+a.id),dbExpressMaps.loadPlaces(a,"osm"));else thoriumapi.logEvent(0,"[com.thoriumbuilder.leaflet] OSM Map with ID ["+a.id+"] already initialized")}},initAllGoogleMaps:function(e){for(var t=document.querySelectorAll(".googlemapAPI"),r=0;r<t.length;r++){var a=t[r],i=a.getAttribute("data-loaded")||"false",o=a.getAttribute("data-dbsource")||null;"false"!=i&&1!=e||"sqlite"!=o?thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.maps] Google Map with ID ["+a.id+"] already initialized"):(1==kShowPreloader&&app.preloader.show(),thoriumapi.logEvent(0,"[com.thoriumbuilder.leaflet] Get Markers from Sqlite for OSM Map with id:"+a.id),dbExpressMaps.loadPlaces(a,"googlemap"))}},loadPlaces:function(e,t,r){r=r||"googlemap",thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.maps] map engine initialization ["+r+"]");var a,i=document.querySelector(".page-current");i&&(a=i.getAttribute("data-record-pk")||null),1==kShowPreloader&&app.preloader.show(),dbExpressData.getRepeaterData(e,a,!1,"")},addMarkersToMap:function(e,t,r){if("undefined"!=typeof openStreetMapPlugin||"osm"!=r)if("undefined"!=typeof googleMapPlugin||"googlemap"!=r){1==kShowPreloader&&app.preloader.show();var a=e.closest(".page-content");a&&app.preloader.showIn(a);var i=e.getAttribute("data-target")||"",o=0;thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.maps] adding items to OSM map");var n,l=e.getAttribute("data-img-field")||null,p=e.getAttribute("data-name-field")||null,s=e.getAttribute("data-address-field")||null,u=e.getAttribute("data-description-field")||null,d=e.getAttribute("data-subtitle-field")||null,c=e.getAttribute("data-badge-field")||null,m=e.getAttribute("data-latitude-field")||null,h=e.getAttribute("data-longitude-field")||null,g=e.getAttribute("data-rating-field")||null,b=e.getAttribute("data-service")||null,f=e.getAttribute("data-json-maxrows")||1e4;if(0==f&&(f=1e4),"osm"==r&&!(n=openStreetMapPlugin.addMapCluster(e.map))){app.preloader.hide();var v="[com.thoriumbuilder.dbexpress.maps] map engine initialization failed, unable to create cluster ["+engine+"]";return thoriumapi.logEvent(2,v),void app.dialog.alert(v)}for(var x in t){var y=t[x];if(y.target=i,y.uid=y.uid,y.pk=y.pk,y.service=b,p&&(y.name=y[p]),s&&(y.address=y[s]),u&&(y.desc=y[u]),d&&(y.subtitle=y[d]),c&&(y.badge=y[c]),m&&(y.latitude=y[m]),h&&(y.longitude=y[h]),g&&(y.rating=y[g]),l){var A=y[l];A&&A.length>0&&(y.locimage="./db/dbassets/"+A)}var k=y.uid,E=parseFloat(y.latitude),w=parseFloat(y.longitude);if(y.uid=k,E&&w)if("osm"==r){var S=e.data;openStreetMapPlugin.addMarkertoClusterAt(n,E,w,y)}else if("googlemap"==r){var D=new google.maps.LatLng(E,w);googleMapPlugin.addMarker(e.map,D,y.name,y.uid,y.address,y.locimage,y.desc,y.subtitle,y.badge,y.rating,y.target,null,y.pk,y.service)}if((o+=1)>f)break}if("osm"==r){S=e.data;thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] "+o+" markers added to Map Cluster"),openStreetMapPlugin.addClusterToMap(S,n)}app.preloader.hide(),a&&app.preloader.hideIn(a)}else app.preloader.hide();else app.preloader.hide()},loadPlacesCallback:function(e,t){if("undefined"!=typeof googleMapPlugin){var r,a=e.getDiv();for(var i in a&&(a.getAttribute("id")||"",r=a.getAttribute("data-target")||""),t){var o=t[i],n=parseFloat(o.latitude),l=parseFloat(o.longitude),p=new google.maps.LatLng(n,l),s=o.name||"",u=hash_encode(o.pk),d=o.address,c=o.img_name,m=o.description,h=o.subtitle,g=o.badge,b=o.rating;0!=n&&0!=l&&googleMapPlugin.addMarker(e,p,s,u,d,c,m,h,g,b,r)}}},initDisplayerMap:function(e,t,r){if(t&&r){var a=e.getAttribute("data-engine")||null;if(a||"undefined"==typeof openStreetMapPlugin?a||"undefined"==typeof googleMapPlugin||(a="googlemap"):a="osm",thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.maps] Loading Displayer Map with Engine ["+a+"]"),"osm"==a&&"undefined"!=typeof openStreetMapPlugin){var i=openStreetMapPlugin.initMap(e.id);if(i){var o={};o.latitude=t,o.longitude=r,o.name=t+";"+r,openStreetMapPlugin.addMarkerAt(i,t,r,o),i.panTo(new L.LatLng(t,r))}}else if("googlemap"==a&&"undefined"!=typeof googleMapPlugin){googleMapPlugin.initializeMap(e.id);var n=new google.maps.LatLng(parseFloat(t),parseFloat(r));googleMapPlugin.addMarker(e.map,n,t+";"+r),e.map.setCenter(n)}}else e.style.display="none"}},dbExpressData={name:"Thorium Builder JSON API Plugin",bundleid:"com.thoriumbuilder.dbexpress.data",version:"3.0.0",allowInfinite:!0,currentRecord:{},onAuthStateChanged:function(){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Initializing dbExpress API"),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Checking Repeaters State");for(var e=document.querySelectorAll(".infinite-scroll-preloader"),t=0;t<e.length;t++){e[t].style.visibility="hidden"}dbExpressData.applyUserRolePermissions(),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Checking DbExpress Displayers State");var r=document.querySelectorAll(".dbexpress-displayer");for(t=0;t<r.length;t++){var a=r[t];if("true"!=a.getAttribute("data-loaded")){a.style.visibility="hidden";var i=a.getAttribute("data-service")||null,o=document.querySelector(".page-current");i&&o&&dbExpressData.loadRecord(o,i,null)}}dbExpressData.initAllRepeaters(!0),"undefined"!=typeof openStreetMapPlugin&&dbExpressMaps.initAllopenStreetMaps(!0),"undefined"!=typeof googleMapPlugin&&dbExpressMaps.initAllGoogleMaps(!0),thoriumCorePlugin.initForms()},executeCustomSelectService:function(e,t,r,a,i,o,n,l){if(!auth.currentUser.token||0==auth.currentUser.token.length)return thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] Unable to load data, No Active User"),void(app&&app.preloader.hide());if("function"!=typeof t)return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] Unable to execute Service, Callback function is undefined"),void(app&&app.preloader.hide());var p={method:"post"},s=new FormData;s.append("service",e),s.append("token",auth.currentUser.token),r&&a&&i&&(s.append("field1",r),s.append("operator1",a),s.append("value1",i),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Adding Filter ["+r+a+i+"]")),o&&n&&l&&(s.append("field2",o),s.append("operator2",n),s.append("value2",l),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Adding Filter ["+o+n+l+"]")),1==kShowPreloader&&app.preloader.show(),p.body=s;var u=thoriumCorePlugin.httpRoot+kApiRoot+kGetDataApi+"?rnd="+Math.floor(Date.now()/1e3);fetch(u,p).then((function(r){r.text().then((r=>{var a;thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Got Response from url ["+u+"]");try{a=JSON.parse(r)}catch(e){return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+e.message),app.emit("dbExpressDataLoadError",$(this),e.message),app&&app.preloader.hide(),void t(-1,e.message,0,null)}if(a&&a.code<0||!a){var i="Unable to execute Service ["+e+"], error "+a.code+": "+a.message;return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+i),app.emit("dbExpressDataLoadError",$(this),i),app&&app.preloader.hide(),void t(a.code,a.message,0,null)}var o=0,n=a.result;if(n)for(var l in n)n[o].dataindex=o,n[o].service=e,o+=1,1;n||(n={}),t(a.code,a.message,a.count,a.result),app&&app.preloader.hide()})).catch((function(e){app&&app.preloader.hide(),thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+e),app.emit("dbExpressDataLoadError",$(this),e),t(-1,e,0,null)}))})).catch((function(p){if(app&&app.preloader.hide(),1==thoriumapi.isLocal())return thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] - server busy ["+p.message+"], relaunch service ["+e+"]"),void dbExpressData.executeCustomSelectService(e,t,r,a,i,o,n,l);thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] - service ["+e+"] "+p.message),app.emit("dbExpressDataLoadError",$(this),p),0==app.online||t(-2,p,0,null)}))},getParentRecord:function(e,t,r,a){if(!auth.currentUser.token||0==auth.currentUser.token.length)return thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] Unable to load data, No Active User"),void app.preloader.hide();var i={method:"post"},o=new FormData;o.append("service",e),o.append("token",auth.currentUser.token),o.append("field1","a.pk"),o.append("operator1","="),o.append("value1",t),1==kShowPreloader&&app.preloader.show(),i.body=o;var n=thoriumCorePlugin.httpRoot+kApiRoot+kGetDataApi+"?rnd="+Math.floor(Date.now()/1e3);fetch(n,i).then((function(i){i.text().then((i=>{var o;thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Got Response from url ["+n+"]");try{o=JSON.parse(i)}catch(e){return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+e.message),app.emit("dbExpressDataLoadError",$(this),e.message),app.preloader.hide(),void app.dialog.alert(e.message)}if(o&&o.code<0||!o){var l="Unable to execute Service ["+e+"], error "+o.code+": "+o.message;return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+l),app.emit("dbExpressDataLoadError",$(this),l),app.preloader.hide(),void app.dialog.alert(o.message)}if(o.count=1){var p=app.view,s=o.result[0].uid;p&&p.length>0&&app.view[0].router.navigate("/"+r+"/?rowindex=0&uid="+s+"&pk="+t+"&service="+e,{animate:!0,transition:a,reloadAll:!1})}app.preloader.hide()})).catch((function(e){app.preloader.hide(),thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+e),app.emit("dbExpressDataLoadError",$(this),e),app.dialog.alert(e)}))})).catch((function(i){if(app.preloader.hide(),1==thoriumapi.isLocal())return thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] - server busy ["+i.message+"], relaunch service ["+e+"]"),void dbExpressData.getParentRecord(e,t,r,a);thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] - service ["+e+"] "+i.message),app.emit("dbExpressDataLoadError",$(this),i),0==app.online?thoriumCorePlugin.showNotification("Internet connection lost"):app.dialog.alert(i)}))},initAllRepeaters:function(e){for(var t=document.querySelectorAll(".dbexpress-virtual-list-content"),r=0;r<t.length;r++){var a=t[r];if("true"!=a.getAttribute("data-loaded")||1==e)if(a.getAttribute("data-service")||null){var i=a.getAttribute("data-noload")||null;i&&"true"==i?thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Repeater with ID ["+field.id+"] is set to noload-data"):dbExpressData.getRepeaterData(a)}else thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Service is not defined for Repeater with ID ["+a.id+"]")}},applyUserRolePermissions:function(e){if(e=e||document)for(var t=e.querySelectorAll("* [data-permission]"),r=0;r<t.length;r++){var a,i=t[r];if((i.getAttribute("data-permission")||0)>auth.currentUser.group)"none"!=(a=i.style.display)&&i.setAttribute("data-display",a),i.style.visibility="hidden",i.style.display="none";else i.style.visibility="visible","none"==(a=i.getAttribute("data-display")||"block")&&(a="block"),i.style.display=a}},addItemToAllRepeaters:function(e,t){t.service=e;for(var r=document.querySelectorAll(".dbexpress-virtual-list-content[data-service='"+e+"']"),a=0;a<r.length;a++){var i=r[a],o=app.virtualList.get(i);o?(o.items.length?(t.dataindex=o.items.length,o.prependItem(t)):(t.dataindex=0,o.items=[],o.prependItem(t)),o.update()):1==i.classList.contains("dbexpress-horizontal-list")&&dbExpressData.getRepeaterData(i)}},replaceItemInAllRepeaters:function(e,t){t.service=e;for(var r=document.querySelectorAll(".dbexpress-virtual-list-content[data-service='"+e+"']"),a=0;a<r.length;a++){var i=r[a],o=app.virtualList.get(i);if(o){for(var n=0;n<o.items.length;n++)o.items[n].uid==t.uid&&(t.dataindex=n,o.replaceItem(n,t));o.update()}else 1==i.classList.contains("dbexpress-horizontal-list")&&dbExpressData.getRepeaterData(i)}if(t.uid){var l=document.querySelectorAll(".dbexpress-virtual-list-content .virtual-list-media[data-img-name='"+t.uid+"-1.jpg']");for(a=0;a<l.length;a++){var p=(i=l[a]).getAttribute("data-img-name");i.style.backgroundImage="url('db/dbassets/"+p+"?rnd="+Math.floor(Date.now()/1e3)+"')"}var s=document.querySelectorAll(".dbexpress-displayer[data-service='"+e+"']");for(a=0;a<s.length;a++){i=s[a];dbExpressData.fillDisplayerFromMemoryData(i,t)}for(r=document.querySelectorAll(".dbexpress-image-content"),a=0;a<r.length;a++){if((p=(i=r[a]).getAttribute("data-img-name")).length>0?i.style.backgroundImage="url('db/dbassets/"+p+"?rnd="+Math.floor(Date.now()/1e3)+"')":i.style.backgroundImage="url(./img/defaultimg.png)",p&&p.length>0){var u=i.closest(".dbexpress-image");u&&(u.style.display="block")}}}},showVerticalRepeaterZoom:function(e,t){thoriumapi.logEvent(0,"[com.thoriumbuilder.core] Show Horizontal Repeater Photo Browser");var r=[],a=0,i=0,o=t.querySelector(".dbexpress-image-content");if(o)var n=o.getAttribute("data-img-name");for(var l=e.querySelectorAll(".item-dbexpress"),p=0;p<l.length;p++){var s=l[p];if(0==s.classList.contains("templaterow")){var u=s.querySelector(".dbexpress-image-content");if(u){var d=u.getAttribute("data-img-name");d==n&&(a=i);var c={};c.url=auth.getDbAssetsUrlRoot()+d,r.push(c),i+=1}}}thoriumCorePlugin.showPhotoBrowser(r,a)},fillSmartSelect:function(e,t){if("true"!=e.getAttribute("data-loaded")){var r=e[0].closest(".page-content");r&&app.preloader.showIn(r);var a=e.getAttribute("data-service-field")||null;if(a){var i='<option value="" selected disabled class="disabled"></option>',o=thoriumCorePlugin.httpRoot+kApiRoot+kGetDataApi+"?rnd="+Math.floor(Date.now()/1e3),n={method:"post"},l=new FormData;l.append("service",t),l.append("token",auth.currentUser.token);a.replace("{{","").replace("}}","").trim();l.append("maxrows",1e4),n.body=l,fetch(o,n).then(thoriumapi.status).then(thoriumapi.json).then((function(t){if(t&&t.code>=0){var o=0,n=e.getAttribute("data-value")||null,l=t.result,p='<option value="{{pk}}" {{selected}} >'+a+"</option>",s=(o=0,e.getAttribute("data-parent-pk")||null);if(l){var u=e.getAttribute("data-service-field")||null;for(var d in l){l[d].dataindex=o,o+=1;var c=p,m=a,h=!1;for(var g in l[d])s&&"pk"==g&&l[d][g]==s?(c=c.replace("{{selected}}","selected"),h=!0):c=c.replace("{{selected}}",""),c=c.replace("{{"+g+"}}",l[d][g]),m=m.replace("{{"+g+"}}",l[d][g]),1==h&&u=="{{"+g+"}}"&&app.dialog.alert(g);i+=c}if(e.innerHTML=i,s){var b=e.closest(".smart-select");(f=app.smartSelect.get(b))&&f.setValue(s),"select"==e.tagName.toLowerCase()&&(e.value=s)}if(n){var f;if(b=e.closest(".smart-select"))(f=app.smartSelect.get(b))&&f.setValue(n);"select"==e.tagName.toLowerCase()&&(e.value=n)}e.setAttribute("data-loaded","true"),r&&app.preloader.hideIn(r)}}})).catch((function(e){app.emit("dbExpressDataLoadError",$(this),e),thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.data] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))}else thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] Service Field is not defined for Form Input with ID ["+e.id+"] ")}},sendData:function(e,t,r){if("function"==typeof r)if(t)if(e&&0!=e.length){var a=thoriumCorePlugin.httpRoot+kApiRoot+kSetDataApi;t.append("service",e.toLowerCase()),t.append("token",auth.currentUser.token);var i=!1;1==app.device.capacitor&&(thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Capacitor App detected, switching to cross domain mode"),i=!0);thoriumapi.logEvent(0,"Sending Custom Data to: ["+a+"]"),app.request({url:a,data:t,method:"post",crossDomain:i,contentType:"multipart/form-data",headers:"",timeout:0,dataType:"text",processData:!0,username:"",password:"",async:!0,error(t,a){var i=(t.responseText+" "+t.statusText).trim();thoriumapi.logEvent(2,"[com.thoriumbuilder.core] Error: ["+i+"] when executing WebService "+e),r(-1,i,null)},success(t,a,i){var o;try{o=JSON.parse(t)}catch(t){return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] Error: ["+t.message+"] when executing WebService "+e),void r(-1,t.message,null)}if(o&&o.code<0){var n="Unable to execute Service ["+e+"], error "+o.code+": "+o.message;return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+n),void r(o.code,o.message,null)}if(!o){n="Unable to execute Service ["+e+"], empty result";return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+n),void r(-1,n,null)}if(o.result&&o.result.length>0){item=o.result[0];o.inserted;r(o.code,o.message,item)}thoriumapi.logEvent(0,"[com.thoriumbuilder.core] WebService executed with Success")}})}else thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] Invalid Service Name");else thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] Invalid Form Data");else thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] Unable to execute Service, Callback function is undefined")},submitForm:function(e,t){var r=e.target;if(0!=app.input.validateInputs(r)){var a=t.attr("data-mode")||null;if((3==a||4==a||5==a)&&0!=r.classList.contains("dbexpress-form")){e.preventDefault,thoriumapi.logEvent(0,"[com.thoriumbuilder.core] Submiting Form with id ["+r.id+"]"),thoriumapi.logEvent(0,"[com.thoriumbuilder.core] Formating Data for Form with id ["+r.id+"]");for(var i=new FormData,o=0;o<r.length;o++){var n,l="_alias",p=["name"+l,"id"+l,"description"+l,"this"+l,"title"+l,"submit"+l],s=r[o].name;!0===p.includes(s)&&(s=s.replaceAll(l,"")),s.length>0&&(n=r.querySelector("input[name="+s+"]"));var u,d=r[o].type;if(n&&"text"==d?(n.getAttribute("type"),u=n.getAttribute("data-date-type")||null):null,"radio"==d)!0===r[o].checked&&i.append(s,r[o].value);else if("checkbox"==d)i.append(s,r[o].checked);else if("submit"==d);else if("file"==d){if(1==("true"==r[o].getAttribute("data-modified")||!1)){var c=r[o].id,m=$("#"+c);if(m){var h=m.data("data-blob");h||(h=""),-1==s.indexOf("-fileinput")&&(s+="-fileinput"),i.append(s,h)}}}else if(!u||"datetime-local"!=u&&"date"!=u)i.append(s,r[o].value);else if("time"==d){var g=r[o].value,b=(g=(g=(g=g.replace(" ","")).replace("am","")).replace("pm","")).substring(0,2),f=g.substring(3),v=60*parseInt(b)+parseInt(f);i.append(s,v)}else{var x=r[o].getAttribute("data-timestamp")||null;x?i.append(s,x):i.append(s,r[o].value)}}var y=thoriumCorePlugin.httpRoot+kApiRoot+kSetDataApi,A=document.querySelector(".page-current");if(4==a||5==a){var k=A.getAttribute("data-record-uid")||null;i.append("uid",k)}else if(3==a){var E=A.getAttribute("data-record-pk")||null;"null"==E&&(E=null);var w=A.getAttribute("data-record-service")||null;w!=S&&w&&E&&i.append("fk_"+w,E)}var S=t.attr("data-service")||null;S&&i.append("service",S),i.append("token",auth.currentUser.token);var D="",P=!1,C="multipart/form-data",R=!0,U="",T="",L=0,I=t.attr("data-form-beforesubmit");if(I){var F=window[I],q={};q.formdata=i,q.headers=D,q.url=y,q.crossDomain=P,q.contentType=C,q.async=R,q.username=U,q.password=T,q.timeout=L;var M=[r,q];if("function"==typeof F){var N=F.apply(this,M);thoriumapi.logEvent(0,"[com.thoriumbuilder.core] Function ["+I+"] Called for Form with id ["+r.id+"]"),N&&(i=N.formdata,D=N.headers,y=N.url,P=N.crossDomain,C=N.contentType,R=N.async,U=N.username,T=N.password,L=N.timeout)}else{var V='[com.thoriumbuilder.core] An error occured "'+I+'" is not an existing function';thoriumapi.logEvent(2,V)}}1==kShowPreloader&&app.preloader.show(),thoriumapi.logEvent(0,"Sending Data to: ["+y+"] from Form with id ["+r.id+"]"),app.request({url:y,data:i,method:"post",crossDomain:P,contentType:C,headers:D,timeout:L,dataType:"text",processData:!0,username:U,password:T,async:R,error(e,a){app&&app.preloader.hide();var i=t.attr("data-form-error-message")||"",o=(e.responseText+" "+e.statusText).trim();thoriumapi.logEvent(2,"[com.thoriumbuilder.core] Form Error: ["+o+"] when submitting Form with id ["+r.id+"]"),i.length>0?thoriumCorePlugin.showAlert(i):thoriumCorePlugin.showAlert("An error occured ["+e.responseText+" "+e.statusText+"] when submitting Form with id ["+r.id+"]"),app.emit("userFormError",o,r,a,e)},success(i,o,n){app&&app.preloader.hide();try{var l=JSON.parse(i)}catch(e){return thoriumapi.logEvent(2,"Error "+e),void app.dialog.alert(e)}if(l&&l.code<0)return thoriumapi.logEvent(2,"Error "+l.code+" "+l.message),void app.dialog.alert(l.message);if(!l)return thoriumapi.logEvent(2,"Error, invalid result"),void app.dialog.alert("Error, invalid result");var p={};l.result&&l.result.length>0&&(p=l.result[0]);var s=1==l.inserted,u=t.attr("data-service")||null;1==s&&u&&3==a?dbExpressData.addItemToAllRepeaters(u,p):0==s&&u&&3!=a&&dbExpressData.replaceItemInAllRepeaters(u,p),thoriumapi.logEvent(0,"[com.thoriumbuilder.core] Form with id ["+r.id+"] Sent with Success");var d=t.attr("data-form-message")||null;if(d&&d.length>0&&thoriumCorePlugin.showAlert(d),app.emit("userFormSuccess",i,r,o,n),"true"==(t.attr("data-reset-form")||"false")){thoriumapi.logEvent(0,"[com.thoriumbuilder.core] Form Reset"),e.target.reset(),$("#"+e.target.id+" .text-editor").each((function(e){var t=app.textEditor.get("#"+e.id);t&&t.setValue("")}));for(var c=r.querySelectorAll("select"),m=0;m<c.length;m++){c[m].value="";var h=r.querySelector(".smart-select .item-after");h&&(h.innerText="")}$(".firebase_document_preview").css("background-image",""),$(".input-filename span").html(""),$(".firebase_fileupload-rotate").hide(),$(".firebase_fileupload-remove").hide(),$(".input-filename i").hide()}var g=t.attr("data-return-function")||null;if(g){thoriumapi.logEvent(0,"[com.thoriumbuilder.core] Form with id ["+r.id+"] : Calling JS function ["+g+"]");var b=window[g],f=[r,i,o,n];if("function"==typeof b){b.apply(this,f);app&&app.preloader.hide(),thoriumapi.logEvent(0,"[com.thoriumbuilder.core] JS function ["+g+"] called successfully when submitting Form with id ["+r.id+"]")}else{app&&app.preloader.hide();var v='An error occured "'+g+'" is not an existing function';thoriumapi.logEvent(2,"[com.thoriumbuilder.core] JS function ["+g+"] called with Error: ["+v+"] when submitting Form with id ["+r.id+"]"),thoriumCorePlugin.showAlert(v),app.emit("userFormError",v,r,o,n)}}var x=t.attr("data-form-postprocess")||0;0==x?thoriumapi.logEvent(0,"[com.thoriumbuilder.core] Form Sent"):1==x?(thoriumapi.logEvent(0,"[com.thoriumbuilder.core] Going Back to Previous Page"),thoriumCorePlugin.backToPreviousPage()):2==x&&(thoriumapi.logEvent(0,"[com.thoriumbuilder.core] Reloading Home Page"),thoriumCorePlugin.reloadHomePage())}})}}else thoriumapi.logEvent(0,"[com.thoriumbuilder.core] Missing Mandatory fields for Form with id ["+r.id+"]")},executeRepeaterFullText:function(e){var t=e.value,r=e.form,a="true"==r.getAttribute("data-custom-search")||!1,i=r.getAttribute("data-search-mode")||0,o="true"==r.getAttribute("data-soundex")||!1,n=r.getAttribute("data-search-field")||null;if(t&&t.length>0&&1==a){e.blur();var l=r.getAttribute("data-search-container"),p=document.querySelector(l);if(p){p.setAttribute("data-loaded",!1);var s=p.getAttribute("data-parentuid")||null;0==i||(1==i?t+="*":2==i&&(t="*"+t+"*")),1==kShowPreloader&&app.preloader.show(),dbExpressData.getRepeaterData(p,s,!1,t,null,null,o,n)}}},deleteRecord:function(e,t,r,a,i){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.data] delete record with id ["+a+"] from service ["+t+"]"),1==kShowPreloader&&app.preloader.show();var o=new FormData;o.append("token",auth.currentUser.token),o.append("service",t),o.append("uid",r),o.append("pk",a);var n=thoriumCorePlugin.httpRoot+kApiRoot+kDeleteDataApi;fetch(n,{method:"post",body:o,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){if(e&&e.code<0)app&&app.preloader.hide(),app.dialog.alert(e.message);else if(e&&0==e.code){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.data] record with id ["+a+"] from service ["+t+"] deleted");for(var o=document.querySelectorAll(".dbexpress-virtual-list-content[data-service='"+t+"']"),n=o.length-1;n>=0;n--){var l=o[n],p=app.virtualList.get(l);if(p){for(var s=0;s<p.items.length;s++)p.items[s].uid==r&&p.deleteItem(s);p.update()}else for(var u=l.querySelectorAll(".item-dbexpress[data-uid='"+r+"']"),d=0;d<u.length;d++){var c=u[d];c&&c.remove()}}app&&app.preloader.hide(),1==i&&thoriumCorePlugin.backToPreviousPage()}})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.data] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))},handleDelete:function(e){var t=e.getAttribute("data-message")||"Delete?";app.dialog.confirm(t,(function(){var t=!0;e.closest(".dbexpress-virtual-list-content")&&(t=!1),e.closest(".dbexpress-displayer")&&(t=!0);var r=e.getAttribute("data-pk")||null,a=e.getAttribute("data-uid")||null,i=e.getAttribute("data-service")||null;"null"==r&&(r=null),"null"==a&&(a=null),"null"==i&&(i=null),i&&r&&a&&dbExpressData.deleteRecord(e,i,a,r,t)}))},hideInfinitePreloaders:function(){var e=document.querySelectorAll(".infinite-scroll-preloader");if(e)for(var t=0;t<e.length;t++){e[t].style.visibility="hidden"}},getRepeaterData:function(e,t,r,a,i,o,n,l){r=r||!1,a=a||null,i=i||null,o=o||null,n=n||!1,l=l||null;var p=e.getAttribute("data-service")||null;if(!p)return dbExpressData.hideInfinitePreloaders(),thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] Service not defined for Repeater with ID ["+e.id+"]"),void(app&&app.preloader.hide());if(!auth.currentUser.token||0==auth.currentUser.token.length)return dbExpressData.hideInfinitePreloaders(),thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] Unable to load data, No Active User"),void app.preloader.hide();if(1==r){if(1==("true"==e.getAttribute("data-fetched")||!1))return dbExpressData.allowInfinite=!0,void dbExpressData.hideInfinitePreloaders()}else e.setAttribute("data-offset",0),e.setAttribute("data-fetched",!1),dbExpressData.allowInfinite=!0;l?e.setAttribute("data-fulltext-field",l):l=e.getAttribute("data-fulltext-field")||null;var s=parseInt(e.getAttribute("data-offset")||0),u=$("#"+e.id);if(!u)return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] Virtual List not found for Repeater with ID ["+e.id+"]"),dbExpressData.allowInfinite=!0,app&&app.preloader.hide(),void dbExpressData.hideInfinitePreloaders();var d=app.virtualList.get(u),c=thoriumCorePlugin.httpRoot+kApiRoot+kGetDataApi+"?rnd="+Math.floor(Date.now()/1e3);thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Get data for Repeater with ID ["+e.id+"] from url ["+c+"]");var m={method:"post"},h=new FormData;if(h.append("service",p),h.append("token",auth.currentUser.token),t&&t.length>0){(g=e.getAttribute("data-foreign-key")||null)&&(h.append("parentpk",t),h.append("foreignkey",g),e.setAttribute("data-parent-pk",t),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Adding Filter [Parent key "+g+"="+t+"]"))}else{var g=e.getAttribute("data-foreign-key")||null,b=e.getAttribute("data-parent-pk")||null;g&&b&&(h.append("parentpk",b),h.append("foreignkey",g))}if(i&&o)h.append("extraparentpk",o),h.append("extraforeignkey",i),e.setAttribute("data-parent-fk",i),e.setAttribute("data-parent-fk-value",o);else{i=e.getAttribute("data-parent-fk")||null,o=e.getAttribute("data-parent-fk-value")||null;i&&o&&(h.append("extraparentpk",o),h.append("extraforeignkey",i))}a&&a.length>0&&(h.append("search",a),e.setAttribute("data-search",a),l&&h.append("fulltext-field",l),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Adding Filter [ full text search with value "+a+"]"));var f=e.getAttribute("data-filter-field"),v=e.getAttribute("data-filter-operator"),x=e.getAttribute("data-filter-value"),y=e.getAttribute("data-filter-field2"),A=e.getAttribute("data-filter-operator2"),k=e.getAttribute("data-filter-value2");if(0==x.indexOf("{")&&x.indexOf("}")>-1){w=(w=x.replace("{","")).replace("}","");try{x=window[w]}catch(e){dbExpressData.hideInfinitePreloaders(),app&&app.preloader.hide();var E="[com.thoriumbuilder.dbexpress] Unable to find variable "+w+"] "+e;return thoriumapi.logEvent(2,E),void app.dialog.alert(E)}}if(0==k.indexOf("{")&&k.indexOf("}")>-1){var w;w=(w=k.replace("{","")).replace("}","");try{k=window[w]}catch(e){dbExpressData.hideInfinitePreloaders(),app&&app.preloader.hide();E="[com.thoriumbuilder.dbexpress] Unable to find variable "+w+"] "+e;return thoriumapi.logEvent(2,E),void app.dialog.alert(E)}}f&&v&&x&&(h.append("field1",f),h.append("operator1",v),h.append("value1",x),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Adding Filter ["+f+v+x+"]")),y&&A&&k&&(h.append("field2",y),h.append("operator2",A),h.append("value2",k),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Adding Filter ["+y+A+k+"]")),1==("1"==e.getAttribute("data-user-data")||!1)&&(h.append("userdata",1),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Adding Filter [user data]"));var S=e.getAttribute("data-maxrows")||0;S>0&&(h.append("offset",s),h.append("maxrows",S));var D=e.getAttribute("data-order-sort")||"asc";1==n&&h.append("soundex",n),1==kShowPreloader&&app.preloader.show(),h.append("sort",D);var P=e.getAttribute("data-orderby")||null;P&&h.append("orderby",P),m.body=h,fetch(c,m).then((function(t){t.text().then((t=>{var a;thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Got Response from url ["+c+"]");try{a=JSON.parse(t)}catch(e){return dbExpressData.hideInfinitePreloaders(),thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+e.message),app.emit("dbExpressDataLoadError",$(this),e.message),app.preloader.hide(),app.dialog.alert(e.message),void(dbExpressData.allowInfinite=!0)}if(a&&a.code<0||!a){dbExpressData.hideInfinitePreloaders();var i="Unable to load repeater with id ["+e.id+"], error "+a.code+": "+a.message;return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+i),app.emit("dbExpressDataLoadError",$(this),i),app.preloader.hide(),app.dialog.alert(i),void(dbExpressData.allowInfinite=!0)}var o=0,l=0,u=a.result;if(u)for(var m in u)u[o].dataindex=o+s,u[o].service=p,o+=1,l+=1;if(u||(u={}),1==e.classList.contains("openstreetmap-api"))return dbExpressData.hideInfinitePreloaders(),dbExpressMaps.addMarkersToMap(e,u,"osm"),e.setAttribute("data-loaded",!0),void app.preloader.hide();if(1==e.classList.contains("googlemapAPI"))return dbExpressData.hideInfinitePreloaders(),dbExpressMaps.addMarkersToMap(e,u,"googlemap"),void app.preloader.hide();if(1==e.classList.contains("dbexpress-virtual-list-content")){if(1==r){if(0==l||l<parseInt(S)){e.setAttribute("data-fetched",!0);var h=document.querySelectorAll(".infinite-scroll-preloader");for(o=0;o<h.length;o++){h[o].style.visibility="hidden"}}var g=e.closest(".page-content"),b=0;g&&(b=g.scrollTop||0),e.setAttribute("data-offset",parseInt(s)+parseInt(S)),d.appendItems(u),d.update(),g&&b>0&&g.scrollTo({top:b,behavior:"smooth"})}else e.setAttribute("data-fetched",!1),d&&app.virtualList.destroy(d),e.style.visibility="visible",e.style.opacity=1,e.setAttribute("data-offset",o),dbExpressData.setRepeaterDataContent(e,u),app.emit("dbExpressDataLoadSuccess",$(this),e,u);dbExpressData.allowInfinite=!0}if(dbExpressData.hideInfinitePreloaders(),1==n&&a&&0==a.count&&a.soundex.length>0){var f=e.querySelector(".repeater-noresult");f&&(f.innerHTML='<div class="fuzzy">Did you mean <a class="fuzzy-link" href="#">'+a.soundex+"</a>?</div>")}app.preloader.hide()})).catch((function(e){dbExpressData.hideInfinitePreloaders(),app.preloader.hide(),thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] "+e),app.emit("dbExpressDataLoadError",$(this),e)}))})).catch((function(n){if(dbExpressData.hideInfinitePreloaders(),app&&app.preloader.hide(),1==thoriumapi.isLocal())return thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] - server busy ["+n.message+"], relaunch service ["+p+"]"),void dbExpressData.getRepeaterData(e,t,r,a,i,o);thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] - service ["+p+"] "+n.message),app.emit("dbExpressDataLoadError",$(this),n),0==app.online||app.dialog.alert(n.message)}))},loadRecord:function(e,t,r){if(e){var a=new FormData;if("null"==r&&(r=null),a.append("service",t),r)a.append("uid",r);else{var i="No UID parameter found for calling Service "+t;thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] "+i)}a.append("token",auth.currentUser.token);var o={method:"post"};o.body=a;var n=document.querySelector(".page[data-name='"+e.getAttribute("data-name")+"'] .dbexpress-displayer")||null;n&&(n.style.display="none"),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.data] loading record with uid ["+r+"] from service ["+t+"]");var l=thoriumCorePlugin.httpRoot+kApiRoot+kGetDataApi+"?rnd="+Math.floor(Date.now()/1e3);fetch(l,o).then((function(r){r.text().then((r=>{var a;thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Got Response from url ["+l+"]");try{a=JSON.parse(r)}catch(e){return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+e.message),void(app&&app.preloader.hide())}if(a&&a.code<0||!a){app&&app.preloader.hide();var i="Unable to load data for page ["+e.getAttribute("data-name")+"] with service ["+t+"] : invalid result: "+a.message;return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+i),void app.dialog.alert(i)}if(!a.result||0==a.result.length){app.preloader.hide();i="Unable to load data for page ["+e.getAttribute("data-name")+"] with service ["+t+"] : invalid result";return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+i),void app.dialog.alert(i)}var o=a.result[0];o||(o={});for(var p=document.querySelectorAll(".page[data-name='"+e.getAttribute("data-name")+"'] .dbexpress-displayer"),s=0;s<p.length;s++){var u=p[s].getAttribute("data-service")||null;u&&u==t&&dbExpressData.fillDisplayerFromMemoryData(p[s],o)}var d=document.querySelectorAll(".page[data-name='"+e.getAttribute("data-name")+"'] .dbexpress-form[data-from-repeater='true']");for(s=0;s<d.length;s++){var c=d[s].getAttribute("data-service")||null;c&&c==t&&dbExpressData.fillFormFromData(d[s],o)}app.preloader.hide(),e&&app.preloader.hideIn(e),n&&(n.style.visibility="visible",n.style.display="block",n.style.opacity=1)})).catch((function(r){app&&app.preloader.hide(),e&&app.preloader.hideIn(e),thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] - service ["+t+"] "+r),app.emit("dbExpressDataLoadError",this,r),app.dialog.alert(r.message)}))})).catch((function(a){if(app&&app.preloader.hide(),e&&app.preloader.hideIn(e),1==thoriumapi.isLocal())return thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] - server busy ["+a.message+"], relaunch service ["+t+"]"),void dbExpressData.loadRecord(e,t,r);thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] - service ["+t+"] "+a.message),app.emit("dbExpressDataLoadError",$(this),a),0==app.online?thoriumCorePlugin.showNotification("Internet connection lost"):app.dialog.alert(a.message)}))}else thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] no page specified")},onRepeaterLineChange:function(e,t){var r=t.getAttribute("data-index")||null;if(r){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] click/touch on line ["+r+"]");var a=t.getAttribute("data-uid")||null,i=t.getAttribute("data-pk")||null,o=t.closest(".dbexpress-virtual-list-content");if(o){var n=t.closest(".dbexpress-virtual-list");if(n&&app.emit("dbExpressRepeaterLineChange",n,r),app.emit("dbExpressRepeaterLineChange",o,r),1==t.classList.contains("dbexpress-action-button")){var l=t.getAttribute("data-target")||null,p=t.getAttribute("data-transition")||"f7-push",s=t.getAttribute("data-service")||null;e.preventDefault(),(u=app.view)&&u.length>0&&app.view[0].router.navigate("/"+l+"/?rowindex="+r+"&uid="+a+"&pk="+i+"&service="+s+"&parentvlid="+o.id,{animate:!0,transition:p,reloadAll:!1})}else{l=o.getAttribute("data-detail")||null;var u,d=o.getAttribute("data-target-repeater")||null,c=o.getAttribute("data-foreignkey-link")||null;s=o.getAttribute("data-service")||null,p=o.getAttribute("data-transition")||"f7-push";if(l)e.preventDefault(),(u=app.view)&&u.length>0&&app.view[0].router.navigate("/"+l+"/?rowindex="+r+"&uid="+a+"&pk="+i+"&service="+s+"&parentvlid="+o.id,{animate:!0,transition:p,reloadAll:!1});else if(d){var m=document.querySelector(".page-current").getAttribute("data-record-pk")||null,h=document.getElementById(d);if(h&&c)1==("true"==o.getAttribute("data-target-reset-filters")||!1)&&(h.setAttribute("data-filter-field",""),h.setAttribute("data-filter-operator",""),h.setAttribute("data-filter-value",""),h.setAttribute("data-filter-field2",""),h.setAttribute("data-filter-operator2",""),h.setAttribute("data-filter-value2","")),h.setAttribute("data-loaded",!1),dbExpressData.getRepeaterData(h,m,!1,null,c,i)}}}}},calendarInsertDateSync:function(e,t,r,a,i,o){var n=thoriumCorePlugin.httpRoot+kApiRoot+kSetDataApi,l=new FormData;l.append(r,t),l.append("service",e),l.append("token",auth.currentUser.token),a&&a.length>0&&l.append(a,i),app.request({url:n,data:l,method:"POST",crossDomain:!1,contentType:"multipart/form-data",headers:"",timeout:0,async:!1,processData:!0,beforeSend(){1==kShowPreloader&&app.preloader.show()},error(e,t){app&&app.preloader.hide();var r=(e.responseText+" "+e.statusText).trim();0==r.length&&(r="Unknown Error, maybe due to access control checks ( Access-Control-Allow-Origin). "),thoriumapi.logEvent(2,"[com.thoriumbuilder.core] Form Error: ["+r+"] when submitting data"),erm.length>0?thoriumCorePlugin.showAlert(erm):thoriumCorePlugin.showAlert("An error occured ["+r+"] when submitting data")},success(e,t,r){try{var a=JSON.parse(e)}catch(e){return thoriumapi.logEvent(2,"Error "+e),void app.dialog.alert(e)}return a&&a.code<0?(thoriumapi.logEvent(2,"Error "+a.code+" "+a.message),void app.dialog.alert(a.message)):a?void thoriumapi.logEvent(0,"[com.thoriumbuilder.core] Calendar data Sent with Success"):(thoriumapi.logEvent(2,"Error, invalid result"),void app.dialog.alert("Error, invalid result"))}})},savecalendar:function(e){var t=document.querySelector("#"+e+" .calendar");if(t){1==kShowPreloader&&app.preloader.show();var r=document.querySelector("#"+e),a=app.calendar.get(t);if(a){var i=r.getAttribute("data-parent-pk"),o=r.getAttribute("data-foreign-key"),n=r.getAttribute("data-service-field"),l=r.getAttribute("data-service"),p=a.value;if(p)for(const[e,t]of Object.entries(p)){var s=new Date(t);if(s){1==kShowPreloader&&app.preloader.show();var u=s.getTime()/1e3;dbExpressData.calendarInsertDateSync(l,u,n,o,i)}}app.view[0].router.back(),app&&app.preloader.hide()}}},sendPin:function(e){var t=document.querySelector("#dbexpress-signin-email"),r=document.querySelector("#dbexpress-signin-password");if(t&&t.value.length>0&&r&&r.value.length>0){1==kShowPreloader&&app.preloader.show();var a={method:"post"},i=new FormData;i.append("email",t.value),i.append("password",r.value),a.body=i;var o=thoriumCorePlugin.httpRoot+kApiRoot+"thorium.auth.sendpin.php";fetch(o,a).then((function(e){e.text().then((e=>{var t;thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Got Response from url ["+o+"]");try{t=JSON.parse(e)}catch(e){return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+e.message),app&&app.preloader.hide(),void app.dialog.alert(e.message)}if(t&&t.code<0||!t){var r="Unable to send PIN";return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+r),app&&app.preloader.hide(),void app.dialog.alert(r)}app.dialog.alert(t.message),app&&app.preloader.hide()})).catch((function(e){app&&app.preloader.hide(),thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+e),app.dialog.alert(e.message)}))})).catch((function(t){if(app&&app.preloader.hide(),1==thoriumapi.isLocal())return thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] - server busy ["+t.message+"], relaunch service ["+service+"]"),void dbExpressData.sendPin(e);thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] - "+t.message),0==app.online||app.dialog.alert(t.message)}))}},getCalendarData:function(e,t){var r=e.getAttribute("data-service")||null;if(e.setAttribute("data-parent-pk",t),r){var a=e.getAttribute("data-service-field")||null;if(a){var i=thoriumCorePlugin.httpRoot+kApiRoot+kGetDataApi+"?rnd="+Math.floor(Date.now()/1e3);thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Get data for Calendar with ID ["+e.id+"] from url ["+i+"]");var o={method:"post"},n=new FormData;if(n.append("service",r),n.append("token",auth.currentUser.token),t&&t.length>0){var l=e.getAttribute("data-foreign-key")||null;l&&(n.append("parentpk",t),n.append("foreignkey",l),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Adding Filter [Parent key "+l+"="+t+"]"))}1==("1"==e.getAttribute("data-user-data")||!1)&&(n.append("userdata",1),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Adding Calendar Filter [user data]")),o.body=n,fetch(i,o).then((function(t){t.text().then((t=>{var o;thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Got Response from url ["+i+"]");try{o=JSON.parse(t)}catch(t){return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+t.message),app.emit("dbExpressDataLoadError",e,t.message),app&&app.preloader.hide(),void app.dialog.alert(t.message)}if(o&&o.code<0||!o){var n="Unable to load repeater with id ["+e.id+"], error "+o.code+": "+o.message;return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+n),app.emit("dbExpressDataLoadError",e,n),app&&app.preloader.hide(),void app.dialog.alert(n)}var l=0,p=o.result;if(p)for(var s in p){p[l].dataindex=l,p[l].service=r;var u=p[l];l+=1,1;var d=new Date(1e3*u[a]);d=new Date(d.toDateString()),thoriumapi.date.disableDateFromCalendar(e.id,d)}p||(p={}),app&&app.preloader.hide()})).catch((function(t){app&&app.preloader.hide(),thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+t),app.emit("dbExpressDataLoadError",e,t),app.dialog.alert(t.message)}))})).catch((function(a){if(app&&app.preloader.hide(),1==thoriumapi.isLocal())return thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] - server busy ["+a.message+"], relaunch service ["+r+"]"),void dbExpressData.getCalendarData(e,t);thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] - service ["+r+"] "+a.message),app.emit("dbExpressDataLoadError",e,a),0==app.online||app.dialog.alert(a.message)}))}else thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] Calendar Service Field not set")}else thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] Calendar Service not set")},onPageMounted:function(e){var t,r=e.detail;if(r===page?elt=app.root:(elt=r.$el,t=r.route),elt&&t){var a=t.query.rowindex||null,i=t.query.uid||null;i||(i=t.query.id||null);var o=t.query.pk||null,n=t.query.service||null,l=document.querySelector(".page-next");l||(l=document.querySelector(".page-master-detail"));var p=document.querySelector(".page-current");dbExpressData.applyUserRolePermissions(),a&&i&&n&&o?l&&(l.setAttribute("data-record-uid",i),l.setAttribute("data-record-pk",o),l.setAttribute("data-record-service",n)):(a=-1,p&&(i=p.getAttribute("data-record-uid")||null,o=p.getAttribute("data-record-pk")||null,n=p.getAttribute("data-record-service")||null,l&&(l.setAttribute("data-record-uid",i),l.setAttribute("data-record-pk",o),l.setAttribute("data-record-service",n))));var s=document.querySelector(".page[data-name='"+r.name+"'] .dbexpress-displayer"),u=document.querySelector(".page[data-name='"+r.name+"'] .dbexpress-form[data-from-repeater='true']");if((u||s)&&(u&&(u.style.visibility="hidden"),s&&(s.style.visibility="hidden",s.style.opacity=0),setTimeout((function(){dbExpressData.loadRecord(l,n,i)}),50)),n&&o){var d=document.querySelector(".page[data-name='"+r.name+"'] .dbexpress-form *[name='fk_"+n+"']");d&&(d.value=o,d.setAttribute("data-parent-pk",o))}for(var c=document.querySelectorAll(".page[data-name='"+r.name+"'] .dbexpress-virtual-list-content"),m=0;m<c.length;m++){var h=c[m];h.style.visibility="hidden",h.style.opacity=0;var g=h.getAttribute("data-noload")||null;g&&"true"==g?thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Repeater with ID ["+h.id+"] is set to noload-data"):dbExpressData.getRepeaterData(h,o)}var b=document.querySelectorAll(".page[data-name='"+r.name+"'] .custom-db-calendar");for(m=0;m<b.length;m++){var f=b[m],v=f.querySelector(".calendar");v&&0==auth.currentUser.group?v.classList.add("disabled"):v.classList.remove("disabled"),dbExpressData.getCalendarData(f,o)}if(1==kDbExpressEcommerce&&dbExpressCommerce.initCartController(),"undefined"!=typeof openStreetMapPlugin&&dbExpressMaps.initAllopenStreetMaps(!1),"undefined"!=typeof googleMapPlugin&&dbExpressMaps.initAllGoogleMaps(!0),auth.currentUser.photoURL&&auth.currentUser.photoURL.length>0){var x=auth.getDbAssetsUrlRoot()+auth.currentUser.photoURL+"?rnd="+Math.floor(Date.now()/1e3);$(".dbexpress_avatar").attr("src",x)}}},setRepeaterDataContent:function(e,t){var r,a=e.getAttribute("data-displaymode")||0,i=document.getElementById("template-"+e.id);(r=$("#"+e.id).data("template")||null)&&0!=r.length||(r=a<2?dbExpressData.getRepeaterTemplate(i):i.outerHTML,$("#"+e.id).data("template",r));var o=r;if(r=(r=r.replaceAll("{data-img-root}",auth.getDbAssetsUrlRoot())).replaceAll("{data-asset-root}",auth.getDbAssetsUrlRoot()),a<2)thoriumCorePlugin.renderVirtualListFromData(e,t,r);else if(e.scrollLeft=0,e.innerHTML=o,$("#"+e.id).data("items",t),t.length>0){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Render Repeater for Repeater with ID ["+e.id+"]"),$("#"+e.id).data("items",t);var n,l=0,p=auth.getDbAssetsUrlRoot();for(var s in thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Get horizontal Repeater Rows for Repeater with ID ["+e.id+"]"),t)n=(n=(n=(n=(n=(n=thoriumCorePlugin.renderVlItem(t[s],r,i,0)).replaceAll("templaterow","")).replaceAll("template-"+e.id,"template-"+e.id+"-"+l)).replaceAll("{data-img-root}",p)).replaceAll("{data-asset-root}",p)).replace("url("+p+")","url('./img/defaultimg.png')"),e.innerHTML=e.innerHTML+n,l+=1;e.setAttribute("data-loaded",!0),e.setAttribute("data-count",t.length)}},getRepeaterTemplate:function(e){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Get Template for Repeater with ID ["+e.id+"]");var t=e.outerHTML;e.style.display=null,e.removeAttribute("id"),e.removeAttribute("data-template-height"),e.classList.remove("templaterow");var r=e.outerHTML;return e.outerHTML=t,r},getCollectionRow:function(e,t,r){},parseDataRecursive:function(e,t,r){for(var e in app.dialog.alert("[com.thoriumbuilder.dbexpress] parseDataRecursive"),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Parsing Data "),t){if("object"==typeof t[e]&&null!==t[e])if(Array.isArray(t[e]))r[e.replaceAll(" ","_")]=t[e];else dbExpressData.parseDataRecursive(e,t[e],r);else r[e.replaceAll(" ","_")]=t[e]}return r},fillDisplayerFromMemoryData:function(e,t){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Set Content for Displayer with ID ["+e.id+"]"),$("#"+e.id+" .dbexpress-field").each((function(e){if(!e.closest(".dbexpress-virtual-list")){var r=e.tagName.toLowerCase(),i=e.className.toLowerCase(),o=e.getAttribute("data-dbexpress-field")||null,n=e.getAttribute("data-dbexpress-type")||null;if("route"==n){var l=e.getAttribute("data-latitude")||null,p=e.getAttribute("data-longitude")||null,s=e.getAttribute("onclick")||null;if(l&&p&&s){var u=t[l],d=t[p];u&&d?(s=(s=s.replaceAll("{{"+l+"}}",u)).replaceAll("{{"+p+"}}",d),e.setAttribute("onclick",s)):e.setAttribute("onclick","")}}else if(n&&"map"==n){var c=e.getAttribute("data-latitude")||null,m=e.getAttribute("data-longitude")||null;if(c&&m){u=t[c],d=t[m],d=t[m];dbExpressMaps.initDisplayerMap(e,u,d)}else e.style.display="none"}else if(o){dataValue=t[o],dataValue&&dataValue.length>0&&0==kDbHTMLRendering&&(dataValue=dataValue.replace(/&/g,"&").replace(/>/g,">").replace(/</g,"<").replace(/"/g,"""));var h=e.getAttribute("data-date-type")||null;if(e.getAttribute("data-function")||null||h)templateHtml=thoriumCorePlugin.applyFormulaToField(e,e.innerHTML,o,dataValue),e.innerHTML=templateHtml;else if(n&&"decimal"==n)templateHtml=thoriumCorePlugin.applyFormulaToField(e,e.innerHTML,o,dataValue),e.innerHTML=templateHtml;else if(n&&"rating"==n){dataValue||(dataValue=0);var g=parseInt(dataValue)||0,b="";for(a=0;a<g;a++)b+='<i class="fa f7-icons s-3" data-icon="star_fill">star_fill</i>';e.innerHTML=e.innerHTML.replaceAll("{{"+o+"}}",b)}else if(n&&"video"==n){var f=e.querySelector("video");f&&(dataValue&&dataValue.length>0?f.setAttribute("src",auth.getDbAssetsUrlRoot()+dataValue):(e.style.display="none",f.setAttribute("src","")))}else if(n&&"audio"==n){var v=e.querySelector("audio");v&&(dataValue&&dataValue.length>0?v.setAttribute("src",auth.getDbAssetsUrlRoot()+dataValue):(e.style.display="none",v.setAttribute("src","")))}else if(n&&"picture"==n){var x=e.querySelector(".dbexpress-image-content");if(x)if(dataValue){var y=e.getAttribute("data-httproot")||"";if("createdby_photourl"==o)x.style.backgroundImage="url('"+auth.getDbAssetsUrlRoot()+dataValue+"')";else if(-1!=dataValue.toLowerCase().indexOf("http://")||-1!=dataValue.toLowerCase().indexOf("https://"))x.style.backgroundImage="url('"+dataValue+"')";else{t.uid&&x.setAttribute("data-img-name",dataValue);var A="url("+auth.getDbAssetsUrlRoot()+dataValue+"?rnd="+Math.floor(Date.now()/1e3)+")";x.style.backgroundImage=A}}else e.style.display="none";else e.setAttribute("src",auth.getDbAssetsUrlRoot()+dataValue)}else if(["embed-responsive-item"].indexOf(i)>-1&&"audio"!=r&&"video"!=r){y=e.getAttribute("data-httproot")||"";dataValue?e.style.backgroundImage="url('"+y+dataValue+"')":e.closest(".embed-responsive").style.display="none"}else if(dataValue||0==dataValue){var k=e.innerHTML,E=e.getAttribute("data-inner-template")||null;if(E?k=E:e.setAttribute("data-inner-template",k),1==i.includes("dbexpress-number")&&parseFloat(dataValue)>0){var w=parseInt(e.getAttribute("data-decimal"))||0,S=parseFloat(dataValue);dataValue=S.toFixed(w)}k&&o&&(e.innerHTML=k.replaceAll("{{"+o+"}}",dataValue),e.classList.contains("text-viewer")?e.style.display="-webkit-box":e.style.display="block"),"a"==r&&(k=e.getAttribute("href"))&&(k=k.replaceAll("{{"+o+"}}",dataValue),e.setAttribute("href",k))}else e.style.display="none";var D=!1;if(0==isNaN(dataValue)&&0==parseFloat(dataValue)&&(D=!0),dataValue&&0!=dataValue.length||(D=!0),"none"==e.style.display&&(D=!0),1==D)if(e.closest(".dbexpress-datalist")){var P=e.closest("li");P&&(P.style.display="none")}}}}));for(var r=document.querySelectorAll("#"+e.id+" .dbexpress-action-button"),a=0;a<r.length;a++){var i=r[a];if(!i.closest(".dbexpress-virtual-list"))for(var o=0;o<i.attributes.length;o++){var n=i.attributes[o];for(const e in t)n.value=n.value.replaceAll("{{"+e+"}}",t[e]);if("data-service"==n.name){var l=e.getAttribute("data-service")||null;l&&(n.value=l)}}}e.setAttribute("data-loaded",!0),e.style.visibility="visible"},getDateFromTimeStamp:function(e){var t=new Date(1e3*e);return isNaN(t.getTime())?e:new Intl.DateTimeFormat("en-EN",{hour12:kHours12,hour:"2-digit",minute:"2-digit",day:"2-digit",month:"2-digit",year:"numeric",literal:"/"}).format(t).toLowerCase()},collectionrepeaterLineClick:function(e,t){var r=t.attr("data-index")||null,a=t.attr("data-uid")||null;if(r){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Detect Click/Touch on Collection item line ["+r+"]");var i=t.parents(".dbexpress-virtual-list-content");if(i){var o=i.data("items"),n=i.attr("data-detail")||null,l=o[r],p=app.view;p&&p.length>0&&p[0].router.navigate("/"+n+"/?rowindex="+r+"&data="+encodeURIComponent(JSON.stringify(l))+"&key="+a)}}},repeaterFilterHandler:function(e){var t=e.getAttribute("data-filter-virtuallist")||null,r=document.getElementById(t);if(r){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Set New Filter for Repeater with ID ["+t+"]"),r.setAttribute("data-loaded",!1),r.setAttribute("data-count",0),r.setAttribute("data-filter-field",e.getAttribute("data-filter-field")||""),r.setAttribute("data-filter-operator",e.getAttribute("data-filter-operator")||""),r.setAttribute("data-filter-value",e.getAttribute("data-filter-value")||""),r.setAttribute("data-filter-field2",e.getAttribute("data-filter-field2")||""),r.setAttribute("data-filter-operator2",e.getAttribute("data-filter-operator2")||""),r.setAttribute("data-filter-value2",e.getAttribute("data-filter-value2")||""),r.setAttribute("data-user-data",e.getAttribute("data-user-data")||!1),r.setAttribute("data-orderby",e.getAttribute("data-orderby")||""),r.setAttribute("data-order-sort",e.getAttribute("data-order-sort")||""),r.removeAttribute("data-parent-fk"),r.removeAttribute("data-parent-fk-value");var a=r.closest(".page-content");if(a){a.scrollTop=0;var i=a.querySelector(".searchbar-backdrop");i&&(i.style.opacity=0)}1==kShowPreloader&&app.preloader.show(),dbExpressData.getRepeaterData(r)}else{var o="An error occured, the Repeater is not initialized";thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+o),app.dialog.alert(o)}},repeaterLineButtonClick:function(e,t){app.dialog.alert("[com.thoriumbuilder.dbexpress] repeaterLineButtonClick");var r=t.attr("data-index")||null,a=t.attr("data-uid")||null,i=t.attr("data-target")||null,o=t.attr("data-transition")||null;if(r){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Detect Click/Touch on Line ["+r+"]");var n=t.parents(".json-virtual-list-content");if(n&&n.length>0){var l=app.virtualList.get("#"+n[0].id);if(l){var p=l.items[r],s=app.view,u=t.closest(".virtual-list")||null,d=null;u&&(d=u[0].id),s&&s.length>0&&(app.emit("VirtualListLineClick",t,r,p,i),s[0].router.navigate("/"+i+"/?rowindex="+r+"&data="+encodeURIComponent(JSON.stringify(p))+"&key="+a+"&parentvlid="+d,{animate:!0,transition:o,reloadAll:!1}))}}}},getFlatFormData:function(e,t,r){for(var a in app.dialog.alert("[com.thoriumbuilder.dbexpress] getFlatFormData"),t){if("object"==typeof t[a]&&null!==t[a])if(Array.isArray(t[a]))r[a.replaceAll(" ","_")]=t[a];else dbExpressData.getFlatFormData(e+"."+a,t[a],r);else r[e+"."+a.replaceAll(" ","_")]=t[a]}return r},convertFormData:function(e,t,r,a){var i=e.classList.contains("shadow-text");if("checkbox"==e.type)"true"===r||!0===r||"1"===r||1===r||"on"===r?(a[t]="on",e.setAttribute("checked","checked")):(a[t]="off",e.removeAttribute("checked"));else if("select-one"==e.type||"select"==e.tagName.toLowerCase){$("#"+e.id).attr("data-value",r);var o=$("#"+e.id).closest(".smart-select");if(o&&o.length>0){var n=app.smartSelect.get(o);n&&n.setValue(r)}else{$("#"+e.id).val(r),0==$("#"+e.id).html().trim().length&&$("#"+e.id).html('<option value="'+r+'">'+r+"</option>")}a[t]=r}else if("image"==e.type){if($("#"+e.id+"-fileinput-filename").css("visibility","hidden"),r&&r.length>0){var l=auth.getDbAssetsUrlRoot()+r+"?rnd="+Math.floor(Date.now()/1e3);$("#"+e.id).data("data-blob",""),$("#"+e.id).css("background-image","url("+l+")"),$("#"+e.id+"-fileinput-filename span").text(l),$("#"+e.id+"-remove").show()}}else if("range"==e.type){a[t]=r;var p=app.range.get(e.parentElement);p?p.setValue(r):(p=app.range.create(e.parentElement)).setValue(r)}else if(1==i){a[t]=r;var s=e.id.replaceAll("-shadow",""),u=app.textEditor.get("#"+s);u&&u.setValue(r)}else if("text"==e.type){e.value=r;var d=e.getAttribute("data-date-type");if(d&&("datetime-local"==d||"date"==d))if(r&&0!=r){e.setAttribute("data-timestamp",r);var c=thoriumCorePlugin.getDateTimeFromTimeStamp(r,d);e.value=c}else e.value=""}else if("textarea"==e.type)e.value=r;else if("radio"==e.type)for(var m=e.closest("ul"),h=e.getAttribute("name"),g=m.querySelectorAll("input[name='"+h+"']"),b=0;b<g.length;b++){var f=g[b];f.value==r?f.setAttribute("checked","checked"):f.removeAttribute("checked")}else if("file"==e.type){var v=e.getAttribute("data-fileinput-ref"),x=$("#"+v);x&&x.length>0&&($("#"+v+"-fileinput-filename").show(),$("#"+v+"-fileinput-filename").css("visibility","visible"),$("#"+v+"-fileinput-filename span").text(r),$("#"+v+"-fileinput-filename i").show(),$("#"+v+"-fileinput-link").show(),$("#"+v+"-fileinput-link span").html('<a class="external" target="_blank" rel="noopener" data-rel="external" target="_blank" href="'+r+'">See attached file</a>'),r&&r.length>0?$("#"+v+"-remove").show():$("#"+v+"-fileinput-filename").css("visibility","hidden")),a[t]=r}else a[t]=r,e.value=r;return a},fillFormFromData:function(e,t,r,a,i){if(t&&!0!==e.getAttribute("data-loaded")){var o={};for(var n in t){if("object"==typeof t[n]&&null!==t[n])o=dbExpressData.getFlatFormData(n,t[n],o);else o[n.replaceAll(" ","_")]=t[n]}thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Set dbExpress Form Data for form with ID ["+e.id+"]");for(let[r,a]of Object.entries(o)){var l=r;!0===["name","id","description","this","title","submit"].includes(l)&&(l+="_alias");var p=e.querySelector('input[name="'+l+'"]');p||(p=e.querySelector('textarea[name="'+l+'"]')),p||(p=e.querySelector('textarea[name="'+l+'"]')),p&&dbExpressData.convertFormData(p,r,a,t)}for(var s=document.querySelectorAll("#"+e.id+" select[data-service]"),u=0;u<s.length;u++){var d=s[u],c=d.getAttribute("data-service")||null,m=o["fk_"+c];d.setAttribute("data-value",m);var h=document.querySelector(".page-current");if(h){var g=h.getAttribute("data-record-service")||null,b=h.getAttribute("data-record-pk")||null;g&&b&&c==g&&d.setAttribute("data-value",b)}var f;f=e.getAttribute("data-api-mode")||"0",c&&1!=f&&dbExpressData.fillSmartSelect(d,c)}e.setAttribute("data-loaded",!0),e.setAttribute("data-parent-key",r),e.setAttribute("data-virtuallist-id",a),e.setAttribute("data-index",i),e.style.visibility="visible"}}},dbExpressCommerce={name:"Thorium Builder dbExpress eCommerce Plugin",bundleid:"com.thoriumbuilder.dbexpress.ecommerce",version:"3.0.0",allowInfinite:!0,shoppingCartPopup:null,addItemToCart:function(e){1==kShowPreloader&&app.preloader.show();var t=e.getAttribute("data-uid"),r=e.getAttribute("data-pk"),a=e.getAttribute("data-service"),i=e.getAttribute("data-qty")||1,o=e.getAttribute("data-field-name")||"",n=e.getAttribute("data-field-price")||0,l=e.getAttribute("data-field-img")||"",p=e.getAttribute("data-field-desc")||"",s=new FormData;s.append("token",auth.currentUser.token),s.append("service",a),s.append("uid",t),s.append("parent_pk",r),s.append("qty",i),s.append("cart_unit_price",n),s.append("cart_name",o),s.append("cart_photo",l),s.append("cart_desc",p);var u=thoriumCorePlugin.httpRoot+kApiRoot+kSetShoppingCartApi;fetch(u,{method:"post",body:s,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(t){if(t&&t.code<0)app&&app.preloader.hide(),app.dialog.alert(t.message);else if(t&&0==t.code){var r=t.count||"";$(".shoppingcartcounter").text(r);var a=e.getAttribute("data-cart-message")||null;a&&a.length>0&&thoriumCorePlugin.showToast(a,!1,"bottom",1e3)}app.sheet.close(".sheet-addtocart"),app&&app.preloader.hide()})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.data] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))},addToCartHandler:function(e){if(1==("true"==e.getAttribute("data-qty-selector")||!1)){var t=document.querySelector(".button-cart");t.setAttribute("data-uid",e.getAttribute("data-uid")),t.setAttribute("data-pk",e.getAttribute("data-pk")),t.setAttribute("data-index",e.getAttribute("data-index")),t.setAttribute("data-service",e.getAttribute("data-service")),t.setAttribute("data-field-name",e.getAttribute("data-field-name")),t.setAttribute("data-field-price",e.getAttribute("data-field-price")),t.setAttribute("data-field-img",e.getAttribute("data-field-img")),t.setAttribute("data-field-desc",e.getAttribute("data-field-desc")),t.setAttribute("data-cart-message",e.getAttribute("data-cart-message")),t.setAttribute("data-qty","1"),app.sheet.create({el:".sheet-addtocart",swipeToClose:!1,backdrop:!0}).open(!0);var r=app.stepper.get("#stepper-addtocart");r&&r.destroy(),r=app.stepper.create({el:"#stepper-addtocart",step:1,min:1,max:1e3,value:1,on:{change:function(e,r){t.setAttribute("data-qty",r)}}})}else dbExpressCommerce.addItemToCart(e)},getCustomerInformation:function(e){if(1==("true"==document.getElementById("shoppingcartform").getAttribute("data-loaded")))return app.tab.show("#shoppingCartTab2",!0),void $("#shoppingcartpopup-content").scrollTop(0,0);1==kShowPreloader&&app.preloader.show();var t=new FormData,r=auth.getToken();r&&t.append("token",r),t.append("email",auth.currentUser.email);var a=thoriumCorePlugin.httpRoot+kApiRoot+kGetProfileApi;fetch(a,{method:"post",body:t,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){if(1==thoriumapi.checkResult(e)){$('#shoppingcartform input[name="shoppingcart-displayname"]').val(e.displayName),$('#shoppingcartform input[name="shoppingcart-email"]').val(e.email),$('#shoppingcartform input[name="shoppingcart-phonenumber"]').val(e.phoneNumber),$('#shoppingcartform textarea[name="shoppingcart-address"]').val(e.address),$('#shoppingcartform input[name="shoppingcart-zip"]').val(e.zip),$('#shoppingcartform input[name="shoppingcart-city"]').val(e.city),$('#shoppingcartform input[name="shoppingcart-country"]').val(e.country),$('#shoppingcartform textarea[name="shoppingcart-notes"]').val(e.notes);var t=document.querySelector('input[name="deliverymodeselect"]:checked');if(t){var r="true"==t.getAttribute("data-no-address")||!1,a=document.querySelector(".addressblock");1!=r?(a.classList.remove("hidden"),document.querySelector("#shoppingcart-address").setAttribute("required","required"),document.querySelector("#shoppingcart-zip").setAttribute("required","required"),document.querySelector("#shoppingcart-city").setAttribute("required","required")):(a.classList.add("hidden"),document.querySelector("#shoppingcart-address").removeAttribute("required"),document.querySelector("#shoppingcart-zip").removeAttribute("required"),document.querySelector("#shoppingcart-city").removeAttribute("required"))}app&&app.preloader.hide(),app.tab.show("#shoppingCartTab2",!0),$("#shoppingcartpopup-content").scrollTop(0,0)}})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.data] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))},setCustomerInformation:function(e){1==kShowPreloader&&app.preloader.show();var t=new FormData,r=auth.getToken();r&&t.append("token",r),t.append("token",r),t.append("uid",auth.currentUser.uid);for(var a,i=document.getElementById("shoppingcartform").elements,o=0;a=i[o++];){var n=a.name.replace("shoppingcart-","");t.append(n,a.value)}var l=thoriumCorePlugin.httpRoot+kApiRoot+kSetProfileApi;fetch(l,{method:"post",body:t,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){1==thoriumapi.checkResult(e)&&(app&&app.preloader.hide(),app.tab.show("#shoppingCartTab3",!0),$("#shoppingcartpopup-content").scrollTop(0,0))})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.data] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))},changeCartQuantity:function(e,t){var r=e.el.getAttribute("data-line-pk")||null;if(r){1==kShowPreloader&&app.preloader.show();var a=new FormData;a.append("token",auth.currentUser.token),a.append("pk",r),a.append("qty",t);var i=thoriumCorePlugin.httpRoot+kApiRoot+kSetShoppingCartQtyApi;fetch(i,{method:"post",body:a,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){if(1==thoriumapi.checkResult(e)){for(var t=e.totalquantity,a=document.querySelectorAll(".shoppingcartcounter"),i=0;i<a.length;i++){a[i].innerText=t}var o=e.totalcart,n=e.totalline,l=document.querySelectorAll(".shoppingcarttotal");for(i=0;i<l.length;i++){var p=l[i];1==kCurrencyLeftSide?p.innerText=kCurrencySymbol+Number.parseFloat(o).toFixed(2):p.innerText=Number.parseFloat(o).toFixed(2)+kCurrencySymbol}var s=document.querySelector('.shoppingcart-line-total[data-line-pk="'+r+'"]');1==kCurrencyLeftSide?s.innerText=kCurrencySymbol+Number.parseFloat(n).toFixed(2):s.innerText=Number.parseFloat(n).toFixed(2)+kCurrencySymbol,app&&app.preloader.hide()}})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.data] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))}},openCart:function(e){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Loading Shopping Cart"),1==kShowPreloader&&app.preloader.show();var t=new FormData;t.append("token",auth.currentUser.token);var r=thoriumCorePlugin.httpRoot+kApiRoot+kGetShoppingCartApi;fetch(r,{method:"post",body:t,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(t){if(1==thoriumapi.checkResult(t)){if(!t.result){app&&app.preloader.hide();var r=e.getAttribute("data-message")||null;return void(r&&thoriumCorePlugin.showNotification(r))}thoriumapi.logEvent(0,"[com.thoriumbuilder.ecommerce] Shopping Cart Firebase Record Loaded");var a=t.result,i="",o=$(".shoppingcart-template").html();for(var n in thoriumapi.logEvent(0,"[com.thoriumbuilder.ecommerce] Loading Shopping Cart Item Lines"),a){var l=a[n],p=o;for(var s in l){p=p.replaceAll("{{title}}",l.cart_name),p=(p=(p=(p=(p=(p=1==kCurrencyLeftSide?(p=p.replaceAll("{{price}}",kCurrencySymbol+Number.parseFloat(l.cart_unit_price).toFixed(2))).replaceAll("{{total}}",kCurrencySymbol+Number.parseFloat(l.cart_total_price).toFixed(2)):(p=p.replaceAll("{{price}}",Number.parseFloat(l.cart_unit_price).toFixed(2)+kCurrencySymbol)).replaceAll("{{total}}",Number.parseFloat(l.cart_total_price).toFixed(2)+kCurrencySymbol)).replaceAll("{{pk}}",l.pk)).replaceAll("{{qty}}",l.qty)).replaceAll("{{parent_pk}}",l.parent_pk)).replaceAll("{{uid}}",l.uid)).replaceAll("{{cart_desc}}",l.cart_desc);var u="db/dbassets/"+l.cart_photo+"?rnd="+Math.floor(Date.now()/1e3);p=p.replaceAll("{{image}}","background-image:url('"+u+"');")}i+=p}$("#shoppingcartcontents").html(i),app.tab.show("#shoppingCartTab1",!0),dbExpressCommerce.shoppingCartPopup=app.popup.create({el:".shoppingcartpopup",swipeToClose:!1}),dbExpressCommerce.shoppingCartPopup.open(!0),1==kCurrencyLeftSide?$(".shoppingcarttotal").text(kCurrencySymbol+Number.parseFloat(t.price).toFixed(2)):$(".shoppingcarttotal").text(Number.parseFloat(t.price).toFixed(2)+kCurrencySymbol),0==parseFloat(t.qty)?$("#shoppingcartbutton1").addClass("disabled"):$("#shoppingcartbutton1").removeClass("disabled");for(var d=document.querySelectorAll(".stepper-shoppingcart"),c=0;c<d.length;c++){var m=d[c];l=parseInt(m.getAttribute("data-value"))||0,app.stepper.create({el:m,step:1,min:0,max:100,value:l,on:{change:function(e,t){dbExpressCommerce.changeCartQuantity(e,t)}}})}if(!document.querySelector('input[name="deliverymodeselect"]:checked')){var h=document.querySelector("#deliverymodeselect1");if(h){h.checked=!0;var g,b=h.value||0;g=1==kCurrencyLeftSide?kCurrencySymbol+b:b+kCurrencySymbol,document.querySelector(".shoppingcartdeliveryamount").innerText=g}}app&&app.preloader.hide()}})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.data] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))},initCartController:function(){var e=$(".shoppingcartcounter");if($(".shoppingcartcounter").text("..."),0!=e.length){var t=new FormData;t.append("token",auth.currentUser.token);var r=thoriumCorePlugin.httpRoot+kApiRoot+kGetShoppingCartApi;fetch(r,{method:"post",body:t,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){if(1==thoriumapi.checkResult(e)){var t=e.qty||"0";$(".shoppingcartcounter").text(t),$(".shoppingcartcounter").show()}})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.data] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))}},processOrderPayment:function(e){},convertCartToOrder:function(e){1==kShowPreloader&&app.preloader.show();var t=new FormData,r=auth.getToken();r&&t.append("token",r),t.append("token",r),t.append("uid",auth.currentUser.uid);var a=document.querySelector("#orderprocess-collectdate");if(!a||!a.value)return app&&app.preloader.hide(),void a.focus();var i=a.getAttribute("data-timestamp");t.append("collectdate",i);var o=document.querySelector('input[name="deliverymodeselect"]:checked');if(o){var n=o.value||0,l=o.getAttribute("data-label")||"Unknown";t.append("deliverymode",l),t.append("deliveryfees",n)}var p=document.querySelector("#orderprocess-collecttime");if(!p||!p.value)return app&&app.preloader.hide(),void p.focus();t.append("collecttime",p.value);var s=document.querySelector("#orderprocess-notes");s&&t.append("notes",s.value);var u=thoriumCorePlugin.httpRoot+kApiRoot+kSetOrderApi;fetch(u,{method:"post",body:t,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){if(1==thoriumapi.checkResult(e)&&(app&&app.preloader.hide(),document.querySelector(".lastordernumber").innerText=e.uid,app.tab.show("#shoppingCartTab5",!0),$("#shoppingcartpopup-content").scrollTop(0,0),document.getElementById("form-orderprocess").reset(),$(".shoppingcartcounter").text("0"),"object"==typeof nodeQrcode)){var t=document.querySelector(".qrbox");if(t){t.style.display="block";var r=document.getElementById("orderqrcode");nodeQrcode.drawQR(r,e.uid)}}})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.data] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))},paymentCallback:function(e){app.tab.show("#shoppingCartTab4",!0)},clearShoppingCart:function(e){1==kShowPreloader&&app.preloader.show();var t=new FormData;t.append("token",auth.currentUser.token);var r=thoriumCorePlugin.httpRoot+kApiRoot+kClearShoppingCartApi;fetch(r,{method:"post",body:t,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){1==thoriumapi.checkResult(e)&&(app&&app.preloader.hide(),$(".shoppingcartcounter").text("0"),dbExpressCommerce.shoppingCartPopup&&dbExpressCommerce.shoppingCartPopup.close())})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.data] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))}};$(document).on("click",".shoppingcartcontroller",(function(e){e.preventDefault(),dbExpressCommerce.openCart(this)})),$(document).on("click",".shoppingcart-clear",(function(e){e.preventDefault(),app.dialog.confirm("Clear?",(function(){dbExpressCommerce.clearShoppingCart(this)}))})),$(document).on("click",".deliverymodeselect",(function(e){var t=document.querySelector('input[name="deliverymodeselect"]:checked');if(t){var r,a=t.value||0;t.getAttribute("data-label");r=1==kCurrencyLeftSide?kCurrencySymbol+a:a+kCurrencySymbol,document.querySelector(".shoppingcartdeliveryamount").innerText=r}})),$(document).on("click","a.dbexpress-search-filter",(function(e){e.preventDefault(),dbExpressData.repeaterFilterHandler(this)})),$(document).on("click","a.btn-json-page",(function(e){e.preventDefault(),dbExpressData.repeaterLineButtonClick(e,$(this))})),$(document).on("click",".button-cart",(function(e){e.preventDefault(),dbExpressCommerce.addItemToCart(this)})),$(document).on("click","#shoppingcartbutton1",(function(e){e.preventDefault(),1==kShowPreloader&&app.preloader.show(),setTimeout((function(){dbExpressCommerce.getCustomerInformation(this)}),1e3)})),$(document).on("click","#shoppingcartbutton2",(function(e){e.preventDefault(),app.tab.show("#shoppingCartTab1",!0)})),$(document).on("click","#shoppingcartbutton3",(function(e){e.preventDefault(),1==document.getElementById("shoppingcartform").checkValidity()?dbExpressCommerce.setCustomerInformation(this):thoriumapi.logEvent(1,"[com.thoriumbuilder.ecommerce] Missing mandatory fields")})),$(document).on("click","#shoppingcartbackbutton3",(function(e){e.preventDefault(),app.tab.show("#shoppingCartTab1",!0)})),$(document).on("click","#shoppingcartbackbutton4",(function(e){e.preventDefault(),app.tab.show("#shoppingCartTab2",!0)})),$(document).on("click",".saveorderbtn",(function(e){e.preventDefault(),1==kShowPreloader&&app.preloader.show(),dbExpressCommerce.convertCartToOrder(),dbExpressCommerce.shoppingCartPopup})),$(document).on("click","#shoppingcartbuttonfinish",(function(e){e.preventDefault(),dbExpressCommerce.shoppingCartPopup&&dbExpressCommerce.shoppingCartPopup.close()})),$(document).on("click",'.dbexpress-action-button[data-action="cart"]',(function(e){e.preventDefault(),e.stopImmediatePropagation(),auth.currentUser&&1!=auth.currentUser.isAnonymous?dbExpressCommerce.addToCartHandler(this):auth.handleAvatarPopup(e,this)})),$(document).on("click",'.dbexpress-action-button[data-action="like"]',(function(e){e.preventDefault(),e.stopImmediatePropagation()})),$(document).on("search",".search-repeater",(function(e){})),$(document).on("click",".input-clear-button",(function(e){})),$(document).on("submit",".dbexpress-signin-form",(function(e){e.preventDefault;1==kShowPreloader&&app.preloader.show(),auth.signInFormPost(this)})),$(document).on("submit",".dbexpress-resetpassword-form",(function(e){e.preventDefault;var t=this;0!=app.input.validateInputs(t)?(1==kShowPreloader&&app.preloader.show(),auth.resetPasswordSubmitPost(t)):thoriumapi.logEvent(0,"[com.thoriumbuilder.core] Missing Mandatory fields for Form with id ["+t.id+"]")})),$(document).on("submit",".dbexpress-register-form",(function(e){e.preventDefault;var t=$("#dbexpress-register-password").val();t==$("#dbexpress-register-password-verification").val()?t.length<6?app.dialog.alert("Password too Short (6 characters min)"):0!=app.toggle.create({el:".dbexpress-register-gdpr"}).checked?(1==kShowPreloader&&app.preloader.show(),auth.registerFormPost()):app.dialog.alert("You must accept the Privacy Policy"):app.dialog.alert("Password does not match")})),$(document).on("click",".dbexpress_avatar",(function(e){auth.handleAvatarPopup(e,this)})),$(document).on("click",".firebase-user-logout",(function(e){e.preventDefault,app.dialog.confirm("Logout?",(function(){auth.logout()}))})),$(document).on("click",".dbexpress-profile-submit",(function(e){e.preventDefault,1==kShowPreloader&&app.preloader.show(),auth.saveProfile()})),$("select").on("change",(function(){$(".dbexpress-profile-flag").css("background-image","url("+thoriumCorePlugin.httpRoot+kApiRoot+"flags/4x3/"+this.value.toLowerCase()+".svg)")})),$(document).on("click",".signinlink",(function(e){e.preventDefault,auth.showSigninPopup(e)})),$(document).on("click",".termsofuse",(function(e){e.preventDefault,auth.showTermsPopup(e)})),$(document).on("click",".privacypolicy",(function(e){e.preventDefault,auth.showPrivacyPopup(e)})),$(document).on("click",".registerlink",(function(e){e.preventDefault,auth.showRegisterPopup(e)})),$(document).on("click",".reloadlink",(function(e){e.preventDefault,location.reload()})),$(document).on("click",".profilelink",(function(e){e.preventDefault,auth.loadProfileScreen()})),$(document).on("click",".resetpasswwordlink",(function(e){e.preventDefault,auth.showResetPasswordScreen()})),$(document).on("click",".dbexpress-field-link",(function(e){e.preventDefault();var t=this.querySelector(".dbexpress-field");if(t){t.style.whiteSpace="break-spaces";var r=t.innerText,a=document.querySelector(".text-viewer-popup .block-text");a&&(a.innerText=r),app.sheet.create({el:".text-viewer-popup",swipeToClose:!1,backdrop:!0,closeByBackdropClick:!0,closeByOutsideClick:!0,closeOnEscape:!0,animate:!0}).open(!0),t.style.whiteSpace="normal"}})),$(document).on("search",".dbexpress-searchbar",(function(e){e.preventDefault,dbExpressData.executeRepeaterFullText(e.target)})),$(document).on("click",".fuzzy-link",(function(e){e.preventDefault();var t=this.innerText,r=this.closest(".page-current");if(r){var a=r.querySelector(".dbexpress-searchbar input");a&&(a.value=t,dbExpressData.executeRepeaterFullText(a))}})),$(document).on("submit",".form",(function(e){dbExpressData.submitForm(e,$(this))})),$(document).on("click",".calendar-submit-button",(function(e){e.preventDefault();var t=this.getAttribute("data-calendar")||null;t&&t.length>0&&(0==auth.currentUser.group?(auth.showSigninPopup(),app.view[0].router.back()):dbExpressData.savecalendar(t))})),$(document).on("click",".dbwebshare",(function(e){e.preventDefault();var t=this.getAttribute("data-url")||null,r=this.getAttribute("data-share-text")||null;if(t&&r&&null!=navigator.share)try{navigator.share({title:r,url:t})}catch(e){app.dialog.error("Share failed:",e.message)}})),$(document).on("click",'.dbexpress-action-button[data-action="detail"]',(function(e){if(e.preventDefault(),e.stopImmediatePropagation(),this.closest(".dbexpress-virtual-list")||null)dbExpressData.onRepeaterLineChange(e,this);else if(this.closest(".dbexpress-displayer")||null){var t=this.getAttribute("data-uid")||null,r=this.getAttribute("data-pk")||null,a=this.getAttribute("data-target")||null,i=this.getAttribute("data-service")||null,o=this.getAttribute("data-transition")||"f7-push";if(a){e.preventDefault();var n=app.view;n&&n.length>0&&app.view[0].router.navigate("/"+a+"/?rowindex=0&uid="+t+"&pk="+r+"&service="+i,{animate:!0,transition:o,reloadAll:!1})}}})),$(document).on("click",'.dbexpress-action-button[data-action="parentdetail"]',(function(e){e.preventDefault(),e.stopImmediatePropagation();var t=this.closest(".dbexpress-virtual-list")||null,r=this.closest(".dbexpress-displayer")||null;if(t||r){var a=this.getAttribute("data-fk")||null;a.indexOf("{{")>-1&&thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] error, action button not initialized");var i=this.getAttribute("data-target")||null,o=this.getAttribute("data-parent-service")||null,n=this.getAttribute("data-transition")||"f7-push";i&&o&&a&&dbExpressData.getParentRecord(o,a,i,n)}})),$(document).on("click",'.dbexpress-action-button[data-action="delete"]',(function(e){e.preventDefault(),e.stopImmediatePropagation(),dbExpressData.handleDelete(this)})),$(document).on("click",".item-dbexpress",(function(e){e.preventDefault(),dbExpressData.onRepeaterLineChange(e,this)})),$(document).on("click",".pinlink",(function(e){e.preventDefault(),dbExpressData.sendPin(this)})),$(document).on("infinite",(function(e){if(thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] infinite scroll event detected"),1==dbExpressData.allowInfinite)for(var t=e.target,r=t.querySelectorAll('.virtual-list[data-infinite="true"]'),a=0;a<r.length;a++){var i=r[a];if("true"!=(i.getAttribute("data-fetched")||null)){var o=t.querySelector(".infinite-scroll-preloader");o&&(o.style.visibility="visible"),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Loading Additional Data"),dbExpressData.allowInfinite=!1;var n=i.getAttribute("data-parent-pk")||null,l=i.getAttribute("data-search")||null;setTimeout((function(){dbExpressData.getRepeaterData(i,n,!0,l)}),1e3)}}else thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] infinite scroll handler deactivated")})),$(document).on("page:mounted",(function(e){e.preventDefault,thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] page:mounted"),dbExpressData.onPageMounted(e)})),app.on("onAuthStateChanged",(function(e){e&&(dbExpressData.onAuthStateChanged(),1!=e.isAnonymous&&setTimeout((function(){auth.getCountryList(),1==kDbExpressEcommerce&&dbExpressCommerce.initCartController()}),500))})),document.addEventListener("appLoaded",(function(e){auth.initialize()}),!1); ?>
Did this file decode correctly?
Original Code
/*!
* Thorium dbExpress
* API version : 3.5.0
* Thorium version 3.5.0 July 2022
* framework7 v6.x (https://framework7.io) MIT Licensed
* Thorium builder Copyright 2018-2022 Nymphide Lab, All Rights Reserved.
*/
var auth={name:"dbExpress Authentification",bundleid:"com.thoriumbuilder.dbexpress.auth",version:"3.5.0",allowRegister:!0,currentUser:{uid:"",displayName:"",email:"",emailVerified:"",isAnonymous:"",creationTime:"",modifyTime:"",lastSignInTime:"",language:"",phoneNumber:"",photoURL:"",token:"",headimage:"",group:0},loginScreen:null,twoFactorsScreen:null,registerScreen:null,profileScreen:null,privacyScreen:null,termsScreen:null,resetPassworScreen:null,pinKeyPad:null,httpMediaRoot:"",getToken:function(){var e=localStorage.getItem(app.id);if(e&&(session=JSON.parse(e),session.token))return session.token},getDbAssetsUrlRoot:function(){return 1==app.device.cordova||1==app.device.capacitor?kRemoteHost+"db/dbassets/":(thoriumCorePlugin.isLocal(),"db/dbassets/")},showResetPasswordScreen:function(e){app&&app.preloader.hide(),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] Loading Reset Password Popup"),auth.resetPassworScreen=app.sheet.create({el:".dbexpress-resetpassword",swipeToClose:!1,backdrop:!0,closeByBackdropClick:!1,closeByOutsideClick:!1,closeOnEscape:!1,animate:!0}),auth.resetPassworScreen.open(!0),app.emit("onShowResetPasswordScreen",e)},showSigninPopup:function(e){app&&app.preloader.hide(),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] Loading Login Popup"),auth.loginScreen||(auth.loginScreen=app.loginScreen.create({el:".dbexpress-signin"})),auth.loginScreen.open(!1),app.emit("onShowLoginScreen",e);document.querySelector(".dbexpress-signin .dbexpress-signin-email");setTimeout((function(){thoriumCorePlugin.showAppLoader(!1)}),1e3)},showTermsPopup:function(e){app&&app.preloader.hide(),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] Loading Terms of Service Popup"),auth.termsScreen=app.popup.create({el:".dbexpress-termsofuse",swipeToClose:!1,backdrop:!0,closeByBackdropClick:!1,closeByOutsideClick:!1,closeOnEscape:!1,animate:!0}),auth.termsScreen.open(!0),app.emit("onShowTermsOfService",this)},showPrivacyPopup:function(e){app&&app.preloader.hide(),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] Loading Privacy Policy Popup"),auth.privacyScreen=app.popup.create({el:".dbexpress-privacypolicy",swipeToClose:!1,backdrop:!0,closeByBackdropClick:!1,closeByOutsideClick:!1,closeOnEscape:!1,animate:!0}),auth.privacyScreen.open(!0),app.emit("onShowPrivacyPolicy",this)},setKeypad:function(e){auth.pinKeyPad=app.keypad.create({inputEl:"#dbexpress-twofactors-pin",containerEl:".numpad-inline-container",toolbar:!1,valueMaxLength:4,dotButton:!1,dotCharacter:".",formatValue:function(e){return e=e.toString(),"...".substring(0,e.length)+" ".substring(0,4-e.length)},on:{change(e,t){if(4===(t=t.toString()).length&&parseInt(t)>0&&4==t.length){var r=$("#dbexpress-signin-email").val(),a=$("#dbexpress-signin-password").val();auth.signIn(r,a,auth.currentUser.token,parseInt(t))}}}}),auth.pinKeyPad.open()},showTwoFactorsScreen:function(e){e=e||!0,app&&app.preloader.hide(),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] Loading two Factors Popup"),auth.twoFactorsScreen=app.popup.create({el:".dbexpress-twofactors",swipeToClose:!1,backdrop:!0,closeByBackdropClick:!1,closeByOutsideClick:!1,closeOnEscape:!1,animate:e,on:{opened(){auth.setKeypad()}}}),auth.twoFactorsScreen.open(!0),app.emit("onShow2FactorsScreen",this)},showProfileScreen:function(e){app&&app.preloader.hide(),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] Loading User Profile Popup"),auth.profileScreen=app.popup.create({el:".dbexpress-profile"}),auth.profileScreen.open(!0),app.emit("onShowProfileScreen",e)},showRegisterPopup:function(e){app&&app.preloader.hide(),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] Loading Register Popup"),auth.registerScreen=app.popup.create({el:".dbexpress-register"}),auth.registerScreen.open(!0),app.emit("onShowRegisterScreen",e)},initialize:function(){if(0!=thoriumapi.isLocal()||0!=kDesktopAllowed||!app.device.desktop&&Framework7.support.touch&&(app.device.android||Framework7.device.ios)){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] dbExpress Authentification initialization"),thoriumCorePlugin.showAppLoader(!0);var e=auth.getToken();e?auth.checkCurrentToken(e):auth.signIn(null,null,null,null)}},checkCurrentToken:function(e){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] Checking token...");var t=thoriumCorePlugin.httpRoot+kApiRoot+kAuthManagerApi;thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] calling "+t);var r=new FormData;r.append("token",e),fetch(t,{method:"post",body:r,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){if(e){var t=e.code;if(-1012==t)thoriumapi.logEvent(1,"Invalid token: "+e.message+" will try to Signin"),auth.signIn(null,null,null,null);else{if(-1022==t)return auth.showSigninPopup(),void thoriumapi.logEvent(1,"Connection refused: "+e.message);if(-1019==t)return thoriumapi.logEvent(1,"Connection Error: "+e.message+" connecting as Anonymous..."),void auth.signIn(null,null,null,null);if(t<0)auth.showSigninPopup(),thoriumapi.logEvent(2,"Connection Error: "+e.message);else if(0==t){var r={};if(r.token=e.token,auth.currentUser.uid=e.uid,auth.currentUser.displayName=e.displayName,auth.currentUser.email=e.email,auth.currentUser.emailVerified=1==e.emailVerified,auth.currentUser.isAnonymous=1==e.isAnonymous,auth.currentUser.creationTime=e.creationTime,auth.currentUser.modifyTime=e.modifyTime,auth.currentUser.lastSignInTime=e.lastSignInTime,auth.currentUser.language=e.language,auth.currentUser.phoneNumber=e.phoneNumber,auth.currentUser.photoURL=e.photoURL,auth.currentUser.token=e.token,auth.currentUser.headimage=e.headimage,auth.currentUser.group=e.group||0,e.photoURL&&e.photoURL.length>0){var a=auth.getDbAssetsUrlRoot()+e.photoURL+"?rnd="+Math.floor(Date.now()/1e3);$(".dbexpress_avatar").attr("src",a)}else $(".dbexpress_avatar").attr("src","img/defaultavatar.png");$(".dbexpress_avatar").attr("title",auth.currentUser.displayName),$(".user-popover-name").text(auth.currentUser.displayName);try{localStorage.setItem(app.id,JSON.stringify(r))}catch(e){app.dialog.alert(e)}thoriumCorePlugin.showAppLoader(!1),app.emit("onAuthStateChanged",auth.currentUser)}}dbExpressData.applyUserRolePermissions()}else app&&app.preloader.hide(),thoriumCorePlugin.showAppLoader(!1),thoriumapi.logError(!0,"Invalid result"),auth.showSigninPopup()})).catch((function(e){app&&app.preloader.hide(),thoriumCorePlugin.showAppLoader(!1),thoriumapi.logError(!0,"Invalid result "+e.message),auth.showSigninPopup()}))},getCountryList:function(){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] loading countries list...");var e=new FormData;e.append("service","_countries"),e.append("token",auth.currentUser.token);var t=thoriumCorePlugin.httpRoot+kApiRoot+kGetDataApi+"?rnd="+Math.floor(Date.now()/1e3);fetch(t,{method:"post",body:e,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){if(1==thoriumapi.checkResult(e)){var t=e.result,r=document.getElementById("dbexpress-profile-country");t&&t.forEach((function(e){var t=document.createElement("option");t.value=e.iso,t.text=e.nicename,r.appendChild(t)})),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] countries list loaded")}})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.auth] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))},registerFormPost:function(){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] Calling Register web service");var e=new FormData,t=$(".dbexpress-register-password").val(),r=$(".dbexpress-register-email").val(),a=$(".dbexpress-register-displayname").val();e.append("email",r),e.append("password",t),e.append("displayname",a),auth.currentUser.token.length>0&&e.append("token",auth.currentUser.token);var i=thoriumCorePlugin.httpRoot+kApiRoot+kRegisterApi;fetch(i,{method:"post",body:e,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){if(!e)return thoriumapi.logError(!0,"Invalid Server Response (empty)"),void localStorage.clear();if(e.code<0)return thoriumapi.logError(!0,e.message),void localStorage.clear();if(1==e.code)$("#dbexpress-signin-email").val(r),$("#dbexpress-signin-password").val(t),app&&app.preloader.hide(),auth.showSigninPopup(),auth.registerScreen&&auth.registerScreen.close();else if(0==e.code){var a={};a.token=e.token,localStorage.setItem(app.id,JSON.stringify(a)),auth.currentUser.uid=e.uid,auth.currentUser.displayName=e.displayName,auth.currentUser.email=e.email,auth.currentUser.emailVerified=1==e.emailVerified,auth.currentUser.isAnonymous=1==e.isAnonymous,auth.currentUser.creationTime=e.creationTime,auth.currentUser.modifyTime=e.modifyTime,auth.currentUser.lastSignInTime=e.lastSignInTime,auth.currentUser.language=e.language,auth.currentUser.phoneNumber=e.phoneNumber,auth.currentUser.photoURL=e.photoURL,auth.currentUser.headimage=e.headimage,auth.currentUser.group=e.group||0,auth.registerScreen&&auth.registerScreen.close(),$("#dbexpress-signin-email").val(r),$("#dbexpress-signin-password").val(t),thoriumCorePlugin.showAppLoader(!1),app&&app.preloader.hide(),auth.showSigninPopup()}})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.auth] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))},resetPasswordSubmitPost:function(e){var t=document.querySelector(".dbexpress-resetpassword-form #dbexpress-resetpassword-email"),r=null;if(t)r=t.value;var a=new FormData;a.append("email",r);var i=thoriumCorePlugin.httpRoot+kApiRoot+kresetPassword;fetch(i,{method:"post",body:a,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){if(app&&app.preloader.hide(),!e)return thoriumapi.logError(!0,"Invalid Server Response (empty)"),void localStorage.clear();e.code<0?thoriumapi.logError(!0,"Error "+e.message):0==e.code&&(auth.resetPassworScreen&&auth.resetPassworScreen.close(),thoriumapi.showToast(kEmailSent,!0,"bottom",4e3,null))})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.auth] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))},signInFormPost:function(e){var t,r=e.querySelector('input[name="dbexpress-signin-email"]');r&&(t=r.value,r.blur());var a=e.querySelector('input[name="dbexpress-signin-password"]').value;auth.signIn(t,a,"",null)},signIn:function(e,t,r,a){1==kShowPreloader&&app.preloader.show();var i=new FormData;e&&i.append("email",e),t&&i.append("password",t),a&&i.append("pin",a);var o=thoriumCorePlugin.httpRoot+kApiRoot+kAuthManagerApi;fetch(o,{method:"post",body:i,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){if(document.getElementById("dbexpress-twofactors-pin").value=" ",auth.pinKeyPad&&auth.pinKeyPad.setValue(""),e){if(-1020==e.code)localStorage.clear(),auth.currentUser.token=e.token,auth.pinKeyPad?thoriumapi.alert(e.message):auth.showTwoFactorsScreen();else if(-1021==e.code)thoriumapi.alert(e.message);else if(-1009==e.code)auth.showSigninPopup(),thoriumapi.logEvent(1,e.message);else if(-1019==e.code)auth.pinKeyPad?thoriumapi.alert(e.message):auth.showTwoFactorsScreen();else if(-1022==e.code)thoriumapi.alert(e.message);else if(-1022==e.code)thoriumapi.alert(e.message);else if(e.code<0)thoriumapi.alert(e.message);else if(0==e.code){var t={};t.token=e.token;try{localStorage.setItem(app.id,JSON.stringify(t))}catch(e){app.dialog.alert(e)}if(auth.currentUser.uid=e.uid,auth.currentUser.displayName=e.displayName,auth.currentUser.email=e.email,auth.currentUser.emailVerified=1==e.emailVerified,auth.currentUser.isAnonymous=1==e.isAnonymous,auth.currentUser.creationTime=e.creationTime,auth.currentUser.modifyTime=e.modifyTime,auth.currentUser.lastSignInTime=e.lastSignInTime,auth.currentUser.language=e.language,auth.currentUser.phoneNumber=e.phoneNumber,auth.currentUser.photoURL=e.photoURL,auth.currentUser.headimage=e.headimage,auth.currentUser.token=e.token,auth.currentUser.group=e.group||0,$(".dbexpress_avatar").attr("title",auth.currentUser.displayName),e.photoURL&&e.photoURL.length>0){var r=auth.getDbAssetsUrlRoot()+e.photoURL+"?rnd="+Math.floor(Date.now()/1e3);$(".dbexpress_avatar").attr("src",r)}else $(".dbexpress_avatar").attr("src","img/defaultavatar.png");$(".user-popover-name").text(auth.currentUser.displayName),auth.loginScreen&&auth.loginScreen.close(),auth.twoFactorsScreen&&auth.twoFactorsScreen.close(),auth.registerScreen&&auth.registerScreen.close(),thoriumCorePlugin.showAppLoader(!1),app&&app.preloader.hide(),app.emit("onAuthStateChanged",auth.currentUser)}}else thoriumapi.logError(!0,err.message),auth.showSigninPopup()})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.auth] Request failed "+e),thoriumapi.logError(!0,e.message),auth.showSigninPopup()}))},saveProfile:function(){for(var e=document.getElementById("dbexpress-profile-form"),t=document.getElementById("dbexpress-profile-form").elements,r=0;o=t[r++];)if(!o.checkValidity())return app&&app.preloader.hide(),"function"==typeof o.reportValidity&&o.reportValidity(),void thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] Missing Mandatory fields for Form with id ["+e.id+"]");var a=auth.getToken(),i=new FormData;i.append("token",a),i.append("uid",auth.currentUser.uid);var o;for(t=document.getElementById("dbexpress-profile-form").elements,r=0;o=t[r++];){var n=o.name.replace("dbexpress-profile-","");if("photourl"!=n&&"headimage"!=n&&"file"!=o.type)i.append(n,o.value);else if("file"==o.type){var l=o.id,p=$("#"+l);if(p){var s=p.data("data-blob")||"",u=n.replace("-fileinput","");s.length>0&&i.append(u,s)}}}var d=thoriumCorePlugin.httpRoot+kApiRoot+kSetProfileApi;fetch(d,{method:"post",body:i,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){if(e){if(-23e3==e.code)thoriumapi.logError(!0,"User already exists ("+email+")");else if(e.code<0)thoriumapi.logError(!0,e.message);else if(0==e.code){if(auth.currentUser.displayName=e.displayName,auth.currentUser.email=e.email,auth.currentUser.emailVerified=e.emailVerified,auth.currentUser.isAnonymous=e.isAnonymous,auth.currentUser.creationTime=e.creationTime,auth.currentUser.modifyTime=e.modifyTime,auth.currentUser.lastSignInTime=e.lastSignInTime,auth.currentUser.language=e.language,auth.currentUser.phoneNumber=e.phoneNumber,auth.currentUser.photoURL=e.photoURL,auth.currentUser.token=e.token,auth.currentUser.headimage=e.headimage,$(".dbexpress_avatar").attr("title",auth.currentUser.displayName),e.photoURL&&e.photoURL.length>0){var t=auth.getDbAssetsUrlRoot()+e.photoURL+"?rnd="+Math.floor(Date.now()/1e3);$(".dbexpress_avatar").attr("src",t)}$(".user-popover-name").text(auth.currentUser.displayName),app&&app.preloader.hide(),auth.profileScreen.close()}}else thoriumapi.logError(!0,err.message),auth.showSigninPopup()})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.auth] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))},loadProfileScreen:function(){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] Loading User Profile"),1==kShowPreloader&&app.preloader.show();var e=auth.getToken(),t=new FormData;if(e)if(t.append("token",e),auth.currentUser.email){t.append("email",auth.currentUser.email);var r=thoriumCorePlugin.httpRoot+kApiRoot+kGetProfileApi;fetch(r,{method:"post",body:t,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){if(e){if(e.code<0)thoriumapi.logError(!0,"error "+e.code+": "+e.message);else if(0==e.code){if(auth.currentUser.uid=e.uid,auth.currentUser.displayName=e.displayName,auth.currentUser.email=e.email,auth.currentUser.emailVerified=1==e.emailVerified,auth.currentUser.isAnonymous=1==e.isAnonymous,auth.currentUser.creationTime=e.creationTime,auth.currentUser.modifyTime=e.modifyTime,auth.currentUser.lastSignInTime=e.lastSignInTime,auth.currentUser.language=e.language,auth.currentUser.phoneNumber=e.phoneNumber,auth.currentUser.photoURL=e.photoURL,$(".profile-displayname").text(e.displayName),$(".profile-shortdesc").text(e.shortdesc),e.country&&e.country.length>0?$(".dbexpress-profile-flag").css("background-image","url("+thoriumCorePlugin.httpRoot+kApiRoot+"flags/4x3/"+e.country.toLowerCase()+".svg)"):$(".dbexpress-profile-flag").css("background-image",""),e.photoURL&&e.photoURL.length>0){var t=auth.getDbAssetsUrlRoot()+e.photoURL+"?rnd="+Math.floor(Date.now()/1e3);$("#dbexpress-profile-photourl").css("background-image","url("+t+")")}else $("#dbexpress-profile-photourl").css("background-image","url(./img/defaultavatar.png)");if(e.headimage&&e.headimage.length>0){t=auth.getDbAssetsUrlRoot()+e.headimage+"?rnd="+Math.floor(Date.now()/1e3);$("#dbexpress-profile-headimage").css("background-image","url("+t+")")}else $("#dbexpress-profile-headimage").css("background-image","url(./img/defaultimg.png)");$("#dbexpress-profile-photourl-fileinput").data("data-blob",""),$("#dbexpress-profile-photourl-fileinput").data("data-type",""),$("#dbexpress-profile-photourl-fileinput").data("data-filename",""),$("#dbexpress-profile-photourl-rotate")&&$("#dbexpress-profile-photourl-rotate").hide(),$("#dbexpress-profile-photourl-remove")&&$("#dbexpress-profile-photourl-remove").hide(),$(".dbexpress-profile-email").val(e.email),$(".dbexpress-profile-displayname").val(e.displayName),$(".dbexpress-profile-phonenumber").val(e.phoneNumber),$(".dbexpress-profile-recoveryemail").val(e.recoveryemail),$(".dbexpress-profile-bio").val(e.bio),$(".dbexpress-profile-firstname").val(e.firstname),$(".dbexpress-profile-lastname").val(e.lastname),$(".dbexpress-profile-gender").val(e.gender),$(".dbexpress-profile-address").val(e.address),$(".dbexpress-profile-city").val(e.city),$(".dbexpress-profile-country").val(e.country),$(".dbexpress-profile-zip").val(e.zip),$(".dbexpress-profile-shortdesc").val(e.shortdesc),$(".dbexpress-profile-birthday").val(e.birthday),$(".dbexpress-profile-state").val(e.state),$(".dbexpress_avatar").attr("title",auth.currentUser.displayName),$(".user-popover-name").text(auth.currentUser.displayName),thoriumCorePlugin.showAppLoader(!1),app&&app.preloader.hide(),auth.showProfileScreen()}}else thoriumapi.logError(!0,result)})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.auth] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))}else thoriumapi.logError(!0,"Invalid email");else thoriumapi.logError(!0,"Invalid Token")},handleAvatarPopup:function(e,t){e.preventDefault(),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.auth] Click/Touch on User Monitor");var r=document.querySelector(".dbexpress-signin .toolbar .title").textContent||"Sign In",a=document.querySelector(".dbexpress-register .navbar .title").textContent||"Register",i=document.querySelector(".dbexpress-profile .navbar .title").textContent||"Profile",o=auth.currentUser;if(o&&1!=o.isAnonymous)(n=app.actions.create({buttons:[[{text:i,bold:!0,onClick:function(e){auth.loadProfileScreen()}}],[{text:kLogout,color:"red",onClick:function(e){app.dialog.confirm(kLogout+"?",(function(){auth.logout()}))}}]]})).open(!0);else if(1==(auth.allowRegister||!1)){var n=app.actions.create({buttons:[[{text:a,bold:!0,onClick:function(e){auth.showRegisterPopup(e)}}],[{text:r,bold:!0,onClick:function(e){auth.showSigninPopup(e)}}]]});n.open(!0)}},logout:function(){1==kShowPreloader&&app.preloader.show();var e=auth.getToken(),t=new FormData;e&&t.append("token",e);var r=thoriumCorePlugin.httpRoot+kApiRoot+kSignOutApi;fetch(r,{method:"post",body:t,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){1==thoriumapi.checkResult(e)&&(e.code<0?thoriumapi.logError(!0,"error "+e.code+": "+e.message):0==e.code&&(localStorage.clear(),location.reload()))})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.auth] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))}},dbExpressMaps={name:"Thorium Builder JSON API Plugin",bundleid:"com.thoriumbuilder.dbexpress.map",version:"3.0.0",initAllopenStreetMaps:function(e){for(var t=document.querySelectorAll(".openstreetmap-api"),r=0;r<t.length;r++){var a=t[r],i=a.getAttribute("data-loaded")||"false",o=a.getAttribute("data-dbsource")||null;if("false"==i||1==e)openStreetMapPlugin.showPreloader(),openStreetMapPlugin.initMap(a.id)&&"sqlite"==o&&void 0!==dbExpressMaps&&(thoriumapi.logEvent(0,"[com.thoriumbuilder.leaflet] Get Markers from Sqlite for OSM Map with id:"+a.id),dbExpressMaps.loadPlaces(a,"osm"));else thoriumapi.logEvent(0,"[com.thoriumbuilder.leaflet] OSM Map with ID ["+a.id+"] already initialized")}},initAllGoogleMaps:function(e){for(var t=document.querySelectorAll(".googlemapAPI"),r=0;r<t.length;r++){var a=t[r],i=a.getAttribute("data-loaded")||"false",o=a.getAttribute("data-dbsource")||null;"false"!=i&&1!=e||"sqlite"!=o?thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.maps] Google Map with ID ["+a.id+"] already initialized"):(1==kShowPreloader&&app.preloader.show(),thoriumapi.logEvent(0,"[com.thoriumbuilder.leaflet] Get Markers from Sqlite for OSM Map with id:"+a.id),dbExpressMaps.loadPlaces(a,"googlemap"))}},loadPlaces:function(e,t,r){r=r||"googlemap",thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.maps] map engine initialization ["+r+"]");var a,i=document.querySelector(".page-current");i&&(a=i.getAttribute("data-record-pk")||null),1==kShowPreloader&&app.preloader.show(),dbExpressData.getRepeaterData(e,a,!1,"")},addMarkersToMap:function(e,t,r){if("undefined"!=typeof openStreetMapPlugin||"osm"!=r)if("undefined"!=typeof googleMapPlugin||"googlemap"!=r){1==kShowPreloader&&app.preloader.show();var a=e.closest(".page-content");a&&app.preloader.showIn(a);var i=e.getAttribute("data-target")||"",o=0;thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.maps] adding items to OSM map");var n,l=e.getAttribute("data-img-field")||null,p=e.getAttribute("data-name-field")||null,s=e.getAttribute("data-address-field")||null,u=e.getAttribute("data-description-field")||null,d=e.getAttribute("data-subtitle-field")||null,c=e.getAttribute("data-badge-field")||null,m=e.getAttribute("data-latitude-field")||null,h=e.getAttribute("data-longitude-field")||null,g=e.getAttribute("data-rating-field")||null,b=e.getAttribute("data-service")||null,f=e.getAttribute("data-json-maxrows")||1e4;if(0==f&&(f=1e4),"osm"==r&&!(n=openStreetMapPlugin.addMapCluster(e.map))){app.preloader.hide();var v="[com.thoriumbuilder.dbexpress.maps] map engine initialization failed, unable to create cluster ["+engine+"]";return thoriumapi.logEvent(2,v),void app.dialog.alert(v)}for(var x in t){var y=t[x];if(y.target=i,y.uid=y.uid,y.pk=y.pk,y.service=b,p&&(y.name=y[p]),s&&(y.address=y[s]),u&&(y.desc=y[u]),d&&(y.subtitle=y[d]),c&&(y.badge=y[c]),m&&(y.latitude=y[m]),h&&(y.longitude=y[h]),g&&(y.rating=y[g]),l){var A=y[l];A&&A.length>0&&(y.locimage="./db/dbassets/"+A)}var k=y.uid,E=parseFloat(y.latitude),w=parseFloat(y.longitude);if(y.uid=k,E&&w)if("osm"==r){var S=e.data;openStreetMapPlugin.addMarkertoClusterAt(n,E,w,y)}else if("googlemap"==r){var D=new google.maps.LatLng(E,w);googleMapPlugin.addMarker(e.map,D,y.name,y.uid,y.address,y.locimage,y.desc,y.subtitle,y.badge,y.rating,y.target,null,y.pk,y.service)}if((o+=1)>f)break}if("osm"==r){S=e.data;thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] "+o+" markers added to Map Cluster"),openStreetMapPlugin.addClusterToMap(S,n)}app.preloader.hide(),a&&app.preloader.hideIn(a)}else app.preloader.hide();else app.preloader.hide()},loadPlacesCallback:function(e,t){if("undefined"!=typeof googleMapPlugin){var r,a=e.getDiv();for(var i in a&&(a.getAttribute("id")||"",r=a.getAttribute("data-target")||""),t){var o=t[i],n=parseFloat(o.latitude),l=parseFloat(o.longitude),p=new google.maps.LatLng(n,l),s=o.name||"",u=hash_encode(o.pk),d=o.address,c=o.img_name,m=o.description,h=o.subtitle,g=o.badge,b=o.rating;0!=n&&0!=l&&googleMapPlugin.addMarker(e,p,s,u,d,c,m,h,g,b,r)}}},initDisplayerMap:function(e,t,r){if(t&&r){var a=e.getAttribute("data-engine")||null;if(a||"undefined"==typeof openStreetMapPlugin?a||"undefined"==typeof googleMapPlugin||(a="googlemap"):a="osm",thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.maps] Loading Displayer Map with Engine ["+a+"]"),"osm"==a&&"undefined"!=typeof openStreetMapPlugin){var i=openStreetMapPlugin.initMap(e.id);if(i){var o={};o.latitude=t,o.longitude=r,o.name=t+";"+r,openStreetMapPlugin.addMarkerAt(i,t,r,o),i.panTo(new L.LatLng(t,r))}}else if("googlemap"==a&&"undefined"!=typeof googleMapPlugin){googleMapPlugin.initializeMap(e.id);var n=new google.maps.LatLng(parseFloat(t),parseFloat(r));googleMapPlugin.addMarker(e.map,n,t+";"+r),e.map.setCenter(n)}}else e.style.display="none"}},dbExpressData={name:"Thorium Builder JSON API Plugin",bundleid:"com.thoriumbuilder.dbexpress.data",version:"3.0.0",allowInfinite:!0,currentRecord:{},onAuthStateChanged:function(){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Initializing dbExpress API"),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Checking Repeaters State");for(var e=document.querySelectorAll(".infinite-scroll-preloader"),t=0;t<e.length;t++){e[t].style.visibility="hidden"}dbExpressData.applyUserRolePermissions(),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Checking DbExpress Displayers State");var r=document.querySelectorAll(".dbexpress-displayer");for(t=0;t<r.length;t++){var a=r[t];if("true"!=a.getAttribute("data-loaded")){a.style.visibility="hidden";var i=a.getAttribute("data-service")||null,o=document.querySelector(".page-current");i&&o&&dbExpressData.loadRecord(o,i,null)}}dbExpressData.initAllRepeaters(!0),"undefined"!=typeof openStreetMapPlugin&&dbExpressMaps.initAllopenStreetMaps(!0),"undefined"!=typeof googleMapPlugin&&dbExpressMaps.initAllGoogleMaps(!0),thoriumCorePlugin.initForms()},executeCustomSelectService:function(e,t,r,a,i,o,n,l){if(!auth.currentUser.token||0==auth.currentUser.token.length)return thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] Unable to load data, No Active User"),void(app&&app.preloader.hide());if("function"!=typeof t)return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] Unable to execute Service, Callback function is undefined"),void(app&&app.preloader.hide());var p={method:"post"},s=new FormData;s.append("service",e),s.append("token",auth.currentUser.token),r&&a&&i&&(s.append("field1",r),s.append("operator1",a),s.append("value1",i),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Adding Filter ["+r+a+i+"]")),o&&n&&l&&(s.append("field2",o),s.append("operator2",n),s.append("value2",l),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Adding Filter ["+o+n+l+"]")),1==kShowPreloader&&app.preloader.show(),p.body=s;var u=thoriumCorePlugin.httpRoot+kApiRoot+kGetDataApi+"?rnd="+Math.floor(Date.now()/1e3);fetch(u,p).then((function(r){r.text().then((r=>{var a;thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Got Response from url ["+u+"]");try{a=JSON.parse(r)}catch(e){return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+e.message),app.emit("dbExpressDataLoadError",$(this),e.message),app&&app.preloader.hide(),void t(-1,e.message,0,null)}if(a&&a.code<0||!a){var i="Unable to execute Service ["+e+"], error "+a.code+": "+a.message;return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+i),app.emit("dbExpressDataLoadError",$(this),i),app&&app.preloader.hide(),void t(a.code,a.message,0,null)}var o=0,n=a.result;if(n)for(var l in n)n[o].dataindex=o,n[o].service=e,o+=1,1;n||(n={}),t(a.code,a.message,a.count,a.result),app&&app.preloader.hide()})).catch((function(e){app&&app.preloader.hide(),thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+e),app.emit("dbExpressDataLoadError",$(this),e),t(-1,e,0,null)}))})).catch((function(p){if(app&&app.preloader.hide(),1==thoriumapi.isLocal())return thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] - server busy ["+p.message+"], relaunch service ["+e+"]"),void dbExpressData.executeCustomSelectService(e,t,r,a,i,o,n,l);thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] - service ["+e+"] "+p.message),app.emit("dbExpressDataLoadError",$(this),p),0==app.online||t(-2,p,0,null)}))},getParentRecord:function(e,t,r,a){if(!auth.currentUser.token||0==auth.currentUser.token.length)return thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] Unable to load data, No Active User"),void app.preloader.hide();var i={method:"post"},o=new FormData;o.append("service",e),o.append("token",auth.currentUser.token),o.append("field1","a.pk"),o.append("operator1","="),o.append("value1",t),1==kShowPreloader&&app.preloader.show(),i.body=o;var n=thoriumCorePlugin.httpRoot+kApiRoot+kGetDataApi+"?rnd="+Math.floor(Date.now()/1e3);fetch(n,i).then((function(i){i.text().then((i=>{var o;thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Got Response from url ["+n+"]");try{o=JSON.parse(i)}catch(e){return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+e.message),app.emit("dbExpressDataLoadError",$(this),e.message),app.preloader.hide(),void app.dialog.alert(e.message)}if(o&&o.code<0||!o){var l="Unable to execute Service ["+e+"], error "+o.code+": "+o.message;return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+l),app.emit("dbExpressDataLoadError",$(this),l),app.preloader.hide(),void app.dialog.alert(o.message)}if(o.count=1){var p=app.view,s=o.result[0].uid;p&&p.length>0&&app.view[0].router.navigate("/"+r+"/?rowindex=0&uid="+s+"&pk="+t+"&service="+e,{animate:!0,transition:a,reloadAll:!1})}app.preloader.hide()})).catch((function(e){app.preloader.hide(),thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+e),app.emit("dbExpressDataLoadError",$(this),e),app.dialog.alert(e)}))})).catch((function(i){if(app.preloader.hide(),1==thoriumapi.isLocal())return thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] - server busy ["+i.message+"], relaunch service ["+e+"]"),void dbExpressData.getParentRecord(e,t,r,a);thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] - service ["+e+"] "+i.message),app.emit("dbExpressDataLoadError",$(this),i),0==app.online?thoriumCorePlugin.showNotification("Internet connection lost"):app.dialog.alert(i)}))},initAllRepeaters:function(e){for(var t=document.querySelectorAll(".dbexpress-virtual-list-content"),r=0;r<t.length;r++){var a=t[r];if("true"!=a.getAttribute("data-loaded")||1==e)if(a.getAttribute("data-service")||null){var i=a.getAttribute("data-noload")||null;i&&"true"==i?thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Repeater with ID ["+field.id+"] is set to noload-data"):dbExpressData.getRepeaterData(a)}else thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Service is not defined for Repeater with ID ["+a.id+"]")}},applyUserRolePermissions:function(e){if(e=e||document)for(var t=e.querySelectorAll("* [data-permission]"),r=0;r<t.length;r++){var a,i=t[r];if((i.getAttribute("data-permission")||0)>auth.currentUser.group)"none"!=(a=i.style.display)&&i.setAttribute("data-display",a),i.style.visibility="hidden",i.style.display="none";else i.style.visibility="visible","none"==(a=i.getAttribute("data-display")||"block")&&(a="block"),i.style.display=a}},addItemToAllRepeaters:function(e,t){t.service=e;for(var r=document.querySelectorAll(".dbexpress-virtual-list-content[data-service='"+e+"']"),a=0;a<r.length;a++){var i=r[a],o=app.virtualList.get(i);o?(o.items.length?(t.dataindex=o.items.length,o.prependItem(t)):(t.dataindex=0,o.items=[],o.prependItem(t)),o.update()):1==i.classList.contains("dbexpress-horizontal-list")&&dbExpressData.getRepeaterData(i)}},replaceItemInAllRepeaters:function(e,t){t.service=e;for(var r=document.querySelectorAll(".dbexpress-virtual-list-content[data-service='"+e+"']"),a=0;a<r.length;a++){var i=r[a],o=app.virtualList.get(i);if(o){for(var n=0;n<o.items.length;n++)o.items[n].uid==t.uid&&(t.dataindex=n,o.replaceItem(n,t));o.update()}else 1==i.classList.contains("dbexpress-horizontal-list")&&dbExpressData.getRepeaterData(i)}if(t.uid){var l=document.querySelectorAll(".dbexpress-virtual-list-content .virtual-list-media[data-img-name='"+t.uid+"-1.jpg']");for(a=0;a<l.length;a++){var p=(i=l[a]).getAttribute("data-img-name");i.style.backgroundImage="url('db/dbassets/"+p+"?rnd="+Math.floor(Date.now()/1e3)+"')"}var s=document.querySelectorAll(".dbexpress-displayer[data-service='"+e+"']");for(a=0;a<s.length;a++){i=s[a];dbExpressData.fillDisplayerFromMemoryData(i,t)}for(r=document.querySelectorAll(".dbexpress-image-content"),a=0;a<r.length;a++){if((p=(i=r[a]).getAttribute("data-img-name")).length>0?i.style.backgroundImage="url('db/dbassets/"+p+"?rnd="+Math.floor(Date.now()/1e3)+"')":i.style.backgroundImage="url(./img/defaultimg.png)",p&&p.length>0){var u=i.closest(".dbexpress-image");u&&(u.style.display="block")}}}},showVerticalRepeaterZoom:function(e,t){thoriumapi.logEvent(0,"[com.thoriumbuilder.core] Show Horizontal Repeater Photo Browser");var r=[],a=0,i=0,o=t.querySelector(".dbexpress-image-content");if(o)var n=o.getAttribute("data-img-name");for(var l=e.querySelectorAll(".item-dbexpress"),p=0;p<l.length;p++){var s=l[p];if(0==s.classList.contains("templaterow")){var u=s.querySelector(".dbexpress-image-content");if(u){var d=u.getAttribute("data-img-name");d==n&&(a=i);var c={};c.url=auth.getDbAssetsUrlRoot()+d,r.push(c),i+=1}}}thoriumCorePlugin.showPhotoBrowser(r,a)},fillSmartSelect:function(e,t){if("true"!=e.getAttribute("data-loaded")){var r=e[0].closest(".page-content");r&&app.preloader.showIn(r);var a=e.getAttribute("data-service-field")||null;if(a){var i='<option value="" selected disabled class="disabled"></option>',o=thoriumCorePlugin.httpRoot+kApiRoot+kGetDataApi+"?rnd="+Math.floor(Date.now()/1e3),n={method:"post"},l=new FormData;l.append("service",t),l.append("token",auth.currentUser.token);a.replace("{{","").replace("}}","").trim();l.append("maxrows",1e4),n.body=l,fetch(o,n).then(thoriumapi.status).then(thoriumapi.json).then((function(t){if(t&&t.code>=0){var o=0,n=e.getAttribute("data-value")||null,l=t.result,p='<option value="{{pk}}" {{selected}} >'+a+"</option>",s=(o=0,e.getAttribute("data-parent-pk")||null);if(l){var u=e.getAttribute("data-service-field")||null;for(var d in l){l[d].dataindex=o,o+=1;var c=p,m=a,h=!1;for(var g in l[d])s&&"pk"==g&&l[d][g]==s?(c=c.replace("{{selected}}","selected"),h=!0):c=c.replace("{{selected}}",""),c=c.replace("{{"+g+"}}",l[d][g]),m=m.replace("{{"+g+"}}",l[d][g]),1==h&&u=="{{"+g+"}}"&&app.dialog.alert(g);i+=c}if(e.innerHTML=i,s){var b=e.closest(".smart-select");(f=app.smartSelect.get(b))&&f.setValue(s),"select"==e.tagName.toLowerCase()&&(e.value=s)}if(n){var f;if(b=e.closest(".smart-select"))(f=app.smartSelect.get(b))&&f.setValue(n);"select"==e.tagName.toLowerCase()&&(e.value=n)}e.setAttribute("data-loaded","true"),r&&app.preloader.hideIn(r)}}})).catch((function(e){app.emit("dbExpressDataLoadError",$(this),e),thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.data] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))}else thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] Service Field is not defined for Form Input with ID ["+e.id+"] ")}},sendData:function(e,t,r){if("function"==typeof r)if(t)if(e&&0!=e.length){var a=thoriumCorePlugin.httpRoot+kApiRoot+kSetDataApi;t.append("service",e.toLowerCase()),t.append("token",auth.currentUser.token);var i=!1;1==app.device.capacitor&&(thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Capacitor App detected, switching to cross domain mode"),i=!0);thoriumapi.logEvent(0,"Sending Custom Data to: ["+a+"]"),app.request({url:a,data:t,method:"post",crossDomain:i,contentType:"multipart/form-data",headers:"",timeout:0,dataType:"text",processData:!0,username:"",password:"",async:!0,error(t,a){var i=(t.responseText+" "+t.statusText).trim();thoriumapi.logEvent(2,"[com.thoriumbuilder.core] Error: ["+i+"] when executing WebService "+e),r(-1,i,null)},success(t,a,i){var o;try{o=JSON.parse(t)}catch(t){return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] Error: ["+t.message+"] when executing WebService "+e),void r(-1,t.message,null)}if(o&&o.code<0){var n="Unable to execute Service ["+e+"], error "+o.code+": "+o.message;return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+n),void r(o.code,o.message,null)}if(!o){n="Unable to execute Service ["+e+"], empty result";return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+n),void r(-1,n,null)}if(o.result&&o.result.length>0){item=o.result[0];o.inserted;r(o.code,o.message,item)}thoriumapi.logEvent(0,"[com.thoriumbuilder.core] WebService executed with Success")}})}else thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] Invalid Service Name");else thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] Invalid Form Data");else thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] Unable to execute Service, Callback function is undefined")},submitForm:function(e,t){var r=e.target;if(0!=app.input.validateInputs(r)){var a=t.attr("data-mode")||null;if((3==a||4==a||5==a)&&0!=r.classList.contains("dbexpress-form")){e.preventDefault,thoriumapi.logEvent(0,"[com.thoriumbuilder.core] Submiting Form with id ["+r.id+"]"),thoriumapi.logEvent(0,"[com.thoriumbuilder.core] Formating Data for Form with id ["+r.id+"]");for(var i=new FormData,o=0;o<r.length;o++){var n,l="_alias",p=["name"+l,"id"+l,"description"+l,"this"+l,"title"+l,"submit"+l],s=r[o].name;!0===p.includes(s)&&(s=s.replaceAll(l,"")),s.length>0&&(n=r.querySelector("input[name="+s+"]"));var u,d=r[o].type;if(n&&"text"==d?(n.getAttribute("type"),u=n.getAttribute("data-date-type")||null):null,"radio"==d)!0===r[o].checked&&i.append(s,r[o].value);else if("checkbox"==d)i.append(s,r[o].checked);else if("submit"==d);else if("file"==d){if(1==("true"==r[o].getAttribute("data-modified")||!1)){var c=r[o].id,m=$("#"+c);if(m){var h=m.data("data-blob");h||(h=""),-1==s.indexOf("-fileinput")&&(s+="-fileinput"),i.append(s,h)}}}else if(!u||"datetime-local"!=u&&"date"!=u)i.append(s,r[o].value);else if("time"==d){var g=r[o].value,b=(g=(g=(g=g.replace(" ","")).replace("am","")).replace("pm","")).substring(0,2),f=g.substring(3),v=60*parseInt(b)+parseInt(f);i.append(s,v)}else{var x=r[o].getAttribute("data-timestamp")||null;x?i.append(s,x):i.append(s,r[o].value)}}var y=thoriumCorePlugin.httpRoot+kApiRoot+kSetDataApi,A=document.querySelector(".page-current");if(4==a||5==a){var k=A.getAttribute("data-record-uid")||null;i.append("uid",k)}else if(3==a){var E=A.getAttribute("data-record-pk")||null;"null"==E&&(E=null);var w=A.getAttribute("data-record-service")||null;w!=S&&w&&E&&i.append("fk_"+w,E)}var S=t.attr("data-service")||null;S&&i.append("service",S),i.append("token",auth.currentUser.token);var D="",P=!1,C="multipart/form-data",R=!0,U="",T="",L=0,I=t.attr("data-form-beforesubmit");if(I){var F=window[I],q={};q.formdata=i,q.headers=D,q.url=y,q.crossDomain=P,q.contentType=C,q.async=R,q.username=U,q.password=T,q.timeout=L;var M=[r,q];if("function"==typeof F){var N=F.apply(this,M);thoriumapi.logEvent(0,"[com.thoriumbuilder.core] Function ["+I+"] Called for Form with id ["+r.id+"]"),N&&(i=N.formdata,D=N.headers,y=N.url,P=N.crossDomain,C=N.contentType,R=N.async,U=N.username,T=N.password,L=N.timeout)}else{var V='[com.thoriumbuilder.core] An error occured "'+I+'" is not an existing function';thoriumapi.logEvent(2,V)}}1==kShowPreloader&&app.preloader.show(),thoriumapi.logEvent(0,"Sending Data to: ["+y+"] from Form with id ["+r.id+"]"),app.request({url:y,data:i,method:"post",crossDomain:P,contentType:C,headers:D,timeout:L,dataType:"text",processData:!0,username:U,password:T,async:R,error(e,a){app&&app.preloader.hide();var i=t.attr("data-form-error-message")||"",o=(e.responseText+" "+e.statusText).trim();thoriumapi.logEvent(2,"[com.thoriumbuilder.core] Form Error: ["+o+"] when submitting Form with id ["+r.id+"]"),i.length>0?thoriumCorePlugin.showAlert(i):thoriumCorePlugin.showAlert("An error occured ["+e.responseText+" "+e.statusText+"] when submitting Form with id ["+r.id+"]"),app.emit("userFormError",o,r,a,e)},success(i,o,n){app&&app.preloader.hide();try{var l=JSON.parse(i)}catch(e){return thoriumapi.logEvent(2,"Error "+e),void app.dialog.alert(e)}if(l&&l.code<0)return thoriumapi.logEvent(2,"Error "+l.code+" "+l.message),void app.dialog.alert(l.message);if(!l)return thoriumapi.logEvent(2,"Error, invalid result"),void app.dialog.alert("Error, invalid result");var p={};l.result&&l.result.length>0&&(p=l.result[0]);var s=1==l.inserted,u=t.attr("data-service")||null;1==s&&u&&3==a?dbExpressData.addItemToAllRepeaters(u,p):0==s&&u&&3!=a&&dbExpressData.replaceItemInAllRepeaters(u,p),thoriumapi.logEvent(0,"[com.thoriumbuilder.core] Form with id ["+r.id+"] Sent with Success");var d=t.attr("data-form-message")||null;if(d&&d.length>0&&thoriumCorePlugin.showAlert(d),app.emit("userFormSuccess",i,r,o,n),"true"==(t.attr("data-reset-form")||"false")){thoriumapi.logEvent(0,"[com.thoriumbuilder.core] Form Reset"),e.target.reset(),$("#"+e.target.id+" .text-editor").each((function(e){var t=app.textEditor.get("#"+e.id);t&&t.setValue("")}));for(var c=r.querySelectorAll("select"),m=0;m<c.length;m++){c[m].value="";var h=r.querySelector(".smart-select .item-after");h&&(h.innerText="")}$(".firebase_document_preview").css("background-image",""),$(".input-filename span").html(""),$(".firebase_fileupload-rotate").hide(),$(".firebase_fileupload-remove").hide(),$(".input-filename i").hide()}var g=t.attr("data-return-function")||null;if(g){thoriumapi.logEvent(0,"[com.thoriumbuilder.core] Form with id ["+r.id+"] : Calling JS function ["+g+"]");var b=window[g],f=[r,i,o,n];if("function"==typeof b){b.apply(this,f);app&&app.preloader.hide(),thoriumapi.logEvent(0,"[com.thoriumbuilder.core] JS function ["+g+"] called successfully when submitting Form with id ["+r.id+"]")}else{app&&app.preloader.hide();var v='An error occured "'+g+'" is not an existing function';thoriumapi.logEvent(2,"[com.thoriumbuilder.core] JS function ["+g+"] called with Error: ["+v+"] when submitting Form with id ["+r.id+"]"),thoriumCorePlugin.showAlert(v),app.emit("userFormError",v,r,o,n)}}var x=t.attr("data-form-postprocess")||0;0==x?thoriumapi.logEvent(0,"[com.thoriumbuilder.core] Form Sent"):1==x?(thoriumapi.logEvent(0,"[com.thoriumbuilder.core] Going Back to Previous Page"),thoriumCorePlugin.backToPreviousPage()):2==x&&(thoriumapi.logEvent(0,"[com.thoriumbuilder.core] Reloading Home Page"),thoriumCorePlugin.reloadHomePage())}})}}else thoriumapi.logEvent(0,"[com.thoriumbuilder.core] Missing Mandatory fields for Form with id ["+r.id+"]")},executeRepeaterFullText:function(e){var t=e.value,r=e.form,a="true"==r.getAttribute("data-custom-search")||!1,i=r.getAttribute("data-search-mode")||0,o="true"==r.getAttribute("data-soundex")||!1,n=r.getAttribute("data-search-field")||null;if(t&&t.length>0&&1==a){e.blur();var l=r.getAttribute("data-search-container"),p=document.querySelector(l);if(p){p.setAttribute("data-loaded",!1);var s=p.getAttribute("data-parentuid")||null;0==i||(1==i?t+="*":2==i&&(t="*"+t+"*")),1==kShowPreloader&&app.preloader.show(),dbExpressData.getRepeaterData(p,s,!1,t,null,null,o,n)}}},deleteRecord:function(e,t,r,a,i){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.data] delete record with id ["+a+"] from service ["+t+"]"),1==kShowPreloader&&app.preloader.show();var o=new FormData;o.append("token",auth.currentUser.token),o.append("service",t),o.append("uid",r),o.append("pk",a);var n=thoriumCorePlugin.httpRoot+kApiRoot+kDeleteDataApi;fetch(n,{method:"post",body:o,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){if(e&&e.code<0)app&&app.preloader.hide(),app.dialog.alert(e.message);else if(e&&0==e.code){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.data] record with id ["+a+"] from service ["+t+"] deleted");for(var o=document.querySelectorAll(".dbexpress-virtual-list-content[data-service='"+t+"']"),n=o.length-1;n>=0;n--){var l=o[n],p=app.virtualList.get(l);if(p){for(var s=0;s<p.items.length;s++)p.items[s].uid==r&&p.deleteItem(s);p.update()}else for(var u=l.querySelectorAll(".item-dbexpress[data-uid='"+r+"']"),d=0;d<u.length;d++){var c=u[d];c&&c.remove()}}app&&app.preloader.hide(),1==i&&thoriumCorePlugin.backToPreviousPage()}})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.data] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))},handleDelete:function(e){var t=e.getAttribute("data-message")||"Delete?";app.dialog.confirm(t,(function(){var t=!0;e.closest(".dbexpress-virtual-list-content")&&(t=!1),e.closest(".dbexpress-displayer")&&(t=!0);var r=e.getAttribute("data-pk")||null,a=e.getAttribute("data-uid")||null,i=e.getAttribute("data-service")||null;"null"==r&&(r=null),"null"==a&&(a=null),"null"==i&&(i=null),i&&r&&a&&dbExpressData.deleteRecord(e,i,a,r,t)}))},hideInfinitePreloaders:function(){var e=document.querySelectorAll(".infinite-scroll-preloader");if(e)for(var t=0;t<e.length;t++){e[t].style.visibility="hidden"}},getRepeaterData:function(e,t,r,a,i,o,n,l){r=r||!1,a=a||null,i=i||null,o=o||null,n=n||!1,l=l||null;var p=e.getAttribute("data-service")||null;if(!p)return dbExpressData.hideInfinitePreloaders(),thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] Service not defined for Repeater with ID ["+e.id+"]"),void(app&&app.preloader.hide());if(!auth.currentUser.token||0==auth.currentUser.token.length)return dbExpressData.hideInfinitePreloaders(),thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] Unable to load data, No Active User"),void app.preloader.hide();if(1==r){if(1==("true"==e.getAttribute("data-fetched")||!1))return dbExpressData.allowInfinite=!0,void dbExpressData.hideInfinitePreloaders()}else e.setAttribute("data-offset",0),e.setAttribute("data-fetched",!1),dbExpressData.allowInfinite=!0;l?e.setAttribute("data-fulltext-field",l):l=e.getAttribute("data-fulltext-field")||null;var s=parseInt(e.getAttribute("data-offset")||0),u=$("#"+e.id);if(!u)return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] Virtual List not found for Repeater with ID ["+e.id+"]"),dbExpressData.allowInfinite=!0,app&&app.preloader.hide(),void dbExpressData.hideInfinitePreloaders();var d=app.virtualList.get(u),c=thoriumCorePlugin.httpRoot+kApiRoot+kGetDataApi+"?rnd="+Math.floor(Date.now()/1e3);thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Get data for Repeater with ID ["+e.id+"] from url ["+c+"]");var m={method:"post"},h=new FormData;if(h.append("service",p),h.append("token",auth.currentUser.token),t&&t.length>0){(g=e.getAttribute("data-foreign-key")||null)&&(h.append("parentpk",t),h.append("foreignkey",g),e.setAttribute("data-parent-pk",t),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Adding Filter [Parent key "+g+"="+t+"]"))}else{var g=e.getAttribute("data-foreign-key")||null,b=e.getAttribute("data-parent-pk")||null;g&&b&&(h.append("parentpk",b),h.append("foreignkey",g))}if(i&&o)h.append("extraparentpk",o),h.append("extraforeignkey",i),e.setAttribute("data-parent-fk",i),e.setAttribute("data-parent-fk-value",o);else{i=e.getAttribute("data-parent-fk")||null,o=e.getAttribute("data-parent-fk-value")||null;i&&o&&(h.append("extraparentpk",o),h.append("extraforeignkey",i))}a&&a.length>0&&(h.append("search",a),e.setAttribute("data-search",a),l&&h.append("fulltext-field",l),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Adding Filter [ full text search with value "+a+"]"));var f=e.getAttribute("data-filter-field"),v=e.getAttribute("data-filter-operator"),x=e.getAttribute("data-filter-value"),y=e.getAttribute("data-filter-field2"),A=e.getAttribute("data-filter-operator2"),k=e.getAttribute("data-filter-value2");if(0==x.indexOf("{")&&x.indexOf("}")>-1){w=(w=x.replace("{","")).replace("}","");try{x=window[w]}catch(e){dbExpressData.hideInfinitePreloaders(),app&&app.preloader.hide();var E="[com.thoriumbuilder.dbexpress] Unable to find variable "+w+"] "+e;return thoriumapi.logEvent(2,E),void app.dialog.alert(E)}}if(0==k.indexOf("{")&&k.indexOf("}")>-1){var w;w=(w=k.replace("{","")).replace("}","");try{k=window[w]}catch(e){dbExpressData.hideInfinitePreloaders(),app&&app.preloader.hide();E="[com.thoriumbuilder.dbexpress] Unable to find variable "+w+"] "+e;return thoriumapi.logEvent(2,E),void app.dialog.alert(E)}}f&&v&&x&&(h.append("field1",f),h.append("operator1",v),h.append("value1",x),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Adding Filter ["+f+v+x+"]")),y&&A&&k&&(h.append("field2",y),h.append("operator2",A),h.append("value2",k),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Adding Filter ["+y+A+k+"]")),1==("1"==e.getAttribute("data-user-data")||!1)&&(h.append("userdata",1),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Adding Filter [user data]"));var S=e.getAttribute("data-maxrows")||0;S>0&&(h.append("offset",s),h.append("maxrows",S));var D=e.getAttribute("data-order-sort")||"asc";1==n&&h.append("soundex",n),1==kShowPreloader&&app.preloader.show(),h.append("sort",D);var P=e.getAttribute("data-orderby")||null;P&&h.append("orderby",P),m.body=h,fetch(c,m).then((function(t){t.text().then((t=>{var a;thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Got Response from url ["+c+"]");try{a=JSON.parse(t)}catch(e){return dbExpressData.hideInfinitePreloaders(),thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+e.message),app.emit("dbExpressDataLoadError",$(this),e.message),app.preloader.hide(),app.dialog.alert(e.message),void(dbExpressData.allowInfinite=!0)}if(a&&a.code<0||!a){dbExpressData.hideInfinitePreloaders();var i="Unable to load repeater with id ["+e.id+"], error "+a.code+": "+a.message;return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+i),app.emit("dbExpressDataLoadError",$(this),i),app.preloader.hide(),app.dialog.alert(i),void(dbExpressData.allowInfinite=!0)}var o=0,l=0,u=a.result;if(u)for(var m in u)u[o].dataindex=o+s,u[o].service=p,o+=1,l+=1;if(u||(u={}),1==e.classList.contains("openstreetmap-api"))return dbExpressData.hideInfinitePreloaders(),dbExpressMaps.addMarkersToMap(e,u,"osm"),e.setAttribute("data-loaded",!0),void app.preloader.hide();if(1==e.classList.contains("googlemapAPI"))return dbExpressData.hideInfinitePreloaders(),dbExpressMaps.addMarkersToMap(e,u,"googlemap"),void app.preloader.hide();if(1==e.classList.contains("dbexpress-virtual-list-content")){if(1==r){if(0==l||l<parseInt(S)){e.setAttribute("data-fetched",!0);var h=document.querySelectorAll(".infinite-scroll-preloader");for(o=0;o<h.length;o++){h[o].style.visibility="hidden"}}var g=e.closest(".page-content"),b=0;g&&(b=g.scrollTop||0),e.setAttribute("data-offset",parseInt(s)+parseInt(S)),d.appendItems(u),d.update(),g&&b>0&&g.scrollTo({top:b,behavior:"smooth"})}else e.setAttribute("data-fetched",!1),d&&app.virtualList.destroy(d),e.style.visibility="visible",e.style.opacity=1,e.setAttribute("data-offset",o),dbExpressData.setRepeaterDataContent(e,u),app.emit("dbExpressDataLoadSuccess",$(this),e,u);dbExpressData.allowInfinite=!0}if(dbExpressData.hideInfinitePreloaders(),1==n&&a&&0==a.count&&a.soundex.length>0){var f=e.querySelector(".repeater-noresult");f&&(f.innerHTML='<div class="fuzzy">Did you mean <a class="fuzzy-link" href="#">'+a.soundex+"</a>?</div>")}app.preloader.hide()})).catch((function(e){dbExpressData.hideInfinitePreloaders(),app.preloader.hide(),thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] "+e),app.emit("dbExpressDataLoadError",$(this),e)}))})).catch((function(n){if(dbExpressData.hideInfinitePreloaders(),app&&app.preloader.hide(),1==thoriumapi.isLocal())return thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] - server busy ["+n.message+"], relaunch service ["+p+"]"),void dbExpressData.getRepeaterData(e,t,r,a,i,o);thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] - service ["+p+"] "+n.message),app.emit("dbExpressDataLoadError",$(this),n),0==app.online||app.dialog.alert(n.message)}))},loadRecord:function(e,t,r){if(e){var a=new FormData;if("null"==r&&(r=null),a.append("service",t),r)a.append("uid",r);else{var i="No UID parameter found for calling Service "+t;thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] "+i)}a.append("token",auth.currentUser.token);var o={method:"post"};o.body=a;var n=document.querySelector(".page[data-name='"+e.getAttribute("data-name")+"'] .dbexpress-displayer")||null;n&&(n.style.display="none"),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress.data] loading record with uid ["+r+"] from service ["+t+"]");var l=thoriumCorePlugin.httpRoot+kApiRoot+kGetDataApi+"?rnd="+Math.floor(Date.now()/1e3);fetch(l,o).then((function(r){r.text().then((r=>{var a;thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Got Response from url ["+l+"]");try{a=JSON.parse(r)}catch(e){return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+e.message),void(app&&app.preloader.hide())}if(a&&a.code<0||!a){app&&app.preloader.hide();var i="Unable to load data for page ["+e.getAttribute("data-name")+"] with service ["+t+"] : invalid result: "+a.message;return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+i),void app.dialog.alert(i)}if(!a.result||0==a.result.length){app.preloader.hide();i="Unable to load data for page ["+e.getAttribute("data-name")+"] with service ["+t+"] : invalid result";return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+i),void app.dialog.alert(i)}var o=a.result[0];o||(o={});for(var p=document.querySelectorAll(".page[data-name='"+e.getAttribute("data-name")+"'] .dbexpress-displayer"),s=0;s<p.length;s++){var u=p[s].getAttribute("data-service")||null;u&&u==t&&dbExpressData.fillDisplayerFromMemoryData(p[s],o)}var d=document.querySelectorAll(".page[data-name='"+e.getAttribute("data-name")+"'] .dbexpress-form[data-from-repeater='true']");for(s=0;s<d.length;s++){var c=d[s].getAttribute("data-service")||null;c&&c==t&&dbExpressData.fillFormFromData(d[s],o)}app.preloader.hide(),e&&app.preloader.hideIn(e),n&&(n.style.visibility="visible",n.style.display="block",n.style.opacity=1)})).catch((function(r){app&&app.preloader.hide(),e&&app.preloader.hideIn(e),thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] - service ["+t+"] "+r),app.emit("dbExpressDataLoadError",this,r),app.dialog.alert(r.message)}))})).catch((function(a){if(app&&app.preloader.hide(),e&&app.preloader.hideIn(e),1==thoriumapi.isLocal())return thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] - server busy ["+a.message+"], relaunch service ["+t+"]"),void dbExpressData.loadRecord(e,t,r);thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] - service ["+t+"] "+a.message),app.emit("dbExpressDataLoadError",$(this),a),0==app.online?thoriumCorePlugin.showNotification("Internet connection lost"):app.dialog.alert(a.message)}))}else thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] no page specified")},onRepeaterLineChange:function(e,t){var r=t.getAttribute("data-index")||null;if(r){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] click/touch on line ["+r+"]");var a=t.getAttribute("data-uid")||null,i=t.getAttribute("data-pk")||null,o=t.closest(".dbexpress-virtual-list-content");if(o){var n=t.closest(".dbexpress-virtual-list");if(n&&app.emit("dbExpressRepeaterLineChange",n,r),app.emit("dbExpressRepeaterLineChange",o,r),1==t.classList.contains("dbexpress-action-button")){var l=t.getAttribute("data-target")||null,p=t.getAttribute("data-transition")||"f7-push",s=t.getAttribute("data-service")||null;e.preventDefault(),(u=app.view)&&u.length>0&&app.view[0].router.navigate("/"+l+"/?rowindex="+r+"&uid="+a+"&pk="+i+"&service="+s+"&parentvlid="+o.id,{animate:!0,transition:p,reloadAll:!1})}else{l=o.getAttribute("data-detail")||null;var u,d=o.getAttribute("data-target-repeater")||null,c=o.getAttribute("data-foreignkey-link")||null;s=o.getAttribute("data-service")||null,p=o.getAttribute("data-transition")||"f7-push";if(l)e.preventDefault(),(u=app.view)&&u.length>0&&app.view[0].router.navigate("/"+l+"/?rowindex="+r+"&uid="+a+"&pk="+i+"&service="+s+"&parentvlid="+o.id,{animate:!0,transition:p,reloadAll:!1});else if(d){var m=document.querySelector(".page-current").getAttribute("data-record-pk")||null,h=document.getElementById(d);if(h&&c)1==("true"==o.getAttribute("data-target-reset-filters")||!1)&&(h.setAttribute("data-filter-field",""),h.setAttribute("data-filter-operator",""),h.setAttribute("data-filter-value",""),h.setAttribute("data-filter-field2",""),h.setAttribute("data-filter-operator2",""),h.setAttribute("data-filter-value2","")),h.setAttribute("data-loaded",!1),dbExpressData.getRepeaterData(h,m,!1,null,c,i)}}}}},calendarInsertDateSync:function(e,t,r,a,i,o){var n=thoriumCorePlugin.httpRoot+kApiRoot+kSetDataApi,l=new FormData;l.append(r,t),l.append("service",e),l.append("token",auth.currentUser.token),a&&a.length>0&&l.append(a,i),app.request({url:n,data:l,method:"POST",crossDomain:!1,contentType:"multipart/form-data",headers:"",timeout:0,async:!1,processData:!0,beforeSend(){1==kShowPreloader&&app.preloader.show()},error(e,t){app&&app.preloader.hide();var r=(e.responseText+" "+e.statusText).trim();0==r.length&&(r="Unknown Error, maybe due to access control checks ( Access-Control-Allow-Origin). "),thoriumapi.logEvent(2,"[com.thoriumbuilder.core] Form Error: ["+r+"] when submitting data"),erm.length>0?thoriumCorePlugin.showAlert(erm):thoriumCorePlugin.showAlert("An error occured ["+r+"] when submitting data")},success(e,t,r){try{var a=JSON.parse(e)}catch(e){return thoriumapi.logEvent(2,"Error "+e),void app.dialog.alert(e)}return a&&a.code<0?(thoriumapi.logEvent(2,"Error "+a.code+" "+a.message),void app.dialog.alert(a.message)):a?void thoriumapi.logEvent(0,"[com.thoriumbuilder.core] Calendar data Sent with Success"):(thoriumapi.logEvent(2,"Error, invalid result"),void app.dialog.alert("Error, invalid result"))}})},savecalendar:function(e){var t=document.querySelector("#"+e+" .calendar");if(t){1==kShowPreloader&&app.preloader.show();var r=document.querySelector("#"+e),a=app.calendar.get(t);if(a){var i=r.getAttribute("data-parent-pk"),o=r.getAttribute("data-foreign-key"),n=r.getAttribute("data-service-field"),l=r.getAttribute("data-service"),p=a.value;if(p)for(const[e,t]of Object.entries(p)){var s=new Date(t);if(s){1==kShowPreloader&&app.preloader.show();var u=s.getTime()/1e3;dbExpressData.calendarInsertDateSync(l,u,n,o,i)}}app.view[0].router.back(),app&&app.preloader.hide()}}},sendPin:function(e){var t=document.querySelector("#dbexpress-signin-email"),r=document.querySelector("#dbexpress-signin-password");if(t&&t.value.length>0&&r&&r.value.length>0){1==kShowPreloader&&app.preloader.show();var a={method:"post"},i=new FormData;i.append("email",t.value),i.append("password",r.value),a.body=i;var o=thoriumCorePlugin.httpRoot+kApiRoot+"thorium.auth.sendpin.php";fetch(o,a).then((function(e){e.text().then((e=>{var t;thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Got Response from url ["+o+"]");try{t=JSON.parse(e)}catch(e){return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+e.message),app&&app.preloader.hide(),void app.dialog.alert(e.message)}if(t&&t.code<0||!t){var r="Unable to send PIN";return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+r),app&&app.preloader.hide(),void app.dialog.alert(r)}app.dialog.alert(t.message),app&&app.preloader.hide()})).catch((function(e){app&&app.preloader.hide(),thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+e),app.dialog.alert(e.message)}))})).catch((function(t){if(app&&app.preloader.hide(),1==thoriumapi.isLocal())return thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] - server busy ["+t.message+"], relaunch service ["+service+"]"),void dbExpressData.sendPin(e);thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] - "+t.message),0==app.online||app.dialog.alert(t.message)}))}},getCalendarData:function(e,t){var r=e.getAttribute("data-service")||null;if(e.setAttribute("data-parent-pk",t),r){var a=e.getAttribute("data-service-field")||null;if(a){var i=thoriumCorePlugin.httpRoot+kApiRoot+kGetDataApi+"?rnd="+Math.floor(Date.now()/1e3);thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Get data for Calendar with ID ["+e.id+"] from url ["+i+"]");var o={method:"post"},n=new FormData;if(n.append("service",r),n.append("token",auth.currentUser.token),t&&t.length>0){var l=e.getAttribute("data-foreign-key")||null;l&&(n.append("parentpk",t),n.append("foreignkey",l),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Adding Filter [Parent key "+l+"="+t+"]"))}1==("1"==e.getAttribute("data-user-data")||!1)&&(n.append("userdata",1),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Adding Calendar Filter [user data]")),o.body=n,fetch(i,o).then((function(t){t.text().then((t=>{var o;thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Got Response from url ["+i+"]");try{o=JSON.parse(t)}catch(t){return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+t.message),app.emit("dbExpressDataLoadError",e,t.message),app&&app.preloader.hide(),void app.dialog.alert(t.message)}if(o&&o.code<0||!o){var n="Unable to load repeater with id ["+e.id+"], error "+o.code+": "+o.message;return thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+n),app.emit("dbExpressDataLoadError",e,n),app&&app.preloader.hide(),void app.dialog.alert(n)}var l=0,p=o.result;if(p)for(var s in p){p[l].dataindex=l,p[l].service=r;var u=p[l];l+=1,1;var d=new Date(1e3*u[a]);d=new Date(d.toDateString()),thoriumapi.date.disableDateFromCalendar(e.id,d)}p||(p={}),app&&app.preloader.hide()})).catch((function(t){app&&app.preloader.hide(),thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+t),app.emit("dbExpressDataLoadError",e,t),app.dialog.alert(t.message)}))})).catch((function(a){if(app&&app.preloader.hide(),1==thoriumapi.isLocal())return thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] - server busy ["+a.message+"], relaunch service ["+r+"]"),void dbExpressData.getCalendarData(e,t);thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] - service ["+r+"] "+a.message),app.emit("dbExpressDataLoadError",e,a),0==app.online||app.dialog.alert(a.message)}))}else thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] Calendar Service Field not set")}else thoriumapi.logEvent(1,"[com.thoriumbuilder.dbexpress] Calendar Service not set")},onPageMounted:function(e){var t,r=e.detail;if(r===page?elt=app.root:(elt=r.$el,t=r.route),elt&&t){var a=t.query.rowindex||null,i=t.query.uid||null;i||(i=t.query.id||null);var o=t.query.pk||null,n=t.query.service||null,l=document.querySelector(".page-next");l||(l=document.querySelector(".page-master-detail"));var p=document.querySelector(".page-current");dbExpressData.applyUserRolePermissions(),a&&i&&n&&o?l&&(l.setAttribute("data-record-uid",i),l.setAttribute("data-record-pk",o),l.setAttribute("data-record-service",n)):(a=-1,p&&(i=p.getAttribute("data-record-uid")||null,o=p.getAttribute("data-record-pk")||null,n=p.getAttribute("data-record-service")||null,l&&(l.setAttribute("data-record-uid",i),l.setAttribute("data-record-pk",o),l.setAttribute("data-record-service",n))));var s=document.querySelector(".page[data-name='"+r.name+"'] .dbexpress-displayer"),u=document.querySelector(".page[data-name='"+r.name+"'] .dbexpress-form[data-from-repeater='true']");if((u||s)&&(u&&(u.style.visibility="hidden"),s&&(s.style.visibility="hidden",s.style.opacity=0),setTimeout((function(){dbExpressData.loadRecord(l,n,i)}),50)),n&&o){var d=document.querySelector(".page[data-name='"+r.name+"'] .dbexpress-form *[name='fk_"+n+"']");d&&(d.value=o,d.setAttribute("data-parent-pk",o))}for(var c=document.querySelectorAll(".page[data-name='"+r.name+"'] .dbexpress-virtual-list-content"),m=0;m<c.length;m++){var h=c[m];h.style.visibility="hidden",h.style.opacity=0;var g=h.getAttribute("data-noload")||null;g&&"true"==g?thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Repeater with ID ["+h.id+"] is set to noload-data"):dbExpressData.getRepeaterData(h,o)}var b=document.querySelectorAll(".page[data-name='"+r.name+"'] .custom-db-calendar");for(m=0;m<b.length;m++){var f=b[m],v=f.querySelector(".calendar");v&&0==auth.currentUser.group?v.classList.add("disabled"):v.classList.remove("disabled"),dbExpressData.getCalendarData(f,o)}if(1==kDbExpressEcommerce&&dbExpressCommerce.initCartController(),"undefined"!=typeof openStreetMapPlugin&&dbExpressMaps.initAllopenStreetMaps(!1),"undefined"!=typeof googleMapPlugin&&dbExpressMaps.initAllGoogleMaps(!0),auth.currentUser.photoURL&&auth.currentUser.photoURL.length>0){var x=auth.getDbAssetsUrlRoot()+auth.currentUser.photoURL+"?rnd="+Math.floor(Date.now()/1e3);$(".dbexpress_avatar").attr("src",x)}}},setRepeaterDataContent:function(e,t){var r,a=e.getAttribute("data-displaymode")||0,i=document.getElementById("template-"+e.id);(r=$("#"+e.id).data("template")||null)&&0!=r.length||(r=a<2?dbExpressData.getRepeaterTemplate(i):i.outerHTML,$("#"+e.id).data("template",r));var o=r;if(r=(r=r.replaceAll("{data-img-root}",auth.getDbAssetsUrlRoot())).replaceAll("{data-asset-root}",auth.getDbAssetsUrlRoot()),a<2)thoriumCorePlugin.renderVirtualListFromData(e,t,r);else if(e.scrollLeft=0,e.innerHTML=o,$("#"+e.id).data("items",t),t.length>0){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Render Repeater for Repeater with ID ["+e.id+"]"),$("#"+e.id).data("items",t);var n,l=0,p=auth.getDbAssetsUrlRoot();for(var s in thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Get horizontal Repeater Rows for Repeater with ID ["+e.id+"]"),t)n=(n=(n=(n=(n=(n=thoriumCorePlugin.renderVlItem(t[s],r,i,0)).replaceAll("templaterow","")).replaceAll("template-"+e.id,"template-"+e.id+"-"+l)).replaceAll("{data-img-root}",p)).replaceAll("{data-asset-root}",p)).replace("url("+p+")","url('./img/defaultimg.png')"),e.innerHTML=e.innerHTML+n,l+=1;e.setAttribute("data-loaded",!0),e.setAttribute("data-count",t.length)}},getRepeaterTemplate:function(e){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Get Template for Repeater with ID ["+e.id+"]");var t=e.outerHTML;e.style.display=null,e.removeAttribute("id"),e.removeAttribute("data-template-height"),e.classList.remove("templaterow");var r=e.outerHTML;return e.outerHTML=t,r},getCollectionRow:function(e,t,r){},parseDataRecursive:function(e,t,r){for(var e in app.dialog.alert("[com.thoriumbuilder.dbexpress] parseDataRecursive"),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Parsing Data "),t){if("object"==typeof t[e]&&null!==t[e])if(Array.isArray(t[e]))r[e.replaceAll(" ","_")]=t[e];else dbExpressData.parseDataRecursive(e,t[e],r);else r[e.replaceAll(" ","_")]=t[e]}return r},fillDisplayerFromMemoryData:function(e,t){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Set Content for Displayer with ID ["+e.id+"]"),$("#"+e.id+" .dbexpress-field").each((function(e){if(!e.closest(".dbexpress-virtual-list")){var r=e.tagName.toLowerCase(),i=e.className.toLowerCase(),o=e.getAttribute("data-dbexpress-field")||null,n=e.getAttribute("data-dbexpress-type")||null;if("route"==n){var l=e.getAttribute("data-latitude")||null,p=e.getAttribute("data-longitude")||null,s=e.getAttribute("onclick")||null;if(l&&p&&s){var u=t[l],d=t[p];u&&d?(s=(s=s.replaceAll("{{"+l+"}}",u)).replaceAll("{{"+p+"}}",d),e.setAttribute("onclick",s)):e.setAttribute("onclick","")}}else if(n&&"map"==n){var c=e.getAttribute("data-latitude")||null,m=e.getAttribute("data-longitude")||null;if(c&&m){u=t[c],d=t[m],d=t[m];dbExpressMaps.initDisplayerMap(e,u,d)}else e.style.display="none"}else if(o){dataValue=t[o],dataValue&&dataValue.length>0&&0==kDbHTMLRendering&&(dataValue=dataValue.replace(/&/g,"&").replace(/>/g,">").replace(/</g,"<").replace(/"/g,"""));var h=e.getAttribute("data-date-type")||null;if(e.getAttribute("data-function")||null||h)templateHtml=thoriumCorePlugin.applyFormulaToField(e,e.innerHTML,o,dataValue),e.innerHTML=templateHtml;else if(n&&"decimal"==n)templateHtml=thoriumCorePlugin.applyFormulaToField(e,e.innerHTML,o,dataValue),e.innerHTML=templateHtml;else if(n&&"rating"==n){dataValue||(dataValue=0);var g=parseInt(dataValue)||0,b="";for(a=0;a<g;a++)b+='<i class="fa f7-icons s-3" data-icon="star_fill">star_fill</i>';e.innerHTML=e.innerHTML.replaceAll("{{"+o+"}}",b)}else if(n&&"video"==n){var f=e.querySelector("video");f&&(dataValue&&dataValue.length>0?f.setAttribute("src",auth.getDbAssetsUrlRoot()+dataValue):(e.style.display="none",f.setAttribute("src","")))}else if(n&&"audio"==n){var v=e.querySelector("audio");v&&(dataValue&&dataValue.length>0?v.setAttribute("src",auth.getDbAssetsUrlRoot()+dataValue):(e.style.display="none",v.setAttribute("src","")))}else if(n&&"picture"==n){var x=e.querySelector(".dbexpress-image-content");if(x)if(dataValue){var y=e.getAttribute("data-httproot")||"";if("createdby_photourl"==o)x.style.backgroundImage="url('"+auth.getDbAssetsUrlRoot()+dataValue+"')";else if(-1!=dataValue.toLowerCase().indexOf("http://")||-1!=dataValue.toLowerCase().indexOf("https://"))x.style.backgroundImage="url('"+dataValue+"')";else{t.uid&&x.setAttribute("data-img-name",dataValue);var A="url("+auth.getDbAssetsUrlRoot()+dataValue+"?rnd="+Math.floor(Date.now()/1e3)+")";x.style.backgroundImage=A}}else e.style.display="none";else e.setAttribute("src",auth.getDbAssetsUrlRoot()+dataValue)}else if(["embed-responsive-item"].indexOf(i)>-1&&"audio"!=r&&"video"!=r){y=e.getAttribute("data-httproot")||"";dataValue?e.style.backgroundImage="url('"+y+dataValue+"')":e.closest(".embed-responsive").style.display="none"}else if(dataValue||0==dataValue){var k=e.innerHTML,E=e.getAttribute("data-inner-template")||null;if(E?k=E:e.setAttribute("data-inner-template",k),1==i.includes("dbexpress-number")&&parseFloat(dataValue)>0){var w=parseInt(e.getAttribute("data-decimal"))||0,S=parseFloat(dataValue);dataValue=S.toFixed(w)}k&&o&&(e.innerHTML=k.replaceAll("{{"+o+"}}",dataValue),e.classList.contains("text-viewer")?e.style.display="-webkit-box":e.style.display="block"),"a"==r&&(k=e.getAttribute("href"))&&(k=k.replaceAll("{{"+o+"}}",dataValue),e.setAttribute("href",k))}else e.style.display="none";var D=!1;if(0==isNaN(dataValue)&&0==parseFloat(dataValue)&&(D=!0),dataValue&&0!=dataValue.length||(D=!0),"none"==e.style.display&&(D=!0),1==D)if(e.closest(".dbexpress-datalist")){var P=e.closest("li");P&&(P.style.display="none")}}}}));for(var r=document.querySelectorAll("#"+e.id+" .dbexpress-action-button"),a=0;a<r.length;a++){var i=r[a];if(!i.closest(".dbexpress-virtual-list"))for(var o=0;o<i.attributes.length;o++){var n=i.attributes[o];for(const e in t)n.value=n.value.replaceAll("{{"+e+"}}",t[e]);if("data-service"==n.name){var l=e.getAttribute("data-service")||null;l&&(n.value=l)}}}e.setAttribute("data-loaded",!0),e.style.visibility="visible"},getDateFromTimeStamp:function(e){var t=new Date(1e3*e);return isNaN(t.getTime())?e:new Intl.DateTimeFormat("en-EN",{hour12:kHours12,hour:"2-digit",minute:"2-digit",day:"2-digit",month:"2-digit",year:"numeric",literal:"/"}).format(t).toLowerCase()},collectionrepeaterLineClick:function(e,t){var r=t.attr("data-index")||null,a=t.attr("data-uid")||null;if(r){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Detect Click/Touch on Collection item line ["+r+"]");var i=t.parents(".dbexpress-virtual-list-content");if(i){var o=i.data("items"),n=i.attr("data-detail")||null,l=o[r],p=app.view;p&&p.length>0&&p[0].router.navigate("/"+n+"/?rowindex="+r+"&data="+encodeURIComponent(JSON.stringify(l))+"&key="+a)}}},repeaterFilterHandler:function(e){var t=e.getAttribute("data-filter-virtuallist")||null,r=document.getElementById(t);if(r){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Set New Filter for Repeater with ID ["+t+"]"),r.setAttribute("data-loaded",!1),r.setAttribute("data-count",0),r.setAttribute("data-filter-field",e.getAttribute("data-filter-field")||""),r.setAttribute("data-filter-operator",e.getAttribute("data-filter-operator")||""),r.setAttribute("data-filter-value",e.getAttribute("data-filter-value")||""),r.setAttribute("data-filter-field2",e.getAttribute("data-filter-field2")||""),r.setAttribute("data-filter-operator2",e.getAttribute("data-filter-operator2")||""),r.setAttribute("data-filter-value2",e.getAttribute("data-filter-value2")||""),r.setAttribute("data-user-data",e.getAttribute("data-user-data")||!1),r.setAttribute("data-orderby",e.getAttribute("data-orderby")||""),r.setAttribute("data-order-sort",e.getAttribute("data-order-sort")||""),r.removeAttribute("data-parent-fk"),r.removeAttribute("data-parent-fk-value");var a=r.closest(".page-content");if(a){a.scrollTop=0;var i=a.querySelector(".searchbar-backdrop");i&&(i.style.opacity=0)}1==kShowPreloader&&app.preloader.show(),dbExpressData.getRepeaterData(r)}else{var o="An error occured, the Repeater is not initialized";thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] "+o),app.dialog.alert(o)}},repeaterLineButtonClick:function(e,t){app.dialog.alert("[com.thoriumbuilder.dbexpress] repeaterLineButtonClick");var r=t.attr("data-index")||null,a=t.attr("data-uid")||null,i=t.attr("data-target")||null,o=t.attr("data-transition")||null;if(r){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Detect Click/Touch on Line ["+r+"]");var n=t.parents(".json-virtual-list-content");if(n&&n.length>0){var l=app.virtualList.get("#"+n[0].id);if(l){var p=l.items[r],s=app.view,u=t.closest(".virtual-list")||null,d=null;u&&(d=u[0].id),s&&s.length>0&&(app.emit("VirtualListLineClick",t,r,p,i),s[0].router.navigate("/"+i+"/?rowindex="+r+"&data="+encodeURIComponent(JSON.stringify(p))+"&key="+a+"&parentvlid="+d,{animate:!0,transition:o,reloadAll:!1}))}}}},getFlatFormData:function(e,t,r){for(var a in app.dialog.alert("[com.thoriumbuilder.dbexpress] getFlatFormData"),t){if("object"==typeof t[a]&&null!==t[a])if(Array.isArray(t[a]))r[a.replaceAll(" ","_")]=t[a];else dbExpressData.getFlatFormData(e+"."+a,t[a],r);else r[e+"."+a.replaceAll(" ","_")]=t[a]}return r},convertFormData:function(e,t,r,a){var i=e.classList.contains("shadow-text");if("checkbox"==e.type)"true"===r||!0===r||"1"===r||1===r||"on"===r?(a[t]="on",e.setAttribute("checked","checked")):(a[t]="off",e.removeAttribute("checked"));else if("select-one"==e.type||"select"==e.tagName.toLowerCase){$("#"+e.id).attr("data-value",r);var o=$("#"+e.id).closest(".smart-select");if(o&&o.length>0){var n=app.smartSelect.get(o);n&&n.setValue(r)}else{$("#"+e.id).val(r),0==$("#"+e.id).html().trim().length&&$("#"+e.id).html('<option value="'+r+'">'+r+"</option>")}a[t]=r}else if("image"==e.type){if($("#"+e.id+"-fileinput-filename").css("visibility","hidden"),r&&r.length>0){var l=auth.getDbAssetsUrlRoot()+r+"?rnd="+Math.floor(Date.now()/1e3);$("#"+e.id).data("data-blob",""),$("#"+e.id).css("background-image","url("+l+")"),$("#"+e.id+"-fileinput-filename span").text(l),$("#"+e.id+"-remove").show()}}else if("range"==e.type){a[t]=r;var p=app.range.get(e.parentElement);p?p.setValue(r):(p=app.range.create(e.parentElement)).setValue(r)}else if(1==i){a[t]=r;var s=e.id.replaceAll("-shadow",""),u=app.textEditor.get("#"+s);u&&u.setValue(r)}else if("text"==e.type){e.value=r;var d=e.getAttribute("data-date-type");if(d&&("datetime-local"==d||"date"==d))if(r&&0!=r){e.setAttribute("data-timestamp",r);var c=thoriumCorePlugin.getDateTimeFromTimeStamp(r,d);e.value=c}else e.value=""}else if("textarea"==e.type)e.value=r;else if("radio"==e.type)for(var m=e.closest("ul"),h=e.getAttribute("name"),g=m.querySelectorAll("input[name='"+h+"']"),b=0;b<g.length;b++){var f=g[b];f.value==r?f.setAttribute("checked","checked"):f.removeAttribute("checked")}else if("file"==e.type){var v=e.getAttribute("data-fileinput-ref"),x=$("#"+v);x&&x.length>0&&($("#"+v+"-fileinput-filename").show(),$("#"+v+"-fileinput-filename").css("visibility","visible"),$("#"+v+"-fileinput-filename span").text(r),$("#"+v+"-fileinput-filename i").show(),$("#"+v+"-fileinput-link").show(),$("#"+v+"-fileinput-link span").html('<a class="external" target="_blank" rel="noopener" data-rel="external" target="_blank" href="'+r+'">See attached file</a>'),r&&r.length>0?$("#"+v+"-remove").show():$("#"+v+"-fileinput-filename").css("visibility","hidden")),a[t]=r}else a[t]=r,e.value=r;return a},fillFormFromData:function(e,t,r,a,i){if(t&&!0!==e.getAttribute("data-loaded")){var o={};for(var n in t){if("object"==typeof t[n]&&null!==t[n])o=dbExpressData.getFlatFormData(n,t[n],o);else o[n.replaceAll(" ","_")]=t[n]}thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Set dbExpress Form Data for form with ID ["+e.id+"]");for(let[r,a]of Object.entries(o)){var l=r;!0===["name","id","description","this","title","submit"].includes(l)&&(l+="_alias");var p=e.querySelector('input[name="'+l+'"]');p||(p=e.querySelector('textarea[name="'+l+'"]')),p||(p=e.querySelector('textarea[name="'+l+'"]')),p&&dbExpressData.convertFormData(p,r,a,t)}for(var s=document.querySelectorAll("#"+e.id+" select[data-service]"),u=0;u<s.length;u++){var d=s[u],c=d.getAttribute("data-service")||null,m=o["fk_"+c];d.setAttribute("data-value",m);var h=document.querySelector(".page-current");if(h){var g=h.getAttribute("data-record-service")||null,b=h.getAttribute("data-record-pk")||null;g&&b&&c==g&&d.setAttribute("data-value",b)}var f;f=e.getAttribute("data-api-mode")||"0",c&&1!=f&&dbExpressData.fillSmartSelect(d,c)}e.setAttribute("data-loaded",!0),e.setAttribute("data-parent-key",r),e.setAttribute("data-virtuallist-id",a),e.setAttribute("data-index",i),e.style.visibility="visible"}}},dbExpressCommerce={name:"Thorium Builder dbExpress eCommerce Plugin",bundleid:"com.thoriumbuilder.dbexpress.ecommerce",version:"3.0.0",allowInfinite:!0,shoppingCartPopup:null,addItemToCart:function(e){1==kShowPreloader&&app.preloader.show();var t=e.getAttribute("data-uid"),r=e.getAttribute("data-pk"),a=e.getAttribute("data-service"),i=e.getAttribute("data-qty")||1,o=e.getAttribute("data-field-name")||"",n=e.getAttribute("data-field-price")||0,l=e.getAttribute("data-field-img")||"",p=e.getAttribute("data-field-desc")||"",s=new FormData;s.append("token",auth.currentUser.token),s.append("service",a),s.append("uid",t),s.append("parent_pk",r),s.append("qty",i),s.append("cart_unit_price",n),s.append("cart_name",o),s.append("cart_photo",l),s.append("cart_desc",p);var u=thoriumCorePlugin.httpRoot+kApiRoot+kSetShoppingCartApi;fetch(u,{method:"post",body:s,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(t){if(t&&t.code<0)app&&app.preloader.hide(),app.dialog.alert(t.message);else if(t&&0==t.code){var r=t.count||"";$(".shoppingcartcounter").text(r);var a=e.getAttribute("data-cart-message")||null;a&&a.length>0&&thoriumCorePlugin.showToast(a,!1,"bottom",1e3)}app.sheet.close(".sheet-addtocart"),app&&app.preloader.hide()})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.data] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))},addToCartHandler:function(e){if(1==("true"==e.getAttribute("data-qty-selector")||!1)){var t=document.querySelector(".button-cart");t.setAttribute("data-uid",e.getAttribute("data-uid")),t.setAttribute("data-pk",e.getAttribute("data-pk")),t.setAttribute("data-index",e.getAttribute("data-index")),t.setAttribute("data-service",e.getAttribute("data-service")),t.setAttribute("data-field-name",e.getAttribute("data-field-name")),t.setAttribute("data-field-price",e.getAttribute("data-field-price")),t.setAttribute("data-field-img",e.getAttribute("data-field-img")),t.setAttribute("data-field-desc",e.getAttribute("data-field-desc")),t.setAttribute("data-cart-message",e.getAttribute("data-cart-message")),t.setAttribute("data-qty","1"),app.sheet.create({el:".sheet-addtocart",swipeToClose:!1,backdrop:!0}).open(!0);var r=app.stepper.get("#stepper-addtocart");r&&r.destroy(),r=app.stepper.create({el:"#stepper-addtocart",step:1,min:1,max:1e3,value:1,on:{change:function(e,r){t.setAttribute("data-qty",r)}}})}else dbExpressCommerce.addItemToCart(e)},getCustomerInformation:function(e){if(1==("true"==document.getElementById("shoppingcartform").getAttribute("data-loaded")))return app.tab.show("#shoppingCartTab2",!0),void $("#shoppingcartpopup-content").scrollTop(0,0);1==kShowPreloader&&app.preloader.show();var t=new FormData,r=auth.getToken();r&&t.append("token",r),t.append("email",auth.currentUser.email);var a=thoriumCorePlugin.httpRoot+kApiRoot+kGetProfileApi;fetch(a,{method:"post",body:t,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){if(1==thoriumapi.checkResult(e)){$('#shoppingcartform input[name="shoppingcart-displayname"]').val(e.displayName),$('#shoppingcartform input[name="shoppingcart-email"]').val(e.email),$('#shoppingcartform input[name="shoppingcart-phonenumber"]').val(e.phoneNumber),$('#shoppingcartform textarea[name="shoppingcart-address"]').val(e.address),$('#shoppingcartform input[name="shoppingcart-zip"]').val(e.zip),$('#shoppingcartform input[name="shoppingcart-city"]').val(e.city),$('#shoppingcartform input[name="shoppingcart-country"]').val(e.country),$('#shoppingcartform textarea[name="shoppingcart-notes"]').val(e.notes);var t=document.querySelector('input[name="deliverymodeselect"]:checked');if(t){var r="true"==t.getAttribute("data-no-address")||!1,a=document.querySelector(".addressblock");1!=r?(a.classList.remove("hidden"),document.querySelector("#shoppingcart-address").setAttribute("required","required"),document.querySelector("#shoppingcart-zip").setAttribute("required","required"),document.querySelector("#shoppingcart-city").setAttribute("required","required")):(a.classList.add("hidden"),document.querySelector("#shoppingcart-address").removeAttribute("required"),document.querySelector("#shoppingcart-zip").removeAttribute("required"),document.querySelector("#shoppingcart-city").removeAttribute("required"))}app&&app.preloader.hide(),app.tab.show("#shoppingCartTab2",!0),$("#shoppingcartpopup-content").scrollTop(0,0)}})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.data] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))},setCustomerInformation:function(e){1==kShowPreloader&&app.preloader.show();var t=new FormData,r=auth.getToken();r&&t.append("token",r),t.append("token",r),t.append("uid",auth.currentUser.uid);for(var a,i=document.getElementById("shoppingcartform").elements,o=0;a=i[o++];){var n=a.name.replace("shoppingcart-","");t.append(n,a.value)}var l=thoriumCorePlugin.httpRoot+kApiRoot+kSetProfileApi;fetch(l,{method:"post",body:t,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){1==thoriumapi.checkResult(e)&&(app&&app.preloader.hide(),app.tab.show("#shoppingCartTab3",!0),$("#shoppingcartpopup-content").scrollTop(0,0))})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.data] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))},changeCartQuantity:function(e,t){var r=e.el.getAttribute("data-line-pk")||null;if(r){1==kShowPreloader&&app.preloader.show();var a=new FormData;a.append("token",auth.currentUser.token),a.append("pk",r),a.append("qty",t);var i=thoriumCorePlugin.httpRoot+kApiRoot+kSetShoppingCartQtyApi;fetch(i,{method:"post",body:a,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){if(1==thoriumapi.checkResult(e)){for(var t=e.totalquantity,a=document.querySelectorAll(".shoppingcartcounter"),i=0;i<a.length;i++){a[i].innerText=t}var o=e.totalcart,n=e.totalline,l=document.querySelectorAll(".shoppingcarttotal");for(i=0;i<l.length;i++){var p=l[i];1==kCurrencyLeftSide?p.innerText=kCurrencySymbol+Number.parseFloat(o).toFixed(2):p.innerText=Number.parseFloat(o).toFixed(2)+kCurrencySymbol}var s=document.querySelector('.shoppingcart-line-total[data-line-pk="'+r+'"]');1==kCurrencyLeftSide?s.innerText=kCurrencySymbol+Number.parseFloat(n).toFixed(2):s.innerText=Number.parseFloat(n).toFixed(2)+kCurrencySymbol,app&&app.preloader.hide()}})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.data] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))}},openCart:function(e){thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Loading Shopping Cart"),1==kShowPreloader&&app.preloader.show();var t=new FormData;t.append("token",auth.currentUser.token);var r=thoriumCorePlugin.httpRoot+kApiRoot+kGetShoppingCartApi;fetch(r,{method:"post",body:t,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(t){if(1==thoriumapi.checkResult(t)){if(!t.result){app&&app.preloader.hide();var r=e.getAttribute("data-message")||null;return void(r&&thoriumCorePlugin.showNotification(r))}thoriumapi.logEvent(0,"[com.thoriumbuilder.ecommerce] Shopping Cart Firebase Record Loaded");var a=t.result,i="",o=$(".shoppingcart-template").html();for(var n in thoriumapi.logEvent(0,"[com.thoriumbuilder.ecommerce] Loading Shopping Cart Item Lines"),a){var l=a[n],p=o;for(var s in l){p=p.replaceAll("{{title}}",l.cart_name),p=(p=(p=(p=(p=(p=1==kCurrencyLeftSide?(p=p.replaceAll("{{price}}",kCurrencySymbol+Number.parseFloat(l.cart_unit_price).toFixed(2))).replaceAll("{{total}}",kCurrencySymbol+Number.parseFloat(l.cart_total_price).toFixed(2)):(p=p.replaceAll("{{price}}",Number.parseFloat(l.cart_unit_price).toFixed(2)+kCurrencySymbol)).replaceAll("{{total}}",Number.parseFloat(l.cart_total_price).toFixed(2)+kCurrencySymbol)).replaceAll("{{pk}}",l.pk)).replaceAll("{{qty}}",l.qty)).replaceAll("{{parent_pk}}",l.parent_pk)).replaceAll("{{uid}}",l.uid)).replaceAll("{{cart_desc}}",l.cart_desc);var u="db/dbassets/"+l.cart_photo+"?rnd="+Math.floor(Date.now()/1e3);p=p.replaceAll("{{image}}","background-image:url('"+u+"');")}i+=p}$("#shoppingcartcontents").html(i),app.tab.show("#shoppingCartTab1",!0),dbExpressCommerce.shoppingCartPopup=app.popup.create({el:".shoppingcartpopup",swipeToClose:!1}),dbExpressCommerce.shoppingCartPopup.open(!0),1==kCurrencyLeftSide?$(".shoppingcarttotal").text(kCurrencySymbol+Number.parseFloat(t.price).toFixed(2)):$(".shoppingcarttotal").text(Number.parseFloat(t.price).toFixed(2)+kCurrencySymbol),0==parseFloat(t.qty)?$("#shoppingcartbutton1").addClass("disabled"):$("#shoppingcartbutton1").removeClass("disabled");for(var d=document.querySelectorAll(".stepper-shoppingcart"),c=0;c<d.length;c++){var m=d[c];l=parseInt(m.getAttribute("data-value"))||0,app.stepper.create({el:m,step:1,min:0,max:100,value:l,on:{change:function(e,t){dbExpressCommerce.changeCartQuantity(e,t)}}})}if(!document.querySelector('input[name="deliverymodeselect"]:checked')){var h=document.querySelector("#deliverymodeselect1");if(h){h.checked=!0;var g,b=h.value||0;g=1==kCurrencyLeftSide?kCurrencySymbol+b:b+kCurrencySymbol,document.querySelector(".shoppingcartdeliveryamount").innerText=g}}app&&app.preloader.hide()}})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.data] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))},initCartController:function(){var e=$(".shoppingcartcounter");if($(".shoppingcartcounter").text("..."),0!=e.length){var t=new FormData;t.append("token",auth.currentUser.token);var r=thoriumCorePlugin.httpRoot+kApiRoot+kGetShoppingCartApi;fetch(r,{method:"post",body:t,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){if(1==thoriumapi.checkResult(e)){var t=e.qty||"0";$(".shoppingcartcounter").text(t),$(".shoppingcartcounter").show()}})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.data] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))}},processOrderPayment:function(e){},convertCartToOrder:function(e){1==kShowPreloader&&app.preloader.show();var t=new FormData,r=auth.getToken();r&&t.append("token",r),t.append("token",r),t.append("uid",auth.currentUser.uid);var a=document.querySelector("#orderprocess-collectdate");if(!a||!a.value)return app&&app.preloader.hide(),void a.focus();var i=a.getAttribute("data-timestamp");t.append("collectdate",i);var o=document.querySelector('input[name="deliverymodeselect"]:checked');if(o){var n=o.value||0,l=o.getAttribute("data-label")||"Unknown";t.append("deliverymode",l),t.append("deliveryfees",n)}var p=document.querySelector("#orderprocess-collecttime");if(!p||!p.value)return app&&app.preloader.hide(),void p.focus();t.append("collecttime",p.value);var s=document.querySelector("#orderprocess-notes");s&&t.append("notes",s.value);var u=thoriumCorePlugin.httpRoot+kApiRoot+kSetOrderApi;fetch(u,{method:"post",body:t,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){if(1==thoriumapi.checkResult(e)&&(app&&app.preloader.hide(),document.querySelector(".lastordernumber").innerText=e.uid,app.tab.show("#shoppingCartTab5",!0),$("#shoppingcartpopup-content").scrollTop(0,0),document.getElementById("form-orderprocess").reset(),$(".shoppingcartcounter").text("0"),"object"==typeof nodeQrcode)){var t=document.querySelector(".qrbox");if(t){t.style.display="block";var r=document.getElementById("orderqrcode");nodeQrcode.drawQR(r,e.uid)}}})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.data] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))},paymentCallback:function(e){app.tab.show("#shoppingCartTab4",!0)},clearShoppingCart:function(e){1==kShowPreloader&&app.preloader.show();var t=new FormData;t.append("token",auth.currentUser.token);var r=thoriumCorePlugin.httpRoot+kApiRoot+kClearShoppingCartApi;fetch(r,{method:"post",body:t,contentType:"multipart/form-data"}).then(thoriumapi.status).then(thoriumapi.json).then((function(e){1==thoriumapi.checkResult(e)&&(app&&app.preloader.hide(),$(".shoppingcartcounter").text("0"),dbExpressCommerce.shoppingCartPopup&&dbExpressCommerce.shoppingCartPopup.close())})).catch((function(e){thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress.data] Request failed "+e),app&&app.preloader.hide(),app.dialog.alert(e.message)}))}};$(document).on("click",".shoppingcartcontroller",(function(e){e.preventDefault(),dbExpressCommerce.openCart(this)})),$(document).on("click",".shoppingcart-clear",(function(e){e.preventDefault(),app.dialog.confirm("Clear?",(function(){dbExpressCommerce.clearShoppingCart(this)}))})),$(document).on("click",".deliverymodeselect",(function(e){var t=document.querySelector('input[name="deliverymodeselect"]:checked');if(t){var r,a=t.value||0;t.getAttribute("data-label");r=1==kCurrencyLeftSide?kCurrencySymbol+a:a+kCurrencySymbol,document.querySelector(".shoppingcartdeliveryamount").innerText=r}})),$(document).on("click","a.dbexpress-search-filter",(function(e){e.preventDefault(),dbExpressData.repeaterFilterHandler(this)})),$(document).on("click","a.btn-json-page",(function(e){e.preventDefault(),dbExpressData.repeaterLineButtonClick(e,$(this))})),$(document).on("click",".button-cart",(function(e){e.preventDefault(),dbExpressCommerce.addItemToCart(this)})),$(document).on("click","#shoppingcartbutton1",(function(e){e.preventDefault(),1==kShowPreloader&&app.preloader.show(),setTimeout((function(){dbExpressCommerce.getCustomerInformation(this)}),1e3)})),$(document).on("click","#shoppingcartbutton2",(function(e){e.preventDefault(),app.tab.show("#shoppingCartTab1",!0)})),$(document).on("click","#shoppingcartbutton3",(function(e){e.preventDefault(),1==document.getElementById("shoppingcartform").checkValidity()?dbExpressCommerce.setCustomerInformation(this):thoriumapi.logEvent(1,"[com.thoriumbuilder.ecommerce] Missing mandatory fields")})),$(document).on("click","#shoppingcartbackbutton3",(function(e){e.preventDefault(),app.tab.show("#shoppingCartTab1",!0)})),$(document).on("click","#shoppingcartbackbutton4",(function(e){e.preventDefault(),app.tab.show("#shoppingCartTab2",!0)})),$(document).on("click",".saveorderbtn",(function(e){e.preventDefault(),1==kShowPreloader&&app.preloader.show(),dbExpressCommerce.convertCartToOrder(),dbExpressCommerce.shoppingCartPopup})),$(document).on("click","#shoppingcartbuttonfinish",(function(e){e.preventDefault(),dbExpressCommerce.shoppingCartPopup&&dbExpressCommerce.shoppingCartPopup.close()})),$(document).on("click",'.dbexpress-action-button[data-action="cart"]',(function(e){e.preventDefault(),e.stopImmediatePropagation(),auth.currentUser&&1!=auth.currentUser.isAnonymous?dbExpressCommerce.addToCartHandler(this):auth.handleAvatarPopup(e,this)})),$(document).on("click",'.dbexpress-action-button[data-action="like"]',(function(e){e.preventDefault(),e.stopImmediatePropagation()})),$(document).on("search",".search-repeater",(function(e){})),$(document).on("click",".input-clear-button",(function(e){})),$(document).on("submit",".dbexpress-signin-form",(function(e){e.preventDefault;1==kShowPreloader&&app.preloader.show(),auth.signInFormPost(this)})),$(document).on("submit",".dbexpress-resetpassword-form",(function(e){e.preventDefault;var t=this;0!=app.input.validateInputs(t)?(1==kShowPreloader&&app.preloader.show(),auth.resetPasswordSubmitPost(t)):thoriumapi.logEvent(0,"[com.thoriumbuilder.core] Missing Mandatory fields for Form with id ["+t.id+"]")})),$(document).on("submit",".dbexpress-register-form",(function(e){e.preventDefault;var t=$("#dbexpress-register-password").val();t==$("#dbexpress-register-password-verification").val()?t.length<6?app.dialog.alert("Password too Short (6 characters min)"):0!=app.toggle.create({el:".dbexpress-register-gdpr"}).checked?(1==kShowPreloader&&app.preloader.show(),auth.registerFormPost()):app.dialog.alert("You must accept the Privacy Policy"):app.dialog.alert("Password does not match")})),$(document).on("click",".dbexpress_avatar",(function(e){auth.handleAvatarPopup(e,this)})),$(document).on("click",".firebase-user-logout",(function(e){e.preventDefault,app.dialog.confirm("Logout?",(function(){auth.logout()}))})),$(document).on("click",".dbexpress-profile-submit",(function(e){e.preventDefault,1==kShowPreloader&&app.preloader.show(),auth.saveProfile()})),$("select").on("change",(function(){$(".dbexpress-profile-flag").css("background-image","url("+thoriumCorePlugin.httpRoot+kApiRoot+"flags/4x3/"+this.value.toLowerCase()+".svg)")})),$(document).on("click",".signinlink",(function(e){e.preventDefault,auth.showSigninPopup(e)})),$(document).on("click",".termsofuse",(function(e){e.preventDefault,auth.showTermsPopup(e)})),$(document).on("click",".privacypolicy",(function(e){e.preventDefault,auth.showPrivacyPopup(e)})),$(document).on("click",".registerlink",(function(e){e.preventDefault,auth.showRegisterPopup(e)})),$(document).on("click",".reloadlink",(function(e){e.preventDefault,location.reload()})),$(document).on("click",".profilelink",(function(e){e.preventDefault,auth.loadProfileScreen()})),$(document).on("click",".resetpasswwordlink",(function(e){e.preventDefault,auth.showResetPasswordScreen()})),$(document).on("click",".dbexpress-field-link",(function(e){e.preventDefault();var t=this.querySelector(".dbexpress-field");if(t){t.style.whiteSpace="break-spaces";var r=t.innerText,a=document.querySelector(".text-viewer-popup .block-text");a&&(a.innerText=r),app.sheet.create({el:".text-viewer-popup",swipeToClose:!1,backdrop:!0,closeByBackdropClick:!0,closeByOutsideClick:!0,closeOnEscape:!0,animate:!0}).open(!0),t.style.whiteSpace="normal"}})),$(document).on("search",".dbexpress-searchbar",(function(e){e.preventDefault,dbExpressData.executeRepeaterFullText(e.target)})),$(document).on("click",".fuzzy-link",(function(e){e.preventDefault();var t=this.innerText,r=this.closest(".page-current");if(r){var a=r.querySelector(".dbexpress-searchbar input");a&&(a.value=t,dbExpressData.executeRepeaterFullText(a))}})),$(document).on("submit",".form",(function(e){dbExpressData.submitForm(e,$(this))})),$(document).on("click",".calendar-submit-button",(function(e){e.preventDefault();var t=this.getAttribute("data-calendar")||null;t&&t.length>0&&(0==auth.currentUser.group?(auth.showSigninPopup(),app.view[0].router.back()):dbExpressData.savecalendar(t))})),$(document).on("click",".dbwebshare",(function(e){e.preventDefault();var t=this.getAttribute("data-url")||null,r=this.getAttribute("data-share-text")||null;if(t&&r&&null!=navigator.share)try{navigator.share({title:r,url:t})}catch(e){app.dialog.error("Share failed:",e.message)}})),$(document).on("click",'.dbexpress-action-button[data-action="detail"]',(function(e){if(e.preventDefault(),e.stopImmediatePropagation(),this.closest(".dbexpress-virtual-list")||null)dbExpressData.onRepeaterLineChange(e,this);else if(this.closest(".dbexpress-displayer")||null){var t=this.getAttribute("data-uid")||null,r=this.getAttribute("data-pk")||null,a=this.getAttribute("data-target")||null,i=this.getAttribute("data-service")||null,o=this.getAttribute("data-transition")||"f7-push";if(a){e.preventDefault();var n=app.view;n&&n.length>0&&app.view[0].router.navigate("/"+a+"/?rowindex=0&uid="+t+"&pk="+r+"&service="+i,{animate:!0,transition:o,reloadAll:!1})}}})),$(document).on("click",'.dbexpress-action-button[data-action="parentdetail"]',(function(e){e.preventDefault(),e.stopImmediatePropagation();var t=this.closest(".dbexpress-virtual-list")||null,r=this.closest(".dbexpress-displayer")||null;if(t||r){var a=this.getAttribute("data-fk")||null;a.indexOf("{{")>-1&&thoriumapi.logEvent(2,"[com.thoriumbuilder.dbexpress] error, action button not initialized");var i=this.getAttribute("data-target")||null,o=this.getAttribute("data-parent-service")||null,n=this.getAttribute("data-transition")||"f7-push";i&&o&&a&&dbExpressData.getParentRecord(o,a,i,n)}})),$(document).on("click",'.dbexpress-action-button[data-action="delete"]',(function(e){e.preventDefault(),e.stopImmediatePropagation(),dbExpressData.handleDelete(this)})),$(document).on("click",".item-dbexpress",(function(e){e.preventDefault(),dbExpressData.onRepeaterLineChange(e,this)})),$(document).on("click",".pinlink",(function(e){e.preventDefault(),dbExpressData.sendPin(this)})),$(document).on("infinite",(function(e){if(thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] infinite scroll event detected"),1==dbExpressData.allowInfinite)for(var t=e.target,r=t.querySelectorAll('.virtual-list[data-infinite="true"]'),a=0;a<r.length;a++){var i=r[a];if("true"!=(i.getAttribute("data-fetched")||null)){var o=t.querySelector(".infinite-scroll-preloader");o&&(o.style.visibility="visible"),thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] Loading Additional Data"),dbExpressData.allowInfinite=!1;var n=i.getAttribute("data-parent-pk")||null,l=i.getAttribute("data-search")||null;setTimeout((function(){dbExpressData.getRepeaterData(i,n,!0,l)}),1e3)}}else thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] infinite scroll handler deactivated")})),$(document).on("page:mounted",(function(e){e.preventDefault,thoriumapi.logEvent(0,"[com.thoriumbuilder.dbexpress] page:mounted"),dbExpressData.onPageMounted(e)})),app.on("onAuthStateChanged",(function(e){e&&(dbExpressData.onAuthStateChanged(),1!=e.isAnonymous&&setTimeout((function(){auth.getCountryList(),1==kDbExpressEcommerce&&dbExpressCommerce.initCartController()}),500))})),document.addEventListener("appLoaded",(function(e){auth.initialize()}),!1);
Function Calls
None |
Stats
MD5 | 1caa7cf0dd1592a64c503575d26cb6c2 |
Eval Count | 0 |
Decode Time | 102 ms |