var site = "/"; var var_resourceQueue = []; var var_interactionDetected = false; var var_callbacksMap = new Map(); //---------------------------------- function Spectro_LoadJS(var_scriptUrl, var_callback) { var var_script = document.createElement('script'); var_script.src = var_scriptUrl; var_script.async = false; var_script.onload = function() { if (var_callback) var_callback(); if (var_scriptUrl.includes('img_postload.js')) Spectro_DynamicDraw(); console.log(`JS ${var_scriptUrl} loaded`); }; var_script.onerror = function() { console.error('Failed to load script: ' + var_scriptUrl); }; document.head.appendChild(var_script); } //---------------------------------- function Spectro_LoadCSS(var_cssUrl, var_callback) { var var_link = document.createElement('link'); var_link.rel = 'stylesheet'; var_link.type = 'text/css'; var_link.href = var_cssUrl; var_link.onload = function() { document.body.classList.remove('preload'); if (var_callback) var_callback(); if (document.getElementById("spectro_cssmin")) document.getElementById("spectro_cssmin").innerHTML = ""; for (var var_i = 1; var_i < 100; var_i++) { if (document.getElementById("spectro_cssmain" + var_i)) document.getElementById("spectro_cssmain" + var_i).innerHTML = ""; if (document.getElementById("spectro_cssmedia" + var_i)) document.getElementById("spectro_cssmedia" + var_i).innerHTML = ""; } console.log(`CSS ${var_cssUrl} loaded`); }; var_link.onerror = function() { console.error('Failed to load CSS: ' + var_cssUrl); }; document.body.appendChild(var_link); } //---------------------------------- function Spectro_PostLoad() { console.log('postload started'); if (document.getElementById("spectro_preload")) document.getElementById("spectro_preload").style.display = "none"; if (var_interactionDetected) return; var_interactionDetected = true; document.removeEventListener('mousemove', Spectro_PostLoad); document.removeEventListener('scroll', Spectro_PostLoad); document.removeEventListener('touchstart', Spectro_PostLoad); var var_ajax = new XMLHttpRequest(); var_ajax.open("get", site + "spectro_speed/session.php", true); var_ajax.onreadystatechange = function() { if (var_ajax.readyState == 4) { console.log("session created"); } }; var_ajax.send(); while (var_resourceQueue.length > 0) { var var_url = var_resourceQueue.shift(); var var_callback = var_callbacksMap.get(var_url); var var_fileType = var_url.split('?')[0].split('.').pop().toLowerCase(); // if (var_fileType === 'js') if (var_fileType === 'js' || var_url.includes('-js')) { Spectro_LoadJS(var_url, var_callback); } else if (var_fileType === 'css') Spectro_LoadCSS(var_url, var_callback); } } //---------------------------------- function Spectro_Include(var_fileUrl, var_callback = false) { var var_fileType = var_fileUrl.split('?')[0].split('.').pop().toLowerCase(); if (var_interactionDetected) { if (var_fileType === 'js') { Spectro_LoadJS(var_fileUrl, var_callback); } else if (var_fileType === 'css') { Spectro_LoadCSS(var_fileUrl, var_callback); } } else { var_resourceQueue.push(var_fileUrl); var_callbacksMap.set(var_fileUrl, var_callback); } } //---------------------------------- function Spectro_Preload1() { if (var_first == 1) { setTimeout(Spectro_PostLoad, 4000); var_first = 0; } if (document.getElementById("spectro_preload")) { document.getElementById("spectro_preload").style.backgroundPosition = "bottom center"; setTimeout(Spectro_Preload2, 700); } } //---------------------------------- function Spectro_Preload2() { document.getElementById("spectro_preload").style.backgroundPosition = "top center"; setTimeout(Spectro_Preload1, 1000); } //---------------------------------- document.addEventListener('mousemove', Spectro_PostLoad, { once: true }); document.addEventListener('scroll', function handler() { if (window.scrollY >= 300) { Spectro_PostLoad.call(this); document.removeEventListener('scroll', handler); } }, { passive: true }); document.addEventListener('touchstart', Spectro_PostLoad, { once: true, passive: true }); //---------------------------------- window.onload = function() { var_first = 1; if (document.getElementById("spectro_site")) { site = document.getElementById("spectro_site").value; } Spectro_Preload1(); Spectro_Include(site + 'spectro_speed/js/img_postload.js'); if (document.getElementById("spectro_csslist")) { cssfile = document.getElementById("spectro_csslist").value.split("
"); for (var i = 0; i < cssfile.length - 1; i++) { Spectro_Include(site + cssfile[i]); } } if (document.getElementById("spectro_jslist")) { jsfile = document.getElementById("spectro_jslist").value.split("_-s-_"); for (i = 0; i < jsfile.length - 1; i++) { Spectro_Include(jsfile[i]); } } } //----------------------------------