Szatuna/js/default.js
2026-02-26 14:35:27 +01:00

849 lines
28 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*!
* @license kjokmjnoi API
* Website: https://api.kjokmjnoi.hu
* Ver: 1.0.4
*/
/* Link funkciók */
function get_information(link, callback) {
var xhr = new XMLHttpRequest();
xhr.open("GET", link, true);
xhr.onreadystatechange = function() {
if (xhr.status == 200) {
if (xhr.responseText.startsWith('|$6b4ea69e17243db95f7b46c384d40370$|!<script type="text/javascript">window.location=')) {
var url = xhr.responseText.split('window.location="')[1];
url = url.split('";</script>')[0];
window.location= url;
} else {
callback(xhr.responseText);
}
} else {
errorCallback();
}
};
xhr.send(null);
}
function get_POST_information(link, jsonBody, callback, errorCallback) {
var xhr = new XMLHttpRequest();
xhr.open("POST", link);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
if (xhr.responseText.startsWith('|$6b4ea69e17243db95f7b46c384d40370$|!<script type="text/javascript">window.location=')) {
var url = xhr.responseText.split('window.location="')[1];
url = url.split('";</script>')[0];
window.location= url;
} else {
callback(xhr.responseText);
}
} else {
errorCallback();
}
}
};
xhr.send(jsonBody);
}
/* Kódolók */
function htmlspecialchar(text) {
return text.replace(/&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;").replace(/"/g, "&quot;");
}
function htmlEncode(s) {
return s.replace(' ', '%20')
.replace('/', '%2F')
.replace('!', '%21')
.replace('"', '%22')
.replace('#', '%23')
.replace('$', '%24')
.replace('%', '%25')
.replace('&', '%26')
.replace("'", "%27")
.replace('.', '%2E')
.replace(',', '%2C')
.replace('+', '%2B')
.replace('*', '%2A')
.replace(';', '%3B')
.replace('?', '%3F')
.replace('@', '%40')
.replace(':', '%3A');
}
var sha256 = function sha256(ascii) {
function rightRotate(value, amount) {
return (value>>>amount) | (value<<(32 - amount));
};
var mathPow = Math.pow;
var maxWord = mathPow(2, 32);
var lengthProperty = 'length'
var i, j;
var result = ''
var words = [];
var asciiBitLength = ascii[lengthProperty]*8;
var hash = sha256.h = sha256.h || [];
var k = sha256.k = sha256.k || [];
var primeCounter = k[lengthProperty];
var isComposite = {};
for (var candidate = 2; primeCounter < 64; candidate++) {
if (!isComposite[candidate]) {
for (i = 0; i < 313; i += candidate) {
isComposite[i] = candidate;
}
hash[primeCounter] = (mathPow(candidate, .5)*maxWord)|0;
k[primeCounter++] = (mathPow(candidate, 1/3)*maxWord)|0;
}
}
ascii += '\x80'
while (ascii[lengthProperty]%64 - 56) ascii += '\x00'
for (i = 0; i < ascii[lengthProperty]; i++) {
j = ascii.charCodeAt(i);
if (j>>8) return;
words[i>>2] |= j << ((3 - i)%4)*8;
}
words[words[lengthProperty]] = ((asciiBitLength/maxWord)|0);
words[words[lengthProperty]] = (asciiBitLength)
for (j = 0; j < words[lengthProperty];) {
var w = words.slice(j, j += 16);
var oldHash = hash;
hash = hash.slice(0, 8);
for (i = 0; i < 64; i++) {
var i2 = i + j;
var w15 = w[i - 15], w2 = w[i - 2];
var a = hash[0], e = hash[4];
var temp1 = hash[7]
+ (rightRotate(e, 6) ^ rightRotate(e, 11) ^ rightRotate(e, 25))
+ ((e&hash[5])^((~e)&hash[6]))
+ k[i]
+ (w[i] = (i < 16) ? w[i] : (
w[i - 16]
+ (rightRotate(w15, 7) ^ rightRotate(w15, 18) ^ (w15>>>3))
+ w[i - 7]
+ (rightRotate(w2, 17) ^ rightRotate(w2, 19) ^ (w2>>>10))
)|0
);
var temp2 = (rightRotate(a, 2) ^ rightRotate(a, 13) ^ rightRotate(a, 22))
+ ((a&hash[1])^(a&hash[2])^(hash[1]&hash[2]));
hash = [(temp1 + temp2)|0].concat(hash);
hash[4] = (hash[4] + temp1)|0;
}
for (i = 0; i < 8; i++) {
hash[i] = (hash[i] + oldHash[i])|0;
}
}
for (i = 0; i < 8; i++) {
for (j = 3; j + 1; j--) {
var b = (hash[i]>>(j*8))&255;
result += ((b < 16) ? 0 : '') + b.toString(16);
}
}
return result;
};
var MD5 = function (string) {
function RotateLeft(lValue, iShiftBits) {
return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits));
}
function AddUnsigned(lX,lY) {
var lX4,lY4,lX8,lY8,lResult;
lX8 = (lX & 0x80000000);
lY8 = (lY & 0x80000000);
lX4 = (lX & 0x40000000);
lY4 = (lY & 0x40000000);
lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);
if (lX4 & lY4) {
return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
}
if (lX4 | lY4) {
if (lResult & 0x40000000) {
return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
} else {
return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
}
} else {
return (lResult ^ lX8 ^ lY8);
}
}
function F(x,y,z) { return (x & y) | ((~x) & z); }
function G(x,y,z) { return (x & z) | (y & (~z)); }
function H(x,y,z) { return (x ^ y ^ z); }
function I(x,y,z) { return (y ^ (x | (~z))); }
function FF(a,b,c,d,x,s,ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
};
function GG(a,b,c,d,x,s,ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
};
function HH(a,b,c,d,x,s,ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
};
function II(a,b,c,d,x,s,ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
};
function ConvertToWordArray(string) {
var lWordCount;
var lMessageLength = string.length;
var lNumberOfWords_temp1=lMessageLength + 8;
var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;
var lNumberOfWords = (lNumberOfWords_temp2+1)*16;
var lWordArray=Array(lNumberOfWords-1);
var lBytePosition = 0;
var lByteCount = 0;
while ( lByteCount < lMessageLength ) {
lWordCount = (lByteCount-(lByteCount % 4))/4;
lBytePosition = (lByteCount % 4)*8;
lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount)<<lBytePosition));
lByteCount++;
}
lWordCount = (lByteCount-(lByteCount % 4))/4;
lBytePosition = (lByteCount % 4)*8;
lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);
lWordArray[lNumberOfWords-2] = lMessageLength<<3;
lWordArray[lNumberOfWords-1] = lMessageLength>>>29;
return lWordArray;
};
function WordToHex(lValue) {
var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;
for (lCount = 0;lCount<=3;lCount++) {
lByte = (lValue>>>(lCount*8)) & 255;
WordToHexValue_temp = "0" + lByte.toString(16);
WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);
}
return WordToHexValue;
};
function Utf8Encode(string) {
string = string.replace(/\r\n/g,"\n");
var utftext = "";
for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
}
else if((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
}
else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
};
var x=Array();
var k,AA,BB,CC,DD,a,b,c,d;
var S11=7, S12=12, S13=17, S14=22;
var S21=5, S22=9 , S23=14, S24=20;
var S31=4, S32=11, S33=16, S34=23;
var S41=6, S42=10, S43=15, S44=21;
string = Utf8Encode(string);
x = ConvertToWordArray(string);
a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;
for (k=0;k<x.length;k+=16) {
AA=a; BB=b; CC=c; DD=d;
a=FF(a,b,c,d,x[k+0], S11,0xD76AA478);
d=FF(d,a,b,c,x[k+1], S12,0xE8C7B756);
c=FF(c,d,a,b,x[k+2], S13,0x242070DB);
b=FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE);
a=FF(a,b,c,d,x[k+4], S11,0xF57C0FAF);
d=FF(d,a,b,c,x[k+5], S12,0x4787C62A);
c=FF(c,d,a,b,x[k+6], S13,0xA8304613);
b=FF(b,c,d,a,x[k+7], S14,0xFD469501);
a=FF(a,b,c,d,x[k+8], S11,0x698098D8);
d=FF(d,a,b,c,x[k+9], S12,0x8B44F7AF);
c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);
b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);
a=FF(a,b,c,d,x[k+12],S11,0x6B901122);
d=FF(d,a,b,c,x[k+13],S12,0xFD987193);
c=FF(c,d,a,b,x[k+14],S13,0xA679438E);
b=FF(b,c,d,a,x[k+15],S14,0x49B40821);
a=GG(a,b,c,d,x[k+1], S21,0xF61E2562);
d=GG(d,a,b,c,x[k+6], S22,0xC040B340);
c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);
b=GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA);
a=GG(a,b,c,d,x[k+5], S21,0xD62F105D);
d=GG(d,a,b,c,x[k+10],S22,0x2441453);
c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);
b=GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8);
a=GG(a,b,c,d,x[k+9], S21,0x21E1CDE6);
d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);
c=GG(c,d,a,b,x[k+3], S23,0xF4D50D87);
b=GG(b,c,d,a,x[k+8], S24,0x455A14ED);
a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905);
d=GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8);
c=GG(c,d,a,b,x[k+7], S23,0x676F02D9);
b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);
a=HH(a,b,c,d,x[k+5], S31,0xFFFA3942);
d=HH(d,a,b,c,x[k+8], S32,0x8771F681);
c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);
b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);
a=HH(a,b,c,d,x[k+1], S31,0xA4BEEA44);
d=HH(d,a,b,c,x[k+4], S32,0x4BDECFA9);
c=HH(c,d,a,b,x[k+7], S33,0xF6BB4B60);
b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);
a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6);
d=HH(d,a,b,c,x[k+0], S32,0xEAA127FA);
c=HH(c,d,a,b,x[k+3], S33,0xD4EF3085);
b=HH(b,c,d,a,x[k+6], S34,0x4881D05);
a=HH(a,b,c,d,x[k+9], S31,0xD9D4D039);
d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);
c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);
b=HH(b,c,d,a,x[k+2], S34,0xC4AC5665);
a=II(a,b,c,d,x[k+0], S41,0xF4292244);
d=II(d,a,b,c,x[k+7], S42,0x432AFF97);
c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);
b=II(b,c,d,a,x[k+5], S44,0xFC93A039);
a=II(a,b,c,d,x[k+12],S41,0x655B59C3);
d=II(d,a,b,c,x[k+3], S42,0x8F0CCC92);
c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);
b=II(b,c,d,a,x[k+1], S44,0x85845DD1);
a=II(a,b,c,d,x[k+8], S41,0x6FA87E4F);
d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);
c=II(c,d,a,b,x[k+6], S43,0xA3014314);
b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);
a=II(a,b,c,d,x[k+4], S41,0xF7537E82);
d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);
c=II(c,d,a,b,x[k+2], S43,0x2AD7D2BB);
b=II(b,c,d,a,x[k+9], S44,0xEB86D391);
a=AddUnsigned(a,AA);
b=AddUnsigned(b,BB);
c=AddUnsigned(c,CC);
d=AddUnsigned(d,DD);
}
var temp = WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);
return temp.toLowerCase();
}
function jsonSafeEncode(str) {
return str
.replace(/\\/g, '\\\\')
.replace(/"/g, '\\"')
.replace(/'/g, "\\'")
.replace(/\n/g, '\\n')
.replace(/\r/g, '\\r')
.replace(/\t/g, '\\t')
.replace(/\f/g, '\\f')
.replace(/%/g, '\\%')
.replace(/_/g, '\\_')
.replace(/`/g, '\\`');
}
function jsonSafeDecode(str) {
return str
.replace(/\\`/g, '`')
.replace(/\\_/g, '_')
.replace(/\\%/g, '%')
.replace(/\\f/g, '\f')
.replace(/\\t/g, '\t')
.replace(/\\r/g, '\r')
.replace(/\\n/g, '\n')
.replace(/\\"/g, '"')
.replace(/\\'/g, "'")
.replace(/\\\\/g, '\\');
}
function NumberToABC(n) {
const abc = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
if (typeof n === 'string') {
const num = parseInt(n, 10);
if (isNaN(num) || num < 1 || num > 26) return null;
return abc.charAt(num - 1);
}
if (typeof n !== 'number' || n < 1 || n > 26) return null;
return abc.charAt(n - 1);
}
function padWithZero(str) {
if (str.length === 2) return str;
return str.toString().padStart(2, '0');
}
/* Sütikezelés */
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+ d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
var isMobile = {
Android: function() {
return navigator.userAgent.match(/Android/i);
},
BlackBerry: function() {
return navigator.userAgent.match(/BlackBerry/i);
},
iOS: function() {
return navigator.userAgent.match(/iPhone|iPad|iPod/i);
},
Opera: function() {
return navigator.userAgent.match(/Opera Mini/i);
},
Windows: function() {
return navigator.userAgent.match(/IEMobile/i) || navigator.userAgent.match(/WPDesktop/i);
},
any: function() {
return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
}
};
function isMobileDevice() {
return (
('ontouchstart' in window || navigator.maxTouchPoints > 0) &&
window.matchMedia("(max-width: 768px)").matches
);
}
var iscookie = getCookie("iscookie");
if (iscookie != "") {
} else {
var elementExists = document.getElementById("kjokmjnoi");
if (elementExists != null) {
document.getElementById('kjokmjnoi').style.visibility='visible';
style = "font-family: sans-serif; background-color: #2196F3; padding: 20px; color: white; opacity: 1; transition: opacity 0.6s; margin-bottom: 15px;";
stylebtn = "font-family: sans-serif; margin-left: 15px; color: white; font-weight: bold; float: right; font-size: 22px; line-height: 20px; cursor: pointer; transition: 0.3s;";
alert = "<div style='" + style + "'><span class='closebtn' style='" + stylebtn + "'>&times;</span><strong>Info!</strong> Az oldal mĹąkĂśdĂŠsĂŠhez szĂźksĂŠgesek a cookie-k! Az oldal hasznĂĄlatĂĄval elfogadja ezt!</div>";
var posts_div=document.getElementById('kjokmjnoi');
posts_div.innerHTML = alert;
setCookie("iscookie", "true", 365);
setTimeout(() => { window.scrollTo(0, 0); }, 10);
}
}
var close = document.getElementsByClassName("closebtn");
var i;
for (i = 0; i < close.length; i++) {
close[i].onclick = function(){
var div = this.parentElement;
div.style.opacity = "0";
setTimeout(function(){ div.style.display = "none"; }, 600);
}
}
/* Window Funkció */
const win = document.getElementById("win");
const wintitle = document.getElementById("wintitle");
const winapp = document.getElementById("winapp");
const winloading = document.getElementById("winloading");
function openwin() {
win.classList.remove("closed");
}
function closewin() {
win.classList.add("closed");
}
function fullscrn(isfull = null) {
if (isfull == null) {
if(document.getElementById("fullscrnbtn").classList.contains("close")) {
win.classList.remove("fullscrn");
document.getElementById("fullscrnbtn").classList.remove("close");
} else {
win.classList.add("fullscrn");
document.getElementById("fullscrnbtn").classList.add("close");
}
} else if (isfull) {
win.classList.add("fullscrn");
document.getElementById("fullscrnbtn").classList.add("close");
} else {
win.classList.remove("fullscrn");
document.getElementById("fullscrnbtn").classList.remove("close");
}
}
function Loading(isloading = true) {
if (isloading) {
document.getElementById("winloading").classList.remove("hidden");
document.getElementById("loadingBG").classList.add("active")
} else {
document.getElementById("winloading").classList.add("hidden")
document.getElementById("loadingBG").classList.remove("active")
}
}
/* Alert funkciók */
function GenerateID(length = 8) {
const characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
let randomId = '';
for (let i = 0; i < length; i++) {
const randomIndex = Math.floor(Math.random() * characters.length);
randomId += characters[randomIndex];
}
return randomId;
}
function GenerateAlerts(type, message, disappearing = true) {
const errorElements = document.querySelectorAll('#errorDIV');
let spanstyle = "'none'";
errorElements.forEach(function(element) {
const randomId = type + GenerateID(16);
let alertHtml = '';
if (type == "error") {
alertHtml = '<div class="erroralert" id="'+randomId+'"><span class="closebtn" onclick="this.parentElement.style.display='+spanstyle+';">&times;</span><strong>Hiba!</strong> '+message+'</div>';
} else if (type == "success") {
alertHtml = '<div class="successalert" id="'+randomId+'"><span class="closebtn" onclick="this.parentElement.style.display='+spanstyle+';">&times;</span><strong>Siker!</strong> '+message+'</div>';
} else if (type == "info") {
alertHtml = '<div class="infoalert" id="'+randomId+'"><span class="closebtn" onclick="this.parentElement.style.display='+spanstyle+';">&times;</span><strong>Info!</strong> '+message+'</div>';
} else if (type == "warning") {
alertHtml = '<div class="warningalert" id="'+randomId+'"><span class="closebtn" onclick="this.parentElement.style.display='+spanstyle+';">&times;</span><strong>Figyelem!</strong> '+message+'</div>';
}
element.innerHTML += alertHtml;
if (disappearing) {
setTimeout(() => {
const alertElement = document.getElementById(randomId);
if (alertElement) {
alertElement.remove();
}
}, 10000);
}
});
}
/* Név korrektálás */
function adjustFontSize() {
const container = document.getElementById("userNameDiv");
const text = document.getElementById("userNameP");
let fontSize = 16;
text.style.fontSize = "16px";
while (text.scrollHeight > container.clientHeight || text.scrollWidth > container.clientWidth) {
fontSize--;
text.style.fontSize = fontSize + "px";
if (fontSize <= 8) {
break;
}
}
}
if (document.getElementById("userNameP") !== null && document.getElementById("userNameDiv") !== null) {
window.onload = adjustFontSize;
window.onresize = adjustFontSize;
}
/* LogOut timer és vissza LogIn */
let reLogInPopup;
function ReLogIn() {
reLogInPopup = window.open(window.location.origin + '?noredirect=1', 'Belépés', 'width=860,height=860');
}
function ReLogInClose() {
try {
reLogInPopup.location.href = window.location.origin + '/managers/template/loggedin.html';
reLogInPopup.close();
} catch (e) {
console.error('Close error:', e.message);
}
reLogInPopup = null;
}
if (document.getElementById("TimeBeforeLogOutSpan") !== null) {
const timerSpan = document.getElementById('TimeBeforeLogOutSpan');
var theAlertedSessionEnd = null;
const update = () => {
const authTimer = getCookie('auth_timer');
if (!authTimer || isNaN(authTimer)) {
return;
}
const expiry = parseInt(authTimer) * 1000;
const now = Date.now();
const remaining = Math.max(0, Math.floor((expiry - now) / 1000));
if (remaining <= 0) {
timerSpan.textContent = 'Lejárt munkamenet';
timerSpan.style.opacity = '1';
timerSpan.style.right = '210px';
timerSpan.style.color = 'red';
if (theAlertedSessionEnd == null) {
const html = `<p><b>Az ön munkamenete lejárt!</b><br>Kérjük, jelentkezzen be újra!</p>
<br clear='all'>
<button id="AlertBtnNo" style="float: right; margin-left: 15px; width: 80;" onclick="location.reload();">Mégsem</button>
<button style="float: right; width: 80;" onclick="ReLogIn()">Bejelentkezés</button>`;
theAlertedSessionEnd = CreateAlertBox('Lejárt munkamenet', html, false);
}
return;
}
if (theAlertedSessionEnd != null) {
CloseAlertBox(theAlertedSessionEnd);
theAlertedSessionEnd = null;
}
if (reLogInPopup != null && !reLogInPopup.closed) {
ReLogInClose();
}
const minutes = Math.floor(remaining / 60);
const seconds = remaining % 60;
timerSpan.textContent = `${minutes}:${seconds.toString().padStart(2, '0')}`;
timerSpan.style.opacity = '0.4';
timerSpan.style.right = '10px';
timerSpan.style.color = 'var(--panelcolor)';
};
update();
setInterval(update, 1000);
}
/* Feedback Státusz */
function FeedbackButtonStatus(status = "loading", id) {
var FeedbackButton = document.getElementById(id);
if (status == "loading") {
FeedbackButton.disabled = true;
FeedbackButton.classList.add('loading');
} else if (status == "complete") {
FeedbackButton.classList.add('complete');
setTimeout(() => {
FeedbackButton.classList.remove("loading");
FeedbackButton.classList.remove("complete");
FeedbackButton.disabled = false;
}, 6000);
} else {
FeedbackButton.classList.add('failed');
setTimeout(() => {
FeedbackButton.classList.remove("loading");
FeedbackButton.classList.remove("failed");
FeedbackButton.disabled = false;
}, 6000);
}
}
/* Typing szimuláció */
var TypingMax = 0;
var isSimulateTyping = false;
function getRandomNumber(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min;}
function SimulateTypingProtector(text, elementId) {
if (isSimulateTyping) {
setTimeout(function() {
SimulateTyping(text, elementId);
}, TypingMax);
} else {
SimulateTyping(text, elementId);
}
}
function SimulateTyping(text, elementId) {
var element = document.getElementById(elementId);
var delaymin = 20;
var delaymax = 40;
var index = 0;
TypingMax = text.length * delaymax;
isSimulateTyping = true;
var timer = setInterval(function() {
if (index < text.length) {
var char = text.charAt(index);
element.innerHTML += char;
index++;
} else {
clearInterval(timer);
isSimulateTyping = false;
}
}, getRandomNumber(delaymin, delaymax));
}
/* Kanban board */
if (document.querySelector('.kanban-board') !== null) {
document.addEventListener('DOMContentLoaded', () => {
const board = document.querySelector('.kanban-board');
let isDown = false;
let startX;
let scrollLeft;
board.addEventListener('mousedown', (e) => {
isDown = true;
board.classList.add('active');
startX = e.pageX - board.offsetLeft;
scrollLeft = board.scrollLeft;
});
board.addEventListener('mouseleave', () => {
isDown = false;
board.classList.remove('active');
});
board.addEventListener('mouseup', () => {
isDown = false;
board.classList.remove('active');
});
board.addEventListener('mousemove', (e) => {
if (!isDown) return;
e.preventDefault();
const x = e.pageX - board.offsetLeft;
const walk = (x - startX) * 1.5;
board.scrollLeft = scrollLeft - walk;
});
});
}
/* AlertBox */
function CreateAlertBox(title, html, closeable = true) {
// Overlay létrehozása
const overlay = document.createElement('div');
overlay.className = 'alert-overlay';
overlay.style.cssText = `
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5);
backdrop-filter: blur(3px);
display: flex;
justify-content: center;
align-items: center;
z-index: ${1000 + document.querySelectorAll('.alert-overlay').length};
`;
// AlertBox div létrehozása
const alertBox = document.createElement('div');
alertBox.className = 'alert-box';
alertBox.style.cssText = `
width: 25%;
min-width: 300px;
max-width: 600px;
max-height: 600px;
background: var(--toppanel);
border-radius: 4px;
box-shadow: 1 5px 10px #aaaaaa;
position: relative;
overflow: hidden;
display: flex;
flex-direction: column;
`;
// Header létrehozása
const header = document.createElement('div');
header.style.cssText = `
padding: 8px 20px;
border-bottom: 1px solid #bdc3c7;
display: flex;
justify-content: space-between;
align-items: center;
flex-shrink: 0;
background-color: var(--panelcolor);
`;
// Title h2 elem
const titleElement = document.createElement('h2');
titleElement.textContent = title;
titleElement.style.cssText = `
margin: 0;
font-size: 18px;
color: #f5f5f5;
`;
header.appendChild(titleElement);
// Close gomb ha closeable
if (closeable) {
const closeButton = document.createElement('button');
closeButton.innerHTML = '×';
closeButton.style.cssText = `
background: none;
border: none;
font-size: 24px;
color: #f5f5f5;
cursor: pointer;
padding: 0;
margin: 0;
width: 30px;
height: 30px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
transition: background-color 0.2s;
`;
closeButton.onmouseover = () => closeButton.style.backgroundColor = '#f0f0f0';
closeButton.onmouseout = () => closeButton.style.backgroundColor = 'transparent';
closeButton.onclick = () => CloseAlertBox(overlay);
header.appendChild(closeButton);
}
// Content terület
const content = document.createElement('div');
content.innerHTML = html;
content.style.cssText = `
padding: 0px 20px 20px 20px;
overflow-y: auto;
flex-grow: 1;
text-align: justify;
`;
// Összeállítás
alertBox.appendChild(header);
alertBox.appendChild(content);
overlay.appendChild(alertBox);
// DOM-hoz hozzáadás
document.body.appendChild(overlay);
// Animáció
overlay.style.opacity = '0';
alertBox.style.transform = 'scale(0.8)';
requestAnimationFrame(() => {
overlay.style.transition = 'opacity 0.3s ease';
alertBox.style.transition = 'transform 0.3s ease';
overlay.style.opacity = '1';
alertBox.style.transform = 'scale(1)';
});
return overlay;
}
function CloseAlertBox(overlay) {
if (!overlay) return;
overlay.style.transition = 'opacity 0.3s ease';
overlay.querySelector('.alert-box').style.transition = 'transform 0.3s ease';
overlay.style.opacity = '0';
overlay.querySelector('.alert-box').style.transform = 'scale(0.8)';
setTimeout(() => {
if (overlay.parentNode) {
overlay.parentNode.removeChild(overlay);
}
}, 300);
}