PluginProbe ʕ •ᴥ•ʔ
Event Tickets with Ticket Scanner / 2.7.8
Event Tickets with Ticket Scanner v2.7.8
3.1.2 3.1.1 3.1.0 3.0.9 3.0.8 3.0.7 3.0.6 3.0.5 3.0.4 trunk 2.6.0 2.7.0 2.7.1 2.7.10 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 2.8.0 2.8.1 2.8.10 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.0 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 2.9.8 2.9.9 3.0.0 3.0.1 3.0.2 3.0.3
event-tickets-with-ticket-scanner / validator.js
event-tickets-with-ticket-scanner Last commit date
3rd 9 months ago css 9 months ago img 9 months ago languages 9 months ago ticket 9 months ago vendors 9 months ago SASO_EVENTTICKETS.php 9 months ago backend.js 9 months ago changelog.txt 9 months ago db.php 9 months ago index.php 9 months ago init_file.php 9 months ago js_seatingplan.js 9 months ago order_details.js 9 months ago readme.txt 9 months ago saso-eventtickets-validator.js 9 months ago sasoEventtickets_AdminSettings.php 9 months ago sasoEventtickets_Authtoken.php 9 months ago sasoEventtickets_Base.php 9 months ago sasoEventtickets_Core.php 9 months ago sasoEventtickets_Frontend.php 9 months ago sasoEventtickets_Messenger.php 9 months ago sasoEventtickets_Options.php 9 months ago sasoEventtickets_PDF.php 9 months ago sasoEventtickets_Ticket.php 9 months ago sasoEventtickets_TicketBadge.php 9 months ago sasoEventtickets_TicketDesigner.php 9 months ago sasoEventtickets_TicketQR.php 9 months ago ticket_events.js 9 months ago ticket_scanner.js 9 months ago validator.js 9 months ago wc_backend.js 9 months ago wc_frontend.js 9 months ago woocommerce-hooks.php 9 months ago
validator.js
556 lines
1 function SasoEventticketsValidator(_myAjaxVar) {
2 const { __, _x, _n, sprintf } = wp.i18n;
3 let _self = this;
4 let PREMIUM = null;
5 var $ = jQuery;
6 let myAjax = typeof _myAjaxVar === "undefined" ? null : _myAjaxVar;
7 if (myAjax === null) return;
8 var _prefix = myAjax.divPrefix;
9 var _spinnerElemId = _prefix + 'spinner';
10 var DATA = {
11 /*action: '',*/
12 nonce: myAjax.nonce
13 };
14 var SHORTCODES = {};
15 if (myAjax.shortcode_attr && myAjax.shortcode_attr !== "") SHORTCODES = JSON.parse(myAjax.shortcode_attr);
16 var FATAL_ERROR = false;
17 var LAYOUT = null;
18
19 var DIV_ID = myAjax.divId;
20 var DIV_MAIN = null;
21 var DATEN_URL = myAjax.url;
22 var PARAS = {};
23 var CODE_ELEMENT;
24 var BUTTON_ELEMENT;
25 var ELEM_OUTPUT;
26 var OPTIONS = {list:[], mapKeys:{}};
27
28 function macheAjax(url, funcSuccess, funcError, doNotShowSpinner){
29 let _spinnerElem;
30 if (!doNotShowSpinner) {
31 _spinnerElem = document.getElementById(_spinnerElemId);
32 if (!_spinnerElem) {
33 _spinnerElem = document.createElement('div');
34 _spinnerElem.id = _spinnerElemId;
35 _spinnerElem.innerHTML = _getSpinnerHTML();
36 _spinnerElem.style.zIndex = "1000";
37 _spinnerElem.style.verticalAlign = "center";
38 _spinnerElem.style.height = "30px";
39 _spinnerElem.style.width = "100px";
40 _spinnerElem.style.display = "none";
41 _spinnerElem.style.position = "absolute";
42 _spinnerElem.style.top = "0";
43 _spinnerElem.style.left = "0";
44 _spinnerElem.style.marginTop = "30%";
45 _spinnerElem.style.marginLeft = "50%";
46 document.body.appendChild(_spinnerElem);
47 }
48 _spinnerElem.style.display = "block";
49 }
50 var xhttp = new XMLHttpRequest();
51 xhttp.onreadystatechange = function() {
52 if (this.readyState === 4) {
53 if (this.status === 200) {
54 if (this.responseText === '505') {
55 if (funcError) funcError(this.responseText);
56 else alert("fehler 505");
57 } else {
58 if (funcSuccess) funcSuccess(this.responseText);
59 }
60 } else if (this.status === 404) {
61 if (funcError) funcError(this.responseText, this.status);
62 }
63 if (_spinnerElem) _spinnerElem.style.display = "none";
64 }
65 };
66 xhttp.open("GET", url, true);
67 xhttp.send(url);
68 return xhttp;
69 };
70
71 function basics_ermittelJSPath(filename) {
72 let basePath = null;
73 var scripts = document.getElementsByTagName('script');
74 for (var i = scripts.length - 1; i >= 0; --i) {
75 var src = scripts[i].src.split('?')[0];
76 var l = src.length;
77 var length = filename.length;
78 if (src.substring(l - length) === filename) {
79 basePath = src.substring(0, l - length);
80 }
81 }
82 return basePath;
83 }
84 function _server_result_getError(error) {
85 var erg = error.trim().match(/#([0-9|a-z|A-Z]+)/);
86 let errorCode = 0;
87 if (erg) errorCode = trim(erg[1]);
88 return parseInt(errorCode, 10);
89 }
90 function basics_ermittelURLParameter() {
91 var parawerte = {};
92 var teile;
93 if (window.location.search !== "") {
94 teile = window.location.search.substring(1).split("&");
95 for (var a=0;a<teile.length;a++)
96 {
97 var pos = teile[a].indexOf("=");
98 if (pos < 0) {
99 parawerte[teile[a]] = true;
100 } else {
101 var key = teile[a].substring(0,pos);
102 parawerte[key] = decodeURIComponent(teile[a].substring(pos+1));
103 }
104 }
105 }
106 return parawerte;
107 }
108
109 function _getOptions_getByKey(key) {
110 if (OPTIONS.mapKeys[key]) return OPTIONS.mapKeys[key];
111 return null;
112 }
113 function _getOptions_isActivatedByKey(key) {
114 let po = _getOptions_getByKey(key);
115 if (po == null || typeof po.value == "undefined") return false;
116 return po.value == 1;
117 }
118 function _getOptions_getLabelByKey(key) {
119 let po = _getOptions_getByKey(key);
120 if (po == null || typeof po.label == "undefined") return "";
121 return po.label;
122 }
123 function _getOptions_getValByKey(key) {
124 let po = _getOptions_getByKey(key);
125 if (po == null || typeof po.value == "undefined") return "";
126 return po.value == "" ? po['default'] : po.value;
127 }
128
129 function _registerToCode(code, value) {
130 let url = DATEN_URL+'?action='+myAjax._action+'&a_sngmbh=registerToCode&data[code]='+encodeURIComponent(code)+'&data[value]='+encodeURIComponent(value)+'&t='+new Date().getTime();
131 macheAjax(url, responseText=>{
132 //let obj = JSON.parse(responseText);
133 $(ELEM_OUTPUT).html($('<center/>').text(_getOptions_getValByKey('textRegisterSaved')));
134 });
135 }
136
137 function _renderJSRedirectBtn(label, url) {
138 let elem = $('<center style="margin-top:10px;">');
139 $('<button/>')
140 .addClass('sngmbh_btn sngmbh_btn-primary sngmbh_mb-2')
141 .text(label)
142 .appendTo(elem)
143 .on('click', function() {
144 window.location.href = url;
145 });
146 return elem;
147 }
148 function _renderRegisterBtn(cbf) {
149 let elem = $('<center style="margin-top:10px;">');
150 $('<button/>')
151 .addClass('sngmbh_btn sngmbh_btn-primary sngmbh_mb-2')
152 .text(_getOptions_getValByKey('textRegisterButton'))
153 .appendTo(elem)
154 .on('click', function() {
155 if (_getOptions_isActivatedByKey('allowUserRegisterSkipValueQuestion')) {
156 _registerToCode($(CODE_ELEMENT).val().trim(), '');
157 cbf && cbf();
158 } else {
159 // zeige eingabemaske für email addresse
160 let wert = prompt(_getOptions_getValByKey('textRegisterValue'));
161 if (wert && wert.trim() !== "") {
162 _registerToCode($(CODE_ELEMENT).val().trim(), wert.trim());
163 cbf && cbf();
164 }
165 }
166 });
167 return elem;
168 }
169 function __displayMessage(text) {
170 ELEM_OUTPUT.innerHTML = text;
171 BUTTON_ELEMENT.disabled = false;
172 CODE_ELEMENT.disabled = false;
173 }
174
175 class Layout {
176 renderEingabeMaske() {
177 _renderEingabeMaske();
178 if (_getOptions_isActivatedByKey('onlyForLoggedInWPuser') && !isUserLoggedIn()) {
179
180 ELEM_OUTPUT.innerHTML = '<center><span style="color:red;">'+_getOptions_getValByKey('onlyForLoggedInWPuserMessage')+'</span></center>';
181
182 $(BUTTON_ELEMENT).prop("disabled", true);
183 $(CODE_ELEMENT).prop("disabled", true);
184 $(CODE_ELEMENT).attr("placeholder", _getOptions_getValByKey('onlyForLoggedInWPuserMessage'));
185 } else {
186 $(BUTTON_ELEMENT).prop("disabled", false);
187 $(CODE_ELEMENT).prop("disabled", false);
188 }
189 }
190 renderInputMaske(input_id,btn_id) {
191 let btnLabel = _getOptions_getValByKey('textValidationButtonLabel').replace(/</g,'');
192 let inputFieldPlaceholder = _getOptions_getValByKey('textValidationInputPlaceholder').replace(/"/g,'');
193 let textValidationBtnBgColor = _getOptions_getValByKey('textValidationBtnBgColor').replace(/"/g,'').replace(/;/g,'');
194 let textValidationBtnBrdColor = _getOptions_getValByKey('textValidationBtnBrdColor').replace(/"/g,'').replace(/;/g,'');
195 let textValidationBtnTextColor = _getOptions_getValByKey('textValidationBtnTextColor').replace(/"/g,'').replace(/;/g,'');
196 let t = '<div class="sngmbh_container">'
197 + '<div class="sngmbh_input-group sngmbh_mb-3">'
198 + '<input required type="text" class="sngmbh_form-control sngmbh_mb-2" data-input="'+input_id+'" placeholder="'+inputFieldPlaceholder+'">'
199 + '<div class="sngmbh_input-group-append">'
200 + '<button type="submit" data-btn="'+btn_id+'" class="sngmbh_btn sngmbh_btn-primary sngmbh_mb-2" style="'
201 + (textValidationBtnBgColor ? 'background-color:'+textValidationBtnBgColor+';' : '')
202 + (textValidationBtnBrdColor ? 'border-color:'+textValidationBtnBrdColor+';' : '')
203 + (textValidationBtnTextColor ? 'color:'+textValidationBtnTextColor+';' : '')
204 + '">'+btnLabel+'</button>'
205 + '</div>'
206 + '</div>'
207 + '</div>';
208 return t;
209 }
210 getDefaultMessages() {
211 return {
212 'msgCheck0':'Code not found',
213 'msgCheck1':'Code confirmed',
214 'msgCheck2':'Please contact support for further investigation',
215 'msgCheck3':'Is registered to a user',
216 'msgCheck4':'Code expired',
217 'msgCheck5':'Code is already used',
218 'msgCheck6':'Code and CVV is not valid',
219 'msgCheck7':'Product is stolen'
220 };
221 }
222 showCheckResult(obj) {
223 if (obj.success === false) {
224 //let error_code = _server_result_getError(obj.error.msg);
225 __displayMessage('<center><span style="color:red;font-weight:bold;">'+obj.data.msg+'</span></center>');
226 //return alert(obj.data.msg);
227 return;
228 }
229 this.displayCheckResult(obj);
230
231 function __userJSRedirectActiv() {
232 if (_getOptions_isActivatedByKey('userJSRedirectActiv')) {
233 //if (obj.data.valid === 1) {
234 if (typeof obj.data.retObject !== "undefined" && typeof obj.data.retObject.userJSRedirect !== "undefined") {
235 if (obj.data.retObject.userJSRedirect.url !== "") {
236 if (obj.data.retObject.userJSRedirect.btnlabel && obj.data.retObject.userJSRedirect.btnlabel !== "") {
237 // button mit redirect
238 $(ELEM_OUTPUT).append(_renderJSRedirectBtn(obj.data.retObject.userJSRedirect.btnlabel, obj.data.retObject.userJSRedirect.url));
239 } else {
240 // redirect
241 window.location.href = obj.data.retObject.userJSRedirect.url;
242 }
243 }
244 }
245 //}
246 }
247 }
248
249 if (_getOptions_isActivatedByKey('allowUserRegisterCode')) {
250 if (obj.data.valid === 1) {
251 $(ELEM_OUTPUT).append(_renderRegisterBtn(__userJSRedirectActiv));
252 }
253 } else {
254 __userJSRedirectActiv();
255 }
256 }
257 displayCheckResult(obj) {
258 let valid = obj.data.valid;
259 let default_msgs = this.getDefaultMessages();
260 let msgs = default_msgs;
261 if (typeof myAjax._messages !== "undefined") msgs = myAjax._messages;
262 if (obj.data.messages) msgs = obj.data.messages;
263
264 CODE_ELEMENT.classList.remove("sngmbh_is-valid");
265 CODE_ELEMENT.classList.remove("sngmbh_is-invalid");
266
267 let _isOk = true;
268 let _text = '';
269 let _textColor = 'red';
270 let _textWeight = 'bold';
271
272 if (obj.data.retObject && obj.data.retObject.message) {
273 if (valid === 1) _textColor = 'green';
274 _isOk = obj.data.retObject.message.ok;
275 _text = obj.data.retObject.message.text;
276 if (typeof obj.data.retObject.message.color !== "undefined") _textColor = obj.data.retObject.message.color;
277 if (typeof obj.data.retObject.message.weight !== "undefined") _textWeight = obj.data.retObject.message.weight;
278 } else {
279 if (valid === 1) {
280 _textColor = 'green';
281 _text = (msgs.msgCheck1.trim() !== "" ? msgs.msgCheck1 : default_msgs.msgCheck1);
282 } else if (valid === 2) {
283 _isOk = false;
284 _text = (msgs.msgCheck2.trim() !== "" ? msgs.msgCheck2 : default_msgs.msgCheck2);
285 } else if (valid === 3) {
286 _text = (msgs.msgCheck3.trim() !== "" ? msgs.msgCheck3 : default_msgs.msgCheck3);
287 } else if (valid === 4) {
288 _text = (msgs.msgCheck4.trim() !== "" ? msgs.msgCheck4 : default_msgs.msgCheck4);
289 } else if (valid === 5) {
290 _text = (msgs.msgCheck5.trim() !== "" ? msgs.msgCheck5 : default_msgs.msgCheck5);
291 } else if (valid === 6) {
292 _isOk = false;
293 _text = (typeof msgs.msgCheck6 !== "undefined" && msgs.msgCheck6.trim() !== "" ? msgs.msgCheck6 : default_msgs.msgCheck6);
294 } else if (valid === 7) {
295 _isOk = false;
296 _text = default_msgs.msgCheck7;
297 } else {
298 _isOk = false;
299 _text = (msgs.msgCheck0.trim() !== "" ? msgs.msgCheck0 : default_msgs.msgCheck0);
300 }
301 }
302
303 CODE_ELEMENT.classList.add(_isOk ? "sngmbh_is-valid" : "sngmbh_is-invalid");
304 let text = '<center><span style="'+(_textColor != "" ? 'color:'+_textColor : '')+';font-weight:'+_textWeight+';">'+_text+'</span></center>';
305
306 __displayMessage(text);
307 }
308 }
309
310 function _renderEingabeMaske() {
311 let btn_id = _prefix + 'btn';
312 let input_id = _prefix + 'code';
313 DIV_MAIN.innerHTML = '';
314
315 let elem = document.createElement("div");
316 elem.className = "sngmbh_container";
317 if (!SHORTCODES.inputid) {
318 elem.innerHTML = LAYOUT.renderInputMaske(input_id, btn_id);
319 }
320
321 if (!SHORTCODES.outputid) {
322 ELEM_OUTPUT = document.createElement("div");
323 elem.appendChild(ELEM_OUTPUT);
324 DIV_MAIN.appendChild(elem);
325 } else {
326 ELEM_OUTPUT = document.querySelector('[id="'+SHORTCODES.outputid+'"]');
327 if (!ELEM_OUTPUT) alert("Event Ticket Code validator: Output element cannot be found. Please check your outputid-value on the shortcode");
328 }
329
330 if (!SHORTCODES.inputid) {
331 CODE_ELEMENT = document.querySelector('[data-input="'+input_id+'"]');
332 } else {
333 CODE_ELEMENT = document.querySelector('[id="'+SHORTCODES.inputid+'"]');
334 if (!CODE_ELEMENT) alert("Event Ticket Code Generator: Input element cannot be found. Please check your inputid-value on the shortcode");
335 }
336
337 if (typeof PARAS.code !== "undefined") {
338 let c = PARAS.code.trim();
339 let cs = PARAS.code.split(":");
340 CODE_ELEMENT.value = encodeURIComponent(cs[0]);
341 if (cs.length > 1) {
342 CODE_ELEMENT.value = CODE_ELEMENT.value + ":" + encodeURIComponent(cs[1]);
343 }
344 }
345
346 CODE_ELEMENT.onchange = function() {
347 ELEM_OUTPUT.innerHTML = "";
348 CODE_ELEMENT.classList.remove("is-valid");
349 CODE_ELEMENT.classList.remove("is-invalid");
350 }
351 CODE_ELEMENT.onkeyup = function() {
352 ELEM_OUTPUT.innerHTML = "";
353 CODE_ELEMENT.classList.remove("is-valid");
354 CODE_ELEMENT.classList.remove("is-invalid");
355 }
356 CODE_ELEMENT.onkeydown = function() {
357 if (event.key === 'Enter') {
358 BUTTON_ELEMENT.click();
359 }
360 }
361
362 if (!SHORTCODES.triggerid) {
363 BUTTON_ELEMENT = document.querySelector('[data-btn="'+btn_id+'"]');
364 } else {
365 BUTTON_ELEMENT = document.querySelector('[id="'+SHORTCODES.triggerid+'"]');
366 if (!BUTTON_ELEMENT) alert("Event Ticket Code Generator: Trigger not found. Please check your triggerid-value on the shortcode");
367 }
368
369 BUTTON_ELEMENT.onclick = function() {
370 let code = CODE_ELEMENT.value.trim();
371 if (code === "") {
372 CODE_ELEMENT.select();
373 return;
374 }
375 if (SHORTCODES.jspre) {
376 let _retcode = _execShortCodeJSFunction(SHORTCODES.jspre, code);
377 if (_retcode) code = _retcode;
378 }
379
380 BUTTON_ELEMENT.disabled = true;
381 CODE_ELEMENT.disabled = true;
382 ELEM_OUTPUT.innerHTML = '<center>'+_getSpinnerHTML()+'</center>';
383
384 function __callCheckService(cvv) {
385 let url = DATEN_URL+'?action='+myAjax._action+'&a_sngmbh=checkCode&data[code]='+encodeURIComponent(code);
386 if (cvv && cvv !== "") url += '&data[cvv]='+encodeURIComponent(cvv);
387 url += '&t='+new Date().getTime();
388 macheAjax(url, function(responseText) {
389 let obj = JSON.parse(responseText);
390 if (obj.data.valid === 6 && !cvv) { // cvv
391 let value = prompt(__("Please enter your CVV for this ticket", 'event-tickets-with-ticket-scanner'));
392 if (value) {
393 __callCheckService(value);
394 return;
395 }
396 }
397 if (SHORTCODES.jsafter) _execShortCodeJSFunction(SHORTCODES.jsafter, obj.data);
398 LAYOUT.showCheckResult(obj);
399 }, null, true);
400 }
401 let cvv;
402 if (code.match(/:/)) {
403 let parts = code.split(':');
404 code = parts[0].trim();
405 cvv = parts[1].trim();
406 }
407 __callCheckService(cvv);
408 }
409 }
410
411 function _execShortCodeJSFunction(fktname, paras) {
412 var fn = window[fktname];
413 if (typeof fn === "function") return fn(paras);
414 else alert('function '+fktname+' not found. Please check your shortcode parameters');
415 }
416
417 function checkIfCssRuleExists(identifier) {
418 let styles = document.styleSheets;
419 for(var a=0;a<styles.length;a++) {
420 try {
421 let rules = styles[a].cssRules;
422 for(var b=0;b<rules.length;b++){
423 if (rules[b].cssText.match(identifier)) return true;
424 };
425 } catch(e) {}
426 }
427 return false;
428 }
429 function addStyleCode(content) {
430 let c = document.createElement('style');
431 c.innerHTML = content;
432 document.getElementsByTagName("head")[0].appendChild(c);
433 }
434 function addStyleTag(url, id, onloadfkt, attrListe, loadLatest) {
435 var script = document.createElement('link');
436 script.type = 'text/css';
437 script.rel = "stylesheet";
438 let myId = id;
439 if (!myId) myId = url;
440 if (document.getElementById(id) && document.getElementById(id).src === url) {
441 onloadfkt && onloadfkt();
442 return; // prevent re-adding the same tag
443 }
444 script.id = id;
445 if (attrListe) for(var attr in attrListe) script.setAttribute(attr, attrListe[attr]);
446 script.href = url;
447 if (loadLatest) script.href += '?t='+new Date().getTime();
448 if (typeof onloadfkt !== "undefined") script.onload = onloadfkt;
449 document.getElementsByTagName("head")[0].appendChild(script);
450 }
451
452 function addScriptTag(url, id, onloadfkt, attrListe, loadLatest) {
453 var head = document.getElementsByTagName("head")[0];
454 var script = document.createElement('script');
455 script.type = 'text/javascript';
456 let myId = id;
457 if (!myId) myId = url;
458 if (document.getElementById(id) && document.getElementById(id).src === url) {
459 onloadfkt && onloadfkt();
460 return; // prevent re-adding the same tag
461 }
462 script.id = id;
463 if (attrListe) for(var attr in attrListe) script.setAttribute(attr, attrListe[attr]);
464 script.src = url;
465 if (loadLatest) script.src += '?t='+new Date().getTime();
466 if (typeof onloadfkt !== "undefined") script.onload = onloadfkt;
467 head.appendChild(script);
468 }
469
470 function getLabelPremiumOnly() {
471 return "[PREMIUM ONLY]";
472 }
473
474 function _getSpinnerHTML() {
475 return '<span class="lds-dual-ring"></span>';
476 }
477
478 function isPremium() {
479 return myAjax._isPremium == "1" || myAjax._isPremium === true;
480 }
481 function isUserLoggedIn() {
482 return myAjax._isUserLoggedin == "1" || myAjax._isUserLoggedin === true;
483 }
484
485 function getHelperFunktions() {
486 return {
487 _getSpinnerHTML:_getSpinnerHTML,
488 _macheAjax:macheAjax,
489 _basics_ermittelJSPath:basics_ermittelJSPath,
490 _basics_ermittelURLParameter:basics_ermittelURLParameter,
491 _renderEingabeMaske:_renderEingabeMaske,
492 _addScriptTag:addScriptTag,
493 _addStyleCode:addStyleCode,
494 _checkIfCssRuleExists:checkIfCssRuleExists,
495 _getCODE_ELEMENT:function(){return CODE_ELEMENT;},
496 _getELEM_OUTPUT:function() {return ELEM_OUTPUT;},
497 _getBUTTON_ELEMENT:function(){return BUTTON_ELEMENT;},
498 _getBasicSelf:function() { return _self;},
499 _getLAYOUT:function(){ return LAYOUT;},
500 _getDIV_MAIN:function(){ return DIV_MAIN;},
501 _getOptions_getByKey:_getOptions_getByKey,
502 _getOptions_isActivatedByKey:_getOptions_isActivatedByKey,
503 _getOptions_getLabelByKey:_getOptions_getLabelByKey,
504 _getOptions_getValByKey:_getOptions_getValByKey
505 };
506 }
507
508 function init() {
509 PARAS = basics_ermittelURLParameter();
510 if (!checkIfCssRuleExists('lds-dual-ring')) addStyleCode('.lds-dual-ring {display:inline-block;width:64px;height:64px;}.lds-dual-ring:after {content:" ";display:block;width:46px;height:46px;margin:1px;border-radius:50%;border:5px solid #fff;border-color:#2e74b5 transparent #2e74b5 transparent;animation:lds-dual-ring 0.6s linear infinite;}@keyframes lds-dual-ring {0% {transform: rotate(0deg);}100% {transform: rotate(360deg);}}');
511 addStyleTag(myAjax._plugin_home_url+'/css/styles.css');
512 //addStyleTag('https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css');
513 //addStyleTag('https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css');
514 //addScriptTag('https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js');
515
516 LAYOUT = new Layout();
517
518 if (DIV_MAIN == null) {
519 DIV_MAIN = document.getElementById(DIV_ID);
520 if (DIV_MAIN == null) {
521 DIV_MAIN = document.createElement('div');
522 document.getElementsByTagName('body')[0].appendChild(DIV_MAIN);
523 }
524 }
525
526 function _init() {
527 LAYOUT.renderEingabeMaske();
528 //_renderEingabeMaske();
529 }
530 function _initPremium() {
531 if (isPremium() && myAjax._premJS !== "") {
532 if (window.SasoEventticketsValidatorPremium) {
533 PREMIUM = new SasoEventticketsValidatorPremium(myAjax, getHelperFunktions());
534 _init();
535 }
536 } else {
537 _init();
538 }
539 }
540
541 let url = DATEN_URL+'?action='+myAjax._action+'&a_sngmbh=getOptions&t='+new Date().getTime();
542 macheAjax(url, function(responseText) {
543 let optionData = JSON.parse(responseText);
544 OPTIONS.list = optionData.data;
545 for (let a=0;a<OPTIONS.list.length;a++) {
546 let item = OPTIONS.list[a];
547 OPTIONS.mapKeys[item.key] = item;
548 }
549 _initPremium();
550 },null,true);
551 }
552
553 init();
554 //window.BASIC = getHelperFunktions();
555 }
556 Ajax_sasoEventtickets && SasoEventticketsValidator(Ajax_sasoEventtickets);