let defaultConfig = { theme: 'serika_dark', showKeyTips: true, showLiveWpm: false, showTimerBar: true, smoothCaret: true, quickTab: false, punctuation: false, words: 50, time: 60, mode: "time", language: "english", fontSize: 1, freedomMode: false, resultFilters: ["all"], difficulty: "normal", blindMode: false, quickEnd: false, caretStyle: "default", flipTestColors: false, layout:"default", showDiscordDot: true } let config = defaultConfig; //cookies function saveConfigToCookie() { let d = new Date(); d.setFullYear(d.getFullYear() + 1); $.cookie("config", null); $.cookie("config", JSON.stringify(config), { expires: d, path: '/' }); restartCount = 0; } function loadConfigFromCookie() { let newConfig = $.cookie('config'); if (newConfig && newConfig != null && newConfig != "null") { newConfig = JSON.parse(newConfig); setTheme(newConfig.theme,true); setQuickTabMode(newConfig.quickTab,true); setPunctuation(newConfig.punctuation,true); setKeyTips(newConfig.showKeyTips,true); changeTimeConfig(newConfig.time,true); changeWordCount(newConfig.words,true); changeMode(newConfig.mode,true); changeLanguage(newConfig.language,true); changeLayout(newConfig.layout, true); changeFontSize(newConfig.fontSize,true); setFreedomMode(newConfig.freedomMode,true); setCaretStyle(newConfig.caretStyle,true); setDifficulty(newConfig.difficulty,true); setBlindMode(newConfig.blindMode,true); setQuickEnd(newConfig.quickEnd,true); setFlipTestColors(newConfig.flipTestColors,true); setDiscordDot(newConfig.hideDiscordDot,true); setExtraTestColor(newConfig.extraTestColor,true); if(newConfig.resultFilters == null || newConfig.resultFilters == undefined){ newConfig.resultFilters = ["all"]; } config = newConfig; } Object.keys(defaultConfig).forEach(configKey => { if(config[configKey] == undefined){ config[configKey] = defaultConfig[configKey]; } }) saveConfigToCookie(); } function showTestConfig() { $("#top .config").removeClass('hidden').css("opacity",1); } function hideTestConfig() { $("#top .config").css("opacity",0).addClass('hidden'); } //difficulty function setDifficulty(diff, nosave){ if((diff !== "normal" && diff !== "expert" && diff !== "master") || diff == undefined){ diff = "normal"; } config.difficulty = diff; restartTest(); if(!nosave) saveConfigToCookie(); } //blind mode function toggleDiscordDot(){ dot = !config.showDiscordDot; if(dot == undefined){ dot = false; } config.showDiscordDot = dot; if(!dot){ $("#menu .discord").addClass('dotHidden'); }else{ $("#menu .discord").removeClass('dotHidden'); } saveConfigToCookie(); } function setDiscordDot(dot, nosave){ if(dot == undefined){ dot = false; } config.showDiscordDot = dot; if(!dot){ $("#menu .discord").addClass('dotHidden'); }else{ $("#menu .discord").removeClass('dotHidden'); } if(!nosave) saveConfigToCookie(); } //blind mode function toggleBlindMode(){ blind = !config.blindMode; if(blind == undefined){ blind = false; } config.blindMode = blind; saveConfigToCookie(); } function setBlindMode(blind, nosave){ if(blind == undefined){ blind = false; } config.blindMode = blind; if(!nosave) saveConfigToCookie(); } //quickend function toggleQuickEnd(){ qe = !config.quickEnd; if(qe == undefined){ qe = false; } config.quickEnd = qe; saveConfigToCookie(); } function setQuickEnd(qe, nosave){ if(qe == undefined){ qe = false; } config.quickEnd = qe; if(!nosave) saveConfigToCookie(); } //flip colors function setFlipTestColors(flip,nosave){ if(flip == undefined){ flip = false; } config.flipTestColors = flip; flipTestColors(flip); if(!nosave) saveConfigToCookie(); } function toggleFlipTestColors(){ config.flipTestColors = !config.flipTestColors; flipTestColors(config.flipTestColors); saveConfigToCookie(); } //extra color function setExtraTestColor(extra,nosave){ if(extra == undefined){ extra = false; } config.extraTestColor = extra; applyExtraTestColor(extra); if(!nosave) saveConfigToCookie(); } function toggleExtraTestColor(){ config.extraTestColor = !config.extraTestColor; applyExtraTestColor(config.extraTestColor); saveConfigToCookie(); } function setCaretStyle(caretStyle, nosave) { if (caretStyle == null || caretStyle == undefined) { caretStyle = 'default'; } config.caretStyle = caretStyle; $("#caret").removeClass('default'); $("#caret").removeClass('underline'); $("#caret").removeClass('outline'); $("#caret").removeClass('block'); if (caretStyle == 'default') { $("#caret").addClass('default'); } else if (caretStyle == 'block') { $("#caret").addClass('block'); } else if (caretStyle == 'outline') { $("#caret").addClass('outline'); } else if (caretStyle == 'underline') { $("#caret").addClass('underline'); } if(!nosave) saveConfigToCookie(); } //key tips function setKeyTips(keyTips, nosave) { config.showKeyTips = keyTips; if (config.showKeyTips) { $("#bottom .keyTips").removeClass("hidden"); } else { $("#bottom .keyTips").addClass("hidden"); } if(!nosave) saveConfigToCookie(); } function toggleKeyTips() { config.showKeyTips = !config.showKeyTips; if (config.showKeyTips) { $("#bottom .keyTips").removeClass("hidden"); } else { $("#bottom .keyTips").addClass("hidden"); } saveConfigToCookie(); } //mode function changeTimeConfig(time, nosave) { time = parseInt(time); changeMode("time",nosave); config.time = time; $("#top .config .time .button").removeClass("active"); if(![15,30,60,120].includes(time)){ time = "custom"; } $("#top .config .time .button[timeConfig='" + time + "']").addClass("active"); if(!nosave) saveConfigToCookie(); } function changeWordCount(wordCount, nosave) { wordCount = parseInt(wordCount); changeMode("words", nosave); config.words = wordCount; $("#top .config .wordCount .button").removeClass("active"); if(![10,25,50,100,200].includes(wordCount)){ wordCount = "custom"; } $("#top .config .wordCount .button[wordCount='" + wordCount + "']").addClass( "active" ); if(!nosave) saveConfigToCookie(); } //caret function setSmoothCaret(mode,nosave) { config.smoothCaret = mode; if(!nosave) saveConfigToCookie(); } function toggleSmoothCaret() { config.smoothCaret = !config.smoothCaret; saveConfigToCookie(); } //quick tab function setQuickTabMode(mode, nosave) { config.quickTab = mode; if (!config.quickTab) { // $(".pageTest").append('