window.siteui = window.siteui || {}; window.siteui.__initScripts = []; window.siteui.__initWindowLoadScripts = []; window.siteui.__initWindowResizeScripts = []; window.siteui.__initWindowScrollScripts = []; window.siteui.__externalLibraries = []; window.siteui.__externalLibrariesCallbacks = []; runCore = function(e){ //Run these scripts when page has loaded and DOM is ready. if( window.siteui.__initScripts.length ) { for( var i = 0; i < window.siteui.__initScripts.length; i++ ) { if( typeof window.siteui.__initScripts[i] === 'function' ) { window.siteui.__initScripts[i](); delete window.siteui.__initScripts[i]; } } } //Run these scripts when all assets are loaded. window.addEventListener('load',function(e){ if( window.siteui.__initWindowLoadScripts.length ) { for( var i = 0; i < window.siteui.__initWindowLoadScripts.length; i++ ) { if( typeof window.siteui.__initWindowLoadScripts[i] === 'function' ) { window.siteui.__initWindowLoadScripts[i](); delete window.siteui.__initWindowLoadScripts[i]; } } } }); //Run these scripts when page is resized. window.addEventListener('resize',function(e){ if( window.siteui.__initWindowResizeScripts.length ) { for( var i = 0; i < window.siteui.__initWindowResizeScripts.length; i++ ) { window.siteui.__initWindowResizeScripts[i](); } } }); //Run these scripts when page is scrolled. window.addEventListener('scroll',function(e){ if( window.siteui.__initWindowScrollScripts.length ) { for( var i = 0; i < window.siteui.__initWindowScrollScripts.length; i++ ) { window.siteui.__initWindowScrollScripts[i](); } } }); window.siteui.doAction('init'); }; window.siteui.generateUUID = function() { return Math.random().toString(36).substring(2) + (new Date()).getTime().toString(36); }; window.siteui.incInitScript = function( ref ){ window.siteui.__initScripts.push(ref); }; window.siteui.incInitWindowLoadScript = function( ref ){ window.siteui.__initWindowLoadScripts.push(ref); }; window.siteui.incInitWindowResizeScript = function( ref ){ window.siteui.__initWindowResizeScripts.push(ref); }; window.siteui.incInitWindowScrollScript = function( ref ){ window.siteui.__initWindowScrollScripts.push(ref); }; window.siteui.addAction = function (action, ref, obj) { if (typeof window.siteui['__action_' + action] === 'undefined') { window.siteui['__action_' + action] = []; } window.siteui['__action_' + action].push({ ref: ref, data: obj }); }; window.siteui.doAction = async function (action) { if (typeof window.siteui['__action_' + action] != 'undefined' && window.siteui['__action_' + action].length) { for (var i = 0; i < window.siteui['__action_' + action].length; i++) { if (typeof window.siteui['__action_' + action][i].ref === 'function') { window.siteui['__action_' + action][i].ref(window.siteui['__action_' + action][i].data); } else { console.log(window.siteui['__action_' + action][i].ref); } } } }; window.siteui.loadExternalLibrary = function( ref, callback ) { if( typeof window.siteui.__externalLibraries[ref] === 'undefined' ) { window.siteui.__externalLibraries[ref] = 0; window.siteui.__externalLibrariesCallbacks[ref] = []; window.siteui.__externalLibrariesCallbacks[ref].push(callback); let script = document.createElement('script'); script.src = ref; script.onload = function(){ window.siteui.__externalLibraries[ref] = 1; for( var i = 0; i < window.siteui.__externalLibrariesCallbacks[ref].length; i++ ) { window.siteui.__externalLibrariesCallbacks[ref][i](); } }; document.getElementsByTagName('head')[0].appendChild(script); } else { if (window.siteui.__externalLibraries[ref] === 0) { window.siteui.__externalLibrariesCallbacks[ref].push(callback); } else { callback(); } } }; window.siteui.doAjax = function (path, callback, responseType = 'json') { var xhr = new XMLHttpRequest(); xhr.addEventListener("load", function () { if (this.readyState === 4) { if (typeof callback == 'function') { callback(this.response); } } }); xhr.responseType = responseType; xhr.open('GET', '/ajax.php?action=' + path); xhr.send(); }; window.siteui.doAjaxPost = function (path, data, callback) { var xhr = new XMLHttpRequest(); xhr.addEventListener("load", function () { if (this.readyState === 4) { if (typeof callback == 'function') { callback(this.response); } } }); xhr.responseType = 'json'; xhr.open('POST', '/account-creation/ajax.php?action=' + path); xhr.send(JSON.stringify(data)); }; window.siteui.doRemoteAjax = function (path, callback, vars = null) { var xhr = new XMLHttpRequest(); xhr.addEventListener("load", function () { if (this.readyState === 4) { if (typeof callback == 'function') { callback(this.response, vars); } } }); xhr.responseType = 'json'; xhr.open('GET', path); xhr.send(); }; window.siteui.awaitRemoteAjax = function (path, type = 'json') { return new Promise(resolve => { var xhr = new XMLHttpRequest(); xhr.addEventListener("load", function () { if (this.readyState === 4) { let response = this.response; if( type === 'json' ) { if( response === null ) { response = {}; } response.code = this.status; } resolve(response); } }); xhr.responseType = type; xhr.open('GET', path); xhr.send(); }); }; window.siteui.awaitAjax = function(path, api = true, response = 'json') { return new Promise(resolve => { var xhr = new XMLHttpRequest(); xhr.addEventListener("load", function () { if (this.readyState === 4) { resolve(this.response); } }); xhr.responseType = response; xhr.open('GET', (api ? '/api/' : '/') + path); xhr.send(); }); }; window.siteui.awaitAPIPost = function (path, data, type = 'json', abort = true) { return new Promise(resolve => { var xhr = new XMLHttpRequest(); xhr.addEventListener("load", function () { if (this.readyState === 4) { let response = this.response; if( type === 'json' ) { if( response === null ) { response = {}; } response.code = this.status; } resolve(response); } }); xhr.responseType = type; xhr.open('POST', '/api/' + path); xhr.send(JSON.stringify(data)); }); }; window.siteui.awaitAjaxPost = function (path, data, type = 'json', abort = true) { return new Promise(resolve => { var xhr = new XMLHttpRequest(); xhr.addEventListener("load", function () { if (this.readyState === 4) { let response = this.response; if( type === 'json' ) { if( response === null ) { response = {}; } response.code = this.status; } resolve(response); } }); xhr.responseType = type; xhr.open('POST', window.APP_URL + 'a/' + path); xhr.setRequestHeader('desktop', window.siteui.isDesktop() ? '1' : '0'); data.config_id = window.config_id; xhr.send(JSON.stringify(data)); }); }; window.siteui.awaitFormDataAjax = function (endpoint,formData) { return new Promise(resolve => { var xhr = new XMLHttpRequest(); xhr.addEventListener("load", function () { if (this.readyState === 4) { let response = this.response; if ( typeof response === 'object' && !Array.isArray(value)) { if( response === null ) { response = {}; } response.code = this.status; } else { response = {}; response.code = this.status; } resolve(response); } }); xhr.open('POST', '/api/' + endpoint); xhr.send(formData); }); }; window.siteui.doRemoteAjaxPost = function (path,data, callback) { var xhr = new XMLHttpRequest(); xhr.addEventListener("load", function () { if (this.readyState === 4) { if (typeof callback == 'function') { callback(this.response); } } }); xhr.responseType = 'json'; xhr.open('POST', path); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.send(JSON.stringify(data)); };